我正在为Python2.7编写一个词法分析器。我对longstring项的正则表达式有问题。这是我为这类字符串编写的代码:
ESCAPESEQ \\\x
SHORTSTRINGITEM {SHORTSTRINGCHAR}|{ESCAPESEQ}
SHORTSTRING (\'{SHORTSTRINGITEM}*\')|(\"{SHORTSTRINGITEM}*\")
LONGSTRINGCHAR [^\\(\'\'\')(\"\"\")]
LONGSTRINGITEM {LONGSTRINGCHAR}|{ESCAPESEQ}
LONGSTRING (\'\'\'{LONGSTRINGITEM}*\'\'\')|(\"\"\"{LONGSTRINGITEM}*\"\"\")
LONGSTRINGLITERAL {STRINGPREFIX}?{LONGSTRING}
如果我分析一个Python代码,其中有两个longstring与其他标记分开,那么我的分析器返回这两个longstring以及它们之间的代码作为on标记。这是因为Flex试图返回可能的最长匹配。但是,我只想返回这个标记longstring的最短匹配。 谢谢你的回答。你知道吗
试着这样定义:
规则是这样的:
相关问题 更多 >
编程相关推荐