我不能也不知道如何检索我使用 Lark 解析器生成的 AST 的值。
我的语法如下,保存在 .lark 文件中:
start: (un_handle ": ")? AMOUNT "|" p_handle ("," p_handle)* (" \"" MESSAGE* "\"")?
AMOUNT: /[0-9]+(\.[0-9][0-9]?)?/
un_handle: HANDLE
p_handle: HANDLE
HANDLE : /[A-Z][A-Z]/
MESSAGE : /[^"]+/
然后我运行:
testText = '10|GP "Bananas"'
testTree = parser.parse(testText)
并得到:
Tree(start, [Token(AMOUNT, '10'), Tree(p_handle, [Token(HANDLE, 'GP')]), Token(MESSAGE, 'Bananas')])
但是,现在呢?
我意识到我可能必须构建一个转换器,但是我应该定义哪些方法以及我应该如何称呼它们?我只想将 AMOUNT、un_handle、p_handle(可能有多个 p_handle)和 message 的值提取到 Python 变量中。
非常感谢您!已经调试了几个小时。