私は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) どうすればこれを修正できますか?
編集:
問題を少し絞り込みました。次の文字列は、それ自体で不正なレクサー入力エラーをスローします。
'%'
'^'