自动机在编译器构造中的作用

Role of automata in Compiler Construction

我知道一些关于自动机在词法分析和其他阶段中发挥作用的知识。但是让我困惑的是在哪里以及如何准确。我收集到由我们的高级语言代码构成的标记被某种语言分类或识别,并且 "language" 如果我们甚至可以调用它,它是由 RE 定义的。 CFG呢?有限自动机呢?我们在自动机 class 中制作的图表说明、语言和字符串。计算机能识别那些状态图吗?

字母表是一组有限的、非空的符号。出于我们的目的,字母表上的字符串是来自该字母表的有限符号序列。就我们的目的而言,语言是该字母表上的一组字符串。

就我们的目的而言,语法是一组称为产生式的规则,它通过描述如何构造该语言中的字符串来定义一种语言。常规文法、上下文无关文法和无限制文法都是例子。

就我们的目的而言,自动机是一组称为转换的规则,它通过描述如何识别该语言中的字符串来定义一种语言。有限自动机、下推自动机和图灵机就是例子。

正则表达式是表示正则语言的特殊符号。它们类似于常规语法和有限自动机,因为它们定义常规语言。

编译器的第一个工作是处理输入,判断输入是否有效。为此,编译器检查输入是否是所有有效输入(目标编程语言中的程序源代码列表)的语言(字符串集)中的有效字符串。该语言(字符串集)由语法(定义编程语言)定义,编译器实现自动机(通常编译器可以使用任何达到并包括 TM 级别的功能,但为了性能和简单性通常会限制自己上下文无关或最多上下文相关的功能)。计算机 "recognizes" 状态机是指计算机的工作方式使其非常擅长按照图表建议的方式执行图表建议的操作。