给出以下云雀语法和 Python 源代码:
start: (TEXT _NEWLINE)+
TEXT: /[^\n]+/
COMMENT: /\/\/[^\n]*/ _NEWLINE
%ignore COMMENT
_NEWLINE: (" "* "\n")+
from lark import Lark
parser = Lark.open("grammar.lark", parser='lalr')
parser.parse("""Lorem ipsum
// line comment
Text with // trailing comment
""")
第一行文本被正确解析,第二行(即注释)被忽略。但是,最后一行包含应该被忽略的注释。
我意识到在我的语法中在一个TEXT
节点中有两个连续的斜杠是完全合法的(实际上应该引入一行注释)。但是,我不知道如何防止这种情况。有什么办法可以禁止两个连续的斜杠TEXT
或给COMMENT
终端更高的优先级?