Python ply lex标记背后的逻辑是什么?

Python ply lex标记背后的逻辑是什么?,python,token,ply,Python,Token,Ply,这里,如果我知道的很清楚的话,它会将所有的数字标记转换成int,因为r'\d+'使它成为int。 我怎样才能只选择变量、字符串(垂直双引号内的任意数量的字符)、注释(大括号{}之间的任何内容都可以接受,但被忽略),等等(我想要什么特殊的东西)? 为什么r'\d+'只选择munber?PLY的lexer在doc字符串中使用正则表达式,并使用它来匹配标记。因此,只在只包含数字的子字符串上调用t\u NUMBER\u LITERAL函数,因为正则表达式\d+匹配的是数字。具体地说,\d匹配任何数字,+

这里,如果我知道的很清楚的话,它会将所有的数字标记转换成int,因为r'\d+'使它成为int。 我怎样才能只选择变量、字符串(垂直双引号内的任意数量的字符)、注释(大括号{}之间的任何内容都可以接受,但被忽略),等等(我想要什么特殊的东西)?
为什么r'\d+'只选择munber?

PLY的lexer在doc字符串中使用正则表达式,并使用它来匹配标记。因此,只在只包含数字的子字符串上调用
t\u NUMBER\u LITERAL
函数,因为正则表达式
\d+
匹配的是数字。具体地说,
\d
匹配任何数字,
+
量词使其匹配一个或多个数字的序列

def t_NUMBER_LITERAL(t):
    r'\d+'
    t.value = int( t.value )
    return t