在pslexer.py文件中,词法分析进入instring状态后,找到括号要先判断是否被转义了,原来只是简单判断其前一个词是以'\'结尾,没有考虑共有奇数个还是偶数个反斜线,如果实际上是偶数个则并未被转义。修改t_instring_contents统计反斜线个数判断后一个字符是否被转义并记录到t.lexer.is_escaped中,在t_instring_lparn 和t_instring_rparn中访问并重置为false。
解决问题。
后记 为了查找出问题所在,硬是把 yacc 和 lexer 好好学习了一翻。可以做词法和语法分析了,收获挺大。