Upload
magdalena-carias
View
219
Download
0
Embed Size (px)
Citation preview
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;};
e1 [int n1] returns [int resultado=0] : OPSUMA t{$resultado=$n1+$t.valor;} n=e1[$resultado]{$resultado=n;}
f returns [int fresul=0]: '(' r=e{$fresul=r;} ')'
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]: '(' r=e{$fresul=r;} ')'
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;};
f returns [int fresul=0]: '(' r=e{$fresul=r;} ')'
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;};
f returns [int fresul=0]: '(' r=e{$fresul=r;} ')'
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
a : ;