T RADUCTORES EDT CON ANTLR. CASO DE PRUEBA EDT CON ANTLR A continuación realizaremos una...

Post on 24-Jan-2016

216 views 0 download

Transcript of T RADUCTORES EDT CON ANTLR. CASO DE PRUEBA EDT CON ANTLR A continuación realizaremos una...

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 : ;