1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| import java_cup.runtime.*;
import java.util.*;
parser code {:
public static void main(String args[]) throws Exception {
new parser(new Yylex(System.in)).parse();
}
public void syntax_error(Symbol cur_token) {
System.out.println("Erreur !");
}
:}
terminal Integer ENTIER;
terminal String PLUS;
terminal String MOINS;
terminal String MULT;
terminal String DIV;
terminal String PARENT_OUV;
terminal String PARENT_FER;
terminal String EOL;
non terminal Integer S, E, addi, sous, mult, divi, paran;
precedence left MOINS, PLUS;
precedence left MULT, DIV;
S ::= E:e EOL {: System.out.println("Résultat : " + e.toString()); :} S | error EOL S | ;
E ::= addi:e {: RESULT = e; :}
| sous:e {: RESULT = e; :}
| mult:e {: RESULT = e; :}
| divi:e {: RESULT = e; :}
| paran:e {: RESULT = e; :}
| ENTIER:e {: RESULT = e; :};
addi ::= E:e1 PLUS E:e2 {: System.out.println("e1 : " + e1 + " +*e2 : " + e2); RESULT = e1 + e2; :};
sous ::= E:e1 MOINS E:e2 {: System.out.println("e1 : " + e1 + " -*e2 : " + e2); RESULT = e1 - e2; :};
mult ::= E:e1 MULT E:e2 {: System.out.println("e1 : " + e1 + " **e2 : " + e2); RESULT = e1 * e2; :};
divi ::= E:e1 DIV E:e2 {: System.out.println("e1 : " + e1 + " :*e2 : " + e2); RESULT = e1 / e2; :};
paran ::= PARENT_OUV E:e PARENT_FER {: RESULT = e; :}; |
Partager