【发布时间】:2009-02-05 03:51:27
【问题描述】:
我在 python 中编写了一个简单的命题逻辑公式解析器,它使用正则表达式 re 模块和 lex/yacc 模块进行词法分析/解析。最初我的代码可以选择蕴含为 ->,但添加逻辑等价 () 会导致编译表达式出现问题
IMPLICATION = re.compile('[\s]*\-\>[\s]*')
EQUIVALENCE = re.compile('[\s]*\<\-\>[\s]*')
...
elif self.IMPLICATION.search(formula[0].strip()):
...
elif self.EQUIVALENCE.search(formula[0].strip()):
...
我最初尝试将 [^ 的前面以使其忽略等价实例,但这只是使其根本不接受任何暗示实例。任何可能的帮助都将受到热烈欢迎:)
【问题讨论】:
-
你为什么要用正则表达式而不是 yacc 语法?
-
你能发布最小的独立示例来展示这种行为吗?创建此示例也可能对您有所帮助。