编译原理课设,老师要求写一个简单的编译器

编译原理课设,老师要求写一个简单的编译器,求助,不知道怎么入手。

0

4个回答

这是我大二写的PL/0的编译器,也是参考网上源码写的啦。你可以参考参考,有什么不懂得可以交流交流。
http://download.csdn.net/detail/zsgg_acm/9367856

0
baidu_35042802
baidu_35042802 好的,谢谢
接近 3 年之前 回复

先设计语言
假设
1) 变量不需要定义
2)变量只用 单个字母表示
3)变量缺省值为0
4)只有一种整数类型
5)没有输入,只有输出 print expr
6)只有+-*/四种运算,还可以简化为只有+,-
7 )只有= 一种表达式可以构成表达式语句,是独立表达式,别的表达式,必须是赋值表达式的子表达式,或者 print 的表达式部分
8)没有函数,goto if 等等,全部都没有
也就是说这种语言,只有两种语句,a= expr;print expt 一种数据类型int
现在,可以为他实现一个编译器了
先实现表达式求值
再实现输出,赋值两种语句

0
lm_whales
lm_whales 总之,先设计一个语言,然后按照编译原理,为它实现为一个编译器出来
接近 3 年之前 回复
lm_whales
lm_whales 觉得它太简单了,你可以 模仿 java script ,vbscrpt 把其中 面向对象部分去掉,保留输入输出,表达式,函数,等功能
接近 3 年之前 回复
lm_whales
lm_whales 你不是要简单吗?这个预言多简单而,实现了以后,可以逐渐增加一些功能,一个新的语言 就出来了
接近 3 年之前 回复
baidu_35042802
baidu_35042802 晕+_+
接近 3 年之前 回复

看你这提问的架势,像是一窍不通。我觉得与其从头学起,不如google一些现成的简单的代码,能找到一个代码自己学会编译,并且大体上能看懂,既能糊弄下老师,自己也不能说一点收获没有。

0
baidu_35042802
baidu_35042802 哈哈,上课没怎么听。我试试
接近 3 年之前 回复

你没听错吧,编译器,确定不是词法分析器!

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
编译原理课设之简单编译器实现
编译器源代码
编译原理课设实验报告
课 程 设 计 报 告 设计题目:编译器的设计与实现   班    级: 计算机1304班 组长学号:20133894 组长姓名:mxp 指导教师:zl 设计时间:2015年12月         设计分工     组长学号及姓名:mxp 20133894 分工:讨论文法,设计符号表,数据结构定义,中间代码生成,多维数组,子程序,内存管理 组员1学号及姓名
编译原理 课程总结
       学习编译原理的目的是学习设计与构造程序设计语言编译程序的原理与方法。编译器就是一个程序,它读入用某种语言编写的源程序,并翻译成一个与之等价的另一种语言编写的源程序。编译程序的工作,从输入源程序开始,到输出目标程序结束,与自然语言之间的翻译有很多相似之处。        第一章讲编译器的基本结构                词法分析是识别出句子中的单词            语法分析...
编译原理-简单编译器课程设计(C语言源代码)(附实验报告)
完成一个相对完整的编译器,该编译完成对变量类型(整数/浮点数)定义、赋值、四则运算、逻辑运算、跳转与循环控制功能。其输入是源程序(参见“一个四则运算源程序示例”),输出是所有变量的最终值。
编译原理课程设计———Simple PASCAL编译器的设计与实现
   设计并实现一个简单Pascal语言的编译器。主要包括几个模块: 词法分析模块 语法分析模块 语义分析模块  1.Simple-PASCAL语言语法 源程序设计语言 G[<语句表>]     参考编译原理教材179 上机实习题 <语句表>→<语句> | <语句>;<语句表> <语句>→<赋值语句&
