我正在使用rplyPython3.6 为一个小型私有项目创建词法分析器和解析器。
但我注意到的是,解析器似乎翻转了词法流的顺序。
这是我正在解析的文件:
let test:string = "test";
print(test);
词法分析器输出:
Token('LET', 'let')
Token('NAME', 'test')
Token('COLON', ':')
Token('NAME', 'string')
Token('EQUALS', '=')
Token('STRING', '"test"')
Token('SEMI_COLON', ';')
Token('PRINT', 'print')
Token('OPEN_PARENS', '(')
Token('STRING', '"test"')
Token('CLOSE_PARENS', ')')
Token('SEMI_COLON', ';')
如您所见,它是按脚本顺序排列的。
我使用解析器创建一个带有 name test、 typestring和 value的变量test。然后我想打印变量。
它确实创建了变量,但是当我想打印出来时,什么也没有。
但是当我像这样翻转脚本时
print(test);
let test:string = "test";
它能够正确打印值。
两个解析器“规则”如下所示: 打印:
@self.pg.production('expression : PRINT OPEN_PARENS expression CLOSE_PARENS SEMI_COLON expression')
def print_s(p):
...
创建变量:
@self.pg.production('expression : LET expression COLON expression EQUALS expression SEMI_COLON expression')
def create_var(p):
...
所以我的问题是:如何翻转解析内容的顺序?
编辑:我在文档中寻找了类似的问题或问题,但没有找到任何东西。
繁星coding
相关分类