自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 语法文件解释器及编译器代码生成

1 文法文件的定义语法文件使用的是LL分析方法。LL分析最简便的就是使用递归程序,或构造自动机。 WACC中,采取的硬编码的方式构造自动机。所谓硬编码,是与上章讲的按表格驱动实现自动机相对的。表格驱动往往采用一种二维数组(有可能是一种压缩的)构成状态转换表。程序读取当前符号和当前状态,查询表格来决定下个状态。代码相对比较短,对于不同的问题,仅仅需要修改表格的内容,而不需要修改代码就能解决。硬编

2014-03-14 23:43:44 1217

原创 R(1)项目集族

1.1 R(1)项目集族1.1.1 LR(1)的定义该定义来自《编译原理及实践》(Kenneth C Louden)定义1:(LR(1)第一部分定义)假设有LR(1)项目[A - > α•Xγ, a],其中X是任意符号(终结符和非终结符),那么X有一个到项目[A - > αX•γ, a]的转换。这个定义实际与WACC对应的的部分是4.2.1节21行CSymbol* CItem:

2014-03-09 21:26:22 2455

原创 Epsilon闭包计算

1.1.1 Epsilon闭包计算同样使用文法S’ - > SS – > ( S ) SS - > 4.2.1节给出了8个项目状态,构成的NFA也有8个状态。如下图:图表 46通过NFA的eposilon转换,我们可以得到该文法的DFA。如下图:图表 47我们可以看到,在NFA向DFA进行eposilon转换的过程

2014-03-09 13:26:21 3248

原创 LR语法分析器

YACC的实现原理。

2014-03-09 13:12:00 7937

原创 第三章 LALR(1)的构造

未完待续。

2014-03-08 21:46:59 4169

原创 如何机算?

3 如何机算?机算和手算的算法是一样的,不过要使用机算的话,要将抽象的概念转换为具象代码,还是有一定的难度,但大家不用灰心,我们一步一步地来。3.1 Language定义Language与上面的文法是对应的,知道上面文法的定义为一个四元组(VN, VT, P, S),如何将文法定义具象至代码呢?C/C++没有元组的概念,但是不用着急,我们可以先将元组的特性都抛开,定义一个数据结构,然后

2014-03-08 21:44:05 1001

原创 第一章 first集的计算

第一章 first集的计算现在我们开始自己做的YACC部分,首先我们要计算first集。在计算first集之前,我们要了解关于文法的一些基础知识,理解这部分内容,可能会涉及到离散数学中的关系一章。显然,对关系运算的理解有助于对编译原理的理解。1 基础知识1.1 文法定义参见编译原理教材,可知一个文法定义为一个四元组(VN, VT, P, S)其中VN为非终结符号(或语法实体,或变量

2014-03-08 21:39:32 1742

原创 WACC使用的技术

WACC使用的技术WACC使用的是LALR(1)文法,先行符号集的计算采用的反向传播算法,而不是LR(1)合并同心集的算法。反向传播算法的好处是计算同心集节省空间,而且可以直接通过LR(0)文法DFA(确定性有限自动机)直接生成。本人认为,在编译原理中较难的部分在自底向上的分析,而目前的书籍均在此处退避三舍。即使有,也是手工构造SLR(1)或LR(0)的分析表。作者在在这里给读者揭示编译原

2014-03-08 21:36:47 1160

原创 复杂例子的测试

复杂例子的测试该例子生成的语言较为简单,仅仅支持整数的加减乘,不支持除法,不支持字符串。下面以两个例子展示该语言的语法。测试用例一:计算1+2+….. …+I{计算 1 + 2 +3 + 。。。}A = 0;input I;sum = 0;while A beginsum = sum + A;A = A +1end;print sum用例中,

2014-03-08 21:31:33 832

原创 一个复杂一点的例子

一个复杂一点的例子下面是一个复杂一点的支持Pascal子集的例子。语法文件如下:command->program;program->stmtSeq{  DPRINT("In Reduce:program->stmtSeq\n"); D(1)->Interpreter();};stmtSeq->stmtSeq NEWLINE stmt {   DPRINT("

2014-03-08 21:30:14 901

翻译 chrome进程架构

多进程构架该文档描述chromium的定层架构。问题 建一个永不崩溃和阻塞的渲染引擎(rendering engine )几乎是不可能的。同样,做一个绝对安全的渲染引擎也是不可能的。 从某种意义上说,目前web浏览器的状况有点像过去的单用户,多任务的操作系统。应用的误操作会导致整个系统的崩溃。类似,现在的web浏览器中的网页误操作会导致整个web浏览器崩溃。浏览器或插件引入bu

2013-06-13 21:23:27 1419

原创 关于编译原理。

   内容太多了,全写出来有150多也,到时候看我的《自己动手制作YACC》

2009-10-08 15:10:00 540

原创 AVL 树--wiki

AVL树维基百科,自由的百科全书跳转到: 导航, 搜索非 AVL树的例子在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个儿子子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者 G.M.

2009-06-24 11:05:00 963

原创 我做的YACC --2

 效果生成的符号属性和DFA报告$: eposilon is  0 nt is 0 value is 0command: eposilon is  0 nt is 1 value is 1exp: eposilon is  0 nt is 1 value is 2ADD: eposilon is  0 nt is 0 value is 3term: eposilon i

2009-05-11 11:04:00 967

原创 我做的YACC --1

前言如果在WiKi中查找YACC。就可以找到这样的一段话:yacc(Yet Another Compiler Compiler),是Unix/Linux上一个用来生成编译器的编译器(编译器代码生成器)。yacc生成的编译器主要是用C语言写成的语法解析器(Parser),需要与词法解析器Lex一起使用,再把两部份产生出来的C程序一并编译。yacc本来只在Unix系统上才有,但现时已普遍移植往

2009-05-11 10:42:00 1502

Rapid+GUI+Programming+with+Python+and+Qt.pdf

学习python qt的权威资料 Contents Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Part I: Python Programming Chapter 1. Data Types and Data Structures . . . . . . . . . . . . . . . . . . . . . 9 Executing Python Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Variables and Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Numbers and Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Integers and Long Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Floats and Decimals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Bytestrings, Unicode Strings, and QStrings . . . . . . . . . . . . . . . . . . 20 Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Chapter 2. Control Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Conditional Branching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Looping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 List Comprehensions and Generators . . . . . . . . . . . . . . . . . . . . . . . 53 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Generator Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Using Keyword Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Lambda Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Dynamic Function Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Partial Function Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

2011-07-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除