编译原理动手实操,用java实现一个简易编译器-语法解析
语法和解析树: 举个例子看看,语法解析的过程。句子:“我看到刘德华唱歌”。在计算机里,怎么用程序解析它呢。从语法上看,句子的组成是由主语,动词,和谓语从句组成,主语是“我”,动词是“看见”, 谓语从句是”刘德华唱歌“。因此一个句子可以分解成 主语 + 动词 + 谓语从句: 句子-->主语+动词 + 谓语从句  主语是名词,因此有 : 主语->名词 句子里的
编译原理课程设计--用LEX&YACC实现一个简单的C编译器
自己做编译课程设计写的一个很简单的C编译器,用的是LEX+YACC写的,方法比较新,由于时间的关系写的不是很完善,但是要扩充的话比较容易。压缩包中附LEX&YACC的语言详解,相信对于对编译有兴趣的人有些帮助。
编译原理课程设计 java实现编译器
java实现c语言编译器,包括词法分析,语法分析,语义分析,目标代码生成四个部分,总体实现编译器功能,有运行界面,代码精简,值得下载。
编译原理课程设计(整个项目和报告)
编译原理课程设计的整个项目,以及完整的课程设计报告,代码是用C++写的。
一个简单编译器的实现过程
一、编译器的实现步骤 1、词法分析,将原文件划分为单独的单词或关键字。 2、语法分析,利用上下文无关文法分析程序的短语结构。 3、语义分析,根据短语建立抽象语法树,确定短语含义、变量关联声明、检查表达式类型。 4、翻译,根据抽象语法树翻译成中间表示树不依赖任何特定的程序语言和目标机器结构。 5、指令选择,根据目标机器的指令体系,对中间表示树的节点进行划分。 6、控制流分析。 7、数据
编译原理课程设计-PL/0编译器的扩充(C语言完整版)
课程设计要求: 1、基本内容(成绩范围:“中”、“及格”或“不及格”) (1)扩充赋值运算:*= 和 /= (2)扩充语句(Pascal的FOR语句): ①FOR <变量>:=<表达式> TO <表达式> DO <语句> ②FOR <变量>:=<表达式> DOWNTO <表达式> DO <语句> 其中,语句①的循环变量的步长为1, 语句②的循环变量的步长为-1。2、选做内容(成
编译原理动手实操,用java实现一个简易编译器1-词法解析入门
味道怎样,咬一口就知道,手感如何,摸一把就晓得。编译原理缺的不是理论概念,而是能够动手实践的流程,代码,很多原理用话语怎么讲都难以明了,但跑一遍代码,基本就水落石出。本文本着动手实操(念第一声)的原则,用java实现一个简单的编译器,让读者朋友能一感编译原理的实质,我秉持一个原则,没有代码可实践的计算机理论,都是耍流氓。 编译器作用就是将一种计算机无法理解的文本,转译成计算机能执行的语句,我们要做的编译器如下,将带有加法和乘法的算术式子,转译成机器能执行的汇编语句,例如语句: 1+2*3+4, 经过编译后
编译器--简单数学表达式计算器(一)
做了一个能够计算简单数学表达式值的小计算器,算不上是编译器,但用到了编译器的知识。最近在看一些编译器的东西,所以动手写这个最简单的计算器,既是对那些抽象的编译器知识有个形象的认识,也为后面添加复杂的东西--语句打下基础。此计算器是以《编译原理与实践》中实现的tiny编译器为参考写的,tiny是一个值得去研究的编译器,可以说是麻雀虽小,五脏俱全。从词法分析到代码生成都有,并且代码非常清晰易懂。我觉得
编译原理课程设计
中缀式转后缀式 主要功能与要求: 采用语法制导翻译模式设计一个包含词法分析,语法分析,符号表管理,错误处理及输出功能模块的,由中缀式转换为后缀式的编译器。该编译器能够分析的表达式中能够包含+,-,*,/,(),变量名,常数等。 要求: 1) 可以输入要编译的文件名,从给定文件中读取编译的源程序,也可从键盘输入; 2) 能进行功能选择进行词法分析,语法分析,中间代码生成,输出; 3) 可以输出二元式序列(种别编码,属性值),符号表,状态栈分析过程,四元式表; 4) 能够分析括号是否匹配,如有错误,给出相应错误提示信息,及错误定位; 5) 输出表达式的后缀式采用语法制导翻译模式设计一个包含词法分析、语法分析、符号表管理、错误处理及输出等功能模块的、由中缀表达式到后缀表达式的完整编译器。
编译原理课设代码-6
编译原理课设(NEU)代码main.cpp 代码有几处bug,另外当时开发的时候心太急,理论基础没有做好,导致代码有不可逆性的缺陷:符号表,大家可以将符号表结构修改一下 代码是分为多个文章中存放的 VS 2017 VC++环境 // 编译课程设计.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include "pch.h" #include &lt;iost...
编译原理课程设计 基于Java的LL(1)文法预测分析程序
1概述语法分析器的任务在于,对词法分析器识别出的单词符号串进行识别分析,如程序中的表达式、说明语句等各类型语句,对于语法分析主要采取的是上下文无关文法进行描述的,且主要分为自上而下的语法分析以及自下而上的语法分析,而在自上而下的语法分析中存在回溯现象,为了避免回溯,在自上而下的语法分析方法中,主要采用LL(1)语法分析方法,LL(1)分析方法的主要特点为:文法不含左递归,文法中每一个非终结符的各个...
数据结构停车场管理系统
这是课设的时候根据老师的要求写的一个简单的停车场管理系统,其中运用到了栈和队列
编译原理大作业——小C语言编译器
1.小C语言编译器
编译原理课设c编译器
包含词法分析,语法分析,语义分析,中间代码产生,目标代码产生(C或者masm ) 初始语言为抽象语言,每个模块都有单独源码和exe文件,使用不同语言,自行选择所需模块
编译原理c++简单词法分析器
简单词法分析程序         编译原理课程词法分析程序,自己c++写的比较简单功能实现,需要的用户可以在此基础上进行自己思路的扩充修改。功能:读取一个自己设定路径下的txt文件中代码,然后将分析结果保存在另外一个自己设定路径下txt文件中,下附加代码: /* Name: 词法分析器  Copyright:  Author: ycc  Date: 24/03/17 11:24
一个简单的编译原理词法语法语义分析程序
一个一遍扫描的词法语法语义分析程序,将部分C语言的语法成分翻译成三地址代码,有一定的出错提示和错误恢复功能。
编译原理(八) 算符优先分析法-分析过程
前情提要 算符优先分析法(构造算法优先关系表) 算法描述 算符优先关系主要用于界定右句型的句柄: 标记句柄的左端; =出现在句柄的内部; >标记句柄的右端。 发现句柄的过程: 从左端开始扫描串,直到遇到第一个>为止。向左扫描,跳过所有的=,直到遇到一个句柄包括从上一步遇到的左部之间的所有符号,包括介于期间或者两边的非终结符 非终结符的处理: 因为非终结符不能影
编译原理——一个编译器的各个步骤的介绍
一个编译器的结构分为分析部分(编译器的前端)和综合部分(编译器的后端)。 编译器的前端:把源程序分解成为多个组成要素,并在这些要素之上加上语法结构。然后,它使用这个结构来创建该源程序的一个中间表示。如检查出源程序没有按照正确的语法构成,或者语义上不一致,它就必须提供有用的信息,使得用户可以按此进行改正,在编译器的前端,还会收集有关源程序的信息,并把信息存放在一个成为符号表的数据结构中。 编译器...
一个java实现的简易编译器
这是一个用java实现的简易的编译器,他能将一个具有加法和乘法的算术表达式编译成类汇编语言,这是我博文对应的代码,具体请参看我的博文: http://blog.csdn.net/tyler_download/article/details/50668983 例如输入 1+2*3+4; end end是必须的,表示输入结束,然后程序输出: t0 = 1 t1 = 2 t2 = 3 t1 *= t2 t0 += t1 t1 = 4 t0 += t1
基于扩展C0文法的编译器设计(Part1)
啊(充满哲♂学的呻吟) 终于在上学期完成了我航课程中的三巨头之一——编译,有了一点微不足道的收获。现在才有时间整理一下整个过程,发到博客上以记录自己的成果,顺便如果有学弟学妹需要也可以参考借鉴(但是别照搬——有查重!!)一.需求说明1.文法说明文法无需改写,符合要求,解读如下: <加法运算符> ::= +|- 分析:定义加减法运算符 样例:a+b a-b <乘法运算符> ::= *|/
编译原理课设资料
编译原理课设资料编译原理课设资料编译原理课设资料编译原理课设资料编译原理课设资料编译原理课设资料编译原理课设资料
编译原理c++语法分析器
语法分析器  针对编译原理第三版-何炎祥主编的书中一个 LL(1)语法分析表,利用c++编写了语法分析程序,下附加代码: /* Name: LL(1)语法分析器  Copyright:  Author:y cc  Date: 18/04/17 16:26 Description: 根据固定的分析表,这里是编译原理第三版-何炎祥主编的书中一个语法分析表 对输入以$结尾的字符串进行判断是
JAVA实现一个简单的代数运算语言编译器(一)--写在前面
写在前面: 大二下学期编译原理课才开始不久,我们老师便要求我们使用C、C++或者是java语言编写一个简单的支持代数运算的计算器,以此来体会程序编译的过程。 具体要求如下图: 我们大一的确学过C++,大二上学期的数据结构也是用C++教的,不过自己对C++还是一知半解,反而对java比较熟悉,于是我选择用java来实现这个项目。 案例分析: 我们知道,绝大多数的编译器都无外
编译原理的词法分析器设计与实现
https://download.csdn.net/download/xuptacm/10383733 完整项目包 int wordanalysis()//词法分析,分为3部分,完整项目在下面 { if ((a[i] &amp;amp;gt;= 'A'&amp;amp;amp;&amp;amp;amp;a[i] &amp;amp;lt;= 'Z')||(a[i]&amp;amp;gt;='a'&amp;amp;amp;&amp;amp;amp;a[i]&amp;amp;lt;='z')) //
从无到有——制作简易编译器(一)
从无到有——制作简易编译器(一) 编译原理是计算机专业大三或者大四的必修课程之一,许多学员都会对学生提出硬性或者软性的制作简易编译器的要求。许多学生手足无措,别急,学长也是过来人,看完这个教程,保证你轻轻松松完成属于你自己的编译器。 首先第一篇教程不会涉及具体的实现。在这种大工程之前,正确的模块划分是极为重要的。这样可以让你阶段性地看到自己的成果,对于自信心是一个极大的帮助;此外,正确的模块划
编译原理 语言处理器——编译器与解释器的理解
编译器与解释器 1.定义 编译器:一段将源程序转化为目标程序的程序即 源程序——编译器——目标程序 ,同时编译器也有报告源程序错误的功能。 解释器:  一段逐条解释源程序并结合输入产生输出的程序,有源程序报错功能而且比编译器效果好。 对于编译型语言分为两步:1. 源程序——编译器——目标程序 2. 输入——目标程序——输出 对于解释性语言只需要一步:源程序+输入——解释器——输出 2....
软考编译原理:有限自动机
有限自动机也称有穷自动机。 重点: NFA与
编译原理语法分析(java)
今天老师要让我们写一个语法分析器,,布置的内容是,给一个已经消除了左递归和回溯的文法, 让我们写出整个语法分析过程,,我竟然记错了,,花了几个小时写了个,消除左递归 《直接递归的消除》  时间有点紧,写的有点乱,(关键是没按照命名标准来命名),以后再改吧,,没用什么数据结构,都是java内部lang.string中的方法, 若有道友写出C语言版本的,可以分享出来(谢谢) 《循环左递
编译原理 编译器的实现(C语言实现)
 编译原理 编译器的实现(C语言实现)chap1  词法语法语义的实现绪论   根据输入Context-free Grammar(上下文无关法)构建分析器,实现类似于yacc,lex的功能。   例如输入:      S->S      S->BB      B->bB|a   下面说明,可选择阅读,是构建分析器的主线。   首先构建词法分析器,识别文法,然后把文法储存在文法表中,然后利用Can
小型编译器
编译原理课设,做一个小型的编译器,实现基本的编译功能
编译原理-简单计算器(词法分析/语法分析)-含源码
编译原理-简单计算器(词法分析/语法分析)-含源码: 之前大学的时候,编译原理课程有一个做计算器的任务,当时没有做,只顾做一个漂亮计算器界面。 想来当时是买椟还珠了,有点小遗憾,觉得编译原理没有实践,没有理解透彻。 趁这周末有空,就把编译器重新做一做。
编译原理课设代码-4
编译原理课设(NEU)代码exe2.cpp 代码有几处bug,另外当时开发的时候心太急,理论基础没有做好,导致代码有不可逆性的缺陷:符号表,大家可以将符号表结构修改一下 代码是分为多个文章中存放的 VS 2017 VC++环境 #include "pch.h" #include "exe2.h" #include"Symbol_table.h" #include &lt;string&gt; #...
编译原理课设 词法分析、语法分析、语义分析生成中间代码
涉及词法分析、自下而上语法分析程序的实现:SLR(1)分析器的实现以及生成中间代码
VC++商品库存管理系统
一个很好的程序,完全可以实现老师对课设的要求!!!
南开大学编译原理大作业 实现一个编译器
南开大学的编译原理期末作业,实现一个编译器,可以实现将程序源代码转换为汇编程序然后执行
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 python培训老师 老师大数据培训心得体会