Неизвестная ошибка правила при использовании lex

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..... Может кто-нибудь сказать мне ответ.........


person DSC    schedule 07.12.2010    source источник


Ответы (1)


См. информационную страницу Flex:

Форма правила такова:

pattern action

Flex считает, что новое правило без действия запускается в строках 9, 10, 11 и так далее. Потяните открывающую фигурную скобку из строки 10 вверх, чтобы она выглядела так:

...
"/*"   {
   char ch;
...
person Linus Kleen    schedule 07.12.2010