【发布时间】:2019-11-29 08:47:22
【问题描述】:
我正在编写一个解析器,并且在某些时候,我期待一个 Python 指令列表和/或逗号之间写入的值。例如,
n >= 5, n < 20, m == len([1, 2, 3]), m + 1 == func(myObject.myMethod());
这只是一个例子,实际上我希望能够解析任何有效的 Python 表达式。
我的语法有如下形式的规则:
EXPRESSION ("," EXPRESSION)* ";"
EXPRESSION 是一个可以接受任何 Python 指令的正则表达式。当然,由于逗号可能会出现在我的表达式中,所以我不知道如何将它用作分隔符。不过,在我看来,必须有一个正则表达式,因为任何人都可以清楚地解析上面示例中的四个表达式。有什么想法吗?
我当前的正则表达式是EXPRESSION = [^,;]+,但这当然只适用于非常简单的情况;上面的例子不能用这个来解析。
【问题讨论】:
-
您是否尝试过为给定的问题创建任何正则表达式?