1

如何编写规则以单独或在其他代码之后解析 C++ 注释?

我尝试了很多组合,最新的一种是:

?comment: "//" /[^\n]*/ NEWLINE
4

2 回答 2

1

您的想法是正确的,但是您应该将注释定义为单个终端(即不是结构),以提高性能,并且您也可以忽略它们。

COMMENT: "//" /[^\n]*/ NEWLINE

%ignore COMMENT

示例语法:

from lark import Lark

g = r"""
!start: "hello"

COMMENT: "//" /[^\n]*/ _NEWLINE
_NEWLINE: "\n"
%ignore COMMENT
%ignore " "
"""

parser = Lark(g)
print(parser.parse("hello // World \n"))
于 2020-03-17T11:03:37.033 回答
0

使用:?comment: /\/\/[^\n]*/

然后我不得不将评论作为 lark.lexer.Token 来处理。

于 2020-03-11T16:03:44.487 回答