本次实验一共由四个部分组成,分别是词法设计、语法设计(包括递归下降和LL1)、语义设计以及窗口界面设计。
2023-03-09 14:56:47 2.08MB 文档资料
1
模拟SNL语言编译器前端的设计与实现,是一个实现SNL语言的递归下降语法分析器 实现SNL语言的LL(1)语法分析器
2023-03-05 20:52:33 62KB SNL;编译原理
1
代码可用,可以实现词法、语法、语义snl语言编译过程,如果程序出现bug,可以和我联系qq:3329097042
2023-02-27 08:56:30 77.55MB 源码软件 snl c c++
1
里面就是一个安装程序。 安装结束之后,可以看到编译器的快捷方式出现在桌面上。 在菜单中可以看到“SNL语言编译器”。 在那里也可以看到 “SNL语言的例子”、“SNL语言编译器VC6.0版源代码”等文件快捷方式。 安装过程中,它会完成“SNL语言编译器”运行的所有必需元素的拷贝工作。如把中间代码汇编所需的masm.exe 及link.exe拷贝到C:/windows/system32文件夹中。 ------ 一经安装,完成所有功能的集成。 另: SNL语言是我们学校为了方便编译原理教学而自定义的一门类pascal编程语言.这门语言主要特点是支持过程的嵌套声明,支持纪录(类似于C中的结构体),支持数组类型,支持字符类型,支持无符号整数类型。有基本的条件判断语句,循环语句。对于过程而言,定义了传址类型的参数(类似于C++的引用类型)。 我已经完整实现了从词法分析一直到中间代码/目标代码生成的完整的编译器功能。 由于大量采用了软件工程的编程思想。每个工程的源代码组织结构相当清晰,思路较为明朗。这都是十分值得借鉴的
2022-04-14 14:43:38 24.96MB SNL语言编译器 安装包 VC6.0
1
第六章 符号表管理与语义分析 155 是在编译程序的工作过程中,建立并保持一系列的表格,如常数表、变量名表、数 组名表、过程名表以及标号表等,习惯上将它们统称为符号表或名字表。符号表的 每一登记项,将填入名字标识符以及与该名字相关联的一些信息。这些信息,全面 的反映各个符号的属性及它们在编译过程中的特征,诸如名字的种属(常数、变量、 数组、标号等),名字的类型(整型、实型、逻辑型、字符型等),名字的特征(当 前是定义性出现还是使用性出现等),给该名字分配的存储单元地址以及与该名字的 语义有关的其他信息等等。符号表中的各类信息将在编译程序工作过程中的适当时 候填入。对在语义分析阶段建造符号表的编译程序,当遇到标识符声明部分时,每 当遇到一个名字声明,就以此名字查符号表;若表中无此登记项,则将该名字填入 表中;若该表中已有此登记项,则说明该名字是重复声明,报告语义错误。至于与 该名字相关的一些信息,可视工作的方便,分别在编译程序工作过程中的适当时候 填入:种属,类型,特征等信息可在语义分析阶段完成;名字的存储地址等信息则 要在代码生成阶段完成。几乎在编译程序工作的全部过程中,都需要对符号表进行 频繁的访问,查表和填表等操作,是编译程序的一笔很大的开销。因此,合理地组 织符号表,并相应地选择好查表和填表的方法,是提高编译程序工作效率的重要一 环。 6.2.1 符号表的内容 一般而言,即使对于同一类符号表,例如变量名表,它的结构以及表中的每一 登记项所包含的内容,由于程序设计语言和目标计算机的不同,都可能有较大差异。 然而抽象地看,各类符号表一般都具有如表 6.1 所示的形式。由表 6.1 可以看出,符 号表的每一记录项都由两个数据项组成:第一个数据项为名字,用来存放标识符; 第二个数据项为信息,一般由若干子项(或域)组成,用来记录与该名字相对应的 各种属性和特征。 名字项 信息项 Name1 Name1_info Name2 Name2_info …… …… Namen Namen_info 表 6.1 符号表的结构 对于标识符的长度有限制或长度变化范围不大的语言而言,每一登记项名字栏 的大小可以取标识符的 大允许长度。例如,SNL 语言规定每个标识符 多可包含 10 个字符,因此可用 10 个字符的空间作为名字栏的长度。 在源程序中,由于不同种属的标识符起着不同的作用,因而相应于各类标识符 所需记录的信息也就可能有很大的差异。如果根据标识符的不同种属,在编译程序 中分门别类地组织多种表格,如常数表、变量名表、数组名表、过程名表、标号表 等等,对于表格的使用将非常方便。但是,如果能合理组织符号表信息项各个子项 所存信息的内容(例如适当地增加标志位),则在编译程序中为各类标识符设置一张
2021-09-16 11:38:59 3.02MB 编译原理,SNL语言
1
该程序包含词法分析,语法分析(LL1和递归下降),语义分析,会生成token,抽象树和符号表
2021-04-29 09:02:47 142.73MB 编译器 SNL
1
基于snl语言的编译器 源代码 希望对编译器的开发者有帮助
2021-04-19 23:23:57 1.29MB snl语言 编译器
1
SNL语言是我们学校为了方便编译原理教学而自定义的一门类pascal编程语言.这门语言主要特点是支持过程的嵌套声明,支持纪录(类似于C中的结构体),支持数组类型,支持字符类型,支持无符号整数类型。有基本的条件判断语句,循环语句。对于过程而言,定义了传址类型的参数(类似于C++的引用类型)。 我已经完整实现了从词法分析一直到中间代码/目标代码生成的完整的编译器功能。 由于大量采用了软件工程的编程思想。每个工程的源代码组织结构相当清晰,思路较为明朗。这都是十分值得借鉴的。
2021-04-06 09:40:25 8.87MB SNL语言 编译器
1
SNL语言是我们学校为了方便编译原理教学而自定义的一门类pascal编程语言.这门语言主要特点是支持过程的嵌套声明,支持纪录(类似于C中的结构体),支持数组类型,支持字符类型,支持无符号整数类型。有基本的条件判断语句,循环语句。对于过程而言,定义了传址类型的参数(类似于C++的引用类型)。 我已经完整实现了从词法分析一直到中间代码/目标代码生成的完整的编译器功能。 由于大量采用了软件工程的编程思想。每个工程的源代码组织结构相当清晰,思路较为明朗。这都是十分值得借鉴的。
2021-03-29 15:43:48 3.27MB SNL语言 编译器 VC6.0
1
包括词法分析,语法分析,语义分析,中间代码生成,目标代码生车,及运行部分
2021-03-23 13:12:12 834KB 编译原理 源代码
1