我正在尝试使用FLEX和BISON解析一种遗留语言(类似于'C')。除了匹配字符串之外,一切都很好。如何在LEX/FLEX中编写非贪婪的匹配?
这种奇特的传统语言不支持引用在字符串中的字符,所以下面都是有效的字符串文字:我使用下面的规则来匹配字符串文字
"hello"
""
"\"
:
\".*\" { yylval.strval = _strdup(yytext); return LIT_STRING; }
可惜这是一个贪婪的匹配,所以它匹配类似下面的代码:
"hello", "world"
作为单个字符串(hello", "world
)。
通常的非贪婪量词.*?
在FLEX中似乎不起作用。有任何想法吗?
这可能感兴趣你:http://www.lysator.liu.se/c/ANSI-C-grammar-l.html – 2013-04-10 10:26:46