//<parser.l>
%{
#include<stdio.h>
#include "y.tab.h"
%}
%%
[0-9]+ {yylval.dval=atof(yytext);
return DIGIT;
}
\n|. return yytext[0];
%%
//<parser.y>
%{
/*This YACC specification file generates the LALR parser for the program
considered in experiment 4.*/
#include<stdio.h>
%}
%union
{
double dval;
}
%token <dval> DIGIT
%type <dval> expr
%type <dval> term
%type <dval> factor
%%
line: expr '\n' {
printf("%g\n",$1);
}
;
expr: expr '+' term {$$=$1 + $3 ;}
| term
;
term: term '*' factor {$$=$1 * $3 ;}
| factor
;
factor: '(' expr ')' {$$=$2 ;}
| DIGIT
;
%%
int main()
{
yyparse();
}
yyerror(char *s)
{
printf("%s",s);
}
Ly88cGFyc2VyLmw+CiV7CiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlICJ5LnRhYi5oIgolfQolJQpbMC05XSsge3l5bHZhbC5kdmFsPWF0b2YoeXl0ZXh0KTsKcmV0dXJuIERJR0lUOwp9ClxufC4gcmV0dXJuIHl5dGV4dFswXTsKJSUKLy88cGFyc2VyLnk+CiV7Ci8qVGhpcyBZQUNDIHNwZWNpZmljYXRpb24gZmlsZSBnZW5lcmF0ZXMgdGhlIExBTFIgcGFyc2VyIGZvciB0aGUgcHJvZ3JhbQpjb25zaWRlcmVkIGluIGV4cGVyaW1lbnQgNC4qLwojaW5jbHVkZTxzdGRpby5oPgolfQoldW5pb24Kewpkb3VibGUgZHZhbDsKfQoldG9rZW4gPGR2YWw+IERJR0lUCiV0eXBlIDxkdmFsPiBleHByCiV0eXBlIDxkdmFsPiB0ZXJtCiV0eXBlIDxkdmFsPiBmYWN0b3IKJSUKbGluZTogZXhwciAnXG4nIHsKcHJpbnRmKCIlZ1xuIiwkMSk7Cn0KOwpleHByOiBleHByICcrJyB0ZXJtIHskJD0kMSArICQzIDt9CnwgdGVybQo7CnRlcm06IHRlcm0gJyonIGZhY3RvciB7JCQ9JDEgKiAkMyA7fQp8IGZhY3Rvcgo7CmZhY3RvcjogJygnIGV4cHIgJyknIHskJD0kMiA7fQp8IERJR0lUCjsKJSUKaW50IG1haW4oKQp7Cnl5cGFyc2UoKTsKfQp5eWVycm9yKGNoYXIgKnMpCnsKcHJpbnRmKCIlcyIscyk7Cn0=