этой ошибки: строка 32: непризнанное правило появляется в моем коде в этой строке:ошибка: непризнанное правило в гибком инструменте
{OCTAL} printf("Kind= OCTAL, Word= %s, LineNumber= %d\n",yytext,LineNum);
и я думаю, что проблема здесь:
OCTAL "\"(0|[1-3][0-7][0-7]|[1-7][0-7]|[1-7])
это мой код:
%{
int LineNum=1;
int count =0;
%}
%x OneLineComment MultipleLinesComment
DIGIT [0-9]
INT [+|-]?(0|[1-9][0-9]*)
OCTAL "\"(0|[1-3][0-7][0-7]|[1-7][0-7]|[1-7]) // i think the error is here !!
DOUBLE {INT}"."{DIGIT}*((E|e)?[+|-]?[1-9][0-9]*)?
KEYWORD int|double|while|if|else
IDENTIFIER [_A-Za-z]+[_A-Za-z0-9]*
Space " "
Tab "\t"
NewLine "\n"
%%
{INT} printf("Kind= INTEGER, Word= %s, LineNumber= %d\n",yytext,LineNum);
{OCTAL} printf("Kind= OCTAL, Word= %s, LineNumber= %d\n",yytext,LineNum); // the error line
{DOUBLE} printf("Kind= DOUBLE, Word= %s, LineNumber= %d\n",yytext,LineNum);
{KEYWORD} printf("Kind= KEWORD, Word= %s, LineNumber= %d\n",yytext,LineNum);
{IDENTIFIER} printf("Kind= IDENTIFIER, Word= %s, LineNumber= %d\n",yytext,LineNum);
"//" BEGIN(OneLineComment);
<OneLineComment>.
<OneLineComment>"\n" {
printf("Kind= OneLineComment, LineNumber= %d\n",LineNum);
printf("Kind= WhiteSpace, Word= NewLine, LineNumber= %d\n",LineNum);
BEGIN(INITIAL);
LineNum++;
}
"/*" { count=LineNum;
BEGIN(MultipleLinesComment);
}
<MultipleLinesComment>.
<MultipleLinesComment>"\n" LineNum++;
<MultipleLinesComment>"*/" {
printf("Kind= MultipleLinesComment, LineNumber= %d,ToLineNumber= %d\n",count,LineNum);
count=0;
BEGIN(INITIAL);
}
{Space} printf("Kind= WhiteSpace, Word= Space, LineNumber= %d\n",LineNum);
{Tab} printf("Kind= WhiteSpace, Word= Tab, LineNumber= %d\n",LineNum);
{NewLine} {
printf("Kind= WhiteSpace, Word= NewLine, LineNumber= %d\n",LineNum);
LineNum++;
}
. printf("Kind= wrongToken, Word= %s, LineNumber= %d\n",yytext,LineNum);
%%
int yywrap()
{
return 1;
}
int main()
{
yylex();
return 0;
}
и когда я пишу это таким образом ошибка уходит:
OCTAL "\\"(0|[1-3][0-7][0-7]|[1-7][0-7]|[1-7])
Что я делаю неправильно?
Я не думаю, что вы имели в виду, чтобы пометить это ж/Adobe/Apache Flex - основа пользовательского интерфейса. Я вернул его в flex-lexer; но я не уверен, что это правильно. – JeffryHouser