我正在嘗試使用PLY for Kconfig語言來實現一個Python解析器,用於生成Linux內核的配置選項。幾個詞法分析器與PLY的一個解析器?
有一個關鍵詞叫做源執行的包容,所以我要做的就是,當詞法分析器遇到這個關鍵字,我改變詞法分析器國家創造這是會LEX的源文件中的新詞法分析器:
def t_begin_source(t):
r'source '
t.lexer.begin('source')
def t_source_path(t):
r'[^\n]+\n+'
t.lexer.begin('INITIAL')
global path
source_lexer = lex.lex(errorlog=lex.NullLogger())
source_file_name = (path + t.value.strip(' \"\n'))
sourced_file = file(path + t.value.strip(' \"\n')).read()
source_lexer.input(sourced_file)
while True:
tok = source_lexer.token()
if not tok:
break
別的地方我這行
lexer = lex.lex(errorlog=lex.NullLogger())
這是「主」或「根」詞法這是會被解析器調用。
我的問題是,我不知道該怎麼告訴解析器使用不同的詞法分析器或告訴「source_lexer」返回的東西......
也許應該使用克隆功能...
感謝
您可以使用詞法分析器的「輸入」方法來重置詞法分析器並提供新的輸入。包含的文件完成後,您必須返回原始文件(或多或少)。 – 2009-11-11 21:26:20
是的,但我不知道如何將這些標記返回給解析器。 – LB40 2009-11-12 20:27:37