"(@" { patsign_begin = yylineno; text_yytext_curr = 2; while ((text_char = fgetc(yyin))!=EOF) { NL_CHECKTEXTLIMIT if (text_char == '@') { text_char = fgetc(yyin); if (text_char == EOF) break; NL_CHECKTEXTLIMIT yytext[text_yytext_curr] = '@'; text_yytext_curr++; CHECKLIMIT if (text_char == ')') { yytext[text_yytext_curr] = ')'; text_yytext_curr++; CHECKLIMIT yytext[text_yytext_curr] = '\0'; yyleng = text_yytext_curr; return (TEXT); } else ADVANCE_CHECKLIMIT } else ADVANCE_CHECKLIMIT } yytext[text_yytext_curr] = '\0'; yyleng = text_yytext_curr; fprintf(stderr,"SCANNER: error occurred on line %d : unmatched (@ on line %d\n",yylineno,patsign_begin); return(TOKEN_NOT_RECOGNIZED); } "@)" { fprintf(stderr,"SCANNER: error occurred on line %d : unmatched @) on line %d\n",yylineno,patsign_begin); return(TOKEN_NOT_RECOGNIZED); } \"[^"\n]*\" return(STRING); {Letter}({Letter}|{Sep}|{Digit})* return(IDENT); -?{Digit}+\.{Digit}+ return(REAL_NUMBER); -?{Digit}+ return(NUMBER); . return(TOKEN_NOT_RECOGNIZED);