使用lex时无法识别的规则错误

时间:2010-12-07 09:30:34

标签: flex-lexer

1 %{
2        #include<stdio.h>
3        #include<ctype.h>
4 %}
5 %option noyywrap
6 %%
7 [a-z]   {  putchar(yytext[0]);  }
8
9 "/*"
10        {
11                char ch;
12                while((ch = input()) != '*')
13                        putchar(toupper(ch));
14                while((ch = input()) == '*');
15                if((ch = input()) == '/')
16                        return 0;
17        }



%%

int main()
{
yylex();
return 0;
}
~  

当我试图编译这个“lex comment.lex”时,我在第12,14,15行得到了无法识别的规则错误......任何人都可以告诉我答案....... ..

1 个答案:

答案 0 :(得分:1)

请参阅flex info page

规则表格是:

pattern action

Flex认为在第9,10,11行等中开始了无操作的新规则。从第10行拉出开口花括号,使其看起来像:

...
"/*"   {
   char ch;
...