免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4750 | 回复: 6

编译器学习笔记01(是flex还是bison更厉害)——2014_2_24 [复制链接]

论坛徽章:
0
发表于 2014-02-24 16:15 |显示全部楼层
************************
首先上个月开始学习编译原理,是从学习原理起步的,事实证明从原理起步很难,效果不好。因为看到了antlr,感觉从应用上培养感觉可能好一点,然后又从antlr找到了flex和bison。

目前只用windows 下的vc,所以暂时学习范围有限制。

原理的笔记在某博客上,一是不能显示gif动画,另一个是显示格式也不太喜欢,我喜欢自己控制行距。

*************************

搜百度 flex,
v.         弯曲(关节);收缩(肌肉);显示力量
果然
flex.jpeg

但是,bison也不示弱
bison.jpeg

不管怎样,都是重量级的。一眼很难比出高低。

**************************

首先,是windows下环境配置,mingw 之前已经配置好了,只需要配置flex和bison。

参考
http://blog.csdn.net/pandaxcl/article/details/873898
Lex和Yacc从入门到精通(1)--环境配置篇

比较老的资料,链接是无效的;不过指出要找到 UnxUtils包中的 flex.exe和bison.exe ,另外再找到 bison.simple和bison.hairy两个文件。

找到新的链接
http://hi.baidu.com/iamstupid/item/ec13f36e0e4edf09a0cf0f8d
找到了一个好东西 UnxUtils

内容如下,
Linux上的一些GNU工具,现在都移植都到Windows上,现在可以直接在windows中使用了!Enjoy it!
下载请到http://sourceforge.net/projects/unxutils

01.JPG
再把C:\UnxUtils\bin 加入到环境变量 PATH 中
******************************

环境配置好了,就可以找例子试试手了。

论坛徽章:
0
发表于 2014-02-24 16:37 |显示全部楼层
本帖最后由 oldbeginner 于 2014-02-24 16:38 编辑

************************
一个计算器的例子

************************
我是参考
http://blog.csdn.net/chinamming/article/details/16974391
使用bison和flex工具[zz]

该文又是参考。。。。。

以讹传讹大概也是这种流程。

我过去的一个月,可以证明作者的一段话是很有见地的,
使用bison和flex工具学习编译原理,远比单独看书然后自己编写一些程序生动的多。这样你就不会在那些复杂的字符处理,正则表达式的处理上浪费精力,最后费尽心力,却没有结果,失去了学习的兴趣。


***************************
只浏览一下大概过程,程序也不复制了,链接里的程序是可以执行的。
02.JPG

然后,
编译命令如下:
>bison -d calc.y
>flex calc.lex
>gcc calc.tab.c lex.yy.c -o calc

计算器.gif

********************************
开始不用被细节困扰,用多了就有兴趣仔细研究了。   

论坛徽章:
2
摩羯座
日期:2013-10-10 14:29:04天蝎座
日期:2014-01-03 09:14:49
发表于 2014-02-24 17:48 |显示全部楼层
既然学flex, bison,不如索性使用linux吧。

论坛徽章:
0
发表于 2014-02-24 18:14 |显示全部楼层
本帖最后由 oldbeginner 于 2014-02-25 18:54 编辑

装了ubuntu虚拟机,一直没用,上手感觉非常糟糕,要另外抽时间学Linux。


   

论坛徽章:
2
摩羯座
日期:2013-10-10 14:29:04天蝎座
日期:2014-01-03 09:14:49
发表于 2014-02-25 09:14 |显示全部楼层
没太关注界面,主要是在命令行下干活

论坛徽章:
0
发表于 2014-02-25 19:10 |显示全部楼层
*************************
安装LLVM
本例失败,暂时没有装上
*************************

本来想做一个toy compiler的(参考http://blog.csdn.net/chinamming/article/details/16974327
使用Flex Bison 和LLVM编写自己的编译器[zz] )

但是最难的问题是怎样安装LLVM。

Windows下找到两种方法。

1、利用CMake
http://www.oschina.net/question/12_80908
在Windows下面進行LLVM與CLANG的安裝

编译并没有通过,
编译时间确实很长

安装llvm-1.gif
   
安装llvm-2.gif

CMake是新下载的,非常好装,有专门windows安装文件,path什么默认就可以了。

下载最新的LLVM,解压后,并把另外的clang也解压后放入tools目录下
06.JPG

很可惜,半个小时后,67%时失败。(不管怎样,还是比中华民族复兴指数高了4%多,《专家称中华民族复兴任务2010年已完成62%》,http://www.chinanews.com/gn/2012/08-03/4082518.shtml

09.jpg
如果我是专家的话,作业是安装LLVM的话,满分是100分的话,我能得67分。

*****************************************

2、用vs2010 安装
http://llvm.org/releases/3.4/docs/GettingStartedVS.html
Getting Started with the LLVM System using Microsoft Visual Studio
07.JPG
08.JPG

总共9步,第7步没有完成,感觉比第一种方法进步了一些。VS 编译到 4433行时没有反映了。

****************************************

明天继续安装,先重复一遍。

看到
http://wenwen.soso.com/z/q328297189.htm
求牛人教LLVM入门教程(安装了3天没安装成功过)

感觉这点挫折算啥。

论坛徽章:
0
发表于 2014-03-19 12:17 |显示全部楼层
bison和gcc有 什么区别 ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP