词法分析器(Lexer)中两类Token的规范术语区分问询
词法分析Token的术语区分方案
针对你遇到的两类Token命名问题,行业里有现成的成熟术语可以直接复用,能清晰区分它们的特性:
1. 关键字(Keyword)
对应你举例的'DOLLAR'、'STRING'这类英文单词形式的Token。这类Token是语言预先定义的保留标识符,和SQL里的SELECT、WHERE性质一致——它们有固定的语义和语法角色,不能被用户当作普通变量名或标识符使用。
2. 细分两类命名(按需选择)
对于$、"+[^"]+"这类非单词形式的Token,可以根据具体用途细分:
- 符号(Symbol):适合
$、(这类单个/少量字符组成的语法标记,它们可能是运算符、分隔符、标点,语义通常和语法结构直接绑定。 - 字面量模式(Literal Pattern):适合字符串规则
"+[^"]+"这类用来匹配具体数据的模式,这类Token的作用是识别语言中的具体值(比如字符串字面量),而非语法控制标记。
如果想简化归类,也可以把第二类统一叫做语法符号(Syntax Symbol),和关键字做明确区分:
- 关键字:代表语言的语义/语法角色(比如
DOLLAR可能标记一个和美元符号相关的语法节点) - 语法符号:代表具体的语法标记或数据匹配规则(比如
$是具体符号,字符串规则是匹配字符串的模式)
这样的命名既符合词法分析的行业惯例,又能直观体现两类Token的本质差异。
内容的提问来源于stack exchange,提问作者samuelbrody1249
相关产品推荐
相关产品推荐

