C 语言词法单元和终结符的区别

2025 年 1 月 7 日 | 阅读 3 分钟

在本文中,我们将讨论 C 语言中的 Tokens(记号)和 Terminals(终结符)。但在讨论它们的区别之前,我们必须先了解 Token 和 Terminal。

什么是 Token?

Tokens 是 C 编程语言中使用的一些最重要的组成部分。C 语言中的 Token 是程序中 最小的离散单元,对编译器来说具有任何意义。

在 C 程序中,最小的度量单位被称为 token。在 C 程序中,每一个单词和标点符号都是一个 token。编译器首先将 C 程序分解成 tokens,然后进行编译所需的后续步骤。

字母数字字符 用作 tokens。词法分析器检查输入中的字符,并将它们转换为 tokens,然后这些 tokens 会经过额外的编译阶段。Keywords(关键字)、Operators(运算符)、Strings(字符串)、Constants(常量)、Special Characters(特殊字符)和 Identifiers(标识符)是不同形式的 tokens。例如,A, @, b, (, ), 等。

例如,没有单词就无法构成一个句子;同样,对于 C 编程语言,没有 tokens 就无法构成一个程序。因此,Tokens 有时被称为构成任何 C 程序所需的 基本元素构建块

什么是 Terminals?

Terminal symbols(终结符),也称为 terminals,是在形式语言的产生规则的右侧出现的符号。这些符号 不能 在语法规则内 展开修改;它们构成了语言的基本组成部分或 tokens。

特性

Terminals 在 C 语言中有几个特点。Terminals 的一些主要特点如下:

  • Terminals 是构成语言字符串的符号。
  • 小写字母、数字或其他符号表示 Terminals。
  • Terminal 符号没有相关的产生式或 规则;它们是语法生成的字符串中出现的最终字符。
  • 在用于表示算术表达式的简单语言中,Terminals 可能是:+, -, *, /:运算符;0, 1, 2,... 9:数字常量;(,):括号。
  • 在描述短语的语言语法中,Terminals 可能是:
  • 小写字母表示单词:a, b, c 等。

C 语言中 Tokens 和 Terminals 的主要区别

Difference between Tokens and Terminals in C

C 语言中的 Tokens 和 Terminals 之间有几个主要区别。它们之间的一些主要区别如下:

特点Token终端
定义Tokens 是源代码中有意义的最小单元,反映了语言的构造(例如,标识符、短语)。Terminals 是形式语法结构中的符号,用于字符串的创建和推导。
角色是语法分析和语义分析的基础,有助于代码的理解和执行。是指导解析(遵循语法规则)的基本符号,是语言框架的骨干。
特性变量类型(标识符、字面量和运算符),每种都有其自身的含义和重要性。出现在语法生成规则中,指定构成合法字符串的基本单元。
用途在词法分析中对源代码进行分词,这是语法检查和语义分析所必需的。依赖于解析、导数和生成正确语言字符串。
抽象通过提供代码表示的相关抽象级别,有助于形成程序结构。代表语言推导的最低级别元素。
背景Tokens 直接与编译器或解释器协同工作,与语言的语法和语义相关。它与形式语法理论和解析及语言推导中的语言定义相关。
示例Tokens 包括:int(关键字)、if(控制结构)、123(数字字面量)、+(运算符)、=(赋值运算符)等。Terminals 可以表示为:a, b, c(单个符号)、0, 1(数值)、(,)(括号)等。