Python 解析器层不匹配令牌

时间:2021-05-26 22:33:42

标签: python ply

我正在尝试使用 Ply 解析文件并尝试制作注释标记。评论由双斜线 // 或主题标签 # 指定。当我尝试使用以下内容时,不会创建任何评论标记。

@lex.TOKEN(r'(//.*|\#.*)')
def t_COMMENT(t):
    ...

我也尝试过按如下方式编写令牌但没有结果。

def t_COMMENT(t):
    r''(//.*|\#.*)'

我可能做错了什么?

2 个答案:

答案 0 :(得分:1)

the Ply documentation says(举个例子):

<块引用>

4.5 丢弃的令牌

要丢弃标记(例如评论),只需定义一个不返回任何值的标记规则。例如:

def t_COMMENT(t):
    r'\#.*'
    pass
    # No return value. Token discarded

因为这就是你正在做的,评论标记被丢弃。这通常是我们想要的,因为注释只会妨碍解析。但是,当您确实出于某种目的需要注释标记时,您需要从标记函数中返回 t(或其他标记),或者更简单地使用 simple token variable:

t_COMMENT = r'(//|\#).*'

答案 1 :(得分:-1)

你能试试这个吗?

def t_COMMENT(t): r'\(//.*) | (#.*)'; return t
相关问题