我正在嘗試使用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