ANTLR4中的标记类型和词汇是什么?

ANTLR4中的标记类型和词汇是什么?,antlr4,Antlr4,我在网上找不到任何能很好地描述这一点的好资源。“令牌类型”是指我们在编程语言中遇到的类型,如int、string、char等吗。?我知道它是一个整数,但这个整数是什么意思?什么是词汇表?寻找一些简单的最低语法解释。标记类型和词汇的概念非常简单,可能没有人想过正式描述它们。但这是: 在词法转换过程中,词法转换程序将数字分配给部分输入文本。这意味着在输入中的特定模式和任意数字之间创建映射。此号码称为令牌类型 语法中的lexer规则描述必须匹配的模式,lexer规则名称是根据匹配的输入创建的令牌的文本

我在网上找不到任何能很好地描述这一点的好资源。“令牌类型”是指我们在编程语言中遇到的类型,如int、string、char等吗。?我知道它是一个整数,但这个整数是什么意思?什么是词汇表?寻找一些简单的最低语法解释。

标记类型和词汇的概念非常简单,可能没有人想过正式描述它们。但这是:

  • 在词法转换过程中,词法转换程序将数字分配给部分输入文本。这意味着在输入中的特定模式和任意数字之间创建映射。此号码称为令牌类型
  • 语法中的lexer规则描述必须匹配的模式,lexer规则名称是根据匹配的输入创建的令牌的文本表达式。通常,lexer规则按照它们在语法中出现的顺序来分配标记类型。第一个lexer规则获取令牌类型0,下一个令牌类型1,依此类推。但是,在某些情况下(导入的语法或标记词汇表或虚拟标记),这种顺序可能会有所不同

  • 词汇表是生成的结构,用于将标记类型映射到其文字规则名称。在需要错误消息、代码完成或调试的名称的情况下使用此选项
  • 注意:没有这样的结构将规则名称映射回令牌值(或者在解析器从规则名称映射到规则索引的情况下)。原因是规则可以返回与规则名称定义的令牌类型不同的令牌类型。例如,从MySQL语法中考虑这个LeXER规则:

    CHARACTER_SYMBOL: C H A R A C T E R -> type(CHAR_SYMBOL);
    

    CHARACTER\u SYMBOL
    是一个具有自己标记值的规则,但它会返回
    CHAR\u SYMBOL
    的标记值(类型别名)。因此,您可以很容易地从标记值映射到这些规则名称中的任何一个,但不是相反。

    我有这一点,但这并不能解释整数本身没有意义,因为“为了在运行时进行有效比较,这些符号等同于整数”标记类型。“vocbulary和标记之间的区别是什么?