在lark-python中检索令牌



所以我在python中使用Lark库来解析一些文本,我面临两个问题。我在文档中进行了搜索,但找不到从树中检索令牌的方法,第二个方法是,我期望一个具有多个令牌的树,但我得到的不是嵌套树,每个树只有一个令牌。

这是我的代码:

l = Lark('''start: EXPERT "arguments with" arg _NL
EXPERT : /[a-zA-Z0-9]+/
ARGUMENT : /[a-zA-Z0-9]+/
arg: ARGUMENT","arg | ARGUMENT
%import common.WORD   // imports from terminal library
%ignore " "           // Disregard spaces in text
%import common.NEWLINE -> _NL
''',parser='lalr', lexer='contextual')

我得到的结果是:

Tree(start, [Token(EXPERT, 'PC1'), Tree(arg, [Token(ARGUMENT, 'a'), Tree(arg, [Token(ARGUMENT, 'b'), Tree(arg, [Token(ARGUMENT, 'c')])])])])

我期待的结果是:

Tree(start, [Token(EXPERT, 'PC1'), Tree(arg, [Token(ARGUMENT, 'a'),Token(ARGUMENT, 'b'),Token(ARGUMENT, 'c')])])

arg: ARGUMENT","arg | ARGUMENT更改为等效的arg: ARGUMENT ("," arg)*

*表示:匹配0个或多个实例。使用这种表示法,lark将把这些元素视为一个列表。

最新更新