编译原理_词法分析

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

于是就打算做一个词法分析器,可以将特定的串(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
然后就可以了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值