ply lex 标记背后的逻辑是什么?
What is the logic behind the ply lex tokens?
def t_NUMBER_LITERAL(t):
r'\d+'
t.value = int( t.value )
return t
在这里,如果我很了解,它将把所有数字标记转换为 int,因为 r'\d+' 做到了。
我怎么能 select 只有变量、字符串(垂直双引号内的任意数量的字符)注释(接受但忽略大括号 { } 之间的任何内容)等(我想要的任何特殊内容)?
为什么 r'\d+' select 只有 munbers?
PLY 的词法分析器获取文档字符串中的正则表达式并使用它来匹配标记。因此 t_NUMBER_LITERAL
函数仅在仅包含数字的子字符串上调用,因为这是正则表达式 \d+
匹配的内容。具体来说 \d
匹配任何数字,而 +
量词使其匹配一个或多个数字的序列。
def t_NUMBER_LITERAL(t):
r'\d+'
t.value = int( t.value )
return t
在这里,如果我很了解,它将把所有数字标记转换为 int,因为 r'\d+' 做到了。 我怎么能 select 只有变量、字符串(垂直双引号内的任意数量的字符)注释(接受但忽略大括号 { } 之间的任何内容)等(我想要的任何特殊内容)? 为什么 r'\d+' select 只有 munbers?
PLY 的词法分析器获取文档字符串中的正则表达式并使用它来匹配标记。因此 t_NUMBER_LITERAL
函数仅在仅包含数字的子字符串上调用,因为这是正则表达式 \d+
匹配的内容。具体来说 \d
匹配任何数字,而 +
量词使其匹配一个或多个数字的序列。