编译原理-大作业
- 格式:doc
- 大小:560.50 KB
- 文档页数:15
编译原理19春在线作业2-0003
描述语言L={a的m次方b的n次方|n≥m≥1}的文法是哪个()。
A:Z::=Abb,A::=aA|a,B::=bB|b
B:Z::=AB|b,A::=Aa|a,B::=aBb|b
C:Z::=Ab,A::=aAb|a
D:Z::=aAb,A::=Ab|aAb|ε
答案:D
高级语言编译程序常用的语法分析方法中,递归下降分析法属于哪一类的分析方法()。
A:自左至右
B:自顶向下
C:自底向上
D:自右向左
答案:B
两个有穷自动机等价是指它们的什么相等()。
A:状态数相等
B:有向弧数相等
C:所识别的语言相等
D:状态数和有向弧数相等
答案:C
合并表达式中的常量运算的目的是什么()。
A:合并常量,使表达式中的常量尽可能少
B:合并常量,使表达式尽可能简短
C:合并常量,使得生成的代码指令尽可能少
D:合并常量,使表达式的运算强度减弱。
答案:C
算符优先文法是在什么之间定义优先关系()。
A:终结符号
B:非终结符号
C:所有符号
D:部分符号
答案:A
语法制导翻译时,用形如X.ATTR的记号来表示文法符号X的相关什么属性()。
A:语法
B:词法
C:语义
D:语用
答案:D
LL(1)分析法的名字中,第一个“L”的含义是什么()。
A:自左至右
B:自顶向下
C:自底向上
D:自右至左
答案:A
一个文法所描述的语言是什么样的()。
A:唯一的
B:不唯一的。
编译原理_平时作业1 对于下列语言分别写出它们的正规表达式。
(1) 英文字母组成的所有符号串,要求符号串中顺序包含五个元音。
答:令Letter表示除这五个元音外的其它字母。
((letter)*A(letter)*E(letter)*I(letter)*O(letter)*U(letter))*(2) 英文字母组成的所有符号串,要求符号串中的字母依照词典顺序排列。
答:A*B*....Z*(3) Σ={0,1}上的含偶数个1的所有串。
答: (0|10*1)*(4) Σ={0,1}上的含奇数个1的所有串。
答:(0|10*1)*1(5) 具有偶数个0和奇数个1的有0和1组成的符号串的全体。
答:设S是符合要求的串,|S|=2k+1 (k≥0)。
则S→S10|S21,|S1|=2k (k>0),|S2|=2k (k≥0)。
且S1是{0,1}上的串,含有奇数个0和奇数个1。
S2是{0,1}上的串,含有偶数个0和偶数个1。
考虑有一个自动机M1接受S1,那么自动机M1如下:和L(M1)等价的正规表达式,即S1为:((00|11)|(01|10)(00|11)*(01|10))*(01|10)(00|11)*类似的考虑有一个自动机M2接受S2,那么自动机M2如下:和L(M2)等价的正规表达式,即S2为:((00|11)|(01|10)(00|11)*(01|10))*因此,S为:((00|11)|(01|10)(00|11)*(01|10))*(01|10)(00|11)*0|((00|11)|(01|10)(00|11)*(01|10))*1(6) 不包含子串011的由0和1组成的符号串的全体。
答:1*|1*0(0|10)*(1|ε)(7) 由0和1组成的符号串,把它看成二进制数,能被3整除的符号串的全体。
答:假设w的自动机如下:对应的正规表达式:(1(01*0)1|0)*2 给出接受下列在字母表{0,1}上的语言的DFA。
秋兰大编译原理课程作业B————————————————————————————————作者:————————————————————————————————日期:单选题编译程序使用_____区别标识符的作用域。
A: 说明标识符的过程或函数名B: 说明标识符的过程或函数的静态层次C: 说明标识符的过程或函数的动态层次D: 标识符的行号单选题编译程序是一种常用的______软件。
A: 应用B: 系统单选题扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即( ) A: 字符B: 单词C: 句子D: 句型单选题栈式动态分配与管理在过程返回时应做的工作有()。
A: 保护SPB: 恢复SPC: 保护TOPD: 恢复TOP单选题语言是( )A: 句子的集合B: 产生式的集合C: 符号串的集合D: 句型的集合单选题编译程序是对_____。
A: 汇编程序的翻译B: 高级语言程序的解释执行C: 机器语言的执行D: 高级语言的翻译单选题构造编译程序应掌握____。
A: 源程序B: 目标语言C: 编译方法D: 以上三项都是单选题一个LR(1)文法合并同心集后,如果不是LALR(1)文法必定存在( )A: 移进--归约冲突B: 归约--归约冲突单选题下推自动机识别的语言是( )A: 0型语言B: 1型语言C: 2型语言D: 3型语言单选题若文法 G 定义的语言是无限集,则文法必然是 _____。
A: 递归的B: 前后文无关的C: 二义性的D: 无二义性的单选题四元式之间的联系是通过()实现的。
A: 指示器B: 临时变量C: 符号表D: 程序变量单选题间接三元式表示法的优点为_____。
A: 采用间接码表,便于代码优化处理B: 节省存储空间,不便于表的修改C: 便于代码优化处理,节省存储空间D: 节省存储空间,不便于代码优化处理单选题文法G[N]=({b},{N,B},N,{N→b│bB,B→bN}),该文法所描述的语言是 ____。
地大《编译原理(新)》在线作业二在LR分析法中,分析栈中存放的状态是识别规范句型()的DFA状态。
A.句柄B.前缀C.活前缀D.LR(0)项目正确答案:C词法分析器的输出是()。
A.字符串B.二元式C.三元式D.四元式正确答案:A有文法G[S]:S→aA|a|bC A→aS|bB B→aC|bA|b C→aB|bS则()为L(G)中的句子。
A.a100b50ab100B.a1000b500abaC.a500b50aab2aD.a100b40ab10aa正确答案:C()阶段检查程序的语义正确性,以保证程序各部分能有意义地结合在一起,并为以后的代码生成阶段收集类型信息。
A.语法分析B.词法分析C.语义分析D.中间代码生成正确答案:C编译程序中语法分析器接收以()为单位的输入。
A.单词B.表达式C.产生式D.句子正确答案:A把一个高级语言程序翻译成机器可执行的目标程序的工作由下列程序之一完成()。
A.汇编程序B.解释程序C.编译程序D.预处理程序正确答案:C最常用的中间代码形式是()。
A.二元式B.三元式C.四元式D.树形表示正确答案:C在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合均是()。
A.非终极符集B.终极符集C.字母表D.状态集正确答案:B以()定义给定的语言称为生成的观点。
A.文法B.语法图C.状态转换图D.自动机正确答案:A设有文法G[S]:S?S1|S0|Sa|Sc|a|b|c,下列符号串中是该文法的句子有()。
A.ab0B.a0c01C.aaaD.bc10。
地大《编译原理(新)》在线作业二
一、单选题(共15 道试题,共60 分。
)
1. 正则文法()二义性的。
A. 可以是
B. 一定不是
C. 一定是
D. 可以不是
正确答案:B
2. 由于受到具体机器主存容量的限制,编译程序几个不同阶段的工作往往被组合成()。
A. 过程
B. 程序
C. 批量
D. 遍
正确答案:D
3. 简单优先分析每次规约的是()。
A. 最左短语
B. 直接短语
C. 句柄
D. 最左素短语
正确答案:C
4. 词法分析器的输出是()。
A. 字符串
B. 二元式
C. 三元式
D. 四元式
正确答案:A
5. Chomsky 定义的四种形式语言文法中,0 型文法又称为()文法。
A. 短语文法
B. 上下文无关文法
C. 上下文有关文法
D. 正规文法
正确答案:A
6. NFA M=(Σ,S,s0,F,δ)中的δ表示()的函数。
A. S×Σ?S
B. S×Σ?2S
C. S×Σ?F。
《编译原理》课后习题答案第一章第?1?章引论第?1?题解释下列术语:(1)编译程序(2)源程序(3)目标程序(4)编译程序的前端(5)后端(6)遍答案:(1)?编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。
(2)?源程序:源语言编写的程序称为源程序。
(3)?目标程序:目标语言书写的程序称为目标程序。
(4)?编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。
通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符号表管理等工作。
(5)?后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。
(6)?遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。
第?2?题一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。
答案:一个典型的编译程序通常包含?8?个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。
其各部分的主要功能简述如下。
词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。
语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。
语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。
中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式的中间语言代码,如三元式或四元式。
中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。
目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。
表格管理程序:负责建立、填写和查找等一系列表格工作。
15春《编译原理》作业2单选题多选题判断题sa一、单选题(共 1 道试题,共 5 分。
)1. 表达式(┐A∨B)∧(C∨D)的逆波兰表示为_____。
A. ┐AB∨∧CD∨B. A┐B∨CD∨∧C. AB∨┐CD∨∧D. A┐B∨∧CD∨-----------------选择:B15春《编译原理》作业2单选题多选题判断题二、多选题(共 2 道试题,共 10 分。
)1. 题目见图片A. (A)B. (B)C. (C)D. (D)E. (E)F.-----------------选择:DE2.题目见图片A. (A)B. (B)C. (C)D. (D)E. (E)F.-----------------选择:AE15春《编译原理》作业2单选题多选题判断题三、判断题(共 17 道试题,共 85 分。
)1. 题目见图片A. 错误-----------------选择:B2. 题目见图片A. 错误B. 正确-----------------选择:A3. 符号表中的信息栏中登记了每个名字的属性和特征等有关信息,如类型、种属、所占单元大小、地址等等。
( )A. 错误B. 正确-----------------选择:A4. 甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。
( )A. 错误B. 正确-----------------选择:B5.题目见图片A. 错误B. 正确-----------------选择:A6. 简单优先文法允许任意两个产生式具有相同右部。
( )A. 错误B. 正确-----------------选择:A7. 计算机高级语言翻译成低级语言只有解释一种方式。
( )A. 错误B. 正确-----------------选择:A8. 题目见图片A. 错误B. 正确-----------------选择:B9. 题目见图片A. 错误B. 正确-----------------选择:B10. 进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
编译原理作业集-第三章-修订版第三章词法分析本章要点1.词法分析器设计,2.正规表达式与有限⾃动机,3.词法分析器⾃动⽣成。
本章⽬标:1.理解对词法分析器的任务,掌握词法分析器的设计;2.掌握正规表达式与有限⾃动机;3.掌握词法分析器的⾃动产⽣。
本章重点:1.词法分析器的作⽤和接⼝,⽤⾼级语⾔编写词法分析器等内容,它们与词法分析器的实现有关。
应重点掌握词法分析器的任务与设计,状态转换图等内容。
2.掌握下⾯涉及的⼀些概念,它们之间转换的技巧、⽅法或算法。
(1)⾮形式描述的语⾔?正规式(2)正规式→ NFA(⾮确定的有限⾃动机)(3)NFA → DFA(确定的有限⾃动机)(4)DFA →最简DFA本章难点(1)⾮形式描述的语⾔?正规式(2)正规式→ NFA(⾮确定的有限⾃动机)(3)NFA → DFA(确定的有限⾃动机)(4)DFA →最简DFA作业题⼀、单项选择题(按照组卷⽅案,⾄少15道)1. 程序语⾔下⾯的单词符号中,⼀般不需要超前搜索a. 关键字b. 标识符c. 常数d. 算符和界符2. 在状态转换图的实现中,⼀般对应⼀个循环语句a. 不含回路的分叉结点b. 含回路的状态结点c. 终态结点d. 都不是3. ⽤了表⽰字母,d表⽰数字, ={l,d},则定义标识符的正则表达式可以是:。
(a)ld*(b)ll*(c)l(l | d)*(d)ll* | d*4. 正规表达式(ε|a|b)2表⽰的集合是(a){ε,ab,ba,aa,bb} (b){ab,ba,aa,bb}(c){a,b,ab,aa,ba,bb} (d){ε,a,b,aa,bb,ab,ba}5. 有限状态⾃动机可⽤五元组(V T,Q,δ,q0,Q f)来描述,设有⼀有限状态⾃动机M的定义如下:V T={0,1},Q={q0,q1,q2},Q f={q2},δ的定义为:δ(q0,0)=q1δ(q1,0)=q2δ(q2,1)=q2δ(q2,0)=q2M所对应的状态转换图为。
《Java语言程序设计》大作业报告2019-2020学年第一学期班级:--------自己填--------学号:--------自己填--------姓名:--------自己填--------1、设计题目⑴假设车库有3个车位(可以用boolean [ ]数组来表示车库)可以停车,使用多线程模拟多个用户开车离开、停车入库的过程。
注意:车位有车时不能停车。
⑵编写一个菜单程序,要求菜单的结构如下:文件------打开------关闭系统管理------用户管理------新增用户------删除用户------退出系统要求:对退出系统添加事件、并加入快捷键CTRL+E;对新增用户添加事件、并加入快捷键CTRL+A;当点击新增用户菜单,出现一个对话框,对话框中有两个文本框(用户名和密码),同时出现两个按钮(确定和取消)。
确定按钮要有事件功能,且将输入的用户名和密码存入到一个文件中。
取消按钮事件负责完成关闭对话框功能。
2、程序设计思路(要求分步骤写清设计思路,并画出类的UML图)2.1作业32.1.1主要模块划分Park类:里面私有属性parting为车位数量初始化为3个,成员方法into (),也就是停车方法,调用该方法车位减一。
成员方法out(),调用该方法代表车子离开,车位加一。
OutThread类:继承Thread类,重写run方法,并且调用out()方法IntoThread类:继承Thread类,重写run方法,并且调用into()方法Test类:测试类,用来测试,启动OutThread类和IntoThread类线程进行测试。
2.1.2类图2.2作业42.2.1主要模块划分addActionListener:监听事件,主要用于实现鼠标事件,完成页面的打开,关闭,调用文件流;JMenuItem :菜单下拉框列表,让页面的交互性更强,提升用户体验;KeyStroke:快捷键的加入,同JMenuItem 一样,是为了提高用户的体验;2.2.2类图Jframe 类2.2.3 流程图3、 运行结果分析(截图每个关键运行点界面)菜单页面完成添加添加失败关闭窗口取消添加打开添加用户页面作业3:第一次测试,在测试类里面启动IntoThread类的线程和OutThread线程循环调用两个线程,发现只有有车位时,其他车子才能停进去作业4:运行Main函数,run us 得到一个窗口基本菜单列表展示点击新增用户,弹出添加新用户页面(默认文字为请输入新用户名):点击取消或者按ctrl+E,关闭当前窗口,并返回到窗口页面;按照要求填好用户信息,点击确认,则提示添加成功:此时打开指定文档jfram.txt则可以查看到输入的用户名和密码:4、设计中遇到的问题,解决途径及思路,经验总结。
. . .. . 塔里木大学信息工程学院 课程论文
基于 c 语言的简单词法分析器的设计 课程名称 编译原理 所属学院 信息工程学院 班 级 计算机16-6 学生 鹏宇 学 号 **********
二零一四年十二月 . .
.. . 目 录 一、引言 ..................................................................... 1 二、基于c 语言词法分析器的设计 .............................................. 1 2.1词法分析器的设计原则 ................................................. 1 2.2词法分析器的设计对象 ................................................. 2 2.3词法分析器的任务及功能 ............................................... 2 2.3.1词法分析器的任务 ............................................... 2 2.3.2 词法分析程序的功能: ........................................... 2 2.4各种单词符号对应的种别码: ........................................... 2 三、基于c 语言词法分析器的实现 .............................................. 3 3.1词法分析程序的算法思想: ............................................. 3 3.2主程序示意图: ....................................................... 3 3.3函数定义说明 ......................................................... 4 3.4程序设计实现及功能说明 ............................................... 4 3.4.1关键字的定义 ................................................... 4 3.4.2符合的关键字的查找 ............................................. 4 四、词法分析程序的C语言程序源代码 ........................................... 5 五、结果分析: .............................................................. 10 六、结束语 .................................................................. 11 参考文献 ..................................................................... 7 . .
.. . 摘要:词法分析器构造技术起源于编译器前端的词法分析需求,是编译的第一阶段。其主要任务是读入输入字符,产生记号序列,并提交给语法分析使用。词法分析器技术也经常应用于其他领域,如查询语言与信息检索系统。在每个应用中,最基本的问题是如何设计与说明一种特殊的程序,它能够完成由字符串的模式触发的动作。本文通过实际构造FineC语言(作者设计的一个C语言的轻量子集)的词法分析器对词法分析器的构造原理做了基于实践的探讨。 关键字:词法分析器,双缓冲区,符号表,正则表达式,状态转换图 一、引言 词法分析顾名思义,就是分词。它是用程序设计语言编制出的源程序作为输入,以单词的序列作为输出。分词的过程可以通过编制程序让其自动完成,我们通常把这个分词程序称为词法分析器。词法分析器分析的源程序可以是现有的各类程序设计语言源程序也可以是人为给定的模型语言的源程序。它一般有五个阶段:词法分析,语法分析,语义分析和中间代码产生及优化,目标的代码生成。完成计算机翻译过程的重要阶段,它为以后的语义分析、语法分析打好基础, 做好准备,以便高效的、高质量的生成目标语言的程序。所以词法分析,是编译过程的基础。 二、基于 c 语言词法分析器的设计 2.1词法分析器的设计原则 在编译程序的词法分析,语法分析,语义分析和中间代码的产生及优化阶段中,每个阶段都要遵守功能相等的原则。一个语言的语法的形成是词法规则和语法分析依据的语法规则组成的,衡量一个语法是不是合法要从“形”的角度去出发。因此在词法分析的阶段,重要的研究对象也就变成了词法规则。词法分析程序的输入数据是词法分析器处理的对象,其实是源程序经过了编译预处理,去掉多余的符号后,形成的代码,这样给词法分析较为方便。词法分析的过程是线性的从头到尾扫描一遍,复杂程度较低,易实现。 2.2词法分析器的任务及功能 2.2.1词法分析器的任务 从左到右所有字符逐个的对源程序进行扫描,产生一个一个单词的符号,字 . . .. . 符串的源程序转换成单词符号串中的中间程序。组成语言的基本元素是词法分析程序输出的结果,也就是单词,在实际的处理过程中,输出不一定是单词,而是每个单词相对应的二元式,形为< 单词种别 , 单词符号属性 >。编码的方式由编译系统的开发者决定。故经过词法分析,在输出结果中并没有单词本身。 2.2.2 词法分析程序的功能: 输入:所给文法的原程序字符串。 输出:二元组(syn,token 或 sum )构成的序列。 其中:Syn:“单词种别码”; Token:“存放的单词自身字符串”; Sum:“整型常数”。 例如:对源程序begin x:=9: if x>9 then x:=2*x+1/3; end #的源文件,经过词法分析后输出如下序列: (1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if)…… 2.3各种单词符号对应的种别码: 表2.3 各种单词符号对应的种别码 单词符号 种别码 单词符号 种别码 + 13 ; 26 — 14 ( 27 * 15 ) 28 / 16 # 0 dight dight* 11 = 25 bgin 1 : 17 If 2 := 18 Then 3 < 20 wile 4 <> 21 do 5 <= 22 end 6 > 23 lettet(letter|digit)* 10 >= 24 . . .. . 三、基于c 语言词法分析器的实现 基于c语言的词法分析器,是它本身程序由 c 语言编写而且它识别的源程序单词串是用 c 语言编写的。本程序编写环境是 Touboc 2.0 ,在 TC 默认途径下编辑一个 c 语言源程序再调用本程序,取名eample.c 方便程序的调用和分析,输出结果是二元式码。 3.1词法分析程序的算法思想: 算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。 3.2主程序示意图: 主程序示意图如图3-1,3-2所示。其中初始包括以下两个方面: 主函数
判断能否打开文件
读取文件读取文件
NY
所取字符是否为@取单词
N
扫描一个字符返回
调用
结束读取文件
图3-1主程序示意图 ⑴ 关键字表的初值。 关键字作为特殊标识符处理,把它们预先安排在一表格中(称为关键字表), . . .. . 当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下: Char *rwtab[6] = {“begin”, “if”, “then”, “while”, “do”, “end”,};
输入需要扫描的文件名输入扫描结果另
存为的文件名
判断文件是否为空p处返回,结束程序预读一为ChCh是否为空格Ch是是否为字母或下划线计数器自行加1跳转到扫描头文件单词及保留字跳转到扫描其他符号
跳转到扫描引号
跳转到扫描注释
跳转到扫描数字
Ch是否为引号
Ch是否为“/”
Ch是否为数字或“—”
否是否是否是否
是否否是
图3-2主程序示意图 3.3函数定义解释 (1) fopen() 在默认路径下打开分析程序并读入字符串。 (2) otherprocess() 识别当前是其它(标点符号等)。 (3) alphaprocess() 识别当前是数组、保留字、标识符。 (4) search() 查找并识别当前单词类别,并给定单词类别二元式码,决定给定字符串类别码(即单词种别)和记录次序码。 (5) digitprocess() 识别当前是常整数、小数、负小数。 (6) point() 识别当前字符串是指针。 3.4程序设计实现及功能说明 3.4.1关键字的定义 void init()