next up previous contents index PLPL moodlepserratamodulosperlmonksperldocapuntes LHPgoogleetsiiullpcgull
Sig: La Cabecera: Diferencias entre Sup: La Gramática de yapp Ant: La Gramática de yapp Err: Si hallas una errata ...

La Cabecera

En la cabecera se colocan las declaraciones de variables, terminales, etc.
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 ([*]) 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.


next up previous contents index PLPL moodlepserratamodulosperlmonksperldocapuntes LHPgoogleetsiiullpcgull
Sig: La Cabecera: Diferencias entre Sup: La Gramática de yapp Ant: La Gramática de yapp Err: Si hallas una errata ...
Casiano Rodríguez León
2012-05-22