
编译原理
文章平均质量分 79
buck
游戏开发者
展开
-
《编译原理-龙书》练习第1章
【u】表示我对答案不缺定第1章 引论1.1 语言处理器1.1.1 编译器将源程序翻译成目标程序;解释器不翻译,直接根据用户输入执行源程序中的操作1.1.2 编译器优点是速度快,解释器优点是容易调试,容易发现错误1.1.3 【u】我想到的一个好处是汇编语言是机器无关的,容易移植1.1.4 【u】c语言比较通用,相对汇编语言容易阅读,相对其他高级语言速度快1.1.5 【u】原创 2012-12-02 09:51:15 · 1249 阅读 · 0 评论 -
编译原理学习总结
最近通过龙书学习编译原理,里面很多东西不容易理解,尤其是读第一遍的时候,通常一头雾水,而且书中很多内容确实需要读到后面的内容才能理解,比如语法分析中讲规约过程,刚开始读会很不理解为什么这么规约,直到读完后面的内容。花了2个月时间,前八章终于看完了,书的内容没的说,看了收获不少,不过比较偏向理论,尤其是5-8章。有空看看《编译原理与实践》第一章是基本概念,读完这一章是为了有个基本了解,这一章原创 2013-02-03 09:13:35 · 2810 阅读 · 1 评论 -
《编译原理-龙书》练习第6章
f6.1 语法树的变体6.1.1 xy+-*/的表达式在纸上构造DAG是比较容易的,如果用LL或LR文法构造,则如第4章,需要先建表,然后分析。6.1.2 类似6.1.16.2 三地址代码6.2.1 a + -(b+c)三地址代码t1 = b + ct2 = minus t1t3 = a + b2四元式oparg1arg2re原创 2013-01-18 07:30:07 · 8008 阅读 · 2 评论 -
《编译原理-龙书》练习第3章
3.1 词法分析器的作用3.1.1 float limitedSquare ( x ) { float x ; return ( x = 10.0 ) ? 100 : x * x ; }除原创 2012-12-17 21:18:01 · 11617 阅读 · 2 评论 -
《编译原理-龙书》练习第2章
第2章 一个简单的语法制导翻译器2.2 语法定义主要描述了“上下文无关文法”2.2.1 1)S1 = aa+S2 = S1a*2) * +a a a3)该文法生成的语言是由+和*组成的后缀表达式,怎么证明呢?2.2.2 同不懂怎么证明1)前面n个0后面n个1组成的串2)+/-组成原创 2012-12-03 22:51:18 · 5360 阅读 · 4 评论 -
lex yacc 创建一个桌面计算器
作为学习龙书前4章一个总结,做一个计算器,支持+-*/(),*/优先,lex采用flex2.5.37,yacc采用bison2.7最后的效果是可以连续输入表达式进行计算,比如3.2+5.3*(6.2+3.3)首先构建可以单独运行的可以识别浮点数的词法分析器和可以处理单个数字的语法分析器,然后进行修改并将两者结合起来首先构建独立词法分析器,参考龙书中图4-60%{#includ原创 2012-12-30 14:22:58 · 2413 阅读 · 1 评论 -
Bison生成文件分析
Bison功能很强大,可以加参数-v可以生成可阅读的.output文件,还可以生成dot转换图本文以lex yacc 创建一个桌面计算器 为例子研究bison生成代码所有介绍都以bison生成为准,通过-v生成*.output文件,通过设置#define YYDEBUG 1以及yydebug=1进行调制文法0 ACCEPT : OVER1 OVER : E '\n'2原创 2013-01-09 17:26:50 · 2456 阅读 · 0 评论 -
Flex生成文件分析
本文参考龙书,分析了Flex生成词法分析器代码首先给出一个可以运行的模板,修改其中%%转换规则%%的转换规则部分即可测试不同正则表达式生成代码并编译运行查看结果一个可运行代码%{#include "stdio.h"%}%%a { printf("match%s\n", yytext); }%%int yywrap(){ return 1原创 2013-01-03 12:39:27 · 1906 阅读 · 0 评论 -
《编译原理-龙书》练习第5章
这一章重要的是2个概念:SDD:语法制导定义,由一个上下文无关文法和属性及规则组成SDT:语法制导翻译,是在其产生式体内嵌入了程序片段的一个上下文无关文法5.1 语法制导定义图5.5中计算过程比较复杂,看完5.2节求值顺序就会理解更多5.1.1比较简单,就是自底向上语法树中加上 .val就行5.1.2 5.2 SDD的求值顺序5.2.1 保证下表中从左到右排就行原创 2013-01-13 14:48:19 · 12378 阅读 · 4 评论 -
《编译原理-龙书》练习第7章
7.1 存储组织7.2 空间的栈式分配7.2.4栈中的变长数据,在c语言中所有变长数据都在堆中。7.2.1 1)这种情况下快排效果最差O(n*n)2)栈中最多状态情况:P(1, 9)P(1, 8)...P(1,2)P(1,1)共9个7.2.3 1) f(5) f(4)原创 2013-01-27 10:36:42 · 5450 阅读 · 0 评论 -
《编译原理-龙书》练习第4章
4.2 上下文无关文法**4.2.7节中L={a^nb^n|n>=1}怎么用文法表示?S -> aAbA -> ab|ε4.2.11) E -> EE* -> EE+E*-> aa+a*左到右依次a2) 与1)一样,只是最后一步右到左依次a3) E E E * E E +id id id4)无原创 2012-12-20 22:50:21 · 29506 阅读 · 1 评论 -
《编译原理-龙书》练习第8章
代码生成:中间表示形式+符号表 -> 指令选择,寄存器分配和指派,指令排序8.2 目标语言8.2.1 1) x = 1LD r, #1ST x, r3)x = a+1LD r, aADD r, #1ST a, r5)x = b*cLD R1, bMUL R1, cST x, R18.2.2 1)x=a原创 2013-02-02 22:08:38 · 5923 阅读 · 1 评论