Python 解析器层不匹配令牌
Python parser ply not matching token
我正在尝试使用 Ply
来解析文件并尝试制作注释标记。评论由双斜杠 //
或主题标签 #
指定。当我尝试使用以下内容时,没有创建评论标记。
@lex.TOKEN(r'(//.*|\#.*)')
def t_COMMENT(t):
...
我也试过如下写token,没有结果。
def t_COMMENT(t):
r''(//.*|\#.*)'
我可能做错了什么?
As the Ply documentation says(举例):
4.5 Discarded tokens
To discard a token, such as a comment, simply define a token rule that returns no value. For example:
def t_COMMENT(t):
r'\#.*'
pass
# No return value. Token discarded
由于这就是您正在做的事情,评论标记将被丢弃。这通常是需要的,因为注释只会妨碍解析。但是当你出于某种目的真的想要评论标记时,你需要从标记函数中使用 return t
(或其他标记),或者更简单地使用 simple token variable:
t_COMMENT = r'(//|\#).*'
你能试试这个吗?
def t_COMMENT(t): r'\(//.*) | (#.*)'; return t
我正在尝试使用 Ply
来解析文件并尝试制作注释标记。评论由双斜杠 //
或主题标签 #
指定。当我尝试使用以下内容时,没有创建评论标记。
@lex.TOKEN(r'(//.*|\#.*)')
def t_COMMENT(t):
...
我也试过如下写token,没有结果。
def t_COMMENT(t):
r''(//.*|\#.*)'
我可能做错了什么?
As the Ply documentation says(举例):
4.5 Discarded tokens
To discard a token, such as a comment, simply define a token rule that returns no value. For example:
def t_COMMENT(t): r'\#.*' pass # No return value. Token discarded
由于这就是您正在做的事情,评论标记将被丢弃。这通常是需要的,因为注释只会妨碍解析。但是当你出于某种目的真的想要评论标记时,你需要从标记函数中使用 return t
(或其他标记),或者更简单地使用 simple token variable:
t_COMMENT = r'(//|\#).*'
你能试试这个吗?
def t_COMMENT(t): r'\(//.*) | (#.*)'; return t