Compiler Edesign Exp 3d
Compiler Edesign Exp 3d
PROGRAM:
LEX FILE(arith1.l):
%{
#include "y.tab.h"
extern int yylval;
int yyerror(const char *);
%}
%%
[ \t] {;} // Ignore whitespace
[0-9]+ { sscanf(yytext, "%d", &yylval); return NUMBER; }
[-+*/\n()] { return *yytext; } // Return each character as token
. { yyerror("unrecognized character"); return(0); }
%%
int yywrap(void) {
return 1;
}
YACC FILE(arithy.y):
%{
#include <stdio.h>
int yylex();
int yyerror(const char *s);
%}
%token NUMBER
%%
list:
| list '\n'
| list expr '\n' { printf("Ans:\t%d\n", $2); }
;
expr:
NUMBER { $$ = $1; }
| expr '+' expr { $$ = $1 + $3; }
| expr '-' expr { $$ = $1 - $3; }
| expr '*' expr { $$ = $1 * $3; }
| expr '/' expr { $$ = $1 / $3; }
Page no:
MEENAKSHI SUNDARARAJAN ENGINEERING COLLEGE
#363, Arcot Road, Kodambakkam, Chennai – 600024, Tamil Nadu, India
%%
int main(void) {
printf("Enter expressions:\n");
yyparse();
return 0;
}
OUTPUT:
Page no: