我正在尝试使用基于PEG的Python解析器生成器tatsu编写一个简单的int表达式解析器.这是我的代码:
import tatsu
grammar = r'''
start = expression $ ;
expression = add | sub | term ;
add = expression '+' term ;
sub = expression '-' term ;
term = mul | div | number ;
mul = term '*' number ;
div = term '/' number ;
number = [ '-' ] /\d+/ ;
'''
parser = tatsu.compile(grammar)
print(parser.parse('2-1'))
Run Code Online (Sandbox Code Playgroud)
该程序的输出['-', '1']不是预期的['2', '-', '1'].
如果我要么得到正确的输出:
number = /\d+/ ;