我正在尝试使用FLEX和BISON解析一种类似于'C'的旧语言。除了匹配字符串之外,一切都很顺利。
这种相当奇怪的旧语言不支持在字符串文字中引用字符,因此以下都是有效的字符串文字:
"hello"
""
"\"
我使用以下规则匹配字符串文字:\".*\" { yylval.strval = _strdup( yytext ); return LIT_STRING; }
不幸的是,这是一个贪婪匹配,因此它匹配以下代码:
"hello", "world"
作为一个单一的字符串 (hello", "world
)。在FLEX中通常的非贪婪量词
.*?
似乎不起作用。有什么想法吗?