550 likes | 696 Views
Esquema de traducción. Comunicación de atributos por síntesis. Comunicación de atributos por herencia. Acciones semánticas. a ::= e ; {system.out.println(“Resultado: “, e.sval);} a | λ ; e ::= t {e1.hval = t.sval;} e1 {e.sval = e1.sval;}
E N D
Esquema de traducción Comunicación de atributos por síntesis Comunicación de atributos por herencia Acciones semánticas
a ::= e ; {system.out.println(“Resultado: “, e.sval);} a | λ ; e ::= t {e1.hval = t.sval;} e1 {e.sval = e1.sval;} e1 ::= OPSUMA t {e1.hval = e1.hval + t.sval;} e1 {e1.sval = e1.sval;} | OPRESTA t {e1.hval = e1.hval - t.sval;} e1 {e1.sval = e1.sval;} | λ{e1.sval = e1.hval;} t ::= f {t1.hval = f.sval} t1 {t.sval = t1.sval;} t1 ::= OPMULT f {t1.hval = t1.hval * f.sval;} t1 {t1.sval = t1.sval;} | OPDIV f {t1.hval = t1.hval * f.sval;} t1 {t1.sval = t1.sval;} | λ{t1.sval = t1.hval;} f ::= λ | '(' e ')‘ {f.sval = e.sval;} | NUMERO {f.sval = NUMERO.valex;} Cadena de entrada: ( 1 + 2 ) * 3 – 4 ;
a ( 1 + 2 ) * 3 – 4 ;
a e ( 1 + 2 ) * 3 – 4 ;
a e t ( 1 + 2 ) * 3 – 4 ;
a e t f ( 1 + 2 ) * 3 – 4 ;
a e t f ( ( 1 + 2 ) * 3 – 4 ;
a e t f ( e ( 1 + 2 ) * 3 – 4 ;
a e t f ( e t ( 1 + 2 ) * 3 – 4 ;
a e t f ( e t f ( 1 + 2 ) * 3 – 4 ;
a e t f ( e t f 1 f.sval = NUMERO.valex; NUMERO 1 1 ( 1 + 2 ) * 3 – 4 ;
a e t f ( e t 1 t1.hval = f.sval; f t1 1 NUMERO 1 ( 1 + 2 ) * 3 – 4 ;
a e t f ( e t t1 f 1 λ NUMERO t1.sval = t1.hval; 1 1 ( 1 + 2 ) * 3 – 4 ;
a e t f ( e t 1 t1 t.sval = t1.sval; f 1 λ NUMERO 1 ( 1 + 2 ) * 3 – 4 ;
a e t f ( e 1 e1.hval = t.sval; e1 t 1 t1 f λ NUMERO 1 ( 1 + 2 ) * 3 – 4 ;
a e t f ( e e1 t 1 t1 f + λ NUMERO 1 ( 1 + 2 ) * 3 – 4 ;
a e t f ( e e1 t 1 t1 f + t λ NUMERO 1 ( 1 + 2 ) * 3 – 4 ;
a e t f ( e e1 t 1 t1 f + t λ NUMERO f 1 ( 1 + 2 ) * 3 – 4 ;
a e t f ( e e1 t 1 t1 f + t λ NUMERO f 2 1 f.sval = NUMERO.valex; 2 ( 1 + 2 ) * 3 – 4 ; NUMERO 2
a e t f ( e e1 t 1 t1 f + t 2 t1.hval = f.sval; t1 λ NUMERO f 1 2 ( 1 + 2 ) * 3 – 4 ; NUMERO 2
a e t f ( e e1 t 1 t1 f + t t1 λ NUMERO f 2 1 2 t1.sval = t1.hval; ( 1 + 2 ) * 3 – 4 ; NUMERO λ 2
a e t f ( e e1 t 1 t1 f + t 2 t.sval = t1.sval; t1 λ NUMERO f 2 1 ( 1 + 2 ) * 3 – 4 ; NUMERO λ 2
a e t f ( e e1 t 1 t1 e1.hval = e1.hval + t.sval; f + t 2 t1 λ NUMERO f 1 ( 1 + 2 ) * 3 – 4 ; NUMERO λ 2
a e t f ( e e1 t 1 3 t1 e1.hval = e1.hval + t.sval; e1 f + t 2 t1 λ NUMERO f 1 ( 1 + 2 ) * 3 – 4 ; NUMERO λ 2
a e t f ( e e1 t t1 e1 f + t 3 t1 λ λ NUMERO f e1.sval = e1.hval; 3 1 ( 1 + 2 ) * 3 – 4 ; NUMERO λ 2
a e t f ( e e1 t 3 t1 e1 e1.sval = e1.sval; f + t 3 t1 λ λ NUMERO f 1 ( 1 + 2 ) * 3 – 4 ; NUMERO λ 2
a e t f 3 ( e e1.sval = e1.sval; 3 e1 t t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2 ) * 3 – 4 ; NUMERO λ 2
a e t f ( e ) 3 e1 t t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3 – 4 ; NUMERO λ 2
a e t f 3 ( e ) f.sval = e.sval; 3 e1 t t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3 – 4 ; NUMERO λ 2
a e t 3 f t1.hval = f.sval; t1 3 ( e ) e1 t t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3 – 4 ; NUMERO λ 2
a e t 3 f t1 ( e ) * e1 t t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3 – 4 ; NUMERO λ 2
a e t 3 f t1 ( e ) * f e1 t t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3 – 4 ; NUMERO λ 2
a e t 3 f t1 ( e ) * f 3 f.sval = NUMERO.valex; e1 t NUMERO 3 3 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3 – 4 ; NUMERO λ 2
a e t f t1 3 ( e ) * f t1.hval = t1.hval * f.sval; 3 e1 t NUMERO 3 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3 – 4 ; NUMERO λ 2
a e t f t1 3 9 ( e ) * f t1.hval = t1.hval * f.sval; t1 3 e1 t NUMERO 3 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3 – 4 ; NUMERO λ 2
a e t f t1 ( e ) * f t1 9 e1 λ t NUMERO t1.sval = t1.hval; 9 3 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3 – 4 ; NUMERO λ 2
a e t f t1 9 t1.sval = t1.sval; ( e ) * f t1 9 e1 λ t NUMERO 3 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3 – 4 ; NUMERO λ 2
a e t 9 t.sval = t1.sval; f t1 9 ( e ) * f t1 e1 λ t NUMERO 3 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3 – 4 ; NUMERO λ 2
a e 9 t e1 e1.hval = t.sval; 9 f t1 ( e ) * f t1 e1 λ t NUMERO 3 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3 – 4 ; NUMERO λ 2
a e 9 t e1 f - t1 ( e ) * f t1 e1 λ t NUMERO 3 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3– 4 ; NUMERO λ 2
a e 9 t e1 f - t t1 ( e ) * f t1 e1 λ t NUMERO 3 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3– 4 ; NUMERO λ 2
a e 9 t e1 f - t t1 f ( e ) * f t1 e1 λ t NUMERO 3 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3– 4 ; NUMERO λ 2
a e 9 t e1 f - t t1 f ( e ) * f t1 4 f.sval = NUMERO.valex; e1 λ t NUMERO NUMERO 4 3 4 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3– 4 ; NUMERO λ 2
a e 9 t e1 f - t t1 f ( e ) t1 * f t1 4 4 e1 λ t NUMERO NUMERO 3 4 t1.hval = f.sval; t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3– 4 ; NUMERO λ 2
a e 9 t e1 f - t t1 f ( e ) t1 * f t1 4 e1 λ t NUMERO NUMERO λ 4 3 4 t1 e1 f + t t1.sval = t1.hval; t1 λ λ NUMERO f 1 ( 1 + 2) * 3– 4 ; NUMERO λ 2
a e 9 t e1 4 f - t t1 t.sval = t1.sval; f ( e ) t1 * f t1 4 e1 λ t NUMERO NUMERO λ 3 4 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3– 4 ; NUMERO λ 2
a e1.hval = e1.hval - t.sval; e 9 4 t e1 f - t t1 f ( e ) t1 * f t1 e1 λ t NUMERO NUMERO λ 3 4 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3– 4 ; NUMERO λ 2
a e1.hval = e1.hval - t.sval; e 9 4 t e1 5 f - t e1 t1 f ( e ) t1 * f t1 e1 λ t NUMERO NUMERO λ 3 4 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3– 4 ; NUMERO λ 2
a e t e1 f - t e1 t1 f ( e λ ) t1 * f t1 5 e1 λ t NUMERO NUMERO λ 3 4 5 t1 e1 f + t e1.sval = e1.hval; t1 λ λ NUMERO f 1 ( 1 + 2) * 3– 4 ; NUMERO λ 2
a e1.sval = e1.sval; e 5 5 t e1 f - t e1 t1 f ( e λ ) t1 * f t1 e1 λ t NUMERO NUMERO λ 3 4 t1 e1 f + t t1 λ λ NUMERO f 1 ( 1 + 2) * 3– 4 ; NUMERO λ 2