编译原理这个分类文章的开头(环境安装配置)

写在前面

  • 相信读者看到这个神奇的标题,都会觉得很高大上,还要什么文章开头,其实不然,我这个分类介绍的并非要你写代码,例如什么用代码实现“词法分析”、“文法分析”、“语义分析”、“代码生成”等等一系列步骤。
  • 这个分类旨在,用尽量少的代码,去编写一个编译器的两个部分——词法分析和文法分析(也许以后会把整个编译器都写出来,但现在时间挺紧张的。。)
  • 我曾经自己硬着头皮去写过一个词法分析器,但是觉得代码质量不太高,而且很费时间。

lex(flex)和yacc(bison)

安装

  • 把理论的东西转化为代码是一种很痛苦的事,如果我只是写一些理论的东西,然后通过一些工具自动生成代码会不会更好?
  • 而这些工具是什么?词法分析的过程其实可以采用开源社区的Flex;文法分析可以靠bison(yacc的GNU版)这个东西。读者可以直接去百度文库搜索一篇文章《Win7下lex 与 yacc的安装配置》,直接下载就好了,里面有详细介绍。(本人是在windows下搞的,电脑硬盘不够大,学校很多事情依赖win会比较方便就没去linux下开发)
  • flex下载http://gnuwin32.sourceforge.net/packages/flex.htm
  • bison下载http://gnuwin32.sourceforge.net/packages/bison.htm
  • 如果是windows下的话看大家喜欢用gcc还是微软vs了,我在下面给出gcc的地址和微软vs的配置(我是用vs,所以这个分类都是vs下开发)
  • gcc下载http://gnuwin32.sourceforge.net/packages/bison.htm
  • flex和bison和gcc的安装都很简单,这里不赘述

配置VS2015环境

其实就是让我们vs在编译c/c++代码前运行一些系统命令,记得一定要给flex和bison设置好系统的环境变量哦~~另外也非常感谢一篇博文http://www.cnblogs.com/P_Chou/archive/2010/03/24/1693763.html
虽然是vs2008的,但是也给我很多配置的线索。

  • 可以新建一个项目,顺便创建一个源文件,写个mian函数能够编译就好
  • 我们找到项目属性
  • 然后要添加点命令行,让VS可以在编译前先执行点flex和bison的命令
  • 然后写命令
  • bison -d parse.y
  • flex scan.l
  • 这里写图片描述
  • 现在我们编辑两个文件——scan.l和parse.y。(看过多篇博客,基本上都用这个来测试环境配置是否成功)

下面是scan.l的代码

%{
int yywrap(void);
%}

%%

%%

int yywrap(void)
{       
return 1;
}

下面是parse.y的代码


%{
void yyerror(const char *s);
%}

%%

program:      

;

%%

void yyerror(const char *s)
{}

int main()
{       
yyparse();       
return 0;
}
  • 然后一步就是把文件存放到和main.cpp一起的目录下
  • 这里写图片描述
  • 这里写图片描述
  • 这里写图片描述
  • 到这里,我们就编译一下吧~~
  • 这里写图片描述
  • 生成了三样东西,手工添加到解决方案资源管理器里吧~
  • 这里写图片描述
  • 这里写图片描述
  • .c结尾的就是源代码,.h结尾的就是头文件,这里如果能编译出来,那么就说明正常了,环境安装配置到此结束

开头的最后

  • 生成的源代码都是又长又臭的,那我们又怎么用它们呢?这里卖个关子~~
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值