All pastes #39030 Raw Edit

Someone

public text v1 · immutable
#39030 ·published 2006-01-29 16:55 UTC
rendered paste body
%token INTEGER VARIABLE
%left '+' '-'
%left '*' '/'
%{
    #include<stdio.h>
    void yyerror(char *);
    int yylex(void);
    int sym[26];
    FILE *yyin;
%}
%%
program:
        program statement '\n' 
	|error '\n'	       { yyclearin;yyerrok;printf("error in");}
        |
        ;
statement:
        |expr                   { printf("%d\n", $1); }
        | VARIABLE '=' expr    { sym[$1] = $3; }
        ;
	
expr:
        INTEGER
        | VARIABLE             { $$ = sym[$1]; }
        | expr '+' expr        { $$ = $1 + $3; }
        | expr '-' expr        { $$ = $1 - $3; }
        | expr '*' expr        { $$ = $1 * $3; }
        | expr '/' expr        { $$ = $1 / $3; }
        | '(' expr ')'         { $$ = $2; }
        ;
%%
void yyerror(char *s) {
    fprintf(stderr, "%s\n", s);
    return;
}
int main(void) {
    yyin=fopen("inp.dat","r");
    yyparse();
    return 0;
}