自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

汪星人来地球的博客

数学才是人工智能的正确打开方式

  • 博客(9)
  • 资源 (2)
  • 收藏
  • 关注

原创 词法分析

#include #include const int INT=0;const int BOOL = 1;const int VOID = 2;const int TRUE = 3;const int FALSE = 4;const int IF = 5;const int ELSE = 6;const int FOR = 7;const int WHILE = 8;con

2017-01-16 19:07:22 427

原创 词法分析与正则表达式(三)

对编译原理有基本了解的人都知道,正则表达式与有限状态自动机存在等价的关系。换句话说,它们能够识别的语言集合是一样的。但是在C语言的词法分析中,我们不需要运用有限状态自动机的知识,因此相关的介绍都略去。本文介绍如何实现C语言的语法分析。需要指出的是,我们不打算实现C语言的所有功能。因为这既耗时,也完全没有必要。通过实现一些简单的功能,就足以理解编译原理的全貌了。我们词法分析程序,识别的关

2017-01-16 19:04:24 1003

原创 词法分析与正则文法(二)

集合的运算设L和D都是某些字符串的集合,定义L∪DL\cup D为两个集合的并。 LDLD为两个集合的连接,即LD=αβ:α∈L,β∈DLD={\alpha\beta: \alpha \in L, \beta\in D}。 LkL^k为两集合L的k次自连接。例如L3=LLL=(LL)LL^3=LLL=(LL)L。特别地,记L0={ϵ}L^0=\{\epsilon\},其中ϵ\epsilo

2017-01-11 23:44:32 828

原创 词法分析与正则表达式 (一)

严格来说,词法分析是语法分析的一部分。可是将词法分析从语法分析中抽离出来,有如下好处。1. 简化语法分析器的设计。如果把空白字符和去除注释这些功能都交给语法分析器来处理,那语法分析器的结构会变得非常简单。2. 提高编译器效率。编译器耗时最大的部分消耗在词法分析阶段。因为词法分析涉及到文件读操作。而将词法分析器抽离出来,有利于设计更有效的专门的处理器。3. 增强编译器的移植性。与

2017-01-10 20:24:20 1827

原创 左递归

空串产生式最常出现的情形——左递归的消除。左递归是产生式的一种特殊形式。它的形式如下。A→AαA\rightarrow A \alpha其中A是非终结符,而α\alpha是由终结符和非终结符组成的字符串。注意,α\alpha不能是空串,否则产生式变为A→AA\rightarrow A没有任何意义。左递归会对文法分析造成困扰。因为,根据产生式,我们可以不断进行如下推导。A→→→→AαAααAααα..

2017-01-08 17:43:12 10964

原创 空串产生式

在上下文无关文法的定义中,要求产生式的左部是一个非终结符,而产生式的右部是非终结符和终结符串。但是有一类产生式非常特殊。它们形如V→ϵV\rightarrow\epsilon这里V是非终结符,而ϵ\epsilon是一个特殊的字符,表示空串。在处理空串时需要特别注意。因为一个空串可以看做是两个空串的链接。这样一生二,二生三,无穷无尽,不知道何处是个头。因此在语法分析时,空串产生式不是随处可用。那么在什

2017-01-08 17:01:40 3006

原创 去除代码中的注释(三) 实现 下

上一篇博文介绍了对输入字符流的预处理,将字符流转化为Token流。经过这一步转化后,就可以使用上下文无关文法进行分析了。本文介绍对Token流的分析过程。我们使用递归下降法来实现语法的解析。递归下降法的特点是,为每一个非终结符定义一个函数,在这个函数里需要定义所有以该非终结符为左部的产生式。我们定义了下面的非终结符。表示整个源代码段,它是文法定义中的初始非终结符

2017-01-07 21:08:38 345

原创 去除代码中的注释——完整实现代码

#include class Token{public: int type, value; const static int END_OF_FILE = EOF; const static int BLCOK_COMMENT_START = 0; const static int LINE_COMMENT_START = 1; const s

2017-01-05 10:26:46 2359

原创 去除代码中的注释(二) 实现 上

上一篇博文介绍了去除代码注释的思想。我们发现,代码注释准确来说,不属于上下文无关文法的范畴。也就是同样的一个字符串,在不同的上下文环境下语义有所不同。为了对付这种情况,需要在字符解析时引入状态变量。我们实现的过程,主要分为两个部分。首先将输入字符串整理成一个Token。这里的Token在文法规则中对应的终结符。有了第一部分的工作,生成的Token流就可以通过上下文无关文

2017-01-04 21:54:46 636

material design lite(MDL)web 开发 js 和css酷

Material design lite开发需要用到的基本css和js库

2016-10-19

material design lite (mdl) 库文件

material design lite (mdl) 库文件

2016-10-19

空空如也

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

TA关注的人

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