Академический Документы
Профессиональный Документы
Культура Документы
%%
^[+-]?(([1-9][0-9]*)|(0))/{LINE} {yylval=atoi(yytext); return NUM;}
\/[+-]?[0]$ {yylval=atoi(yytext+1);return DEN1;}
\/[+-]?([1-9][0-9]*)$ {yylval=atoi(yytext+1); return DEN;}
([a-zA-z]*[0-9]*)* {return ER;}
\n |
. ;
YACC:
%{
#include <stdio.h>
double k=0;
%}
%start list
%token NUM DEN DEN1 ER
%%
list:
|list drob;
drob: NUM DEN { k =(double)$1/$2; printf("Result=%f \n",k); return 0;}
|NUM DEN1 {printf("ZERO FAKE"); return 0;}
|NUM ER {printf("Error"); return 0;}
;
%%
int yyerror() {
printf("Error");
}
int yywrap() {
return 0;}
main() {
yyparse();
}