Flex-Bison-Beispiel

parser.y:
%token NUM
%left '-' '+'
%%
input : | input line ;
line  : exp '\n' 
  { printf ("%d\n", $1); }
exp   : NUM  { $$ = $1; }
   | exp '+' exp   
       { $$ = $1 + $3; }
   | exp '-' exp   
       { $$ = $1 - $3; }
   ;
%%
scanner.l:
%{
#include "parser.tab.h"
%}
%%
[0-9]+ { 
  yylval = atoi (yytext); 
  return NUM; }
[-+*/^()] { 
  return yytext[0]; }


interpreter.c:
int main (int argc, char ** argv) { yyparse (); }



Johannes Waldmann 2008-01-24