我无法让 Tatsu 解析包含文字“#”的语法。
这是一个最小的例子:
G = r'''
atom = /[0-9]+/
| '#' atom
;
'''
p = tatsu.compile(G)
p.parse('#345', trace=True)
解析会引发FailedParse异常。跟踪似乎表明解析器与 '#' 文字不匹配:
<atom ~1:1
#345
!'' /[0-9]+/
!'#'
!atom ~1:1
#345
如果我将语法更改为使用“#”以外的符号,它就可以正常工作。例如这有效:
G1 = r'''
atom = /[0-9]+/
| '@' atom
;
'''
tatsu.parse(G1, '@345') --> ['@', '345']
不幸的是,我无法更改输入数据的格式。