我正在使用 python 模块 PLY 来编写解析器,并且我正在实施。我有一个简单的规则来检测字符串:
r'("|\').*("|\')'
当抛出词法分析器错误时,我有这个:
def t_error (t) :
print 'Illegal lexer input line ' + str(t.lineno) + ' ' + t.value[:16]
sys.exit(-1)
当我向解析器提供以下输入时:
parse("preg_match('%^[\*\%]+$%', $keywords)")
作为回报,我得到了回报:
Illegal lexer input line 1 %^[\*\%]+$%', $k
我的问题是:
1)为什么我不解析这个字符串?看来我的正则表达式应该正确处理这个字符串。
2)我该如何解决这个问题?
编辑:
我把问题缩小了一点。以下字符串本身会引发非法的词法分析器输入错误:
'%'
'^'