%{ #include #include "y.tab.h" extern char *yytext; extern FILE *yyin; %} %token NUMBER %start S %% S : expr '+' expr { $$ = $1 + $3; printf( "%d\n", $$ ); } | expr { $$ = $1; printf( "%d\n", $$ ); } ; expr : NUMBER { $$ = yylval; printf( "Tok is %s\n", yytext ); } ; %% int main( int argc, char *argv[] ) { FILE *fp = NULL; int retval; if( (argc > 1) && ((fp = fopen( argv[1], "r" )) != NULL) ) yyin = fp; retval = yyparse(); if( fp != NULL ) fclose( fp ); return( retval ); } int yyerror( str ) char *str; { printf( str ); }