跳转到内容

编译器构造/词汇表

来自维基教科书,开放的书籍,开放的世界

词汇表

[编辑 | 编辑源代码]

词汇表旨在提供与编译相关的词语或短语的定义,而不是提供一般计算机术语的定义,对于这些术语,参考维基百科可能更合适。

如果您想要查找的词语或短语未在此处

  1. 尝试在维基百科上查找。
  2. 尝试使用 Google 或类似工具搜索万维网。

如果您找到了该词语或短语,请考虑将其添加到此词汇表中,并附带解释和/或参考。

如果您没有找到该词语或短语,或者无法理解您找到的内容,请将该词语或短语本身添加到此词汇表中,但不提供解释,并留待其他人解释。

添加条目时

[编辑 | 编辑源代码]

添加词语或短语时,请尽量保持字母顺序,以便其他人更容易找到。

以下准则将使此词汇表保持一致性(只需按照一些现有条目的风格即可)

  • 关键字或短语应
    • 以空行开头,
    • 以 **粗体** 显示,
    • 单独占一行。
  • 实际的定义/描述应该缩进。
  • 对该词汇表中其他条目的交叉引用应以 *斜体* 显示。
  • 字母分割可以根据需要进行细化,以尝试将每个部分的条目数量保持在 20 个以下。

维基百科

[编辑 | 编辑源代码]

检查含义

这是 *语义分析* 的另一种说法。

注释

源程序的一部分, предназначена для человека-читателя и игнорируется компилятором. Как минимум, все переменные и все подпрограммы должны иметь пояснительные комментарии. Комментарий может пытаться объяснить соседний код, но проблемы возникают, если код обновляется, а комментарий нет. В идеале комментарии должны рассказывать, ЧТО делает код, а не КАК; код должен быть самоочевидным.

编译

由 *编译器* 执行的翻译行为。

编译器

一个计算机程序,它将用一种计算机语言(称为 *源语言*)编写的计算机程序翻译成用另一种计算机语言(称为 *目标语言*)编写的等效程序。

编译时

程序被编译期间的时间段,不同于程序实际运行时的 *运行时*。某些错误可以在编译时检测到(例如,拼写错误的标识符),而其他错误可能直到运行时才能检测到(例如,除以 0)。

GNU

递归首字母缩略词“GNU's Not Unix”。独立编写的类 Unix 系统,可以与 Linux 内核组合,生成 GNU/Linux - 一个有用的免费操作系统。

GPL

GNU 通用公共许可证。许多受版权保护的免费软件,包括 GNU/Linux,都可以在 此许可证 下获得。其总体目的是确保此类软件始终可供任何人免费使用和/或修改。

标识符

程序中使用的名称。通常是字母和数字的某种(可能难以发音的)组合,以字母开头。一些编程语言可能允许其他字符,如下划线 '_' 或井号 '#'。标识符可以由程序员定义,也可以由语言预定义(例如,'sqrt' 通常是预定义的标识符,用于引用“平方根”函数)。较旧的编程语言曾经将标识符限制为最多 6 个字符 - 产生的缩写往往使程序更难理解。许多编程语言允许几乎任何长度的标识符,但一些语言可能只考虑前 32 个字符。写长标识符有两种主要风格:要么 now_for_some_long_name,要么 NowForSomeLongName。

实现语言

这是编写编译器或解释器的编程语言。它可能与 *源语言* 或 *目标语言* 相同。

中间语言

某种中等低级的语言,用作编译器前端和后端之间的接口。

解释器

一个计算机程序,它检查用某种 *源语言* 编写的计算机程序,并或多或少地直接执行该程序所需的行动,而不会将其翻译成其他语言。与编译程序相比,可能速度较慢,特别是如果计算量很大。

即时编译

编译器和解释器之间的交叉。*源语言* 在实时中被解析并翻译成 *机器语言*,并立即运行。底层机器运行代码,而在解释器中,它自己完成工作。

关键字

许多编程语言保留一些标识符作为关键字,用于在指示程序结构时使用,例如,**if** 通常用于指示一些条件代码。像 Pascal/C/C++ 这样的语言大约有 50 个保留关键字,Fortran 没有,COBOL 大约有 300 个。

词法分析

这是 *扫描* 或 *标记化* 的另一种说法。词法分析的功能是扫描源程序(按行排列的一系列字符)并将其转换为一系列有效的 *标记*。通常也会在此阶段删除所有 *注释*。*语法分析* 负责检查它是否是一个有效的序列。

机器语言

这是最低级的语言。它只包含二进制数字。它只在计算机刚发明时被用来创建第一个编译器。

解析

这是 *语法分析* 的另一种说法。

为了编译程序,必须扫描或重新扫描源文本的次数。由于主内存有限,一些早期编译器有很多遍(大约 60 遍)。

编译指示

这有时被称为重要的 *注释*。目的是在源程序的不同位置向 *编译器* 或 *预处理器* 传递指令。这些指令可能指示速度还是空间更重要,或者是否应抑制某些检查,或者是否应计时某个特定例程等。

预处理器

一个程序,它接收文本并对其执行词法转换。转换可能包括宏替换、条件包含和其他文件的包含。这可用于通过排除在某些平台上不必要的源文件来编写平台无关的代码,而无需更改构建指令。

保留字

这是 *关键字* 的另一种说法。

运行时

程序运行/执行/执行一些有希望有用的工作的时间段,不同于程序被翻译时的 *编译时*。

扫描

这是 *词法分析* 或 *标记化* 的另一种说法。

语义分析

语义分析的功能是检查源程序是否有意义。请注意,程序可以具有有效的含义,但如果它没有做真正想要做的事情,它仍然是错误的。

源语言

*编译器* 接受的输入语言,并将其翻译/编译成 *目标语言*。它通常是高级语言,用英语单词和数学符号的混合体编写。

语法分析

这是 *解析* 的另一种说法。语法分析的功能是检查源程序是否语法正确,即我们是否具有有效的 *标记* 序列。检查源程序是否真的有意义是 *语义分析* 的工作。

目标语言

*编译器* 输出的语言。它通常是低级语言,如汇编语言,用机器指令的某种隐晦的缩写编写,但也可以是某个实际或虚拟计算机的机器代码。

标记

由 *语法分析* 处理的基本符号。标记可以是 *标识符* 'Result'、保留关键字 **if**、复合符号 '<=' 或单个字符 '+'。

标记化

这是 *词法分析* 或 *扫描* 的另一种说法。它意味着“转换为标记”。
华夏公益教科书