在flex / lex中的字符串文字的正则表达式
我正在尝试学习flex,并希望匹配字符串文字。 我的代码目前看起来像:
"""([^n"]*([.n])*)*""" {/*matches string-literal*/;}
我一直在为一个小时左右的变化挣扎,无法按照它的方式工作。 我基本上希望匹配一个不能包含换行符的字符串文字(除非它已被转义)并支持转义字符。
我可能只是写了一个可怜的正则表达式,或者与flex不兼容。 请指教!
你会发现这些链接很有帮助
ANSI C语法,Lex规范
ANSI C Yacc语法
一个字符串由一个引号组成
"
其次是零或更多的任何逃脱的东西
.
或非引号字符
[^"]
最后终止报价
"
把它放在一起,你已经得到了
"(.|[^"])*"
分隔符引号会被转义,因为它们是Flex元字符。
对于单行...你可以使用这个:
"([^"]|.)*" {/*matches string-literal on a single line*/;}
链接地址: http://www.djcxy.com/p/72121.html