问题描述
这是我之前的后续问题:Why do we need to specify the standard Lark lexer to be able to catch comment terminals?
我需要在基于 Lark 的解析器解析的 DSL 中“捕获”并保存注释。使用 'standard'
词法分析器时它似乎运行良好,但语法无法解析 DSL 的其余部分。
相反,需要使用 'dynamic'
或 'dynamic_complete'
,但随后似乎无法“捕获”注释。
我一直在使用 Larks own recipes 中第二个示例的变体进行测试:
import lark
comments = []
grammar = r'''
start: INT*
COMMENT: "//" /[^\n]*/
%import common (INT,WS)
%ignore COMMENT
%ignore WS
'''
parser = lark.Lark(grammar,lexer='dynamic',lexer_callbacks={'COMMENT': comments.append})
source = r'''
1 2 3 // hello
// world
4 5 6
'''
parser.parse(source)
print(comments)
此程序会将评论打印为空列表 ([]
),否则将忽略它们。
是否有其他方法可以“捕获”和保存否则需要忽略的终端?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)