OC编译器编译源代码的一般流程是:接收源文件,然后将它们转换为能够在目标平台上执行的文件包括:词法分析、语法分析、生成代码和优化、汇编与链接,最终生成二进制文件词法分析:源代码被拆分为多个记号,每个记号都是一个独立的元素语法分析:会检查正确语法的记号,并检查它们所构成表达式的合法性, 目...
分类:
其他好文 时间:
2015-05-24 17:10:50
阅读次数:
172
Go 我不懂,下面以 C++ 和 C# 对比来说明为什么 C++ 编译慢和 C# 编译快。C 和 C++ 文件的编译经过几个主要步骤:处理续行符处理(“\”)之类的杂事词法分析,解析出 tokens 来预处理,宏展开,处理 #include ,然后对 #include 包含的文件又重复 1~3 步骤...
分类:
编程语言 时间:
2015-05-22 18:30:28
阅读次数:
338
如何学习一门新的语言?
1 学习的目的?解决问题。
2 如何解决问题?通过语言本身和通过和语言相关的库。
学习就是学习语言的使用以及库的使用。
我们一般都学习过一种或者几种语言,从学习语言的过程中我们自己已经摸索出了语言的特征。并且使用它来解决了一些问题。然后我们把这些问题重新提出,用新语言如何解决?这是很好的练习过程。
语言的元素:
语元(在词法分析中叫token),这个是构...
分类:
编程语言 时间:
2015-05-20 11:25:53
阅读次数:
137
预头文件/*----Head file for analysis programs in....----*/#include #include #include //使用到的字符分类函数定义在的头文件/***TEST编译器:词法分析头文件*@authormohui*@date 2015/04/12....
分类:
其他好文 时间:
2015-05-20 09:27:41
阅读次数:
173
语法对于某些应用,我们所完成的简单的词类识别也许足够用了;而另一些应用需要识别特殊的标记序列并执行适当的动作。传统上,对这样的一套动作描述成为语法。使用右箭头”->”意味着可以用一个新的符号取代一套特殊的标记。
例如:subject ->noun\pronoun 指示一个新的符号subject是名词或代词。词法分析程序和语法分析程序的通信当一起使用lex扫描程序和yacc语法分析程序的时候,语法...
分类:
其他好文 时间:
2015-05-17 16:49:26
阅读次数:
200
接着第一节中的第一个示例,我们扩展第二个示例,将词法分析程序扩展为识别不同的词性。
下面是程序示例:%{
/*
* 扩展第一个示例以识别其他的词性
*
*/
%}
%%
[ ]+ /* 忽略空白 */;
is |
am |
are |
were |
was |
be |
being |
been |
do |
does |
did |
will |
would |
should |...
分类:
其他好文 时间:
2015-05-15 09:15:10
阅读次数:
119
Note:这学期修了严厉的Mr.J的编译原理,不定期更新笔记!
欢迎指正!TEST 语言的词法规:
标识符:字母打头,后接任意字母或数字
保留字:标识符的子集,包括:if,else,for,while,do, int,write,read,
无符号整数:由数字组成,但最高位不能为0,允许一位的0,
分界符:(、)、;、{、}
运算符:+、-、*、/、=、、>=、<=、!=、==
注释符:/*...
分类:
其他好文 时间:
2015-05-12 23:08:39
阅读次数:
178
在阅读有些程序的源码时,很希望能够马上弄清楚源码中到底包含了哪些头文件,以确定是否需要为了特殊的函数而手动加入#include。借助flex的词法分析实现了这一功能,本质上就是对正则表达式的匹配。注意这个程序不能够处理包含嵌套的情形(也就是说不能指出包含文件包含了哪些文件),感兴趣的可以通过栈来.....
分类:
其他好文 时间:
2015-05-12 01:27:09
阅读次数:
124
【1】预处理语句是什么语句?预处理语句最明显的标志是一些行首以#开始的特殊语句。例如:#include,#define 等就是预处理语句。在程序的其它编译处理(词法分析、语法分析、代码生成、优化和连接等)之前,先进行这些语句的分析处理。【2】预处理语句使用的目的?目的在于帮助程序员编写出易读、易改、...
分类:
其他好文 时间:
2015-05-11 23:38:51
阅读次数:
197
编译一个linux下的c系统,包含词法和语法分析模块,Linux上用bison和flex。yacc是一个文法分析器的生成器,bison即是yacc的GNU版本.Lex和YACC是用于构造词法分析机和语法解释器的工具,利用Lex和YACC你可以轻松的构造一个语法解释器。一开始make错误1:debia...
分类:
其他好文 时间:
2015-05-11 10:39:03
阅读次数:
139