如何理解lex / flex正则表达式以匹配C / C ++字符串文字?

问题描述 投票:0回答:3

我正在学习用于解析技术的flex / bison。本书flex and bison显示了这样的flex示例:


UCN (\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8})

{%
...
%}

%%

\"([^\"\\]|\\['"?\\abfnrtv]|\\[0-7]{1,3}|\\[Xx][0-9a-fA-F]+|{UCN})+\" { ... save token here }

%%

我不知道正则表达式中的这些部分:

  1. [^\"\\]是否表示\"\\不匹配?如果是这样,为什么需要指定此不匹配]​​>?因为\"\\似乎没有出现在其他组中。
  2. \\[0-7]{1,3}是什么意思?
  3. \\[Xx][0-9a-fA-F]是什么意思?
  4. UCN是utf-8吗?

我正在学习用于解析技术的flex / bison。图书flex和bison展示了这样的flex示例:UCN(\\ u [0-9a-fA-F] {4} | \\ U [0-9a-fA-F] {8}){%...% } %% \“([[^ \” \\] | \\ ['“?\\ abfnrtv] | \\ [0-7] {1,3} | \\ [...

c++ c regex flex-lexer lex
3个回答
0
投票

UCN并不表示UTF-8。它与编码无关。它表示通用字符名称;从某种意义上说,它是通用的,它使您可以指定Unicode曲目中的任何字符。


0
投票

1)[^ ...]表示匹配not


0
投票

该正则表达式与以下内容匹配:

© www.soinside.com 2019 - 2024. All rights reserved.