根据左部提示规则,只需在规则段中添加添加规则就可以。
要求正确识别以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;
}