我正在尝试使用 Python Lark 解析数据库中计划的输出。这是我的语法:
start: op
op: command "(" op ")" "[" text "]"
| command "(" op ")" "[" text "]" WORD
| command "(" op ")" "[" text "]" "," op
| command "(" op ")" "[" text "]" WORD "," op
| simple
command: WORD | WORD WORD -> command
simple: /[A-Za-z"._]+/
text : /[A-Za-z0-9=.!%,\-" _:]+/
%import common.WORD
%import common.ESCAPED_STRING
%import common.WS
%ignore WS
不是世界上最好的语法,但它适用于简单的事情。问题是,有时文本内有括号和括号,这并不重要。如果我将它们添加到正则表达式文本规则中,它会弄乱 op 规则。有没有一种简单的方法来解决这个问题,还是我必须添加关于文本的复杂规则?