EduCoder编译原理实训平台(1)关于什么时lex/flex

根据左部提示规则,只需在规则段中添加添加规则就可以。

要求正确识别以ab结尾的字符串,且输入串中的数据只有a-z和A-Z。

以ab结尾那么ab前面可以有任意个字符,亦可以没有字符。所以规则为[a-zA-Z]*[a][b]。

补充说明:如果测试时提示lex.yy.c文件不存在,请检查规则是否符合规范。

/* 简单词法分析器 */
 /* 功能:能够识别出以小写字母ab结尾的所有字符串(仅含大小写字母)并给打印'Hit!' */
 /* 说明:在下面的begin和end之间添加代码,已经实现了标识符和整常量的识别,你需要完成剩下的部分,加油吧! */
 /* 提示:你只需要保证合法的输入(以ab结尾的字符串)有结果,不合法的输入将会包含在.规则中~ */
%{
#include <stdio.h>
%}

%%
 /* begin */
 
 /* end */
[a-zA-Z]*[a][b]     {printf("%s: Hit!\n",yytext);}
\n				{}
.				{}
%%
int yywrap() { return 1; }
int main(int argc, char **argv)
{
	if (argc > 1) {
		if (!(yyin = fopen(argv[1], "r"))) {
			perror(argv[1]);
			return 1;
		}
	}
	while (yylex());
	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值