一个LEX程序,用于识别关键字并将其转换为大写

时间:2015-06-15 09:05:32

标签: compiler-construction flex-lexer lex

请帮我回答这个问题。 我想写一个flex程序(keyword.l)来识别关键字并将其转换为大写。我得到这个代码但是当我用cmd运行flex时出错(C:\ GnuWin32 \ bin flex keyword.l) 错误是:

  

"无法打开keyword.l"

%{#include<stdio.h>
int i;
%}keyword main|int|scanf|printf|if|else
%%

{keyword} {
for(i=0;i<yyleng;i++)
printf("%c",toupper(yytext[i]));
}
%%

main()
{
yyin=fopen("num.c","r");
yylex();
}

int yywrap()
{
return 1;
}

1 个答案:

答案 0 :(得分:1)

你的节目非常好。

可能出现的问题是,在保存它时,您将其写为keyword.l。但是,它会保存为keyword.l.text,因此当您使用命令flex keyword.l进行调用时,它表示无法打开。你应该呼吁&#34; flex keyword.l.txt&#34;或者将扩展名更改为&#34; flex keyword.l&#34;。然后它应该工作。