Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
http://www.google.de/search?hl=de&q=bison+tutorial&btnG=Suche&meta=lr=lang_deAiju hat gesagt.:Danke, nach welchen Stichworten hast du denn gesucht?
Nicht schlecht, hab ihn bis jetzt zumindest nicht sprengen koennenWie gefällt dir das Online Ausprobieren?
flex is ja auch n ScannerIch habe nur Flex nicht integriert gekriegt, der Parser aus TexInfo gefiel mir besser...
%{
#include <stdio.h>
int yylex(void);
void yyerror(char*);
%}
%token NUMBER
%token FULLSTOP 280 "."
%token KLAUF 281 "("
%token KLZU 282 ")"
%token PLUS 283 "+"
%token MINUS 284 "-"
%token MULT 285 "*"
%token DIV 286 "/"
%start PROG
%%
PROG: EXP FULLSTOP {printf("Erg: %d\n", $1); }
EXP: TERM {$$ = $1;}
| TERM "+" EXP {$$ = $1 + $3}
| TERM "-" EXP {$$ = $1 - $3}
;
TERM: FAKT {$$ = $1}
| FAKT "*" TERM {$$ = $1 * $3;}
| FAKT "/" TERM {$$ = $1 / $3}
;
FAKT: NUMBER {$$ = yylval}
| "(" EXP ")" {$$ = $2;}
;
%%
int main(int argc, char* argv[]){
printf("Das Programm berechnet einen Ausdruck der Form a+b*c\n");
printf("Ausdruck mit . abschließen\n");
return yyparse();
}
void yyerror (char* s){
printf ("%s\n", s);
}
bison -d calc.y
%{
#include "calc.tab.h"
%}
DIGIT [0-9]
%%
"(" return KLAUF;
")" return KLZU;
"+" return PLUS;
"-" return MINUS;
"*" return MULT;
"/" return DIV;
"." return FULLSTOP;
{DIGIT}+ {
yylval = atoi(yytext);
return NUMBER;
}
[ \t\n\r] /* Whitespaces ignorieren */
. { /* alle anderen Zeichen sind Fehler */
fprintf(stderr, "%s is no valid character\n", yytext);
exit(1);
}
%%
flex calc.l
g++ lex.yy.c calc.tab.c -lfl