210 likes | 339 Views
Traductores EDT con ANTLR. CASO DE PRUEBA EDT CON ANTLR. A continuación realizaremos una representación del árbol generado para la siguiente operación aritmética: 345+(3*46-(34+67)+333)*2;. f returns [int fresul=0]: num=NUMERO {int v=Integer.parseInt($num.text); $fresul=v;};.
E N D
CASO DE PRUEBA EDT CON ANTLR • A continuación realizaremos una representación del árbol generado para la siguiente operación aritmética: • 345+(3*46-(34+67)+333)*2;
f returns [int fresul=0]: num=NUMERO {int v=Integer.parseInt($num.text); $fresul=v;};
e1 [int n1] returns [int resultado=0] : OPSUMA t{$resultado=$n1+$t.valor;} n=e1[$resultado]{$resultado=n;}
f returns [int fresul=0]: num=NUMERO {int v=Integer.parseInt($num.text); $fresul=v;};
t1 [int n1] returns [int resultado=0] : OPMULT f{$resultado=$n1*$f.fresul;} n=t1[$resultado]{$resultado=n;}
f returns [int fresul=0]: num=NUMERO {int v=Integer.parseInt($num.text); $fresul=v;};
e1 [int n1] returns [int resultado=0] : OPRESTA t{$resultado=$n1-$t.valor;} n=e1[$resultado]{$resultado=n;}
f returns [int fresul=0]: num=NUMERO {int v=Integer.parseInt($num.text); $fresul=v;};
e1 [int n1] returns [int resultado=0] : OPSUMA t{$resultado=$n1+$t.valor;} n=e1[$resultado]{$resultado=n;}
f returns [int fresul=0]:num=NUMERO {int v=Integer.parseInt($num.text); $fresul=v;};
e1 [int n1] returns [int resultado=0] : OPSUMA t{$resultado=$n1+$t.valor;} n=e1[$resultado]{$resultado=n;}
f returns [int fresul=0]: num=NUMERO {int v=Integer.parseInt($num.text); $fresul=v;};
t1 [int n1] returns [int resultado=0] : OPMULT f{$resultado=$n1*$f.fresul;} n=t1[$resultado]{$resultado=n;}
f returns [int fresul=0]: num=NUMERO {int v=Integer.parseInt($num.text); $fresul=v;};
a: e SEMICOLON { System.out.println("\n\nReconocida expresion aritmetica. Valor final: "+$e.resultado); } a