Title: Formato Yacc:

1. Sección definiciones.

Sin título Text

Contiene código en C delimitado por %{ y %}, definiciones de símbolos terminales y no terminales y otras directivas de Yacc.

Esta sección puede contener las directivas siguientes:

- %token
Define símbolos terminales (tokens)
Los símbolos de un solo carácter no necesitan declararse
- %start
Define el símbolo no terminal de inicio.
Es opcional, en este caso se asume que el símbolo inicial es el de la primera regla.
- %{
- Código en C. Usualmente son directivas #incluye definiciones de tipos, etc.
%}
Incluye código en C en el código de salida (al inicio).
- %token
Declara símbolos terminales (sin precedencia, ni asociatividad).
También puede definir los atributos de símbolos terminales.

%token DIGIT
Define el símbolo DIGIT.

%token AAA BBB
Define los símbolos AAA y BBB.

%token  EOFnumber 259
Define símbolo terminal o token y le asigna valor 259.

%token <dval> NUMBER
Define símbolo terminal y su atributo (el atributo debe ser definido en %union)
- %union {
  double dval;
  char *name;
struct symtab *symp;
}
Define las variables para almacenar los atributos de símbolos terminales y no terminales.
Como resultado, la cabecera de salida contendrá la unión yylval.
- %type <dval> expr
Declara el atributo de un símbolo no terminal (el atributo debe ser definido en %union).
- %right
Declara símbolos terminales que son asociativos por la derecha.
- %left
Declara símbolos terminales que son asociativos por la izquierda.
- %nonassoc ELSE
Declara símbolos terminales que no son asociativos.

2. Sección reglas.

Sin título Text

Contiene reglas de producción y acciones a ejecutar cuando el analizador sintáctico aplica una regla de producción para hacer una sustitución. Las reglas del lenguaje son escritas en una notación similar a BNF.

3. Sección código suplementario.

Sin título Text

Contiene código en C que requiera el analizador sintáctico.