YYParse
con nombre yydebug y valor el nivel de depuración requerido.
Ello
nos permite observar la conducta del analizador. Los
posibles valores de depuración son:
Bit | Información de Depuración |
0x01 | Lectura de los terminales |
0x02 | Información sobre los estados |
0x04 | Acciones (shifts, reduces, accept ...) |
0x08 | Volcado de la pila |
0x10 | Recuperación de errores |
Veamos un ejemplo de salida para la gramática que se describe en la página cuando se llama con:
$self->YYParse( yylex => \&_Lexer, yyerror => \&_Error, yydebug => 0x1F )
1 $ ./use_aSb.pl 2 ---------------------------------------- 3 In state 0: 4 Stack:[0] 5 ab # el usuario ha escrito esto 6 Need token. Got >a< 7 Shift and go to state 2. 8 ---------------------------------------- 9 In state 2: 10 Stack:[0,2] 11 Need token. Got >b< 12 Reduce using rule 1 (S,0): S -> epsilon 13 Back to state 2, then go to state 4. 14 ---------------------------------------- 15 In state 4: 16 Stack:[0,2,4] 17 Shift and go to state 5. 18 ---------------------------------------- 19 In state 5: 20 Stack:[0,2,4,5] 21 Don't need token. 22 Reduce using rule 2 (S,3): S -> a S b 23 Back to state 0, then go to state 1. 24 ---------------------------------------- 25 In state 1: 26 Stack:[0,1] 27 Need token. Got >< 28 Shift and go to state 3. 29 ---------------------------------------- 30 In state 3: 31 Stack:[0,1,3] 32 Don't need token. 33 Accept.
Casiano Rodríguez León