(f)lexers 使用的规则模式

Rule-patterns used by (f)lexers

我浏览了许多 lex 文件,在一些文件中我发现了一些关于方括号用法的奇怪结构。我希望在方括号内可以使用其他方括号,如下所示(使用 ... 作为占位符)

我发现的奇怪模式是 (a.0.):

我的问题:

  • [[][\t ]*[[] 部分匹配仅由 [ 组成的字符 class。也可以写成\[.
  • ({UNQUOTED}|=|\[=*{UNQUOTED})({UNQUOTED}|[[=])*\[ 等同于 [[]。最后是[[=],是一个字符class,由[=组成。
  • [%&()*+,\-/:;<=>[\]^{|}~] — 在字符 class 内,[ 没有特殊意义(尽管 POSIX regular expression 符号用于整理元素,等价 classes 和字符 classes — 例如 [[:space:]] — 使讨论复杂化)。如果将 ] 放在第一位(或紧跟在否定字符 class 的 ^ 之后),它代表 ] 而不是 class 的末尾。
  • [^ ':["?"]* — 重复的 " 没有任何用处;其余的和往常一样。这是除空白、单引号、冒号、左方括号、双引号或问号之外的任何字符的零次或多次重复。

这些符号都是正则表达式形成规则的直接结果。