在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

    上一篇: Regular expression for a string literal in flex/lex

    下一篇: C/C++, can you #include a file into a string literal?