除语法分类外,语法表中的字符条目还可指定标记。共有八种可用标记,分别由字符 ‘1’、‘2’、‘3’、‘4’、‘b’、‘c’、 ‘n’ 和 ‘p’ 表示。
除 ‘p’ 外的所有标记均用于描述注释定界符。数字标记用于由两个字符组成的注释定界符。它们表示一个字符除了自身语法分类对应的语法属性外,还可以 作为注释序列的组成部分。这些标记相互独立且与语法分类无关,例如 C 语言模式中的 ‘*’ 字符,它既是标点符号,又是注释起始序列 (‘/*’) 的第二个字符,还是注释结束序列 (‘*/’) 的第一个字符。标记 ‘b’、‘c’ 和 ‘n’ 用于限定对应的注释定界符。
下表列出字符 c 可用的所有标记及其含义:
Emacs 可在同一个语法表中同时支持多种注释风格。一种注释风格由 ‘b’、‘c’、‘n’ 标记的组合定义,因此最多支持 8 种不同的注释风格,每种风格以其标记组合命名。 每个注释定界符都归属一种风格,且仅匹配同风格的注释定界符。例如,若注释以 “bn” 型风格的注释起始序列开头,它将持续到下一个匹配的 “bn” 型注释结束序列为止。 当标记组合既不包含 ‘b’ 也不包含 ‘c’ 时,该风格称为 “a” 型风格。
C++ 语言适用的注释语法配置如下:
‘124’
‘23b’
‘>’
该配置定义了四条注释定界序列:
这是 “b” 型风格的注释起始序列,因为第二个字符 ‘*’ 携带 ‘b’ 标记。
这是 “a” 型风格的注释起始序列,因为第二个字符 ‘/’ 未携带 ‘b’ 标记。
这是 “b” 型风格的注释结束序列,因为第一个字符 ‘*’ 携带 ‘b’ 标记。
这是 “a” 型风格的注释结束序列,因为换行符未携带 ‘b’ 标记。
函数 backward-prefix-chars 会回退跳过这类字符,以及主语法分类为前缀 (‘'’) 的字符。See 移动与语法。