我正在嘗試編寫一個簡單的 lex 解析器。目前的應對方式是:from ply import lextokens = ( 'COMMENT', 'OTHER' ) t_COMMENT = r'^\#.*\n' t_OTHER = r'^[^\#].*\n' def t_error(t): raise TypeError("Unknown text '%s'" % (t.value,)) lex.lex()lex.input(yaml) for tok in iter(lex.token, None): print repr(tok.type), repr(tok.value)但是無法解析簡單的輸入文件: # This is a real comment #And this one also #/* # * # *Variable de feeu # */ ma_var: True It is done, over, kaput 具有以下輸出:l'COMMENT' '# This is a real comment\n'Traceback (most recent call last): File "parser_adoc.py", line 62, in <module> main2() File "parser_adoc.py", line 57, in main2 for tok in iter(lex.token, None): File "/usr/lib/python2.7/site-packages/ply/lex.py", line 384, in token newtok = self.lexerrorf(tok) File "parser_adoc.py", line 44, in t_error raise TypeError("Unknown text '%s'" % (t.value,))TypeError: Unknown text '#And this one also#/*# *# *Variable de feeu# */ma_var: Truethis is done'總之,我定義了 2 個正則表達式:一個以開頭的行 #一個用于不以開頭的行 #但它不起作用。我不明白我的正則表達式有什么問題。你能幫忙嗎?
Python lex - 類型錯誤:未知文本
慕碼人8056858
2021-11-30 19:19:36