Metodo Taguchi

Páginas: 8 (1923 palabras) Publicado: 2 de diciembre de 2012
guchiTema

10

Acciones semánticas en YACC

10.1 Valores semánticos.
10.2 Acciones.
10.3 Acciones en mitad de las reglas gramaticales.
10.4 Recursividad.
10.5 Asignación de tipos a los elementos de la pila.
10.6 Ejemplos.

Bibliografía básica
[Aho90]

Alfred V. Aho, Ravi Sethi, Jffrey D. Ullman
Compiladores. Principios, técnicas y herramientas. Addison-Wesley
Iberoamericana1990.
[Levi92]
J.R. Levine, T. Manson, D. Brown
Lex & Yacc. O’Reilly & Associates, Inc. 1992.
[Benn90] J.P. Bennet
Introduction to compiliing techniques: A first course using ANSI C,
LEX and YACC. Mc Graw-Hill 1990.

1

Introducción de acciones semánticas en YACC
A cada regla de la gramática, el usuario puede asociar una serie de
acciones (acciones semánticas), que se ejecutarán cuandosea reconocida
la regla sintáctica (en la fase de análisis ascendente, cuando se aplique una
reducción de la misma). El formato es el siguiente
A : CUERPO
;

{ sentencia/as } /*acción semántica*/

Ejemplo 1. Una regla gramatical simple que incluye una acción semántica
simple.
A

:BC

{ printf(“Un mensaje\;n”) ;
a= 35 ;
}

;

Seudovariables: Son variables que utiliza el YACC, porindicación del
usuario, para pasar información de una regla sintáctica a otra y que pueden
aparecer en las acciones semánticas.
$$: es la variable asociada al símbolo no terminal de la izquierda de una
regla gramatical.
$n: Es la variable asociada al símbolo no terminal que ocupa el lugar nésimo dentro de la parte derecha de una regla gramatical (donde n es
un entero mayor que 0).
Ejemplo2. Una regla gramatical simple que incluye una acción semántica
con utilización de seudovariables.
A
Expr

:BCD
: ‘(‘ Expr ‘)’

2

{ $$= $1*$3 } ;
{ $$= $2 } ;

El YACC permite introducir acciones al final de una regla o entre sus
símbolos:
a) A : B C D
{ acción } ;
b) A : B { acción1 } C D { acción2 } ;
En este último caso, se transforma la regla de producción de la siguienteforma:
$$1 :
{ acción1 } ;
A
: B $$1 C D { acción2 } ;
Donde $$1 es un nuevo símbolo no terminal de la gramática y fruto dee
ello se genera una nueva regla gramatical que tiene la forma $$1 : ;
sobre la cual se aplica la “acción1”.
Ejemplo 3. Especificación de una gramática incluyendo acciones
semánticas.
A

:B
C
;

{ $$ = 1 }
{ X = $2 ; y = $3 }

A

: B $$1 C
;

{ X = $2 ;y = $3 }

$$1 :
;

{ $$ = 1 }

3

Ejemplo 6. Especificación BYACC de una calculadora según la siguiente
gramática:
E

E + E | E – E | E * E | E / E | (E) | -E | numero
Especificación LEX

numero
%%
{numero}
“-“
“+”
“*”
“/”
“(“
“)”
“;”
[ \n\t]+
.
%%

[0-9]+
return (NUMERO);
return (MINUS);
return (PLUS);
return (MULT);
return (DIV);
return (PIZQ);
return(PDCH);
return (PCOMA);
;
printf (“\nCarácter erróneo: %s\n”, yytext);

Especificación YACC
%token
%left
%left
%right

NUMERO
PLUS MINUS
MULT DIV
UNARIO

%start linea
%%
linea : Exp
{ printf (“Valor actual: %d\n”, $1); }
PCOMA linea
|
;
Exp

:
|
|
|
|
|
|
;

Exp PLUS Exp
{ $$ = $1 + $3;}
Exp MINUS Exp
{ $$ = $1 - $3;}
Exp MULT Exp
{ $$ = $1 * $3;}
Exp DIV
Exp
{$$ = $1 / $3;}
PIZQ Exp PDCH
{ $$ = $2;}
MINUS Exp %prec UNARIO
{ $$ = -$2;}
NUMERO
{ sscanf (yytext, “%d”,&$$);}

%%
#include “lexyy.c”
#include “msj.err”.c
void yyerror (char *msj)
{ fprintf (stderr, msj); }
int main ()
{ yyparse(); return (0); }

4

Ejecuciones del ejemplo anterior:
(10-12)*25;
Valor actual: -50
3+4 ;
Valor actual: 7
(-12+(10+2))/4 ;
Valor actual: 0Ejecuciones del ejemplo anterior introduciendo errores en las expresiones:
(10-12)25;
Error (5) esperaba PLUS MINUS MULT DIV PCOMA
3+;
Error (8) esperaba NUMERO PIZQ MINUS
(-12+(10+2)/4;
Error (6) esperaba PDCH PLUS MINUS MULT DIV

5

Las acciones de un símbolo S pueden referir valores obtenidos por
acciones asociadas a símbolos que se encuentren en el contexto izquierdo
de S. Para...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Metodo TAGUCHI
  • Metodo taguchi
  • Metodo Taguchi
  • Metodo taguchi
  • filosofía de calidad, método taguchi
  • Metodos de taguchi
  • metodo taguchi
  • metodo Taguchi

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS