随笔分类 -  编译原理

大三的编译原理
摘要:1.语法文法G[E]如下所示: E→E+T | E-T | T T→T* F | T/F | F F→P^ F | P P→(E) | i 要求构造出符合语义分析要求的属性文法描述(主要写生成四元式的部分)。 2.(选做)实验三:语法制导的语义翻译程序 要求: 用算符优先分析法实现如上表达式文法的语 阅读全文
posted @ 2019-12-22 17:38 杜嘟嘟 阅读(191) 评论(0) 推荐(0)
摘要:1. 已知算符优先关系矩阵如下表: + * i ( ) # + > < < < > > * > > < < > > i > > > > ( < < < < = ) > > > > # < < < < = 写出符号串(i+i)*i#的算符优先分析过程。 答:算符优先分析过程如下: 步骤 栈 关系 输入 阅读全文
posted @ 2019-12-13 17:33 杜嘟嘟 阅读(496) 评论(0) 推荐(0)
摘要:1.已知文法: E→E+T | T T→T*F | F F→(E) | i 以句柄作为可归约串,写出符号串‘i+i*i#’的"移进-归约"分析过程。 2.P121练习1的(1)(2)。 1)计算FIRSTVT和 LASTVT。 2)找三种关系对。 3)构造算符优先关系表。 1() 步骤 符号栈 输入 阅读全文
posted @ 2019-12-06 14:58 杜嘟嘟 阅读(207) 评论(0) 推荐(0)
摘要:一、实验目的: 利用C语言编制递归下降分析程序,并对简单语言进行语法分析。 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。 二、实验原理 每个非终结符都对应一个子程序。 该子程序根据下一个输入符号(SELECT集)来确定按照哪一个产生式进行处理,再根据该产生式的右 阅读全文
posted @ 2019-11-29 15:03 杜嘟嘟 阅读(142) 评论(0) 推荐(0)
摘要:1. 文法 G(S): (1)S -> AB (2)A ->Da|ε (3)B -> cC (4)C -> aADC |ε (5)D -> b|ε 验证文法 G(S)是不是 LL(1)文法? FIRST(Da)={b,a} FIRST(ε)={ε} FIRST(aADC)={a} FIRST(b)= 阅读全文
posted @ 2019-11-21 22:25 杜嘟嘟 阅读(134) 评论(0) 推荐(0)
摘要:1.将以下文法消除左递归,分析符号串 i*i+i 。 并分别求FIRST集、FOLLOW集,和SELECT集 E → E+T | T T → T*F | F F→ (E) | i 2.P101练习7(2)(3) 文法改写,并分别求FIRST集、FOLLOW集,和SELECT集 课堂练习: 求以下文法 阅读全文
posted @ 2019-11-15 15:41 杜嘟嘟 阅读(211) 评论(0) 推荐(0)
摘要:1.将DFA最小化:教材P65 第9题 2.构造以下文法相应的最小的DFA S→ 0A|1B A→ 1S|1 B→0S|0 3.给定如下文法 G[S]: S →AB A → aA | ɛ B → b | bB 给出句子aaab 的一个自顶向下语法分析过程,并说明回溯产生的原因是什么? 4.P100 阅读全文
posted @ 2019-11-08 19:20 杜嘟嘟 阅读(478) 评论(0) 推荐(0)
摘要:1.设有 NFA M=( {0,1,2,3}, {a,b},f,0,{3} ),其中 f(0,a)={0,1} f(0,b)={0} f(1,b)={2} f(2,b)={3} 画出状态转换矩阵,状态转换图,并说明该NFA识别的是什么样的语言。 2. NFA 确定化为 DFA 1.解决多值映射:子集 阅读全文
posted @ 2019-11-01 15:18 杜嘟嘟 阅读(313) 评论(0) 推荐(0)
摘要:1.正规式转换到正规文法 对任意正规式R选择一个非终结符Z生成规则Z→R 1.对形如A→ab的规则,转换成A→aB,B→b 2.将形如A→a|b的规则,转换成A→a,A→b(A→a|b) 3.将形如A→a*b的规则,转换成A→aA,A→b 将形如A→ba*的规则,转换成A→Aa,A→b 不断利用上述 阅读全文
posted @ 2019-10-24 19:56 杜嘟嘟 阅读(113) 评论(0) 推荐(0)
摘要:1.分别写出描述以下语言的正规文法和正规式: L1={abna|n≥0}。 L2={ambn|n≥1,m ≥1} L3={(ab)n|n≥1} 2.将以下正规文法转换到正规式 Z→0AA→0A|0BB→1A|ε Z→U0|V1U→Z1|1V→Z0|0 S→aAA→bA|aB|bB→aA I→l|Il 阅读全文
posted @ 2019-10-18 17:12 杜嘟嘟 阅读(833) 评论(0) 推荐(0)
摘要:此程序要逐个检查运行情况,并能当场补全代码。 词法分析程序(Lexical Analyzer)要求: - 从左至右扫描构成源程序的字符流 - 识别出有词法意义的单词(Lexemes) - 返回单词记录(单词类别,单词本身) - 滤掉空格 - 跳过注释 - 发现词法错误 程序结构: 输入:字符流(什么 阅读全文
posted @ 2019-10-10 23:46 杜嘟嘟 阅读(290) 评论(0) 推荐(0)
摘要:1. 梳理第二章的内容,写一篇理解与总结。 第二章主要讲述了文法的直观概念,符号和符号串,文法和语言的形式定义,文法的类型,上下文无关语法及其语法树 句型的分析,自订向下的分析方法,自底向上的分析方法,限制文法中不得含有有害规则和多余规则,在形式语言中, 最右推导常被称为规范推导,由规范推导所得的句 阅读全文
posted @ 2019-09-26 18:24 杜嘟嘟 阅读(195) 评论(0) 推荐(0)
摘要:1.已知文法: S->a|^|(T) T->T,S|S 分析句型(T,(^,a)),求全部的短语、直接短语和句柄。 S->(T)->(T,S)->(T,(T))->(T,(T,S))->(T,(T,a))->(T,(S,a))->(T,(^,a)) 2.构造上下文无关文法,描述语言: {anbn|n 阅读全文
posted @ 2019-09-18 15:47 杜嘟嘟 阅读(207) 评论(0) 推荐(0)
摘要:.理解符号串与集合运算。 L={A,B, … ,Z,a,b, … ,z} D={0,1, … ,9} 说明下表示的含义: LUD LD L4 L* D+ L(LUD)* LUD是字母和数字的集合 LD是所有一个字母后随一个数字的字符串的集合; L4={A,B,...,Z,a,b,...,z,A,B, 阅读全文
posted @ 2019-09-12 17:06 杜嘟嘟 阅读(190) 评论(0) 推荐(0)
摘要:1.简述编译程序与翻译程序、汇编程序的联系与区别。 翻译程序是指把高级语言源程序翻译成机器语言源程序(目标代码)的软件。 翻译程序有两种:一种是编译程序,它将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。另一种是解释程序,它的执行过程是翻译一句执行一句,并且不会生成目标程 阅读全文
posted @ 2019-09-04 10:50 杜嘟嘟 阅读(258) 评论(0) 推荐(0)
摘要:一个完整的编译程序除词法分析程序,语法分析程序,语义分析程序,中间代码生成程序,代码优化程序和目标程序之外必须包括表格管理程序和出错程序 而解释程序·它不需要在运行前先把源程序翻译成目标代码,也可以实现在某台机器上运行程序并生成结果。 阅读全文
posted @ 2019-09-04 10:24 杜嘟嘟 阅读(2127) 评论(0) 推荐(0)
摘要:编译过程包括哪几个主要阶段及每个阶段的主要功能。 词法分析阶段:读入源程序,对构成源程序的字符流进行扫描和分解,识别出单词, 语法分析阶段:机器通过词法分析,将单词序列分解成不同的语法短语,确定整个输入串能够构成语法上正确的程序。 语义分析阶段:检查源程序上有没有语义错误,在代码生成阶段收集类型信息 阅读全文
posted @ 2019-09-04 10:18 杜嘟嘟 阅读(14767) 评论(0) 推荐(1)
摘要:翻译程序是指把高级语言源程序翻译成机器语言源程序的软件。 翻译程序有两种:一种是编译程序,它将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。另一种是解释程序,它的执行过程是翻译一句执行一句,并且不会生成目标程序。 编译程序是先完整编译后运行的程序,如C、C++等;解释程序 阅读全文
posted @ 2019-09-04 10:07 杜嘟嘟 阅读(2201) 评论(0) 推荐(0)