2016-06-01 JustWe
分析一个C语言的Lex & Yacc 程序 博客地址: http://lfkdsk.github.io 代码地址: https://github.com/lfkdsk/CodeParse 本节我们来分析一个能匹配C语言的Lex & Yacc 程序 Lex文件:http://www.lysator.liu.se/c/ANSI-C-grammar-l.html Yacc文件:http://www.lysator.liu.se/c/ANSI-C-grammar-y.html 也可以直接在我的github代码地址中进行下载。 先来分析Lex文件 ``` c D [ 继续阅读 »
2016-06-01 JustWe
博客地址: http://lfkdsk.github.io 代码地址: https://github.com/lfkdsk/CodeParse 为计算器添加一些新功能 本节代码:CalcWithTable 上次我们使用Lex & Yacc制作了一个能够处理优先级的计算器,其中的优先级的设定是通过修改文法 ,将优先级提升,这次重写这个计算器并添加一些新的功能。 先看Lex文件 ``` C %{ include "y.tab.h" include include "link_list.h" %} %% /* 这段正则和之前都有所不同 明显的增加了对于科学 继续阅读 »
2016-05-27 JustWe
熟悉一下Lex 和 Yacc的用法 博客地址: http://lfkdsk.github.io 代码地址: https://github.com/lfkdsk/CodeParse tips:阅读此篇需要一定的C语言基础和正则表达式的知识 首先上一篇提到了第一步的工作是要使用 Lex 和 Yacc 进行编写,所以说第一步首先简单的学习一下 Lex & Yacc 的用法,Lex & Yacc 是一套很古老的编译生成套件,大约在上个世纪80年代就有了。但是并不过时,我们今天生成编译程序仍然能够用得上。Lex & Yacc 如果简单的概括来说,Lex 负责词法分析,就是把输入串的纯字符转化为 继续阅读 »
2016-05-26 JustWe
你的问题在于读书太少,想的太多 —— 杨绛 昨天惊闻杨绛先生去世,突然想到了几年前看到的杨绛先生的这句话。我觉得在计算机领域理论知识更是尤为重要,现在某乎上盛行的计算机理论知识(尤指算法)无用论当真特别可悲。在这里我觉得讨论科班非科班的人都是别有用心的,重要的问题在于这些基础的训练,而不是科班非科班,我们知道很多大神都不是计算机相关专业的,但是他们的基础的深厚程度,确是很多科班出身的人无法能及的,所以说一切的问题还是要积累知识。 这学期一直在学编译原理的课程,我实实在在的感觉到了这个课程和相关内容的有趣。尤其是我在学习之前试着自己不借助任何的理论去写一个解释器,竟然也命中了不少的知识,这让 继续阅读 »