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