问题描述
我正在尝试使用 Ply
解析文件并尝试制作注释标记。评论由双斜线 //
或主题标签 #
指定。当我尝试使用以下内容时,不会创建任何评论标记。
@lex.TOKEN(r'(//.*|\#.*)')
def t_COMMENT(t):
...
我也尝试过按如下方式编写令牌但没有结果。
def t_COMMENT(t):
r''(//.*|\#.*)'
我可能做错了什么?
解决方法
如the Ply documentation says(举个例子):
4.5 丢弃的令牌
要丢弃标记(例如评论),只需定义一个不返回任何值的标记规则。例如:
def t_COMMENT(t):
r'\#.*'
pass
# No return value. Token discarded
因为这就是你正在做的,评论标记被丢弃。这通常是我们想要的,因为注释只会妨碍解析。但是,当您确实出于某种目的需要注释标记时,您需要从标记函数中返回 t
(或其他标记),或者更简单地使用 simple token variable:>
t_COMMENT = r'(//|\#).*'
,
你能试试这个吗?
def t_COMMENT(t): r'\(//.*) | (#.*)'; return t