![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译原理 Compilers
文章平均质量分 62
Luvinahlc
这个作者很懒,什么都没留下…
展开
-
Step1:如何使用flex【ZZ】
1.下载flex:http://gnuwin32.sourceforge.net/packages/flex.htm 下载Setup文件(词法分析器) 下载bison:http://gnuwin32.sourceforge.net/packages/bison.htm 下载Setup文件(语法分析器)2.安装上述两个软件,不要放在默认文件夹下,例如转载 2013-03-20 22:17:26 · 1217 阅读 · 1 评论 -
词法分析——编写Flex源代码
首先,我们需要一份C--的Grammar,基于这个Grammar,进行代码的编写: 在这里,INT和FLOAT都是无符号的,也就是说是非负的。其次,对于INT的实现,可以加入八进制和十六进制的实现,FLOAT的实现,可以加入指数形式的实现。这些都是很简单的,将正则表达式写对就OK了。 Flex输入文件包括3个部分,通过“%%”隔开,如下面代码所示:原创 2013-04-17 21:34:32 · 2911 阅读 · 0 评论 -
词法分析——实验过程中遇到的问题
本次实验的内容本来就不是很多,遇到的错误也不是很多,但是总是会在编译的时候遇到这样一个问题: 所提示的行号处并没有什么比较明显的错误,后来通过多次的比较我才发现原来是和空格有关,很有可能是多了空格或者是少了空格,因为我自己的编程习惯,比较喜欢在程序中添加空格,使得看起来清楚美观一点,但是往往会使得编译器报错,少空格的情况,比如下面的: 在Flex的规则部原创 2013-04-17 21:44:39 · 4422 阅读 · 0 评论 -
词法分析——Flex介绍(包括如何编译和运行)
实在是没有写博客的习惯,忽然发现实验做完了,但是还没有写博客,于是上来补一篇好了。 这次的词法分析的内容不是很多,13号晚上花了点时间写完了代码,14号写实验报告的时间居然比写代码的时间还要多,于是想起了那句话“如果爱迪生每个实验都写一份实验报告,那他还会有这么多的发明吗?”大概是这么个意思。 目前采用的是在windows下写词法分析,并且在windows上编译原创 2013-04-17 21:18:41 · 3188 阅读 · 3 评论 -
语法分析——Bison介绍以及Flex、Bison联合编译
语法分析使用Bison,在前面的博文中提到一些如何在Windows下安装Bison,但是从语法分析开始,我还是在Linux下写实验的,安装了ubuntu,因此需要在Linux下安装Bison,这个安装是比较简单的,只需要在命令行中敲入如下命令:sudo apt-get install bison,同样,安装Flax:sudo apt-get install flex 如,写好原创 2013-05-22 21:10:17 · 4100 阅读 · 0 评论 -
语法分析——实现过程
首先是一些比较重要的需要考虑的内容:1. 减号优先级的处理通过%left、%right和%nonassoc对终结符的结合性进行规定,其中%left表示左结合,%right表示右结合,%nonassoc表示不可结合。2. 嵌套if-else移入规约冲突(也被称为“悬空else”):显式地解决悬空else问题可以借助于算符优先级。Bison源代码中每一条产生原创 2013-05-22 21:35:22 · 2331 阅读 · 1 评论