目前正在使用PLY for python构建词法分析器。我试着使引号“”之间的任何东西都能被识别为字符串常量,但正如你所看到的,情况并非如此。你知道吗
我当前的stringconst定义
def t_STRINGCONSTANT(t):
r'\"([^\\\n]|(\\.))*?\"'
输入字符串:
'println( “factori alof 10 is” , fact (10), “rom the recursive function” );'
输出:
LexToken(PRINTLN,'println',1,0)
LexToken(LEFTPAREN,'(',1,7)
Illegal character '“'
LexToken(ID,'factorialof10is',1,10)
Illegal character '”'
LexToken(COMMA,',',1,27)
LexToken(ID,'fact',1,29)
LexToken(LEFTPAREN,'(',1,34)
LexToken(INTCONSTANT,10,1,35)
LexToken(RIGHTPAREN,')',1,37)
LexToken(COMMA,',',1,38)
Illegal character '“'
LexToken(ID,'rom',1,41)
LexToken(ID,'the',1,45)
LexToken(ID,'recursive',1,49)
LexToken(ID,'function',1,59)
Illegal character '”'
LexToken(RIGHTPAREN,')',1,69)
LexToken(SEMICOLON,';',1,70)
似乎不管我使用什么regex组合,我总是得到那个输出。你知道吗
仔细查看Ply错误消息中显示的引号:
与正则表达式对比:
把它们变大有助于:
“”
在准备测试输入时,避免使用编辑器,因为编辑器会自动将引号更改为更华丽的“排版引号”。你知道吗
相关问题 更多 >
编程相关推荐