t raductores edt con antlr. caso de prueba edt con antlr a continuación realizaremos una...

Post on 24-Jan-2016

218 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related