Bison - Flex

  • Креатор на темата Креатор на темата Forza Milan!!!
  • Време на започнување Време на започнување
Член од
1 јуни 2011
Мислења
25.932
Поени од реакции
41.915
Овој калкулатор е во Бизон и Флех и ми треба за пресметување на изразите: +,-,*,/, mod,and, or, xor, not, <, >, булов оператор за споредба на два броја =, (, ) оператор if {..} then {..} else {..} заградите { } мора да се појавуваат а изразот во нив може да е булов или аритметички, една команда се состои од еден израз потоа следува ; јас ја започнав во јазикот C, сега ми треба малку помош за булов оператор за споредба на два броја = ,и оператор if {..} then {..} else {..}

#define YYSTYPE void*
#include <math.h> /* za funkcijata pow() */
#include <stdio.h> /* za funkcijata fprintf() */
#include <stdlib.h> /* za funkcijata atoi() */
#include "abstr-synt.h" /* za konstruktorite na apstraktnata sintaksa */
int yylex(void);
void yyerror(char*);
%}
%token NUM
%left '-' '+'
%left '*' '/'
%left NEG
%right '^'
%left '%'
%left '||'
%left '&&'
%left CMP / < > /
%left '!'

%%
programa: /* prazen */ { $$ = PraznaPrograma(); }
| programa komanda { $$ = Programa($1, $2); }
;

komanda: ';' { $$ = PraznaKomanda(); }
| izraz ';' { $$ = Komanda($1); }
;

izraz: NUM { $$ = $1; }
| izraz '+' izraz { $$ = IzrazPlus($1, $3); }
| izraz '-' izraz { $$ = IzrazMinus($1, $3); }
| izraz '*' izraz { $$ = IzrazMnozenje($1, $3); }
| izraz '/' izraz { $$ = IzrazDelenje($1, $3);
| '-' izraz %prec NEG { $$ = IzrazNegacija($2); }
| '(' izraz ')' { $$ = $2; }
| izraz '%' izraz { $$ = izrazMOD($1, $3); }
| izraz '||' izraz { $$ = izrazOR($1, $3); }
| izraz '^' izraz { $$ = izrazXOR($1, $3); }
| izraz '&&' izraz { $$ = izrazAND($1, $3); }
| izraz '!' izraz { $$ = izrazNOT($1, $3); }
| izraz 'CMP' izraz { $$ = izrazCMP($1, $3); }
;
%%
main() {
yyparse();
}

void yyerror(char *s) {
fprintf(stderr, "GRESKA: %s\n", s);
}
 

Kajgana Shop

Back
На врв Bottom