 
 
 
 
 
 
 
 
 
 










 
decl:  '\n'                 
    |   TOKEN typedecl symlist '\n'
    |   ASSOC typedecl symlist '\n'  
    |   START ident '\n'       
    |   HEADCODE '\n'         
    |   UNION CODE '\n'      
    |   TYPE typedecl identlist '\n'
    |   EXPECT NUMBER '\n'  
typedecl: # empty
    |   '<' IDENT '>'
El terminal  START  se corresponde con una declaración 
%start indicando cual es el símbolo de arranque de la gramática.
Por defecto, el símbolo de arranque es el primero de la gramática.
El terminal ASSOC está por los terminales que indican
precedencia y asociatividad.
Esto se ve claro si se analiza el contenido del fichero 
YappParse.yp (![[*]](crossref.png) )
en el que se puede encontrar 
el código del analizador léxico del módulo
)
en el que se puede encontrar 
el código del analizador léxico del módulo 
Parse::Yapp.
El código dice:
    ...
    if($lexlevel == 0) {# In head section
            $$input=~/\G%(left|right|nonassoc)/gc
        and return('ASSOC',[ uc($1), $lineno[0] ]);
            $$input=~/\G%(start)/gc
        and return('START',[ undef, $lineno[0] ]);
            $$input=~/\G%(expect)/gc
        and return('EXPECT',[ undef, $lineno[0] ]);
            $$input=~/\G%{/gc
    ...
La variable $lexlevel indica en que sección nos encontramos:
cabecera, cuerpo o cola. El terminal EXPECT 
indica la presencia de una declaración %expect en el fuente,
la cual cuando es seguida de un número indica el numero de
conflictos shift-reduce que cabe esperar. Use EXPECT
si quiere silenciar las advertencias de yapp sobre la presencia
de conflictos cuya resolución automática considere correcta.
 
 
 
 
 
 
 
 
 
 










