C语言编译器,基本上实现了主要功能的C语言语法,词法分析使用状态转移,语法使用LR(1)方法,自动生成ACTION和GOTO转移表。自顶向下的语法制导翻译,可以生成各种类型的表达式(包括布尔,算术,逻辑等等),循环中的while,选择中的if else 和if等,功能比较强大,对于应付编译原理课程设计足足有余。此代码是本人课程设计的心血。
2021-06-07 09:04:03 76KB C ACTION GOTO
含编译原理课程设计要求 程序代码(可运行) 含详细的报告 该课设是桂林电子科技大学的课程设计 优秀作品 希望对大家有帮助
2021-06-02 17:32:15 1.35MB 编译原理 PASCAL语言编译器
1
随便语言编译器 使用python和ply库的休闲语言编译器 常用语言说明 -“休闲”中的注释以井号(#)开头,并在该行的末尾结束。 -休闲对空格不敏感 -一个程序由几个声明或定义组成 -声明包括函数名称,其参数和返回类型:decl max(a:Int,b:Int):Int -一个定义具有相同的内容,但也有一个对应于函数主体的块:def max(a:Int,b:Int):Int {如果a> b {返回a; } return b; } -一个块始终以大括号括起来,并以零个或多个语句为特征:-> return语句可以有或没有表达式(对于Void函数):return; 或返回1 +1; ->表达式是语句:1; 或f(3); -> if语句(至少)具有条件和(然后)块。 可选地,它们可以具有一个else块,由else关键字分隔。 -> while块具有与条件和块相似的结构。 ->变量声明需要一
2021-06-01 17:49:12 1KB
1
SLR(1)语法分析器
2021-05-30 22:21:54 527KB c++ c语言 编译器
1
mars编译器(mips汇编语言编译运行),可进行mips汇编语言的编写,编译,调试,以及运行等事项。
2021-05-22 16:30:21 88.46MB mips mars 汇编语言
1
在《算法+数据结构=程序》一书中,Niklaus Wirth 设计的 PL/0 语言编译器分成两部分,把源语言翻译成中间语言的编译器和中间语言解释器,编译器用的是递归下降的预测分析方法中间语言是一种栈机器代码,其指令集是根据 PL/0 语言的需要来设计的。编译器源码及测试程序可从。一条指令由三个域组成: (1)操作码 f:上面已经列出了所有 8 种操作码。 (2)层次差 l:这里的层次差就是 5.3.2 节介绍嵌套深度时的 n p − n a 。该域仅用于存取指令和调用指令。 (3)多用途 a:在运算指令中,a 的值用来区分不同的运算;在其他情况,a 或是一个数(lit,int),或是一个程序地址(jmp,jpc,cal),或是一个数据地址(lod,sto)。 编译器对 PL/0 源程序进行一遍扫描,并逐行输出源程序。在源程序无错的情况下,编译器每编译完一个分程序,就列出该分程序的代码,这由编译器的 listcode 过程完成。每个分程序的第一条指令是 jmp 指令,其作用是绕过该分程序声明部分产生的代码(即绕过内嵌过程的代码)。listcode 过程没有列出这条代码。 解释器是编译器中的一个过程,若源程序无错,则编译结束时调用解释过程 interpret。由于 PL/0 语言没有输出语句,解释器按执行次序,每遇到对变量赋值时就输出该值。 由于 PL/0 语言是过程嵌套语言,因此程序运行时,活动记录栈中每个活动记录需要包含控制链和访问。活动记录栈的栈顶以外的存储空间作为代码执行过程中所需要的计算栈,无需另外设立计算栈。
2021-05-19 15:34:19 5KB PL/0 编译器
1
编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用户从键盘输入的五个命令(1-5),各命令功能分别为: (1)按下“1”键,完成字符串小写字母变成大写字母。 用户输入一由英文大小写字母或数字0-9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其他字符不变,并在屏幕上显示。用户按任一键,重做,按ESC键,返回主菜单。 (2)按下“2”键,完成找最大值(二选一)。 a.接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来; b.接收用户输入若干个无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。 (3)按下“3”键,完成排序(二选一)。 a.接收用户输入的可显示字符串,以回车结束。程序按ASCII码值大小由大到小排序并输出显示; b.接收用户输入若干个有符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。 (4)按下“4”键,显示时间。 首先提示用户对时,即用户输入时、分、秒(以空格或逗号为分隔符,以回车结束),然后,在屏幕上不断显示时间,格式为: XX(时): XX(分): XX(秒) 最好定点显示。用户按任一键,重新对时,按ESC键,返回主菜单。 (5)按下“5”键,结束程序运行,返回系统提示符。 上述题目代码,之前在网上找到过类似的可总是出问题,编译器出问题,代码运行出问题,这是完全测试过的,应该没有问题
2021-05-14 08:47:12 15.51MB 微机原理 汇编语言
1
编译原理课程作业,简易C语言编译器,实现了词法分析,语法分析,语义分析,拉链回添(四元式),用windowbuilder做了一个简单的界面。
2021-05-13 21:01:46 20KB java windoebuilder 编译原理
1
系统 使用LLVM框架的Sysy2020语言编译器 LLVM框架语言:LLVM 12.0.0 编译环境:cmake 3.13 + Deepin 20.1 Beta 编译时若出错请注意LLVM版本号 目前支持程度 函数定义参数 二元表达式 &&,|| +,-,*,/,%,!= 函数调用 传参基础类型,矩阵,多维矩阵传参 条件分支关键字如果 循环关键字 为了 尽管 休息继续 函数返回return保持单入单出特性 全局,局部变量 斑点 尺寸,局部尺寸/多维尺寸 公布定义时初始化 生成AST语法树 生成对应系统架构的目标代码 ...(比较懒,不想写)
2021-05-11 18:29:55 175KB C++
1
D语言编译器
2021-05-09 13:00:54 1.78MB D 编译器 D语言
1