4K+ 浏览量
自动机是数字计算机的抽象模型,具有离散的输入和输出。每个自动机都包含一个读取输入的机制。可以认为输入是在给定字母表上的字符串,写在一个自动机可以读取的输入文件中。输入文件被分成更小的部分,称为单元格。它是一种语言的机器或识别器,用于检查语言是否接受字符串。在有限自动机中,“有限”表示有限数量的状态,“自动机”表示无需人工干预即可工作的自动机器…… 阅读更多
有限自动机接受的语言可以通过称为正则表达式的简单表达式简单地定义。它是一种描述任何语言的有效方法。正则表达式也可以表示为表示字符串的一系列模式。正则表达式用于连接字符串中的字符序列。字符串搜索算法使用此模式来发现字符串上的操作。正则表达式有各种规则,如下所示:ε 是正则表达式。两个正则表达式 R1 和 R2 的并集,即 R1 + R2 或 R1|R2 也是正则表达式。两个正则表达式的连接…… 阅读更多
12K+ 浏览量
词法分析可以使用状态转换图来设计。有限自动机(状态转换图)——用于识别标记的有向图或流程图。状态转换图有两个部分:状态——用圆圈表示。边——状态由边(箭头)连接。示例——绘制“if”关键字的状态转换图。为了识别标记(“if”),词法分析还必须读取“f”之后的下一个字符。根据下一个字符,它将判断是“if”关键字还是其他内容。因此,“if”之后的空格确定“If”是一个关键字。“*”在最终状态 3 表示回退,即控制权将再次回到之前的…… 阅读更多
46K+ 浏览量
词法分析每次都必须访问辅助存储器来识别标记。这既费时又费钱。因此,输入字符串存储在缓冲区中,然后由词法分析扫描。词法分析从左到右一次扫描一个字符来识别标记。它使用两个指针来扫描标记:起始指针 (bptr)——它指向要读取的字符串的开头。前瞻指针 (lptr)——它向前移动以搜索标记的结束位置。示例——对于语句 int a, b;两个指针都从字符串的开头开始,…… 阅读更多
8K+ 浏览量
编译器是一个计算机程序,它将用计算机语言(源语言)编写的源代码转换为另一种计算机语言(目标语言,提供称为目标代码的二进制形式)。转换源代码以创建可执行代码的主要原因是不充分。编译器通常用于将程序从高级编程语言翻译成低级语言(例如,汇编语言或机器代码)。将低级语言翻译成高级语言的程序称为反编译器。将高级语言之间进行翻译的程序通常称为…… 阅读更多
9K+ 浏览量
这是一种创建自编译编译器的方法,即用它打算编译的源编程语言编写的编译器。自举编译器可以编译编译器,因此您可以使用此编译的编译器来编译其他所有内容以及其未来的版本。自举的用途自举有各种用途,如下所示:它允许从现有编程语言和编译器开始开发新的编程语言和编译器。它允许将新功能与编程语言及其编译器相结合。它还允许向编译器添加新的优化。它允许语言和…… 阅读更多
2K+ 浏览量
宏处理器许多汇编语言都支持“宏”功能,其中宏语句将在转换为机器程序之前转换为一系列汇编语言语句以及可能的其他宏语句。因此,宏功能是一种文本替换功能。它可以说明宏的实用性,考虑一种机器没有单个机器或汇编语言语句可以将一个内存地址的内容添加到另一个内存地址作为假设的汇编指令 ADD X, Y 的情况。相反,假设机器有一个指令 LOAD,它将数据从内存移动到寄存器,一个指令…… 阅读更多
5K+ 浏览量
检测和报告源程序中的错误是编译器的主要功能。错误可能发生在编译的任何阶段。一个好的编译器必须准确地确定程序中错误发生的行号。可能在编译的不同级别发生的各种错误如下所示:首先是词法(扫描器)错误——这里一些最常见的类型包括非法或无法识别的字符,主要由输入错误引起。程序员键入一个不属于该字符集的字符是导致这种情况发生的一种常见方式…… 阅读更多
3K+ 浏览量
命令式语言命令式语言是指通过状态变化来促进计算的语言。状态是指计算机随机存取存储器 (RAM) 或存储器的状态。将计算机内存视为一系列快照会有所帮助,每个快照都在特定时间捕获所有内存单元中的值。每个快照都记录一个状态。当输入程序时,相关数据以某种状态存在,例如脱机的未排序列表。程序员的工作是指定一系列对存储区的更改,这些更改将产生所需的最终状态,可能是…… 阅读更多
过程式语言过程式语言是命令驱动的或语句导向的语言。程序包含一系列语句,每个语句的执行都会导致解释器修改其内存中一个或多个区域的值,从而进入一个新的状态。过程式语言的格式是statement1;statement2;C、Pascal、FORTRAN 及等效语言是过程式语言。语言中的每个语句都指示计算机执行某些操作。过程式语言中的程序是指令列表。对于非常小的程序,不需要其他排列原则。这种语言包括一系列在被调用时执行的过程。每个过程都包含…… 阅读更多