如何编写规则以单独或在其他代码之后解析 C++ 注释?
我尝试了很多组合,最新的一种是:
?comment: "//" /[^\n]*/ NEWLINE
如何编写规则以单独或在其他代码之后解析 C++ 注释?
我尝试了很多组合,最新的一种是:
?comment: "//" /[^\n]*/ NEWLINE
您的想法是正确的,但是您应该将注释定义为单个终端(即不是结构),以提高性能,并且您也可以忽略它们。
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"))
使用:?comment: /\/\/[^\n]*/
然后我不得不将评论作为 lark.lexer.Token 来处理。