编译原理_词法分析

来源:互联网 发布:年度质量数据汇总图表 编辑:程序博客网 时间:2024/06/07 21:06

最近在学编译原理,编译的第一步是词法分析

于是就打算做一个词法分析器,可以将特定的串(123456789)转化为另一个特定的串(matrix123),并且统计单词数目以及字符个数

第一步是编写lex文件(example.l)

int num_ids = 0, num_chars = 0;%%123456789  {printf("<span style="font-size:18px;">matrix123</span>");num_chars+=9;}[a-zA-Z]+  {printf("%s",yytext);num_chars+=yyleng;++num_ids;}.          {printf("%s",yytext);++num_chars;}%%main(){yylex();printf("# of ids = %d, # of chars = %d\n ", num_ids, num_chars);}

第二步调用flex生成lex.yy.c

在flex.exe的文件下运行命令 flex < example.l
然后就生成了lex.yy.c

第三步新建一个项目(我用的VS2013)

添加lex.yy.c以及libfl.lib

第四步 调试

有两个错误 
1.

 只要将fileno更新为_fileno即可

2.

在忽略的定默认库里添加LIBC.lib就好

第五步 运行

然后就有了ley.yy.exe
再加一个输入文件in.txt
在该目录下运行 lex.yy.exe < in.txt
然后就可以了
0 0