
# parsetab.py
# This file is automatically generated. Do not edit.
# pylint: disable=W,C,R
_tabversion = '3.10'

_lr_method = 'LALR'

_lr_signature = 'AND CHAR COMA CORDER CORIZQ CTEF CTEI CTE_STRING DIF DIV DO DOSPTS ELSE FLT FOR ID IF IGU IGUIGU INT KEYDER KEYIZQ MAIN MAS MAY MAYIGU MEN MENIGU MENOS MODULE MULT OR PARDER PARIZQ PRO PTOCOM READ RETURN THEN TO VARTOKEN VOID WHILE WRITEprogram : PRO r_register_gotomain ID r_register_global PTOCOM opvars opfunciones MAIN r_switch_to_global PARIZQ PARDER bloqueopvars : vars\n    | emptyopfunciones : funciones opfunciones\n    | emptyvars : VARTOKEN tipo ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo PTOCOM tipociclovarciclo : COMA ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo\n    | emptyarr : CORIZQ CTEI r_register_const CORDER\n    | emptyarr_uno : CORIZQ CTEI r_register_const r_arr_dim_uno CORDER\n    | emptyarr_dos : CORIZQ CTEI r_register_const r_arr_dim_dos CORDER\n    | emptytipociclo : tipo opciontipo\n    | emptyopciontipo : ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo PTOCOM tipociclo\n    | MODULE ID r_update_func_type r_update_curr_function_name_especial PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloquefunc r_endfunc r_asegurar_returntipo : INT r_register_variable_type\n    | FLT r_register_variable_type\n    | CHAR r_register_variable_typetipo_func : INT r_register_function\n    | FLT r_register_function\n    | CHAR r_register_function\n    varsimple : tipo identfunciones : funcionvoid \n    | funcionfuncionvoid : VOID r_register_function MODULE ID r_update_curr_function_name PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloque  r_endfuncopcionvarsimple : varsimple ciclovarsimple\n    | emptyciclovarsimple : COMA varsimple ciclovarsimple\n    | emptyfuncion : tipo_func MODULE ID r_update_curr_function_name PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloquefunc r_endfunc r_asegurar_returnident : ID r_register_variable_name arrini arriniarrini : CORIZQ CORDER\n    | emptybloque : KEYIZQ bloqueopcion KEYDERbloqueopcion : estatuto bloqueopcion\n    | emptybloquefunc : KEYIZQ bloqueopcionfunc KEYDERbloqueopcionfunc : estatutofunc bloqueopcionfunc\n    | emptyestatuto : asignacion\n    | decision\n    | escritura\n    | llamadafunc\n    | repeticion\n    | lecturaestatutofunc : asignacion\n    | decisionfunc\n    | escritura\n    | llamadafunc\n    | repeticionfunc\n    | lectura\n    | RETURN PARIZQ expresion r_return_func PARDER PTOCOM\n    asignacion : ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu  expresion r_pop_igu PTOCOMexpresion : exp r_pop_comp expresionsigexpresionsig : MAY r_pila_operadores_push_may expresionsigequal expresion\n    | MEN r_pila_operadores_push_men expresionsigequal expresion\n    | DIF r_pila_operadores_push_dif expresion\n    | IGUIGU r_pila_operadores_push_iguigu expresion\n    | AND r_pila_operadores_push_and expresion\n    | OR r_pila_operadores_push_or expresion\n    | MAYIGU r_pila_operadores_push_mayigu expresionsigequal expresion\n    | MENIGU r_pila_operadores_push_menigu expresionsigequal expresion\n    | emptyexpresionsigequal : IGU\n    | emptyexp : termino r_pop_mas  expcicloexpciclo : MAS r_pila_operadores_push_mas exp\n    | MENOS r_pila_operadores_push_menos  exp\n    | empty\n    termino : factor r_pop_mult factorciclofactorciclo : MULT r_pila_operadores_push_mult termino\n    | DIV  r_pila_operadores_push_div termino\n    | empty\n    factor : PARIZQ r_marcar_fondo_de_pila expresion r_desmarcar_fondo_de_pila PARDER\n    | masomenos varcte\n    | ID r_verifica_variable_existe r_guardar_variable opcionid r_pila_operandos_push\n    masomenos : MAS\n    | MENOS\n    | empty\n    opcionid : PARIZQ r_era_funcion_retorno parametros r_terminar_parametro PARDER \n    | arrexp_uno arrexp_dos  arrexp_uno : CORIZQ r_push_arr expresion r_verifica_arrexp_uno CORDER\n    | emptyarrexp_dos : CORIZQ  r_push_arr expresion r_verifica_arrexp_dos CORDER\n    | emptyvarcte : iddim\n    | CTEI r_pila_operandos_push_cte_int\n    | CTEF r_pila_operandos_push_cte_flt\n    parametros : expresion r_extraer_parametro cicloparametros\n    | emptycicloparametros : COMA expresion r_extraer_parametro cicloparametros\n    | empty\n    llamadafunc : ID r_verifica_void PARIZQ r_era_funcion_void parametros r_terminar_parametro_void PARDER PTOCOMdecision : IF PARIZQ expresion PARDER r_if_paso_1 THEN bloque decision_else r_if_paso_3decision_else : ELSE r_if_paso_2 bloque\n    | emptydecisionfunc : IF PARIZQ expresion PARDER r_if_paso_1 THEN bloquefunc decisionfunc_else r_if_paso_3\n    decisionfunc_else : ELSE r_if_paso_2 bloquefunc\n    | emptycondicional : WHILE r_while_paso_1 PARIZQ expresion PARDER r_while_paso_2 DO bloque r_while_paso_3condicionalfunc : WHILE r_while_paso_1 PARIZQ r_while_paso_2 expresion PARDER DO bloquefuncnocondicional : FOR ID r_verifica_variable_existe r_guardar_variable arrexp_uno  arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion TO r_pop_igu_for expresion r_for_paso_1 DO bloque r_for_paso_2\n    nocondicionalfunc : FOR ID r_verifica_variable_existe r_guardar_variable arrexp_uno  arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion TO r_pop_igu_for expresion r_for_paso_1 DO bloquefunc r_for_paso_2escritura : WRITE PARIZQ escrituraciclo otro PARDER PTOCOMlectura : READ PARIZQ ID r_verifica_variable_existe r_guardar_variable arrexp_uno  arrexp_dos r_pila_operandos_push  r_genera_lectura ciclodim PARDER PTOCOMescrituraciclo : CTE_STRING r_genera_escribe_string\n    | expresion r_genera_escribeotro : COMA escrituraciclo otro\n    | empty\n    repeticion : condicional \n    | nocondicional\n    repeticionfunc : condicionalfunc\n    | nocondicionalfunc\n    empty :ciclodim : COMA iddim r_genera_lectura ciclodim\n    | empty\n    iddim : ID r_verifica_variable_existe r_pila_operandos_push_id arrexp arrexparrexp : CORIZQ expresion CORDER\n    | emptyr_register_gotomain : r_register_global : r_register_function : r_register_const : r_switch_to_global : r_update_curr_function_name_especial : r_update_curr_function_name : r_register_param_types : r_register_variable_type : r_update_func_type : r_register_quad : r_era_funcion_void : r_era_funcion_retorno : r_asegurar_return : r_terminar_parametro : r_terminar_parametro_void : r_extraer_parametro : r_verifica_void : r_marcar_funcion : r_desmarcar_funcion : r_endfunc : r_if_paso_1 : r_register_variable_name : r_arr_dim_uno : r_arr_dim_dos : r_verify_array : r_verifica_variable_existe : r_verifica_arrexp_uno : r_verifica_arrexp_dos : r_return_func : r_if_paso_2 : r_if_paso_3 : r_while_paso_1 : r_while_paso_2 : r_while_paso_3 : r_pop_igu_for : r_for_paso_1 : r_for_paso_2 : r_guardar_variable : r_pila_operandos_push : r_pila_operandos_push_id : r_pila_operandos_push_cte_int : r_pila_operandos_push_cte_flt : r_pop_mult : r_pop_mas : r_push_arr : r_genera_escribe : r_genera_lectura : r_genera_escribe_string : r_pop_comp : r_pop_igu : r_marcar_fondo_de_pila : r_desmarcar_fondo_de_pila : r_pila_operadores_push_mult : r_pila_operadores_push_div : r_pila_operadores_push_mas : r_pila_operadores_push_menos : r_pila_operadores_push_may : r_pila_operadores_push_men : r_pila_operadores_push_dif : r_pila_operadores_push_iguigu : r_pila_operadores_push_and : r_pila_operadores_push_or : r_pila_operadores_push_igu : r_pila_operadores_push_mayigu : r_pila_operadores_push_menigu : r_push_fondo_falso : r_vaciar_fondo_falso : r_register_dim : '
    
_lr_action_items = {'PRO':([0,],[2,]),'$end':([1,53,87,],[0,-1,-37,]),'ID':([2,3,21,22,23,24,28,33,34,35,37,54,61,63,64,65,66,67,68,72,73,76,81,83,87,91,92,93,108,109,114,116,117,118,123,129,135,137,138,150,165,168,170,173,177,178,179,180,181,182,183,184,187,188,191,192,211,217,218,219,220,221,222,223,224,225,226,227,228,231,233,243,248,251,252,253,254,255,260,261,267,270,277,281,284,286,288,297,298,302,304,305,306,307,308,309,312,313,315,321,326,327,330,332,333,340,343,348,352,355,358,362,364,372,378,383,385,386,387,389,390,392,394,395,398,400,404,405,],[-123,4,32,-131,-131,-131,38,-19,-20,-21,41,69,69,-43,-44,-45,-46,-47,-48,-113,-114,95,102,104,-37,115,115,122,-134,-174,147,-80,-81,-82,115,164,-168,115,115,115,208,-168,115,-82,-180,-181,-182,-183,-184,-185,-187,-188,-178,-179,-176,-177,115,-117,-117,115,115,115,115,-117,-117,115,115,115,115,-135,-107,-186,115,-117,115,-67,-68,115,115,115,115,115,69,115,-96,-154,-99,-157,-186,69,-49,-50,-51,-52,-53,-54,-115,-116,335,-97,-103,115,-40,115,115,-98,147,-156,-56,-158,115,-108,115,-55,-117,-154,-102,-104,-186,-160,-100,115,-105,-101,-158,115,-160,-106,]),'PTOCOM':([4,5,32,39,43,45,49,51,57,82,84,104,106,111,112,113,115,132,133,136,140,141,142,143,144,145,146,147,148,164,166,169,176,185,186,189,190,193,194,195,196,197,198,207,209,229,230,232,240,242,246,250,256,257,258,259,262,263,264,265,266,268,269,271,278,280,283,289,290,291,292,293,316,318,319,323,336,338,341,353,365,],[-124,6,-145,-117,-117,-12,-148,-14,-117,103,-8,-145,-11,-172,-167,-166,-149,-117,-13,-86,-117,-117,-117,-78,-89,-164,-165,-149,-161,-145,-117,-88,-57,-66,-69,-72,-73,-76,-90,-91,-163,-117,233,-117,-148,-117,-162,-117,-117,-117,284,-77,-60,-61,-62,-63,-70,-71,-74,-75,-117,-122,-79,-84,-148,-7,-85,-58,-59,-64,-65,-120,-117,-173,-87,-121,350,352,-83,362,372,]),'VARTOKEN':([6,126,157,158,203,369,376,],[10,-130,-130,10,10,-130,10,]),'VOID':([6,7,8,9,12,14,15,87,103,130,131,163,276,299,300,328,329,330,350,360,393,397,399,],[-117,16,-2,-3,16,-26,-27,-37,-117,-6,-16,-15,-143,-143,-136,-28,-33,-40,-117,-17,-143,-136,-18,]),'INT':([6,7,8,9,10,12,14,15,48,55,56,77,87,99,103,130,131,163,276,299,300,317,328,329,330,337,350,360,393,397,399,],[-117,18,-2,-3,22,18,-26,-27,-141,-141,22,22,-37,22,22,-6,-16,-15,-143,-143,-136,-141,-28,-33,-40,22,22,-17,-143,-136,-18,]),'FLT':([6,7,8,9,10,12,14,15,48,55,56,77,87,99,103,130,131,163,276,299,300,317,328,329,330,337,350,360,393,397,399,],[-117,19,-2,-3,23,19,-26,-27,-141,-141,23,23,-37,23,23,-6,-16,-15,-143,-143,-136,-141,-28,-33,-40,23,23,-17,-143,-136,-18,]),'CHAR':([6,7,8,9,10,12,14,15,48,55,56,77,87,99,103,130,131,163,276,299,300,317,328,329,330,337,350,360,393,397,399,],[-117,20,-2,-3,24,20,-26,-27,-141,-141,24,24,-37,24,24,-6,-16,-15,-143,-143,-136,-141,-28,-33,-40,24,24,-17,-143,-136,-18,]),'MAIN':([6,7,8,9,11,12,13,14,15,26,87,103,130,131,163,276,299,300,328,329,330,350,360,393,397,399,],[-117,-117,-2,-3,25,-117,-5,-26,-27,-4,-37,-117,-6,-16,-15,-143,-143,-136,-28,-33,-40,-117,-17,-143,-136,-18,]),'KEYIZQ':([8,9,46,103,126,130,131,157,158,163,203,204,216,238,239,273,275,287,322,330,350,360,369,373,376,379,381,382,384,388,391,393,397,399,403,],[-2,-3,54,-117,-130,-6,-16,-130,-117,-15,-117,-133,54,-133,277,54,54,-153,54,-40,-117,-17,-130,277,-117,277,-133,54,-153,277,277,-143,-136,-18,277,]),'MODULE':([16,17,18,19,20,22,23,24,27,29,30,31,33,34,35,129,],[-125,28,-125,-125,-125,-131,-131,-131,37,-22,-23,-24,-19,-20,-21,165,]),'PARIZQ':([25,36,38,41,42,47,69,70,71,74,75,90,91,92,94,108,109,115,123,135,137,138,148,150,168,170,177,178,179,180,181,182,183,184,187,188,191,192,197,208,211,217,218,219,220,221,222,223,224,225,226,227,228,231,241,243,248,252,253,254,255,260,261,267,270,279,281,298,310,311,314,327,332,333,334,348,355,358,364,387,392,398,400,],[-127,40,-129,-129,48,55,-140,91,92,93,-155,108,109,109,123,-134,-174,-149,109,-168,109,109,-161,109,-168,109,-180,-181,-182,-183,-184,-185,-187,-188,-178,-179,-176,-177,231,-132,109,-117,-117,109,109,109,109,-117,-117,109,109,109,109,-135,-128,-186,109,109,-67,-68,109,109,109,109,109,317,109,-186,332,333,-155,109,109,109,348,-156,-158,109,109,-186,109,-158,109,]),'CORIZQ':([32,39,43,45,69,89,95,102,104,106,107,115,122,124,128,132,134,136,147,148,154,156,160,162,164,166,196,197,200,202,206,207,229,232,235,240,266,268,283,323,335,349,359,368,],[-145,44,50,-12,-149,-161,-149,-145,-145,-11,135,-149,-149,-161,161,44,168,-86,-149,-161,-161,135,161,-36,-145,50,-163,135,135,168,-35,44,267,168,168,50,267,-122,-85,-121,-149,-161,135,168,]),'COMA':([32,39,43,45,49,51,57,79,101,102,104,106,111,112,113,115,119,120,121,122,127,128,132,133,136,140,141,142,143,144,145,146,147,148,152,153,154,160,162,164,166,169,172,176,185,186,189,190,193,194,195,196,197,199,200,205,206,207,209,214,229,230,232,235,240,242,250,256,257,258,259,262,263,264,265,266,268,269,271,272,278,283,285,289,290,291,292,293,296,316,319,320,323,325,341,354,363,],[-145,-117,-117,-12,-148,-14,83,99,-25,-145,-145,-11,-172,-167,-166,-149,150,-171,-169,-149,99,-117,-117,-13,-86,-117,-117,-117,-78,-89,-164,-165,-149,-161,-109,-110,-161,-117,-36,-145,-117,-88,-139,-57,-66,-69,-72,-73,-76,-90,-91,-163,-117,150,-117,-34,-35,-117,-148,248,-117,-162,-117,-117,-117,83,-77,-60,-61,-62,-63,-70,-71,-74,-75,-117,-122,-79,-84,-162,-148,-85,-139,-58,-59,-64,-65,-120,-170,83,-87,248,-121,343,-83,-170,343,]),'PARDER':([40,48,55,56,77,78,79,80,96,97,98,100,101,102,108,110,111,112,113,115,119,120,121,122,125,127,128,136,137,140,141,142,143,144,145,146,147,148,149,151,152,153,154,155,159,160,162,169,171,172,173,174,176,185,186,189,190,193,194,195,196,197,199,200,205,206,213,214,215,229,230,231,232,234,235,247,249,250,256,257,258,259,262,263,264,265,266,268,269,270,271,272,283,285,289,290,291,292,293,295,296,317,319,320,323,324,325,337,339,341,342,344,346,347,351,354,356,361,363,367,370,],[46,-141,-141,-117,-117,-142,-117,-30,-142,126,-29,-32,-25,-145,-134,139,-172,-167,-166,-149,-117,-171,-169,-149,157,-117,-117,-86,-117,-117,-117,-117,-78,-89,-164,-165,-149,-161,198,-112,-109,-110,-161,201,-31,-117,-36,-88,-138,-139,-93,-175,-57,-66,-69,-72,-73,-76,-90,-91,-163,-117,-117,-117,-34,-35,246,-117,250,-117,-162,-135,-117,-111,-117,-92,-95,-77,-60,-61,-62,-63,-70,-71,-74,-75,-117,-122,-79,-117,-84,-162,-85,-139,-58,-59,-64,-65,-120,-137,-170,-141,-87,-117,-121,341,-117,-117,-94,-83,353,-119,-152,357,-142,-170,365,369,-117,374,-118,]),'CTEI':([44,50,91,92,108,109,114,116,117,118,123,135,137,138,150,168,170,173,177,178,179,180,181,182,183,184,187,188,191,192,211,217,218,219,220,221,222,223,224,225,226,227,228,231,243,248,252,253,254,255,260,261,267,270,281,298,327,332,333,348,355,358,364,387,392,398,400,],[52,58,-117,-117,-134,-174,145,-80,-81,-82,-117,-168,-117,-117,-117,-168,-117,-82,-180,-181,-182,-183,-184,-185,-187,-188,-178,-179,-176,-177,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-135,-186,-117,-117,-67,-68,-117,-117,-117,-117,-117,-117,-186,-117,-117,-117,-156,-158,-117,-117,-186,-117,-158,-117,]),'CORDER':([52,58,59,85,86,105,111,112,113,115,136,140,141,142,143,144,145,146,147,148,161,169,176,185,186,189,190,193,194,195,196,197,212,229,230,232,244,245,250,256,257,258,259,262,263,264,265,266,268,269,271,282,283,289,290,291,292,293,294,319,323,341,],[-126,-126,-146,-147,106,133,-172,-167,-166,-149,-86,-117,-117,-117,-78,-89,-164,-165,-149,-161,206,-88,-57,-66,-69,-72,-73,-76,-90,-91,-163,-117,-150,-117,-162,-117,-151,283,-77,-60,-61,-62,-63,-70,-71,-74,-75,-117,-122,-79,-84,319,-85,-58,-59,-64,-65,-120,323,-87,-121,-83,]),'KEYDER':([54,60,61,62,63,64,65,66,67,68,72,73,87,88,233,251,277,284,286,288,297,301,302,303,304,305,306,307,308,309,312,313,321,326,330,331,340,352,362,372,378,383,385,386,389,390,394,395,404,405,],[-117,87,-117,-39,-43,-44,-45,-46,-47,-48,-113,-114,-37,-38,-107,-117,-117,-96,-154,-99,-157,330,-117,-42,-49,-50,-51,-52,-53,-54,-115,-116,-97,-103,-40,-41,-98,-56,-108,-55,-117,-154,-102,-104,-160,-100,-105,-101,-160,-106,]),'IF':([54,61,63,64,65,66,67,68,72,73,87,233,251,277,284,286,288,297,302,304,305,306,307,308,309,312,313,321,326,330,340,352,362,372,378,383,385,386,389,390,394,395,404,405,],[70,70,-43,-44,-45,-46,-47,-48,-113,-114,-37,-107,-117,311,-96,-154,-99,-157,311,-49,-50,-51,-52,-53,-54,-115,-116,-97,-103,-40,-98,-56,-108,-55,-117,-154,-102,-104,-160,-100,-105,-101,-160,-106,]),'WRITE':([54,61,63,64,65,66,67,68,72,73,87,233,251,277,284,286,288,297,302,304,305,306,307,308,309,312,313,321,326,330,340,352,362,372,378,383,385,386,389,390,394,395,404,405,],[71,71,-43,-44,-45,-46,-47,-48,-113,-114,-37,-107,-117,71,-96,-154,-99,-157,71,-49,-50,-51,-52,-53,-54,-115,-116,-97,-103,-40,-98,-56,-108,-55,-117,-154,-102,-104,-160,-100,-105,-101,-160,-106,]),'READ':([54,61,63,64,65,66,67,68,72,73,87,233,251,277,284,286,288,297,302,304,305,306,307,308,309,312,313,321,326,330,340,352,362,372,378,383,385,386,389,390,394,395,404,405,],[74,74,-43,-44,-45,-46,-47,-48,-113,-114,-37,-107,-117,74,-96,-154,-99,-157,74,-49,-50,-51,-52,-53,-54,-115,-116,-97,-103,-40,-98,-56,-108,-55,-117,-154,-102,-104,-160,-100,-105,-101,-160,-106,]),'WHILE':([54,61,63,64,65,66,67,68,72,73,87,233,251,277,284,286,288,297,302,304,305,306,307,308,309,312,313,321,326,330,340,352,362,372,378,383,385,386,389,390,394,395,404,405,],[75,75,-43,-44,-45,-46,-47,-48,-113,-114,-37,-107,-117,314,-96,-154,-99,-157,314,-49,-50,-51,-52,-53,-54,-115,-116,-97,-103,-40,-98,-56,-108,-55,-117,-154,-102,-104,-160,-100,-105,-101,-160,-106,]),'FOR':([54,61,63,64,65,66,67,68,72,73,87,233,251,277,284,286,288,297,302,304,305,306,307,308,309,312,313,321,326,330,340,352,362,372,378,383,385,386,389,390,394,395,404,405,],[76,76,-43,-44,-45,-46,-47,-48,-113,-114,-37,-107,-117,315,-96,-154,-99,-157,315,-49,-50,-51,-52,-53,-54,-115,-116,-97,-103,-40,-98,-56,-108,-55,-117,-154,-102,-104,-160,-100,-105,-101,-160,-106,]),'IGU':([69,89,95,107,124,134,136,156,167,169,177,178,183,184,202,210,217,218,223,224,237,274,283,319,335,349,359,368,375,380,],[-149,-161,-149,-117,-161,-117,-86,-117,-162,-88,-180,-181,-187,-188,-117,243,253,253,253,253,-162,298,-85,-87,-149,-161,-117,-117,-162,387,]),'ELSE':([87,251,330,378,],[-37,287,-40,384,]),'MAS':([91,92,108,109,112,113,115,123,135,136,137,138,141,142,143,144,145,146,147,148,150,168,169,170,177,178,179,180,181,182,183,184,187,188,190,191,192,193,194,195,196,197,211,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,243,248,250,252,253,254,255,260,261,264,265,266,267,268,269,270,271,281,283,293,298,319,323,327,332,333,341,348,355,358,364,387,392,398,400,],[116,116,-134,-174,-167,-166,-149,116,-168,-86,116,116,187,-117,-78,-89,-164,-165,-149,-161,116,-168,-88,116,-180,-181,-182,-183,-184,-185,-187,-188,-178,-179,-73,-176,-177,-76,-90,-91,-163,-117,116,-117,-117,116,116,116,116,-117,-117,116,116,116,116,-117,-162,-135,-117,-186,116,-77,116,-67,-68,116,116,116,-74,-75,-117,116,-122,-79,116,-84,116,-85,-120,-186,-87,-121,116,116,116,-83,-156,-158,116,116,-186,116,-158,116,]),'MENOS':([91,92,108,109,112,113,115,123,135,136,137,138,141,142,143,144,145,146,147,148,150,168,169,170,177,178,179,180,181,182,183,184,187,188,190,191,192,193,194,195,196,197,211,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,243,248,250,252,253,254,255,260,261,264,265,266,267,268,269,270,271,281,283,293,298,319,323,327,332,333,341,348,355,358,364,387,392,398,400,],[117,117,-134,-174,-167,-166,-149,117,-168,-86,117,117,188,-117,-78,-89,-164,-165,-149,-161,117,-168,-88,117,-180,-181,-182,-183,-184,-185,-187,-188,-178,-179,-73,-176,-177,-76,-90,-91,-163,-117,117,-117,-117,117,117,117,117,-117,-117,117,117,117,117,-117,-162,-135,-117,-186,117,-77,117,-67,-68,117,117,117,-74,-75,-117,117,-122,-79,117,-84,117,-85,-120,-186,-87,-121,117,117,117,-83,-156,-158,117,117,-186,117,-158,117,]),'CTEF':([91,92,108,109,114,116,117,118,123,135,137,138,150,168,170,173,177,178,179,180,181,182,183,184,187,188,191,192,211,217,218,219,220,221,222,223,224,225,226,227,228,231,243,248,252,253,254,255,260,261,267,270,281,298,327,332,333,348,355,358,364,387,392,398,400,],[-117,-117,-134,-174,146,-80,-81,-82,-117,-168,-117,-117,-117,-168,-117,-82,-180,-181,-182,-183,-184,-185,-187,-188,-178,-179,-176,-177,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-135,-186,-117,-117,-67,-68,-117,-117,-117,-117,-117,-117,-186,-117,-117,-117,-156,-158,-117,-117,-186,-117,-158,-117,]),'CTE_STRING':([92,150,],[120,120,]),'MAY':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,177,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'MEN':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,178,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'DIF':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,179,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'IGUIGU':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,180,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'AND':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,181,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'OR':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,182,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'MAYIGU':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,183,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'MENIGU':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,184,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'TO':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,176,185,186,189,190,193,194,195,196,197,229,230,232,250,256,257,258,259,262,263,264,265,266,268,269,271,283,289,290,291,292,293,319,323,341,345,396,],[-172,-167,-166,-149,-86,-117,-117,-117,-78,-89,-164,-165,-149,-161,-88,-57,-66,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-60,-61,-62,-63,-70,-71,-74,-75,-117,-122,-79,-84,-85,-58,-59,-64,-65,-120,-87,-121,-83,355,398,]),'DO':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,176,185,186,189,190,193,194,195,196,197,201,229,230,232,236,250,256,257,258,259,262,263,264,265,266,268,269,271,283,289,290,291,292,293,319,323,341,371,374,377,401,402,],[-172,-167,-166,-149,-86,-117,-117,-117,-78,-89,-164,-165,-149,-161,-88,-57,-66,-69,-72,-73,-76,-90,-91,-163,-117,-156,-117,-162,-117,273,-77,-60,-61,-62,-63,-70,-71,-74,-75,-117,-122,-79,-84,-85,-58,-59,-64,-65,-120,-87,-121,-83,-159,379,382,-159,403,]),'MULT':([113,115,136,142,143,144,145,146,147,148,169,194,195,196,197,229,230,232,250,266,268,269,271,283,293,319,323,341,],[-166,-149,-86,191,-78,-89,-164,-165,-149,-161,-88,-90,-91,-163,-117,-117,-162,-117,-77,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'DIV':([113,115,136,142,143,144,145,146,147,148,169,194,195,196,197,229,230,232,250,266,268,269,271,283,293,319,323,341,],[-166,-149,-86,192,-78,-89,-164,-165,-149,-161,-88,-90,-91,-163,-117,-117,-162,-117,-77,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'THEN':([139,175,357,366,],[-144,216,-144,373,]),'RETURN':([233,277,284,302,304,305,306,307,308,309,312,313,330,352,362,372,378,383,385,386,390,395,404,405,],[-107,310,-96,310,-49,-50,-51,-52,-53,-54,-115,-116,-40,-56,-108,-55,-117,-154,-102,-104,-100,-101,-160,-106,]),}

_lr_action = {}
for _k, _v in _lr_action_items.items():
   for _x,_y in zip(_v[0],_v[1]):
      if not _x in _lr_action:  _lr_action[_x] = {}
      _lr_action[_x][_k] = _y
del _lr_action_items

_lr_goto_items = {'program':([0,],[1,]),'r_register_gotomain':([2,],[3,]),'r_register_global':([4,],[5,]),'opvars':([6,158,203,376,],[7,204,238,381,]),'vars':([6,158,203,376,],[8,8,8,8,]),'empty':([6,7,12,39,43,54,56,57,61,77,79,91,92,103,107,119,123,127,128,132,134,137,138,140,141,142,150,156,158,160,166,170,197,199,200,202,203,207,211,214,217,218,219,220,221,222,223,224,225,226,227,228,229,232,235,240,242,248,251,252,255,260,261,266,267,270,277,281,302,316,320,325,327,332,333,337,350,358,359,363,364,368,376,378,392,400,],[9,13,13,45,51,62,80,84,62,80,100,118,118,131,136,151,118,100,162,45,169,173,118,185,189,193,118,136,9,162,51,118,136,151,136,169,9,45,118,249,254,254,118,118,118,118,254,254,118,118,118,118,268,169,169,51,84,118,288,118,118,118,118,268,118,173,303,118,303,84,249,344,118,118,118,80,131,118,136,344,118,169,9,385,118,118,]),'opfunciones':([7,12,],[11,26,]),'funciones':([7,12,],[12,12,]),'funcionvoid':([7,12,],[14,14,]),'funcion':([7,12,],[15,15,]),'tipo_func':([7,12,],[17,17,]),'tipo':([10,56,77,99,103,337,350,],[21,81,81,81,129,81,129,]),'r_register_function':([16,18,19,20,],[27,29,30,31,]),'r_register_variable_type':([22,23,24,],[33,34,35,]),'r_switch_to_global':([25,],[36,]),'r_register_variable_name':([32,102,104,164,],[39,128,132,207,]),'r_update_curr_function_name':([38,41,],[42,47,]),'arr_uno':([39,132,207,],[43,166,240,]),'arr_dos':([43,166,240,],[49,209,278,]),'bloque':([46,216,273,275,322,382,],[53,251,297,299,340,389,]),'r_marcar_funcion':([48,55,317,],[56,77,337,]),'r_verify_array':([49,209,278,],[57,242,316,]),'r_register_const':([52,58,],[59,85,]),'bloqueopcion':([54,61,],[60,88,]),'estatuto':([54,61,],[61,61,]),'asignacion':([54,61,277,302,],[63,63,304,304,]),'decision':([54,61,],[64,64,]),'escritura':([54,61,277,302,],[65,65,306,306,]),'llamadafunc':([54,61,277,302,],[66,66,307,307,]),'repeticion':([54,61,],[67,67,]),'lectura':([54,61,277,302,],[68,68,309,309,]),'condicional':([54,61,],[72,72,]),'nocondicional':([54,61,],[73,73,]),'opcionvarsimple':([56,77,337,],[78,96,351,]),'varsimple':([56,77,99,337,],[79,79,127,79,]),'varciclo':([57,242,316,],[82,280,336,]),'r_arr_dim_uno':([59,],[86,]),'r_verifica_variable_existe':([69,95,115,122,147,335,],[89,124,148,154,196,349,]),'r_verifica_void':([69,],[90,]),'r_while_paso_1':([75,314,],[94,334,]),'r_desmarcar_funcion':([78,96,351,],[97,125,361,]),'ciclovarsimple':([79,127,],[98,159,]),'ident':([81,],[101,]),'r_arr_dim_dos':([85,],[105,]),'r_guardar_variable':([89,124,148,154,349,],[107,156,197,200,359,]),'expresion':([91,92,123,137,138,150,170,211,219,220,221,222,248,252,255,260,261,267,270,281,327,332,333,358,364,392,400,],[110,121,155,172,174,121,212,244,256,257,258,259,285,289,290,291,292,294,172,318,345,346,347,367,371,396,401,]),'exp':([91,92,123,137,138,150,170,211,219,220,221,222,225,226,248,252,255,260,261,267,270,281,327,332,333,358,364,392,400,],[111,111,111,111,111,111,111,111,111,111,111,111,262,263,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,]),'termino':([91,92,123,137,138,150,170,211,219,220,221,222,225,226,227,228,248,252,255,260,261,267,270,281,327,332,333,358,364,392,400,],[112,112,112,112,112,112,112,112,112,112,112,112,112,112,264,265,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,]),'factor':([91,92,123,137,138,150,170,211,219,220,221,222,225,226,227,228,248,252,255,260,261,267,270,281,327,332,333,358,364,392,400,],[113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,]),'masomenos':([91,92,123,137,138,150,170,211,219,220,221,222,225,226,227,228,248,252,255,260,261,267,270,281,327,332,333,358,364,392,400,],[114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,]),'escrituraciclo':([92,150,],[119,199,]),'tipociclo':([103,350,],[130,360,]),'arrexp_uno':([107,156,197,200,359,],[134,202,232,235,368,]),'r_era_funcion_void':([108,],[137,]),'r_marcar_fondo_de_pila':([109,],[138,]),'r_pop_comp':([111,],[140,]),'r_pop_mas':([112,],[141,]),'r_pop_mult':([113,],[142,]),'varcte':([114,],[143,]),'iddim':([114,343,],[144,354,]),'otro':([119,199,],[149,234,]),'r_genera_escribe_string':([120,],[152,]),'r_genera_escribe':([121,],[153,]),'r_register_param_types':([126,157,369,],[158,203,376,]),'arrini':([128,160,],[160,205,]),'opciontipo':([129,],[163,]),'arrexp_dos':([134,202,232,235,368,],[167,237,271,272,375,]),'r_push_arr':([135,168,],[170,211,]),'parametros':([137,270,],[171,295,]),'r_if_paso_1':([139,357,],[175,366,]),'expresionsig':([140,],[176,]),'expciclo':([141,],[186,]),'factorciclo':([142,],[190,]),'r_pila_operandos_push_cte_int':([145,],[194,]),'r_pila_operandos_push_cte_flt':([146,],[195,]),'r_pila_operandos_push':([167,230,237,272,375,],[210,269,274,296,380,]),'r_terminar_parametro_void':([171,],[213,]),'r_extraer_parametro':([172,285,],[214,320,]),'r_desmarcar_fondo_de_pila':([174,],[215,]),'r_pila_operadores_push_may':([177,],[217,]),'r_pila_operadores_push_men':([178,],[218,]),'r_pila_operadores_push_dif':([179,],[219,]),'r_pila_operadores_push_iguigu':([180,],[220,]),'r_pila_operadores_push_and':([181,],[221,]),'r_pila_operadores_push_or':([182,],[222,]),'r_pila_operadores_push_mayigu':([183,],[223,]),'r_pila_operadores_push_menigu':([184,],[224,]),'r_pila_operadores_push_mas':([187,],[225,]),'r_pila_operadores_push_menos':([188,],[226,]),'r_pila_operadores_push_mult':([191,],[227,]),'r_pila_operadores_push_div':([192,],[228,]),'r_pila_operandos_push_id':([196,],[229,]),'opcionid':([197,],[230,]),'r_while_paso_2':([201,348,],[236,358,]),'r_register_quad':([204,238,381,],[239,275,388,]),'r_update_func_type':([208,],[241,]),'r_verifica_arrexp_uno':([212,],[245,]),'cicloparametros':([214,320,],[247,339,]),'expresionsigequal':([217,218,223,224,],[252,255,260,261,]),'arrexp':([229,266,],[266,293,]),'r_era_funcion_retorno':([231,],[270,]),'bloquefunc':([239,373,379,388,391,403,],[276,378,386,393,395,404,]),'r_update_curr_function_name_especial':([241,],[279,]),'r_pila_operadores_push_igu':([243,298,387,],[281,327,392,]),'r_verifica_arrexp_dos':([244,],[282,]),'decision_else':([251,],[286,]),'r_endfunc':([276,299,393,],[300,328,397,]),'bloqueopcionfunc':([277,302,],[301,331,]),'estatutofunc':([277,302,],[302,302,]),'decisionfunc':([277,302,],[305,305,]),'repeticionfunc':([277,302,],[308,308,]),'condicionalfunc':([277,302,],[312,312,]),'nocondicionalfunc':([277,302,],[313,313,]),'r_if_paso_3':([286,383,],[321,390,]),'r_if_paso_2':([287,384,],[322,391,]),'r_terminar_parametro':([295,],[324,]),'r_genera_lectura':([296,354,],[325,363,]),'r_while_paso_3':([297,],[326,]),'r_asegurar_return':([300,397,],[329,399,]),'r_pop_igu':([318,],[338,]),'ciclodim':([325,363,],[342,370,]),'r_return_func':([346,],[356,]),'r_pop_igu_for':([355,398,],[364,400,]),'r_for_paso_1':([371,401,],[377,402,]),'decisionfunc_else':([378,],[383,]),'r_for_paso_2':([389,404,],[394,405,]),}

_lr_goto = {}
for _k, _v in _lr_goto_items.items():
   for _x, _y in zip(_v[0], _v[1]):
       if not _x in _lr_goto: _lr_goto[_x] = {}
       _lr_goto[_x][_k] = _y
del _lr_goto_items
_lr_productions = [
  ("S' -> program","S'",1,None,None,None),
  ('program -> PRO r_register_gotomain ID r_register_global PTOCOM opvars opfunciones MAIN r_switch_to_global PARIZQ PARDER bloque','program',12,'p_program','parser.py',50),
  ('opvars -> vars','opvars',1,'p_opvars','parser.py',53),
  ('opvars -> empty','opvars',1,'p_opvars','parser.py',54),
  ('opfunciones -> funciones opfunciones','opfunciones',2,'p_opfunciones','parser.py',57),
  ('opfunciones -> empty','opfunciones',1,'p_opfunciones','parser.py',58),
  ('vars -> VARTOKEN tipo ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo PTOCOM tipociclo','vars',10,'p_vars','parser.py',61),
  ('varciclo -> COMA ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo','varciclo',7,'p_varciclo','parser.py',64),
  ('varciclo -> empty','varciclo',1,'p_varciclo','parser.py',65),
  ('arr -> CORIZQ CTEI r_register_const CORDER','arr',4,'p_arr','parser.py',68),
  ('arr -> empty','arr',1,'p_arr','parser.py',69),
  ('arr_uno -> CORIZQ CTEI r_register_const r_arr_dim_uno CORDER','arr_uno',5,'p_arr_uno','parser.py',72),
  ('arr_uno -> empty','arr_uno',1,'p_arr_uno','parser.py',73),
  ('arr_dos -> CORIZQ CTEI r_register_const r_arr_dim_dos CORDER','arr_dos',5,'p_arr_dos','parser.py',76),
  ('arr_dos -> empty','arr_dos',1,'p_arr_dos','parser.py',77),
  ('tipociclo -> tipo opciontipo','tipociclo',2,'p_tipociclo','parser.py',80),
  ('tipociclo -> empty','tipociclo',1,'p_tipociclo','parser.py',81),
  ('opciontipo -> ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo PTOCOM tipociclo','opciontipo',8,'p_opciontipo','parser.py',84),
  ('opciontipo -> MODULE ID r_update_func_type r_update_curr_function_name_especial PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloquefunc r_endfunc r_asegurar_return','opciontipo',15,'p_opciontipo','parser.py',85),
  ('tipo -> INT r_register_variable_type','tipo',2,'p_tipo','parser.py',88),
  ('tipo -> FLT r_register_variable_type','tipo',2,'p_tipo','parser.py',89),
  ('tipo -> CHAR r_register_variable_type','tipo',2,'p_tipo','parser.py',90),
  ('tipo_func -> INT r_register_function','tipo_func',2,'p_tipo_func','parser.py',93),
  ('tipo_func -> FLT r_register_function','tipo_func',2,'p_tipo_func','parser.py',94),
  ('tipo_func -> CHAR r_register_function','tipo_func',2,'p_tipo_func','parser.py',95),
  ('varsimple -> tipo ident','varsimple',2,'p_varsimple','parser.py',99),
  ('funciones -> funcionvoid','funciones',1,'p_funciones','parser.py',102),
  ('funciones -> funcion','funciones',1,'p_funciones','parser.py',103),
  ('funcionvoid -> VOID r_register_function MODULE ID r_update_curr_function_name PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloque r_endfunc','funcionvoid',15,'p_funcionvoid','parser.py',106),
  ('opcionvarsimple -> varsimple ciclovarsimple','opcionvarsimple',2,'p_opcionvarsimple','parser.py',109),
  ('opcionvarsimple -> empty','opcionvarsimple',1,'p_opcionvarsimple','parser.py',110),
  ('ciclovarsimple -> COMA varsimple ciclovarsimple','ciclovarsimple',3,'p_ciclovarsimple','parser.py',113),
  ('ciclovarsimple -> empty','ciclovarsimple',1,'p_ciclovarsimple','parser.py',114),
  ('funcion -> tipo_func MODULE ID r_update_curr_function_name PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloquefunc r_endfunc r_asegurar_return','funcion',15,'p_funcion','parser.py',117),
  ('ident -> ID r_register_variable_name arrini arrini','ident',4,'p_ident','parser.py',120),
  ('arrini -> CORIZQ CORDER','arrini',2,'p_arrini','parser.py',123),
  ('arrini -> empty','arrini',1,'p_arrini','parser.py',124),
  ('bloque -> KEYIZQ bloqueopcion KEYDER','bloque',3,'p_bloque','parser.py',127),
  ('bloqueopcion -> estatuto bloqueopcion','bloqueopcion',2,'p_bloqueopcion','parser.py',130),
  ('bloqueopcion -> empty','bloqueopcion',1,'p_bloqueopcion','parser.py',131),
  ('bloquefunc -> KEYIZQ bloqueopcionfunc KEYDER','bloquefunc',3,'p_bloquefunc','parser.py',134),
  ('bloqueopcionfunc -> estatutofunc bloqueopcionfunc','bloqueopcionfunc',2,'p_bloqueopcionfunc','parser.py',137),
  ('bloqueopcionfunc -> empty','bloqueopcionfunc',1,'p_bloqueopcionfunc','parser.py',138),
  ('estatuto -> asignacion','estatuto',1,'p_estatuto','parser.py',141),
  ('estatuto -> decision','estatuto',1,'p_estatuto','parser.py',142),
  ('estatuto -> escritura','estatuto',1,'p_estatuto','parser.py',143),
  ('estatuto -> llamadafunc','estatuto',1,'p_estatuto','parser.py',144),
  ('estatuto -> repeticion','estatuto',1,'p_estatuto','parser.py',145),
  ('estatuto -> lectura','estatuto',1,'p_estatuto','parser.py',146),
  ('estatutofunc -> asignacion','estatutofunc',1,'p_estatutofunc','parser.py',149),
  ('estatutofunc -> decisionfunc','estatutofunc',1,'p_estatutofunc','parser.py',150),
  ('estatutofunc -> escritura','estatutofunc',1,'p_estatutofunc','parser.py',151),
  ('estatutofunc -> llamadafunc','estatutofunc',1,'p_estatutofunc','parser.py',152),
  ('estatutofunc -> repeticionfunc','estatutofunc',1,'p_estatutofunc','parser.py',153),
  ('estatutofunc -> lectura','estatutofunc',1,'p_estatutofunc','parser.py',154),
  ('estatutofunc -> RETURN PARIZQ expresion r_return_func PARDER PTOCOM','estatutofunc',6,'p_estatutofunc','parser.py',155),
  ('asignacion -> ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion r_pop_igu PTOCOM','asignacion',11,'p_asignacion','parser.py',159),
  ('expresion -> exp r_pop_comp expresionsig','expresion',3,'p_expresion','parser.py',162),
  ('expresionsig -> MAY r_pila_operadores_push_may expresionsigequal expresion','expresionsig',4,'p_expresionsig','parser.py',165),
  ('expresionsig -> MEN r_pila_operadores_push_men expresionsigequal expresion','expresionsig',4,'p_expresionsig','parser.py',166),
  ('expresionsig -> DIF r_pila_operadores_push_dif expresion','expresionsig',3,'p_expresionsig','parser.py',167),
  ('expresionsig -> IGUIGU r_pila_operadores_push_iguigu expresion','expresionsig',3,'p_expresionsig','parser.py',168),
  ('expresionsig -> AND r_pila_operadores_push_and expresion','expresionsig',3,'p_expresionsig','parser.py',169),
  ('expresionsig -> OR r_pila_operadores_push_or expresion','expresionsig',3,'p_expresionsig','parser.py',170),
  ('expresionsig -> MAYIGU r_pila_operadores_push_mayigu expresionsigequal expresion','expresionsig',4,'p_expresionsig','parser.py',171),
  ('expresionsig -> MENIGU r_pila_operadores_push_menigu expresionsigequal expresion','expresionsig',4,'p_expresionsig','parser.py',172),
  ('expresionsig -> empty','expresionsig',1,'p_expresionsig','parser.py',173),
  ('expresionsigequal -> IGU','expresionsigequal',1,'p_expresionsigequal','parser.py',176),
  ('expresionsigequal -> empty','expresionsigequal',1,'p_expresionsigequal','parser.py',177),
  ('exp -> termino r_pop_mas expciclo','exp',3,'p_exp','parser.py',180),
  ('expciclo -> MAS r_pila_operadores_push_mas exp','expciclo',3,'p_expciclo','parser.py',183),
  ('expciclo -> MENOS r_pila_operadores_push_menos exp','expciclo',3,'p_expciclo','parser.py',184),
  ('expciclo -> empty','expciclo',1,'p_expciclo','parser.py',185),
  ('termino -> factor r_pop_mult factorciclo','termino',3,'p_termino','parser.py',189),
  ('factorciclo -> MULT r_pila_operadores_push_mult termino','factorciclo',3,'p_factorciclo','parser.py',192),
  ('factorciclo -> DIV r_pila_operadores_push_div termino','factorciclo',3,'p_factorciclo','parser.py',193),
  ('factorciclo -> empty','factorciclo',1,'p_factorciclo','parser.py',194),
  ('factor -> PARIZQ r_marcar_fondo_de_pila expresion r_desmarcar_fondo_de_pila PARDER','factor',5,'p_factor','parser.py',198),
  ('factor -> masomenos varcte','factor',2,'p_factor','parser.py',199),
  ('factor -> ID r_verifica_variable_existe r_guardar_variable opcionid r_pila_operandos_push','factor',5,'p_factor','parser.py',200),
  ('masomenos -> MAS','masomenos',1,'p_masomenos','parser.py',204),
  ('masomenos -> MENOS','masomenos',1,'p_masomenos','parser.py',205),
  ('masomenos -> empty','masomenos',1,'p_masomenos','parser.py',206),
  ('opcionid -> PARIZQ r_era_funcion_retorno parametros r_terminar_parametro PARDER','opcionid',5,'p_opcionid','parser.py',210),
  ('opcionid -> arrexp_uno arrexp_dos','opcionid',2,'p_opcionid','parser.py',211),
  ('arrexp_uno -> CORIZQ r_push_arr expresion r_verifica_arrexp_uno CORDER','arrexp_uno',5,'p_arrexp_uno','parser.py',214),
  ('arrexp_uno -> empty','arrexp_uno',1,'p_arrexp_uno','parser.py',215),
  ('arrexp_dos -> CORIZQ r_push_arr expresion r_verifica_arrexp_dos CORDER','arrexp_dos',5,'p_arrexp_dos','parser.py',218),
  ('arrexp_dos -> empty','arrexp_dos',1,'p_arrexp_dos','parser.py',219),
  ('varcte -> iddim','varcte',1,'p_varcte','parser.py',222),
  ('varcte -> CTEI r_pila_operandos_push_cte_int','varcte',2,'p_varcte','parser.py',223),
  ('varcte -> CTEF r_pila_operandos_push_cte_flt','varcte',2,'p_varcte','parser.py',224),
  ('parametros -> expresion r_extraer_parametro cicloparametros','parametros',3,'p_parametros','parser.py',228),
  ('parametros -> empty','parametros',1,'p_parametros','parser.py',229),
  ('cicloparametros -> COMA expresion r_extraer_parametro cicloparametros','cicloparametros',4,'p_cicloparametros','parser.py',232),
  ('cicloparametros -> empty','cicloparametros',1,'p_cicloparametros','parser.py',233),
  ('llamadafunc -> ID r_verifica_void PARIZQ r_era_funcion_void parametros r_terminar_parametro_void PARDER PTOCOM','llamadafunc',8,'p_llamadafunc','parser.py',237),
  ('decision -> IF PARIZQ expresion PARDER r_if_paso_1 THEN bloque decision_else r_if_paso_3','decision',9,'p_decision','parser.py',240),
  ('decision_else -> ELSE r_if_paso_2 bloque','decision_else',3,'p_decision_else','parser.py',243),
  ('decision_else -> empty','decision_else',1,'p_decision_else','parser.py',244),
  ('decisionfunc -> IF PARIZQ expresion PARDER r_if_paso_1 THEN bloquefunc decisionfunc_else r_if_paso_3','decisionfunc',9,'p_decisionfunc','parser.py',247),
  ('decisionfunc_else -> ELSE r_if_paso_2 bloquefunc','decisionfunc_else',3,'p_decisionfunc_else','parser.py',251),
  ('decisionfunc_else -> empty','decisionfunc_else',1,'p_decisionfunc_else','parser.py',252),
  ('condicional -> WHILE r_while_paso_1 PARIZQ expresion PARDER r_while_paso_2 DO bloque r_while_paso_3','condicional',9,'p_condicional','parser.py',255),
  ('condicionalfunc -> WHILE r_while_paso_1 PARIZQ r_while_paso_2 expresion PARDER DO bloquefunc','condicionalfunc',8,'p_condicionalfunc','parser.py',258),
  ('nocondicional -> FOR ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion TO r_pop_igu_for expresion r_for_paso_1 DO bloque r_for_paso_2','nocondicional',17,'p_nocondicional','parser.py',261),
  ('nocondicionalfunc -> FOR ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion TO r_pop_igu_for expresion r_for_paso_1 DO bloquefunc r_for_paso_2','nocondicionalfunc',17,'p_nocondicionalfunc','parser.py',265),
  ('escritura -> WRITE PARIZQ escrituraciclo otro PARDER PTOCOM','escritura',6,'p_escritura','parser.py',268),
  ('lectura -> READ PARIZQ ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push r_genera_lectura ciclodim PARDER PTOCOM','lectura',12,'p_lectura','parser.py',271),
  ('escrituraciclo -> CTE_STRING r_genera_escribe_string','escrituraciclo',2,'p_escrituraciclo','parser.py',274),
  ('escrituraciclo -> expresion r_genera_escribe','escrituraciclo',2,'p_escrituraciclo','parser.py',275),
  ('otro -> COMA escrituraciclo otro','otro',3,'p_otro','parser.py',278),
  ('otro -> empty','otro',1,'p_otro','parser.py',279),
  ('repeticion -> condicional','repeticion',1,'p_repeticion','parser.py',283),
  ('repeticion -> nocondicional','repeticion',1,'p_repeticion','parser.py',284),
  ('repeticionfunc -> condicionalfunc','repeticionfunc',1,'p_repeticionfunc','parser.py',288),
  ('repeticionfunc -> nocondicionalfunc','repeticionfunc',1,'p_repeticionfunc','parser.py',289),
  ('empty -> <empty>','empty',0,'p_empty','parser.py',293),
  ('ciclodim -> COMA iddim r_genera_lectura ciclodim','ciclodim',4,'p_ciclodim','parser.py',297),
  ('ciclodim -> empty','ciclodim',1,'p_ciclodim','parser.py',298),
  ('iddim -> ID r_verifica_variable_existe r_pila_operandos_push_id arrexp arrexp','iddim',5,'p_iddim','parser.py',302),
  ('arrexp -> CORIZQ expresion CORDER','arrexp',3,'p_arrexp','parser.py',305),
  ('arrexp -> empty','arrexp',1,'p_arrexp','parser.py',306),
  ('r_register_gotomain -> <empty>','r_register_gotomain',0,'p_r_register_gotomain','parser.py',329),
  ('r_register_global -> <empty>','r_register_global',0,'p_r_register_global','parser.py',335),
  ('r_register_function -> <empty>','r_register_function',0,'p_r_register_function','parser.py',340),
  ('r_register_const -> <empty>','r_register_const',0,'p_r_register_const','parser.py',347),
  ('r_switch_to_global -> <empty>','r_switch_to_global',0,'p_r_switch_to_global','parser.py',355),
  ('r_update_curr_function_name_especial -> <empty>','r_update_curr_function_name_especial',0,'p_r_update_curr_function_name_especial','parser.py',362),
  ('r_update_curr_function_name -> <empty>','r_update_curr_function_name',0,'p_r_update_curr_function_name','parser.py',367),
  ('r_register_param_types -> <empty>','r_register_param_types',0,'p_r_register_param_types','parser.py',372),
  ('r_register_variable_type -> <empty>','r_register_variable_type',0,'p_r_register_variable_type','parser.py',389),
  ('r_update_func_type -> <empty>','r_update_func_type',0,'p_r_update_func_type','parser.py',395),
  ('r_register_quad -> <empty>','r_register_quad',0,'p_r_register_quad','parser.py',399),
  ('r_era_funcion_void -> <empty>','r_era_funcion_void',0,'p_r_era_funcion_void','parser.py',403),
  ('r_era_funcion_retorno -> <empty>','r_era_funcion_retorno',0,'p_r_era_funcion_retorno','parser.py',427),
  ('r_asegurar_return -> <empty>','r_asegurar_return',0,'p_r_asegurar_return','parser.py',449),
  ('r_terminar_parametro -> <empty>','r_terminar_parametro',0,'p_r_terminar_parametro','parser.py',460),
  ('r_terminar_parametro_void -> <empty>','r_terminar_parametro_void',0,'p_r_terminar_parametro_void','parser.py',483),
  ('r_extraer_parametro -> <empty>','r_extraer_parametro',0,'p_r_extraer_parametro','parser.py',506),
  ('r_verifica_void -> <empty>','r_verifica_void',0,'p_r_verifica_void','parser.py',526),
  ('r_marcar_funcion -> <empty>','r_marcar_funcion',0,'p_r_marcar_funcion','parser.py',545),
  ('r_desmarcar_funcion -> <empty>','r_desmarcar_funcion',0,'p_r_desmarcar_funcion','parser.py',550),
  ('r_endfunc -> <empty>','r_endfunc',0,'p_r_endfunc','parser.py',559),
  ('r_if_paso_1 -> <empty>','r_if_paso_1',0,'p_r_if_paso_1','parser.py',565),
  ('r_register_variable_name -> <empty>','r_register_variable_name',0,'p_r_register_variable_name','parser.py',573),
  ('r_arr_dim_uno -> <empty>','r_arr_dim_uno',0,'p_r_arr_dim_uno','parser.py',605),
  ('r_arr_dim_dos -> <empty>','r_arr_dim_dos',0,'p_r_arr_dim_dos','parser.py',614),
  ('r_verify_array -> <empty>','r_verify_array',0,'p_r_verify_array','parser.py',623),
  ('r_verifica_variable_existe -> <empty>','r_verifica_variable_existe',0,'p_r_verifica_variable_existe','parser.py',663),
  ('r_verifica_arrexp_uno -> <empty>','r_verifica_arrexp_uno',0,'p_r_verifica_arrexp_uno','parser.py',682),
  ('r_verifica_arrexp_dos -> <empty>','r_verifica_arrexp_dos',0,'p_r_verifica_arrexp_dos','parser.py',742),
  ('r_return_func -> <empty>','r_return_func',0,'p_r_return_func','parser.py',782),
  ('r_if_paso_2 -> <empty>','r_if_paso_2',0,'p_r_if_paso_2','parser.py',797),
  ('r_if_paso_3 -> <empty>','r_if_paso_3',0,'p_r_if_paso_3','parser.py',805),
  ('r_while_paso_1 -> <empty>','r_while_paso_1',0,'p_r_while_paso_1','parser.py',810),
  ('r_while_paso_2 -> <empty>','r_while_paso_2',0,'p_r_while_paso_2','parser.py',814),
  ('r_while_paso_3 -> <empty>','r_while_paso_3',0,'p_r_while_paso_3','parser.py',822),
  ('r_pop_igu_for -> <empty>','r_pop_igu_for',0,'p_r_pop_igu_for','parser.py',831),
  ('r_for_paso_1 -> <empty>','r_for_paso_1',0,'p_r_for_paso_1','parser.py',850),
  ('r_for_paso_2 -> <empty>','r_for_paso_2',0,'p_r_for_paso_2','parser.py',870),
  ('r_guardar_variable -> <empty>','r_guardar_variable',0,'p_r_guardar_variable','parser.py',894),
  ('r_pila_operandos_push -> <empty>','r_pila_operandos_push',0,'p_r_pila_operandos_push','parser.py',898),
  ('r_pila_operandos_push_id -> <empty>','r_pila_operandos_push_id',0,'p_r_pila_operandos_push_id','parser.py',942),
  ('r_pila_operandos_push_cte_int -> <empty>','r_pila_operandos_push_cte_int',0,'p_r_pila_operandos_push_cte_int','parser.py',956),
  ('r_pila_operandos_push_cte_flt -> <empty>','r_pila_operandos_push_cte_flt',0,'p_r_pila_operandos_push_cte_flt','parser.py',971),
  ('r_pop_mult -> <empty>','r_pop_mult',0,'p_r_pop_mult','parser.py',986),
  ('r_pop_mas -> <empty>','r_pop_mas',0,'p_r_pop_mas','parser.py',1029),
  ('r_push_arr -> <empty>','r_push_arr',0,'p_r_push_arr','parser.py',1080),
  ('r_genera_escribe -> <empty>','r_genera_escribe',0,'p_r_genera_escribe','parser.py',1084),
  ('r_genera_lectura -> <empty>','r_genera_lectura',0,'p_r_genera_lectura','parser.py',1090),
  ('r_genera_escribe_string -> <empty>','r_genera_escribe_string',0,'p_r_genera_escribe_string','parser.py',1097),
  ('r_pop_comp -> <empty>','r_pop_comp',0,'p_r_pop_comp','parser.py',1112),
  ('r_pop_igu -> <empty>','r_pop_igu',0,'p_r_pop_igu','parser.py',1159),
  ('r_marcar_fondo_de_pila -> <empty>','r_marcar_fondo_de_pila',0,'p_r_marcar_fondo_de_pila','parser.py',1177),
  ('r_desmarcar_fondo_de_pila -> <empty>','r_desmarcar_fondo_de_pila',0,'p_r_desmarcar_fondo_de_pila','parser.py',1181),
  ('r_pila_operadores_push_mult -> <empty>','r_pila_operadores_push_mult',0,'p_r_pila_operadores_push_mult','parser.py',1192),
  ('r_pila_operadores_push_div -> <empty>','r_pila_operadores_push_div',0,'p_r_pila_operadores_push_div','parser.py',1196),
  ('r_pila_operadores_push_mas -> <empty>','r_pila_operadores_push_mas',0,'p_r_pila_operadores_push_mas','parser.py',1200),
  ('r_pila_operadores_push_menos -> <empty>','r_pila_operadores_push_menos',0,'p_r_pila_operadores_push_menos','parser.py',1204),
  ('r_pila_operadores_push_may -> <empty>','r_pila_operadores_push_may',0,'p_r_pila_operadores_push_may','parser.py',1208),
  ('r_pila_operadores_push_men -> <empty>','r_pila_operadores_push_men',0,'p_r_pila_operadores_push_men','parser.py',1212),
  ('r_pila_operadores_push_dif -> <empty>','r_pila_operadores_push_dif',0,'p_r_pila_operadores_push_dif','parser.py',1216),
  ('r_pila_operadores_push_iguigu -> <empty>','r_pila_operadores_push_iguigu',0,'p_r_pila_operadores_push_iguigu','parser.py',1220),
  ('r_pila_operadores_push_and -> <empty>','r_pila_operadores_push_and',0,'p_r_pila_operadores_push_and','parser.py',1224),
  ('r_pila_operadores_push_or -> <empty>','r_pila_operadores_push_or',0,'p_r_pila_operadores_push_or','parser.py',1228),
  ('r_pila_operadores_push_igu -> <empty>','r_pila_operadores_push_igu',0,'p_r_pila_operadores_push_igu','parser.py',1232),
  ('r_pila_operadores_push_mayigu -> <empty>','r_pila_operadores_push_mayigu',0,'p_r_pila_operadores_push_mayigu','parser.py',1236),
  ('r_pila_operadores_push_menigu -> <empty>','r_pila_operadores_push_menigu',0,'p_r_pila_operadores_push_menigu','parser.py',1240),
  ('r_push_fondo_falso -> <empty>','r_push_fondo_falso',0,'p_r_push_fondo_falso','parser.py',1244),
  ('r_vaciar_fondo_falso -> <empty>','r_vaciar_fondo_falso',0,'p_r_vaciar_fondo_falso','parser.py',1249),
  ('r_register_dim -> <empty>','r_register_dim',0,'p_r_register_dim','parser.py',1254),
]

85c3b877ee4a293219352ab7996f9632f1cb437b
<mask token>

<mask token>
for _k, _v in _lr_action_items.items():
    for _x, _y in zip(_v[0], _v[1]):
        if not _x in _lr_action:
            _lr_action[_x] = {}
        _lr_action[_x][_k] = _y
del _lr_action_items
<mask token>
for _k, _v in _lr_goto_items.items():
    for _x, _y in zip(_v[0], _v[1]):
        if not _x in _lr_goto:
            _lr_goto[_x] = {}
        _lr_goto[_x][_k] = _y
del _lr_goto_items
<mask token>

_tabversion = '3.10'
_lr_method = 'LALR'
_lr_signature = """AND CHAR COMA CORDER CORIZQ CTEF CTEI CTE_STRING DIF DIV DO DOSPTS ELSE FLT FOR ID IF IGU IGUIGU INT KEYDER KEYIZQ MAIN MAS MAY MAYIGU MEN MENIGU MENOS MODULE MULT OR PARDER PARIZQ PRO PTOCOM READ RETURN THEN TO VARTOKEN VOID WHILE WRITEprogram : PRO r_register_gotomain ID r_register_global PTOCOM opvars opfunciones MAIN r_switch_to_global PARIZQ PARDER bloqueopvars : vars
    | emptyopfunciones : funciones opfunciones
    | emptyvars : VARTOKEN tipo ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo PTOCOM tipociclovarciclo : COMA ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo
    | emptyarr : CORIZQ CTEI r_register_const CORDER
    | emptyarr_uno : CORIZQ CTEI r_register_const r_arr_dim_uno CORDER
    | emptyarr_dos : CORIZQ CTEI r_register_const r_arr_dim_dos CORDER
    | emptytipociclo : tipo opciontipo
    | emptyopciontipo : ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo PTOCOM tipociclo
    | MODULE ID r_update_func_type r_update_curr_function_name_especial PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloquefunc r_endfunc r_asegurar_returntipo : INT r_register_variable_type
    | FLT r_register_variable_type
    | CHAR r_register_variable_typetipo_func : INT r_register_function
    | FLT r_register_function
    | CHAR r_register_function
    varsimple : tipo identfunciones : funcionvoid 
    | funcionfuncionvoid : VOID r_register_function MODULE ID r_update_curr_function_name PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloque  r_endfuncopcionvarsimple : varsimple ciclovarsimple
    | emptyciclovarsimple : COMA varsimple ciclovarsimple
    | emptyfuncion : tipo_func MODULE ID r_update_curr_function_name PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloquefunc r_endfunc r_asegurar_returnident : ID r_register_variable_name arrini arriniarrini : CORIZQ CORDER
    | emptybloque : KEYIZQ bloqueopcion KEYDERbloqueopcion : estatuto bloqueopcion
    | emptybloquefunc : KEYIZQ bloqueopcionfunc KEYDERbloqueopcionfunc : estatutofunc bloqueopcionfunc
    | emptyestatuto : asignacion
    | decision
    | escritura
    | llamadafunc
    | repeticion
    | lecturaestatutofunc : asignacion
    | decisionfunc
    | escritura
    | llamadafunc
    | repeticionfunc
    | lectura
    | RETURN PARIZQ expresion r_return_func PARDER PTOCOM
    asignacion : ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu  expresion r_pop_igu PTOCOMexpresion : exp r_pop_comp expresionsigexpresionsig : MAY r_pila_operadores_push_may expresionsigequal expresion
    | MEN r_pila_operadores_push_men expresionsigequal expresion
    | DIF r_pila_operadores_push_dif expresion
    | IGUIGU r_pila_operadores_push_iguigu expresion
    | AND r_pila_operadores_push_and expresion
    | OR r_pila_operadores_push_or expresion
    | MAYIGU r_pila_operadores_push_mayigu expresionsigequal expresion
    | MENIGU r_pila_operadores_push_menigu expresionsigequal expresion
    | emptyexpresionsigequal : IGU
    | emptyexp : termino r_pop_mas  expcicloexpciclo : MAS r_pila_operadores_push_mas exp
    | MENOS r_pila_operadores_push_menos  exp
    | empty
    termino : factor r_pop_mult factorciclofactorciclo : MULT r_pila_operadores_push_mult termino
    | DIV  r_pila_operadores_push_div termino
    | empty
    factor : PARIZQ r_marcar_fondo_de_pila expresion r_desmarcar_fondo_de_pila PARDER
    | masomenos varcte
    | ID r_verifica_variable_existe r_guardar_variable opcionid r_pila_operandos_push
    masomenos : MAS
    | MENOS
    | empty
    opcionid : PARIZQ r_era_funcion_retorno parametros r_terminar_parametro PARDER 
    | arrexp_uno arrexp_dos  arrexp_uno : CORIZQ r_push_arr expresion r_verifica_arrexp_uno CORDER
    | emptyarrexp_dos : CORIZQ  r_push_arr expresion r_verifica_arrexp_dos CORDER
    | emptyvarcte : iddim
    | CTEI r_pila_operandos_push_cte_int
    | CTEF r_pila_operandos_push_cte_flt
    parametros : expresion r_extraer_parametro cicloparametros
    | emptycicloparametros : COMA expresion r_extraer_parametro cicloparametros
    | empty
    llamadafunc : ID r_verifica_void PARIZQ r_era_funcion_void parametros r_terminar_parametro_void PARDER PTOCOMdecision : IF PARIZQ expresion PARDER r_if_paso_1 THEN bloque decision_else r_if_paso_3decision_else : ELSE r_if_paso_2 bloque
    | emptydecisionfunc : IF PARIZQ expresion PARDER r_if_paso_1 THEN bloquefunc decisionfunc_else r_if_paso_3
    decisionfunc_else : ELSE r_if_paso_2 bloquefunc
    | emptycondicional : WHILE r_while_paso_1 PARIZQ expresion PARDER r_while_paso_2 DO bloque r_while_paso_3condicionalfunc : WHILE r_while_paso_1 PARIZQ r_while_paso_2 expresion PARDER DO bloquefuncnocondicional : FOR ID r_verifica_variable_existe r_guardar_variable arrexp_uno  arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion TO r_pop_igu_for expresion r_for_paso_1 DO bloque r_for_paso_2
    nocondicionalfunc : FOR ID r_verifica_variable_existe r_guardar_variable arrexp_uno  arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion TO r_pop_igu_for expresion r_for_paso_1 DO bloquefunc r_for_paso_2escritura : WRITE PARIZQ escrituraciclo otro PARDER PTOCOMlectura : READ PARIZQ ID r_verifica_variable_existe r_guardar_variable arrexp_uno  arrexp_dos r_pila_operandos_push  r_genera_lectura ciclodim PARDER PTOCOMescrituraciclo : CTE_STRING r_genera_escribe_string
    | expresion r_genera_escribeotro : COMA escrituraciclo otro
    | empty
    repeticion : condicional 
    | nocondicional
    repeticionfunc : condicionalfunc
    | nocondicionalfunc
    empty :ciclodim : COMA iddim r_genera_lectura ciclodim
    | empty
    iddim : ID r_verifica_variable_existe r_pila_operandos_push_id arrexp arrexparrexp : CORIZQ expresion CORDER
    | emptyr_register_gotomain : r_register_global : r_register_function : r_register_const : r_switch_to_global : r_update_curr_function_name_especial : r_update_curr_function_name : r_register_param_types : r_register_variable_type : r_update_func_type : r_register_quad : r_era_funcion_void : r_era_funcion_retorno : r_asegurar_return : r_terminar_parametro : r_terminar_parametro_void : r_extraer_parametro : r_verifica_void : r_marcar_funcion : r_desmarcar_funcion : r_endfunc : r_if_paso_1 : r_register_variable_name : r_arr_dim_uno : r_arr_dim_dos : r_verify_array : r_verifica_variable_existe : r_verifica_arrexp_uno : r_verifica_arrexp_dos : r_return_func : r_if_paso_2 : r_if_paso_3 : r_while_paso_1 : r_while_paso_2 : r_while_paso_3 : r_pop_igu_for : r_for_paso_1 : r_for_paso_2 : r_guardar_variable : r_pila_operandos_push : r_pila_operandos_push_id : r_pila_operandos_push_cte_int : r_pila_operandos_push_cte_flt : r_pop_mult : r_pop_mas : r_push_arr : r_genera_escribe : r_genera_lectura : r_genera_escribe_string : r_pop_comp : r_pop_igu : r_marcar_fondo_de_pila : r_desmarcar_fondo_de_pila : r_pila_operadores_push_mult : r_pila_operadores_push_div : r_pila_operadores_push_mas : r_pila_operadores_push_menos : r_pila_operadores_push_may : r_pila_operadores_push_men : r_pila_operadores_push_dif : r_pila_operadores_push_iguigu : r_pila_operadores_push_and : r_pila_operadores_push_or : r_pila_operadores_push_igu : r_pila_operadores_push_mayigu : r_pila_operadores_push_menigu : r_push_fondo_falso : r_vaciar_fondo_falso : r_register_dim : """
_lr_action_items = {'PRO': ([0], [2]), '$end': ([1, 53, 87], [0, -1, -37]),
    'ID': ([2, 3, 21, 22, 23, 24, 28, 33, 34, 35, 37, 54, 61, 63, 64, 65, 
    66, 67, 68, 72, 73, 76, 81, 83, 87, 91, 92, 93, 108, 109, 114, 116, 117,
    118, 123, 129, 135, 137, 138, 150, 165, 168, 170, 173, 177, 178, 179, 
    180, 181, 182, 183, 184, 187, 188, 191, 192, 211, 217, 218, 219, 220, 
    221, 222, 223, 224, 225, 226, 227, 228, 231, 233, 243, 248, 251, 252, 
    253, 254, 255, 260, 261, 267, 270, 277, 281, 284, 286, 288, 297, 298, 
    302, 304, 305, 306, 307, 308, 309, 312, 313, 315, 321, 326, 327, 330, 
    332, 333, 340, 343, 348, 352, 355, 358, 362, 364, 372, 378, 383, 385, 
    386, 387, 389, 390, 392, 394, 395, 398, 400, 404, 405], [-123, 4, 32, -
    131, -131, -131, 38, -19, -20, -21, 41, 69, 69, -43, -44, -45, -46, -47,
    -48, -113, -114, 95, 102, 104, -37, 115, 115, 122, -134, -174, 147, -80,
    -81, -82, 115, 164, -168, 115, 115, 115, 208, -168, 115, -82, -180, -
    181, -182, -183, -184, -185, -187, -188, -178, -179, -176, -177, 115, -
    117, -117, 115, 115, 115, 115, -117, -117, 115, 115, 115, 115, -135, -
    107, -186, 115, -117, 115, -67, -68, 115, 115, 115, 115, 115, 69, 115, 
    -96, -154, -99, -157, -186, 69, -49, -50, -51, -52, -53, -54, -115, -
    116, 335, -97, -103, 115, -40, 115, 115, -98, 147, -156, -56, -158, 115,
    -108, 115, -55, -117, -154, -102, -104, -186, -160, -100, 115, -105, -
    101, -158, 115, -160, -106]), 'PTOCOM': ([4, 5, 32, 39, 43, 45, 49, 51,
    57, 82, 84, 104, 106, 111, 112, 113, 115, 132, 133, 136, 140, 141, 142,
    143, 144, 145, 146, 147, 148, 164, 166, 169, 176, 185, 186, 189, 190, 
    193, 194, 195, 196, 197, 198, 207, 209, 229, 230, 232, 240, 242, 246, 
    250, 256, 257, 258, 259, 262, 263, 264, 265, 266, 268, 269, 271, 278, 
    280, 283, 289, 290, 291, 292, 293, 316, 318, 319, 323, 336, 338, 341, 
    353, 365], [-124, 6, -145, -117, -117, -12, -148, -14, -117, 103, -8, -
    145, -11, -172, -167, -166, -149, -117, -13, -86, -117, -117, -117, -78,
    -89, -164, -165, -149, -161, -145, -117, -88, -57, -66, -69, -72, -73, 
    -76, -90, -91, -163, -117, 233, -117, -148, -117, -162, -117, -117, -
    117, 284, -77, -60, -61, -62, -63, -70, -71, -74, -75, -117, -122, -79,
    -84, -148, -7, -85, -58, -59, -64, -65, -120, -117, -173, -87, -121, 
    350, 352, -83, 362, 372]), 'VARTOKEN': ([6, 126, 157, 158, 203, 369, 
    376], [10, -130, -130, 10, 10, -130, 10]), 'VOID': ([6, 7, 8, 9, 12, 14,
    15, 87, 103, 130, 131, 163, 276, 299, 300, 328, 329, 330, 350, 360, 393,
    397, 399], [-117, 16, -2, -3, 16, -26, -27, -37, -117, -6, -16, -15, -
    143, -143, -136, -28, -33, -40, -117, -17, -143, -136, -18]), 'INT': ([
    6, 7, 8, 9, 10, 12, 14, 15, 48, 55, 56, 77, 87, 99, 103, 130, 131, 163,
    276, 299, 300, 317, 328, 329, 330, 337, 350, 360, 393, 397, 399], [-117,
    18, -2, -3, 22, 18, -26, -27, -141, -141, 22, 22, -37, 22, 22, -6, -16,
    -15, -143, -143, -136, -141, -28, -33, -40, 22, 22, -17, -143, -136, -
    18]), 'FLT': ([6, 7, 8, 9, 10, 12, 14, 15, 48, 55, 56, 77, 87, 99, 103,
    130, 131, 163, 276, 299, 300, 317, 328, 329, 330, 337, 350, 360, 393, 
    397, 399], [-117, 19, -2, -3, 23, 19, -26, -27, -141, -141, 23, 23, -37,
    23, 23, -6, -16, -15, -143, -143, -136, -141, -28, -33, -40, 23, 23, -
    17, -143, -136, -18]), 'CHAR': ([6, 7, 8, 9, 10, 12, 14, 15, 48, 55, 56,
    77, 87, 99, 103, 130, 131, 163, 276, 299, 300, 317, 328, 329, 330, 337,
    350, 360, 393, 397, 399], [-117, 20, -2, -3, 24, 20, -26, -27, -141, -
    141, 24, 24, -37, 24, 24, -6, -16, -15, -143, -143, -136, -141, -28, -
    33, -40, 24, 24, -17, -143, -136, -18]), 'MAIN': ([6, 7, 8, 9, 11, 12, 
    13, 14, 15, 26, 87, 103, 130, 131, 163, 276, 299, 300, 328, 329, 330, 
    350, 360, 393, 397, 399], [-117, -117, -2, -3, 25, -117, -5, -26, -27, 
    -4, -37, -117, -6, -16, -15, -143, -143, -136, -28, -33, -40, -117, -17,
    -143, -136, -18]), 'KEYIZQ': ([8, 9, 46, 103, 126, 130, 131, 157, 158, 
    163, 203, 204, 216, 238, 239, 273, 275, 287, 322, 330, 350, 360, 369, 
    373, 376, 379, 381, 382, 384, 388, 391, 393, 397, 399, 403], [-2, -3, 
    54, -117, -130, -6, -16, -130, -117, -15, -117, -133, 54, -133, 277, 54,
    54, -153, 54, -40, -117, -17, -130, 277, -117, 277, -133, 54, -153, 277,
    277, -143, -136, -18, 277]), 'MODULE': ([16, 17, 18, 19, 20, 22, 23, 24,
    27, 29, 30, 31, 33, 34, 35, 129], [-125, 28, -125, -125, -125, -131, -
    131, -131, 37, -22, -23, -24, -19, -20, -21, 165]), 'PARIZQ': ([25, 36,
    38, 41, 42, 47, 69, 70, 71, 74, 75, 90, 91, 92, 94, 108, 109, 115, 123,
    135, 137, 138, 148, 150, 168, 170, 177, 178, 179, 180, 181, 182, 183, 
    184, 187, 188, 191, 192, 197, 208, 211, 217, 218, 219, 220, 221, 222, 
    223, 224, 225, 226, 227, 228, 231, 241, 243, 248, 252, 253, 254, 255, 
    260, 261, 267, 270, 279, 281, 298, 310, 311, 314, 327, 332, 333, 334, 
    348, 355, 358, 364, 387, 392, 398, 400], [-127, 40, -129, -129, 48, 55,
    -140, 91, 92, 93, -155, 108, 109, 109, 123, -134, -174, -149, 109, -168,
    109, 109, -161, 109, -168, 109, -180, -181, -182, -183, -184, -185, -
    187, -188, -178, -179, -176, -177, 231, -132, 109, -117, -117, 109, 109,
    109, 109, -117, -117, 109, 109, 109, 109, -135, -128, -186, 109, 109, -
    67, -68, 109, 109, 109, 109, 109, 317, 109, -186, 332, 333, -155, 109, 
    109, 109, 348, -156, -158, 109, 109, -186, 109, -158, 109]), 'CORIZQ':
    ([32, 39, 43, 45, 69, 89, 95, 102, 104, 106, 107, 115, 122, 124, 128, 
    132, 134, 136, 147, 148, 154, 156, 160, 162, 164, 166, 196, 197, 200, 
    202, 206, 207, 229, 232, 235, 240, 266, 268, 283, 323, 335, 349, 359, 
    368], [-145, 44, 50, -12, -149, -161, -149, -145, -145, -11, 135, -149,
    -149, -161, 161, 44, 168, -86, -149, -161, -161, 135, 161, -36, -145, 
    50, -163, 135, 135, 168, -35, 44, 267, 168, 168, 50, 267, -122, -85, -
    121, -149, -161, 135, 168]), 'COMA': ([32, 39, 43, 45, 49, 51, 57, 79, 
    101, 102, 104, 106, 111, 112, 113, 115, 119, 120, 121, 122, 127, 128, 
    132, 133, 136, 140, 141, 142, 143, 144, 145, 146, 147, 148, 152, 153, 
    154, 160, 162, 164, 166, 169, 172, 176, 185, 186, 189, 190, 193, 194, 
    195, 196, 197, 199, 200, 205, 206, 207, 209, 214, 229, 230, 232, 235, 
    240, 242, 250, 256, 257, 258, 259, 262, 263, 264, 265, 266, 268, 269, 
    271, 272, 278, 283, 285, 289, 290, 291, 292, 293, 296, 316, 319, 320, 
    323, 325, 341, 354, 363], [-145, -117, -117, -12, -148, -14, 83, 99, -
    25, -145, -145, -11, -172, -167, -166, -149, 150, -171, -169, -149, 99,
    -117, -117, -13, -86, -117, -117, -117, -78, -89, -164, -165, -149, -
    161, -109, -110, -161, -117, -36, -145, -117, -88, -139, -57, -66, -69,
    -72, -73, -76, -90, -91, -163, -117, 150, -117, -34, -35, -117, -148, 
    248, -117, -162, -117, -117, -117, 83, -77, -60, -61, -62, -63, -70, -
    71, -74, -75, -117, -122, -79, -84, -162, -148, -85, -139, -58, -59, -
    64, -65, -120, -170, 83, -87, 248, -121, 343, -83, -170, 343]),
    'PARDER': ([40, 48, 55, 56, 77, 78, 79, 80, 96, 97, 98, 100, 101, 102, 
    108, 110, 111, 112, 113, 115, 119, 120, 121, 122, 125, 127, 128, 136, 
    137, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 151, 152, 153, 
    154, 155, 159, 160, 162, 169, 171, 172, 173, 174, 176, 185, 186, 189, 
    190, 193, 194, 195, 196, 197, 199, 200, 205, 206, 213, 214, 215, 229, 
    230, 231, 232, 234, 235, 247, 249, 250, 256, 257, 258, 259, 262, 263, 
    264, 265, 266, 268, 269, 270, 271, 272, 283, 285, 289, 290, 291, 292, 
    293, 295, 296, 317, 319, 320, 323, 324, 325, 337, 339, 341, 342, 344, 
    346, 347, 351, 354, 356, 361, 363, 367, 370], [46, -141, -141, -117, -
    117, -142, -117, -30, -142, 126, -29, -32, -25, -145, -134, 139, -172, 
    -167, -166, -149, -117, -171, -169, -149, 157, -117, -117, -86, -117, -
    117, -117, -117, -78, -89, -164, -165, -149, -161, 198, -112, -109, -
    110, -161, 201, -31, -117, -36, -88, -138, -139, -93, -175, -57, -66, -
    69, -72, -73, -76, -90, -91, -163, -117, -117, -117, -34, -35, 246, -
    117, 250, -117, -162, -135, -117, -111, -117, -92, -95, -77, -60, -61, 
    -62, -63, -70, -71, -74, -75, -117, -122, -79, -117, -84, -162, -85, -
    139, -58, -59, -64, -65, -120, -137, -170, -141, -87, -117, -121, 341, 
    -117, -117, -94, -83, 353, -119, -152, 357, -142, -170, 365, 369, -117,
    374, -118]), 'CTEI': ([44, 50, 91, 92, 108, 109, 114, 116, 117, 118, 
    123, 135, 137, 138, 150, 168, 170, 173, 177, 178, 179, 180, 181, 182, 
    183, 184, 187, 188, 191, 192, 211, 217, 218, 219, 220, 221, 222, 223, 
    224, 225, 226, 227, 228, 231, 243, 248, 252, 253, 254, 255, 260, 261, 
    267, 270, 281, 298, 327, 332, 333, 348, 355, 358, 364, 387, 392, 398, 
    400], [52, 58, -117, -117, -134, -174, 145, -80, -81, -82, -117, -168, 
    -117, -117, -117, -168, -117, -82, -180, -181, -182, -183, -184, -185, 
    -187, -188, -178, -179, -176, -177, -117, -117, -117, -117, -117, -117,
    -117, -117, -117, -117, -117, -117, -117, -135, -186, -117, -117, -67, 
    -68, -117, -117, -117, -117, -117, -117, -186, -117, -117, -117, -156, 
    -158, -117, -117, -186, -117, -158, -117]), 'CORDER': ([52, 58, 59, 85,
    86, 105, 111, 112, 113, 115, 136, 140, 141, 142, 143, 144, 145, 146, 
    147, 148, 161, 169, 176, 185, 186, 189, 190, 193, 194, 195, 196, 197, 
    212, 229, 230, 232, 244, 245, 250, 256, 257, 258, 259, 262, 263, 264, 
    265, 266, 268, 269, 271, 282, 283, 289, 290, 291, 292, 293, 294, 319, 
    323, 341], [-126, -126, -146, -147, 106, 133, -172, -167, -166, -149, -
    86, -117, -117, -117, -78, -89, -164, -165, -149, -161, 206, -88, -57, 
    -66, -69, -72, -73, -76, -90, -91, -163, -117, -150, -117, -162, -117, 
    -151, 283, -77, -60, -61, -62, -63, -70, -71, -74, -75, -117, -122, -79,
    -84, 319, -85, -58, -59, -64, -65, -120, 323, -87, -121, -83]),
    'KEYDER': ([54, 60, 61, 62, 63, 64, 65, 66, 67, 68, 72, 73, 87, 88, 233,
    251, 277, 284, 286, 288, 297, 301, 302, 303, 304, 305, 306, 307, 308, 
    309, 312, 313, 321, 326, 330, 331, 340, 352, 362, 372, 378, 383, 385, 
    386, 389, 390, 394, 395, 404, 405], [-117, 87, -117, -39, -43, -44, -45,
    -46, -47, -48, -113, -114, -37, -38, -107, -117, -117, -96, -154, -99, 
    -157, 330, -117, -42, -49, -50, -51, -52, -53, -54, -115, -116, -97, -
    103, -40, -41, -98, -56, -108, -55, -117, -154, -102, -104, -160, -100,
    -105, -101, -160, -106]), 'IF': ([54, 61, 63, 64, 65, 66, 67, 68, 72, 
    73, 87, 233, 251, 277, 284, 286, 288, 297, 302, 304, 305, 306, 307, 308,
    309, 312, 313, 321, 326, 330, 340, 352, 362, 372, 378, 383, 385, 386, 
    389, 390, 394, 395, 404, 405], [70, 70, -43, -44, -45, -46, -47, -48, -
    113, -114, -37, -107, -117, 311, -96, -154, -99, -157, 311, -49, -50, -
    51, -52, -53, -54, -115, -116, -97, -103, -40, -98, -56, -108, -55, -
    117, -154, -102, -104, -160, -100, -105, -101, -160, -106]), 'WRITE': (
    [54, 61, 63, 64, 65, 66, 67, 68, 72, 73, 87, 233, 251, 277, 284, 286, 
    288, 297, 302, 304, 305, 306, 307, 308, 309, 312, 313, 321, 326, 330, 
    340, 352, 362, 372, 378, 383, 385, 386, 389, 390, 394, 395, 404, 405],
    [71, 71, -43, -44, -45, -46, -47, -48, -113, -114, -37, -107, -117, 71,
    -96, -154, -99, -157, 71, -49, -50, -51, -52, -53, -54, -115, -116, -97,
    -103, -40, -98, -56, -108, -55, -117, -154, -102, -104, -160, -100, -
    105, -101, -160, -106]), 'READ': ([54, 61, 63, 64, 65, 66, 67, 68, 72, 
    73, 87, 233, 251, 277, 284, 286, 288, 297, 302, 304, 305, 306, 307, 308,
    309, 312, 313, 321, 326, 330, 340, 352, 362, 372, 378, 383, 385, 386, 
    389, 390, 394, 395, 404, 405], [74, 74, -43, -44, -45, -46, -47, -48, -
    113, -114, -37, -107, -117, 74, -96, -154, -99, -157, 74, -49, -50, -51,
    -52, -53, -54, -115, -116, -97, -103, -40, -98, -56, -108, -55, -117, -
    154, -102, -104, -160, -100, -105, -101, -160, -106]), 'WHILE': ([54, 
    61, 63, 64, 65, 66, 67, 68, 72, 73, 87, 233, 251, 277, 284, 286, 288, 
    297, 302, 304, 305, 306, 307, 308, 309, 312, 313, 321, 326, 330, 340, 
    352, 362, 372, 378, 383, 385, 386, 389, 390, 394, 395, 404, 405], [75, 
    75, -43, -44, -45, -46, -47, -48, -113, -114, -37, -107, -117, 314, -96,
    -154, -99, -157, 314, -49, -50, -51, -52, -53, -54, -115, -116, -97, -
    103, -40, -98, -56, -108, -55, -117, -154, -102, -104, -160, -100, -105,
    -101, -160, -106]), 'FOR': ([54, 61, 63, 64, 65, 66, 67, 68, 72, 73, 87,
    233, 251, 277, 284, 286, 288, 297, 302, 304, 305, 306, 307, 308, 309, 
    312, 313, 321, 326, 330, 340, 352, 362, 372, 378, 383, 385, 386, 389, 
    390, 394, 395, 404, 405], [76, 76, -43, -44, -45, -46, -47, -48, -113, 
    -114, -37, -107, -117, 315, -96, -154, -99, -157, 315, -49, -50, -51, -
    52, -53, -54, -115, -116, -97, -103, -40, -98, -56, -108, -55, -117, -
    154, -102, -104, -160, -100, -105, -101, -160, -106]), 'IGU': ([69, 89,
    95, 107, 124, 134, 136, 156, 167, 169, 177, 178, 183, 184, 202, 210, 
    217, 218, 223, 224, 237, 274, 283, 319, 335, 349, 359, 368, 375, 380],
    [-149, -161, -149, -117, -161, -117, -86, -117, -162, -88, -180, -181, 
    -187, -188, -117, 243, 253, 253, 253, 253, -162, 298, -85, -87, -149, -
    161, -117, -117, -162, 387]), 'ELSE': ([87, 251, 330, 378], [-37, 287, 
    -40, 384]), 'MAS': ([91, 92, 108, 109, 112, 113, 115, 123, 135, 136, 
    137, 138, 141, 142, 143, 144, 145, 146, 147, 148, 150, 168, 169, 170, 
    177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 190, 191, 192, 193, 
    194, 195, 196, 197, 211, 217, 218, 219, 220, 221, 222, 223, 224, 225, 
    226, 227, 228, 229, 230, 231, 232, 243, 248, 250, 252, 253, 254, 255, 
    260, 261, 264, 265, 266, 267, 268, 269, 270, 271, 281, 283, 293, 298, 
    319, 323, 327, 332, 333, 341, 348, 355, 358, 364, 387, 392, 398, 400],
    [116, 116, -134, -174, -167, -166, -149, 116, -168, -86, 116, 116, 187,
    -117, -78, -89, -164, -165, -149, -161, 116, -168, -88, 116, -180, -181,
    -182, -183, -184, -185, -187, -188, -178, -179, -73, -176, -177, -76, -
    90, -91, -163, -117, 116, -117, -117, 116, 116, 116, 116, -117, -117, 
    116, 116, 116, 116, -117, -162, -135, -117, -186, 116, -77, 116, -67, -
    68, 116, 116, 116, -74, -75, -117, 116, -122, -79, 116, -84, 116, -85, 
    -120, -186, -87, -121, 116, 116, 116, -83, -156, -158, 116, 116, -186, 
    116, -158, 116]), 'MENOS': ([91, 92, 108, 109, 112, 113, 115, 123, 135,
    136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 148, 150, 168, 169, 
    170, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 190, 191, 192, 
    193, 194, 195, 196, 197, 211, 217, 218, 219, 220, 221, 222, 223, 224, 
    225, 226, 227, 228, 229, 230, 231, 232, 243, 248, 250, 252, 253, 254, 
    255, 260, 261, 264, 265, 266, 267, 268, 269, 270, 271, 281, 283, 293, 
    298, 319, 323, 327, 332, 333, 341, 348, 355, 358, 364, 387, 392, 398, 
    400], [117, 117, -134, -174, -167, -166, -149, 117, -168, -86, 117, 117,
    188, -117, -78, -89, -164, -165, -149, -161, 117, -168, -88, 117, -180,
    -181, -182, -183, -184, -185, -187, -188, -178, -179, -73, -176, -177, 
    -76, -90, -91, -163, -117, 117, -117, -117, 117, 117, 117, 117, -117, -
    117, 117, 117, 117, 117, -117, -162, -135, -117, -186, 117, -77, 117, -
    67, -68, 117, 117, 117, -74, -75, -117, 117, -122, -79, 117, -84, 117, 
    -85, -120, -186, -87, -121, 117, 117, 117, -83, -156, -158, 117, 117, -
    186, 117, -158, 117]), 'CTEF': ([91, 92, 108, 109, 114, 116, 117, 118, 
    123, 135, 137, 138, 150, 168, 170, 173, 177, 178, 179, 180, 181, 182, 
    183, 184, 187, 188, 191, 192, 211, 217, 218, 219, 220, 221, 222, 223, 
    224, 225, 226, 227, 228, 231, 243, 248, 252, 253, 254, 255, 260, 261, 
    267, 270, 281, 298, 327, 332, 333, 348, 355, 358, 364, 387, 392, 398, 
    400], [-117, -117, -134, -174, 146, -80, -81, -82, -117, -168, -117, -
    117, -117, -168, -117, -82, -180, -181, -182, -183, -184, -185, -187, -
    188, -178, -179, -176, -177, -117, -117, -117, -117, -117, -117, -117, 
    -117, -117, -117, -117, -117, -117, -135, -186, -117, -117, -67, -68, -
    117, -117, -117, -117, -117, -117, -186, -117, -117, -117, -156, -158, 
    -117, -117, -186, -117, -158, -117]), 'CTE_STRING': ([92, 150], [120, 
    120]), 'MAY': ([111, 112, 113, 115, 136, 140, 141, 142, 143, 144, 145, 
    146, 147, 148, 169, 186, 189, 190, 193, 194, 195, 196, 197, 229, 230, 
    232, 250, 262, 263, 264, 265, 266, 268, 269, 271, 283, 293, 319, 323, 
    341], [-172, -167, -166, -149, -86, 177, -117, -117, -78, -89, -164, -
    165, -149, -161, -88, -69, -72, -73, -76, -90, -91, -163, -117, -117, -
    162, -117, -77, -70, -71, -74, -75, -117, -122, -79, -84, -85, -120, -
    87, -121, -83]), 'MEN': ([111, 112, 113, 115, 136, 140, 141, 142, 143, 
    144, 145, 146, 147, 148, 169, 186, 189, 190, 193, 194, 195, 196, 197, 
    229, 230, 232, 250, 262, 263, 264, 265, 266, 268, 269, 271, 283, 293, 
    319, 323, 341], [-172, -167, -166, -149, -86, 178, -117, -117, -78, -89,
    -164, -165, -149, -161, -88, -69, -72, -73, -76, -90, -91, -163, -117, 
    -117, -162, -117, -77, -70, -71, -74, -75, -117, -122, -79, -84, -85, -
    120, -87, -121, -83]), 'DIF': ([111, 112, 113, 115, 136, 140, 141, 142,
    143, 144, 145, 146, 147, 148, 169, 186, 189, 190, 193, 194, 195, 196, 
    197, 229, 230, 232, 250, 262, 263, 264, 265, 266, 268, 269, 271, 283, 
    293, 319, 323, 341], [-172, -167, -166, -149, -86, 179, -117, -117, -78,
    -89, -164, -165, -149, -161, -88, -69, -72, -73, -76, -90, -91, -163, -
    117, -117, -162, -117, -77, -70, -71, -74, -75, -117, -122, -79, -84, -
    85, -120, -87, -121, -83]), 'IGUIGU': ([111, 112, 113, 115, 136, 140, 
    141, 142, 143, 144, 145, 146, 147, 148, 169, 186, 189, 190, 193, 194, 
    195, 196, 197, 229, 230, 232, 250, 262, 263, 264, 265, 266, 268, 269, 
    271, 283, 293, 319, 323, 341], [-172, -167, -166, -149, -86, 180, -117,
    -117, -78, -89, -164, -165, -149, -161, -88, -69, -72, -73, -76, -90, -
    91, -163, -117, -117, -162, -117, -77, -70, -71, -74, -75, -117, -122, 
    -79, -84, -85, -120, -87, -121, -83]), 'AND': ([111, 112, 113, 115, 136,
    140, 141, 142, 143, 144, 145, 146, 147, 148, 169, 186, 189, 190, 193, 
    194, 195, 196, 197, 229, 230, 232, 250, 262, 263, 264, 265, 266, 268, 
    269, 271, 283, 293, 319, 323, 341], [-172, -167, -166, -149, -86, 181, 
    -117, -117, -78, -89, -164, -165, -149, -161, -88, -69, -72, -73, -76, 
    -90, -91, -163, -117, -117, -162, -117, -77, -70, -71, -74, -75, -117, 
    -122, -79, -84, -85, -120, -87, -121, -83]), 'OR': ([111, 112, 113, 115,
    136, 140, 141, 142, 143, 144, 145, 146, 147, 148, 169, 186, 189, 190, 
    193, 194, 195, 196, 197, 229, 230, 232, 250, 262, 263, 264, 265, 266, 
    268, 269, 271, 283, 293, 319, 323, 341], [-172, -167, -166, -149, -86, 
    182, -117, -117, -78, -89, -164, -165, -149, -161, -88, -69, -72, -73, 
    -76, -90, -91, -163, -117, -117, -162, -117, -77, -70, -71, -74, -75, -
    117, -122, -79, -84, -85, -120, -87, -121, -83]), 'MAYIGU': ([111, 112,
    113, 115, 136, 140, 141, 142, 143, 144, 145, 146, 147, 148, 169, 186, 
    189, 190, 193, 194, 195, 196, 197, 229, 230, 232, 250, 262, 263, 264, 
    265, 266, 268, 269, 271, 283, 293, 319, 323, 341], [-172, -167, -166, -
    149, -86, 183, -117, -117, -78, -89, -164, -165, -149, -161, -88, -69, 
    -72, -73, -76, -90, -91, -163, -117, -117, -162, -117, -77, -70, -71, -
    74, -75, -117, -122, -79, -84, -85, -120, -87, -121, -83]), 'MENIGU': (
    [111, 112, 113, 115, 136, 140, 141, 142, 143, 144, 145, 146, 147, 148, 
    169, 186, 189, 190, 193, 194, 195, 196, 197, 229, 230, 232, 250, 262, 
    263, 264, 265, 266, 268, 269, 271, 283, 293, 319, 323, 341], [-172, -
    167, -166, -149, -86, 184, -117, -117, -78, -89, -164, -165, -149, -161,
    -88, -69, -72, -73, -76, -90, -91, -163, -117, -117, -162, -117, -77, -
    70, -71, -74, -75, -117, -122, -79, -84, -85, -120, -87, -121, -83]),
    'TO': ([111, 112, 113, 115, 136, 140, 141, 142, 143, 144, 145, 146, 147,
    148, 169, 176, 185, 186, 189, 190, 193, 194, 195, 196, 197, 229, 230, 
    232, 250, 256, 257, 258, 259, 262, 263, 264, 265, 266, 268, 269, 271, 
    283, 289, 290, 291, 292, 293, 319, 323, 341, 345, 396], [-172, -167, -
    166, -149, -86, -117, -117, -117, -78, -89, -164, -165, -149, -161, -88,
    -57, -66, -69, -72, -73, -76, -90, -91, -163, -117, -117, -162, -117, -
    77, -60, -61, -62, -63, -70, -71, -74, -75, -117, -122, -79, -84, -85, 
    -58, -59, -64, -65, -120, -87, -121, -83, 355, 398]), 'DO': ([111, 112,
    113, 115, 136, 140, 141, 142, 143, 144, 145, 146, 147, 148, 169, 176, 
    185, 186, 189, 190, 193, 194, 195, 196, 197, 201, 229, 230, 232, 236, 
    250, 256, 257, 258, 259, 262, 263, 264, 265, 266, 268, 269, 271, 283, 
    289, 290, 291, 292, 293, 319, 323, 341, 371, 374, 377, 401, 402], [-172,
    -167, -166, -149, -86, -117, -117, -117, -78, -89, -164, -165, -149, -
    161, -88, -57, -66, -69, -72, -73, -76, -90, -91, -163, -117, -156, -
    117, -162, -117, 273, -77, -60, -61, -62, -63, -70, -71, -74, -75, -117,
    -122, -79, -84, -85, -58, -59, -64, -65, -120, -87, -121, -83, -159, 
    379, 382, -159, 403]), 'MULT': ([113, 115, 136, 142, 143, 144, 145, 146,
    147, 148, 169, 194, 195, 196, 197, 229, 230, 232, 250, 266, 268, 269, 
    271, 283, 293, 319, 323, 341], [-166, -149, -86, 191, -78, -89, -164, -
    165, -149, -161, -88, -90, -91, -163, -117, -117, -162, -117, -77, -117,
    -122, -79, -84, -85, -120, -87, -121, -83]), 'DIV': ([113, 115, 136, 
    142, 143, 144, 145, 146, 147, 148, 169, 194, 195, 196, 197, 229, 230, 
    232, 250, 266, 268, 269, 271, 283, 293, 319, 323, 341], [-166, -149, -
    86, 192, -78, -89, -164, -165, -149, -161, -88, -90, -91, -163, -117, -
    117, -162, -117, -77, -117, -122, -79, -84, -85, -120, -87, -121, -83]),
    'THEN': ([139, 175, 357, 366], [-144, 216, -144, 373]), 'RETURN': ([233,
    277, 284, 302, 304, 305, 306, 307, 308, 309, 312, 313, 330, 352, 362, 
    372, 378, 383, 385, 386, 390, 395, 404, 405], [-107, 310, -96, 310, -49,
    -50, -51, -52, -53, -54, -115, -116, -40, -56, -108, -55, -117, -154, -
    102, -104, -100, -101, -160, -106])}
_lr_action = {}
for _k, _v in _lr_action_items.items():
    for _x, _y in zip(_v[0], _v[1]):
        if not _x in _lr_action:
            _lr_action[_x] = {}
        _lr_action[_x][_k] = _y
del _lr_action_items
_lr_goto_items = {'program': ([0], [1]), 'r_register_gotomain': ([2], [3]),
    'r_register_global': ([4], [5]), 'opvars': ([6, 158, 203, 376], [7, 204,
    238, 381]), 'vars': ([6, 158, 203, 376], [8, 8, 8, 8]), 'empty': ([6, 7,
    12, 39, 43, 54, 56, 57, 61, 77, 79, 91, 92, 103, 107, 119, 123, 127, 
    128, 132, 134, 137, 138, 140, 141, 142, 150, 156, 158, 160, 166, 170, 
    197, 199, 200, 202, 203, 207, 211, 214, 217, 218, 219, 220, 221, 222, 
    223, 224, 225, 226, 227, 228, 229, 232, 235, 240, 242, 248, 251, 252, 
    255, 260, 261, 266, 267, 270, 277, 281, 302, 316, 320, 325, 327, 332, 
    333, 337, 350, 358, 359, 363, 364, 368, 376, 378, 392, 400], [9, 13, 13,
    45, 51, 62, 80, 84, 62, 80, 100, 118, 118, 131, 136, 151, 118, 100, 162,
    45, 169, 173, 118, 185, 189, 193, 118, 136, 9, 162, 51, 118, 136, 151, 
    136, 169, 9, 45, 118, 249, 254, 254, 118, 118, 118, 118, 254, 254, 118,
    118, 118, 118, 268, 169, 169, 51, 84, 118, 288, 118, 118, 118, 118, 268,
    118, 173, 303, 118, 303, 84, 249, 344, 118, 118, 118, 80, 131, 118, 136,
    344, 118, 169, 9, 385, 118, 118]), 'opfunciones': ([7, 12], [11, 26]),
    'funciones': ([7, 12], [12, 12]), 'funcionvoid': ([7, 12], [14, 14]),
    'funcion': ([7, 12], [15, 15]), 'tipo_func': ([7, 12], [17, 17]),
    'tipo': ([10, 56, 77, 99, 103, 337, 350], [21, 81, 81, 81, 129, 81, 129
    ]), 'r_register_function': ([16, 18, 19, 20], [27, 29, 30, 31]),
    'r_register_variable_type': ([22, 23, 24], [33, 34, 35]),
    'r_switch_to_global': ([25], [36]), 'r_register_variable_name': ([32, 
    102, 104, 164], [39, 128, 132, 207]), 'r_update_curr_function_name': ([
    38, 41], [42, 47]), 'arr_uno': ([39, 132, 207], [43, 166, 240]),
    'arr_dos': ([43, 166, 240], [49, 209, 278]), 'bloque': ([46, 216, 273, 
    275, 322, 382], [53, 251, 297, 299, 340, 389]), 'r_marcar_funcion': ([
    48, 55, 317], [56, 77, 337]), 'r_verify_array': ([49, 209, 278], [57, 
    242, 316]), 'r_register_const': ([52, 58], [59, 85]), 'bloqueopcion': (
    [54, 61], [60, 88]), 'estatuto': ([54, 61], [61, 61]), 'asignacion': ([
    54, 61, 277, 302], [63, 63, 304, 304]), 'decision': ([54, 61], [64, 64]
    ), 'escritura': ([54, 61, 277, 302], [65, 65, 306, 306]), 'llamadafunc':
    ([54, 61, 277, 302], [66, 66, 307, 307]), 'repeticion': ([54, 61], [67,
    67]), 'lectura': ([54, 61, 277, 302], [68, 68, 309, 309]),
    'condicional': ([54, 61], [72, 72]), 'nocondicional': ([54, 61], [73, 
    73]), 'opcionvarsimple': ([56, 77, 337], [78, 96, 351]), 'varsimple': (
    [56, 77, 99, 337], [79, 79, 127, 79]), 'varciclo': ([57, 242, 316], [82,
    280, 336]), 'r_arr_dim_uno': ([59], [86]), 'r_verifica_variable_existe':
    ([69, 95, 115, 122, 147, 335], [89, 124, 148, 154, 196, 349]),
    'r_verifica_void': ([69], [90]), 'r_while_paso_1': ([75, 314], [94, 334
    ]), 'r_desmarcar_funcion': ([78, 96, 351], [97, 125, 361]),
    'ciclovarsimple': ([79, 127], [98, 159]), 'ident': ([81], [101]),
    'r_arr_dim_dos': ([85], [105]), 'r_guardar_variable': ([89, 124, 148, 
    154, 349], [107, 156, 197, 200, 359]), 'expresion': ([91, 92, 123, 137,
    138, 150, 170, 211, 219, 220, 221, 222, 248, 252, 255, 260, 261, 267, 
    270, 281, 327, 332, 333, 358, 364, 392, 400], [110, 121, 155, 172, 174,
    121, 212, 244, 256, 257, 258, 259, 285, 289, 290, 291, 292, 294, 172, 
    318, 345, 346, 347, 367, 371, 396, 401]), 'exp': ([91, 92, 123, 137, 
    138, 150, 170, 211, 219, 220, 221, 222, 225, 226, 248, 252, 255, 260, 
    261, 267, 270, 281, 327, 332, 333, 358, 364, 392, 400], [111, 111, 111,
    111, 111, 111, 111, 111, 111, 111, 111, 111, 262, 263, 111, 111, 111, 
    111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111]), 'termino':
    ([91, 92, 123, 137, 138, 150, 170, 211, 219, 220, 221, 222, 225, 226, 
    227, 228, 248, 252, 255, 260, 261, 267, 270, 281, 327, 332, 333, 358, 
    364, 392, 400], [112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
    112, 112, 112, 264, 265, 112, 112, 112, 112, 112, 112, 112, 112, 112, 
    112, 112, 112, 112, 112, 112]), 'factor': ([91, 92, 123, 137, 138, 150,
    170, 211, 219, 220, 221, 222, 225, 226, 227, 228, 248, 252, 255, 260, 
    261, 267, 270, 281, 327, 332, 333, 358, 364, 392, 400], [113, 113, 113,
    113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
    113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113]),
    'masomenos': ([91, 92, 123, 137, 138, 150, 170, 211, 219, 220, 221, 222,
    225, 226, 227, 228, 248, 252, 255, 260, 261, 267, 270, 281, 327, 332, 
    333, 358, 364, 392, 400], [114, 114, 114, 114, 114, 114, 114, 114, 114,
    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 
    114, 114, 114, 114, 114, 114, 114, 114]), 'escrituraciclo': ([92, 150],
    [119, 199]), 'tipociclo': ([103, 350], [130, 360]), 'arrexp_uno': ([107,
    156, 197, 200, 359], [134, 202, 232, 235, 368]), 'r_era_funcion_void':
    ([108], [137]), 'r_marcar_fondo_de_pila': ([109], [138]), 'r_pop_comp':
    ([111], [140]), 'r_pop_mas': ([112], [141]), 'r_pop_mult': ([113], [142
    ]), 'varcte': ([114], [143]), 'iddim': ([114, 343], [144, 354]), 'otro':
    ([119, 199], [149, 234]), 'r_genera_escribe_string': ([120], [152]),
    'r_genera_escribe': ([121], [153]), 'r_register_param_types': ([126, 
    157, 369], [158, 203, 376]), 'arrini': ([128, 160], [160, 205]),
    'opciontipo': ([129], [163]), 'arrexp_dos': ([134, 202, 232, 235, 368],
    [167, 237, 271, 272, 375]), 'r_push_arr': ([135, 168], [170, 211]),
    'parametros': ([137, 270], [171, 295]), 'r_if_paso_1': ([139, 357], [
    175, 366]), 'expresionsig': ([140], [176]), 'expciclo': ([141], [186]),
    'factorciclo': ([142], [190]), 'r_pila_operandos_push_cte_int': ([145],
    [194]), 'r_pila_operandos_push_cte_flt': ([146], [195]),
    'r_pila_operandos_push': ([167, 230, 237, 272, 375], [210, 269, 274, 
    296, 380]), 'r_terminar_parametro_void': ([171], [213]),
    'r_extraer_parametro': ([172, 285], [214, 320]),
    'r_desmarcar_fondo_de_pila': ([174], [215]),
    'r_pila_operadores_push_may': ([177], [217]),
    'r_pila_operadores_push_men': ([178], [218]),
    'r_pila_operadores_push_dif': ([179], [219]),
    'r_pila_operadores_push_iguigu': ([180], [220]),
    'r_pila_operadores_push_and': ([181], [221]),
    'r_pila_operadores_push_or': ([182], [222]),
    'r_pila_operadores_push_mayigu': ([183], [223]),
    'r_pila_operadores_push_menigu': ([184], [224]),
    'r_pila_operadores_push_mas': ([187], [225]),
    'r_pila_operadores_push_menos': ([188], [226]),
    'r_pila_operadores_push_mult': ([191], [227]),
    'r_pila_operadores_push_div': ([192], [228]),
    'r_pila_operandos_push_id': ([196], [229]), 'opcionid': ([197], [230]),
    'r_while_paso_2': ([201, 348], [236, 358]), 'r_register_quad': ([204, 
    238, 381], [239, 275, 388]), 'r_update_func_type': ([208], [241]),
    'r_verifica_arrexp_uno': ([212], [245]), 'cicloparametros': ([214, 320],
    [247, 339]), 'expresionsigequal': ([217, 218, 223, 224], [252, 255, 260,
    261]), 'arrexp': ([229, 266], [266, 293]), 'r_era_funcion_retorno': ([
    231], [270]), 'bloquefunc': ([239, 373, 379, 388, 391, 403], [276, 378,
    386, 393, 395, 404]), 'r_update_curr_function_name_especial': ([241], [
    279]), 'r_pila_operadores_push_igu': ([243, 298, 387], [281, 327, 392]),
    'r_verifica_arrexp_dos': ([244], [282]), 'decision_else': ([251], [286]
    ), 'r_endfunc': ([276, 299, 393], [300, 328, 397]), 'bloqueopcionfunc':
    ([277, 302], [301, 331]), 'estatutofunc': ([277, 302], [302, 302]),
    'decisionfunc': ([277, 302], [305, 305]), 'repeticionfunc': ([277, 302],
    [308, 308]), 'condicionalfunc': ([277, 302], [312, 312]),
    'nocondicionalfunc': ([277, 302], [313, 313]), 'r_if_paso_3': ([286, 
    383], [321, 390]), 'r_if_paso_2': ([287, 384], [322, 391]),
    'r_terminar_parametro': ([295], [324]), 'r_genera_lectura': ([296, 354],
    [325, 363]), 'r_while_paso_3': ([297], [326]), 'r_asegurar_return': ([
    300, 397], [329, 399]), 'r_pop_igu': ([318], [338]), 'ciclodim': ([325,
    363], [342, 370]), 'r_return_func': ([346], [356]), 'r_pop_igu_for': ([
    355, 398], [364, 400]), 'r_for_paso_1': ([371, 401], [377, 402]),
    'decisionfunc_else': ([378], [383]), 'r_for_paso_2': ([389, 404], [394,
    405])}
_lr_goto = {}
for _k, _v in _lr_goto_items.items():
    for _x, _y in zip(_v[0], _v[1]):
        if not _x in _lr_goto:
            _lr_goto[_x] = {}
        _lr_goto[_x][_k] = _y
del _lr_goto_items
_lr_productions = [("S' -> program", "S'", 1, None, None, None), (
    'program -> PRO r_register_gotomain ID r_register_global PTOCOM opvars opfunciones MAIN r_switch_to_global PARIZQ PARDER bloque'
    , 'program', 12, 'p_program', 'parser.py', 50), ('opvars -> vars',
    'opvars', 1, 'p_opvars', 'parser.py', 53), ('opvars -> empty', 'opvars',
    1, 'p_opvars', 'parser.py', 54), (
    'opfunciones -> funciones opfunciones', 'opfunciones', 2,
    'p_opfunciones', 'parser.py', 57), ('opfunciones -> empty',
    'opfunciones', 1, 'p_opfunciones', 'parser.py', 58), (
    'vars -> VARTOKEN tipo ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo PTOCOM tipociclo'
    , 'vars', 10, 'p_vars', 'parser.py', 61), (
    'varciclo -> COMA ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo'
    , 'varciclo', 7, 'p_varciclo', 'parser.py', 64), ('varciclo -> empty',
    'varciclo', 1, 'p_varciclo', 'parser.py', 65), (
    'arr -> CORIZQ CTEI r_register_const CORDER', 'arr', 4, 'p_arr',
    'parser.py', 68), ('arr -> empty', 'arr', 1, 'p_arr', 'parser.py', 69),
    ('arr_uno -> CORIZQ CTEI r_register_const r_arr_dim_uno CORDER',
    'arr_uno', 5, 'p_arr_uno', 'parser.py', 72), ('arr_uno -> empty',
    'arr_uno', 1, 'p_arr_uno', 'parser.py', 73), (
    'arr_dos -> CORIZQ CTEI r_register_const r_arr_dim_dos CORDER',
    'arr_dos', 5, 'p_arr_dos', 'parser.py', 76), ('arr_dos -> empty',
    'arr_dos', 1, 'p_arr_dos', 'parser.py', 77), (
    'tipociclo -> tipo opciontipo', 'tipociclo', 2, 'p_tipociclo',
    'parser.py', 80), ('tipociclo -> empty', 'tipociclo', 1, 'p_tipociclo',
    'parser.py', 81), (
    'opciontipo -> ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo PTOCOM tipociclo'
    , 'opciontipo', 8, 'p_opciontipo', 'parser.py', 84), (
    'opciontipo -> MODULE ID r_update_func_type r_update_curr_function_name_especial PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloquefunc r_endfunc r_asegurar_return'
    , 'opciontipo', 15, 'p_opciontipo', 'parser.py', 85), (
    'tipo -> INT r_register_variable_type', 'tipo', 2, 'p_tipo',
    'parser.py', 88), ('tipo -> FLT r_register_variable_type', 'tipo', 2,
    'p_tipo', 'parser.py', 89), ('tipo -> CHAR r_register_variable_type',
    'tipo', 2, 'p_tipo', 'parser.py', 90), (
    'tipo_func -> INT r_register_function', 'tipo_func', 2, 'p_tipo_func',
    'parser.py', 93), ('tipo_func -> FLT r_register_function', 'tipo_func',
    2, 'p_tipo_func', 'parser.py', 94), (
    'tipo_func -> CHAR r_register_function', 'tipo_func', 2, 'p_tipo_func',
    'parser.py', 95), ('varsimple -> tipo ident', 'varsimple', 2,
    'p_varsimple', 'parser.py', 99), ('funciones -> funcionvoid',
    'funciones', 1, 'p_funciones', 'parser.py', 102), (
    'funciones -> funcion', 'funciones', 1, 'p_funciones', 'parser.py', 103
    ), (
    'funcionvoid -> VOID r_register_function MODULE ID r_update_curr_function_name PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloque r_endfunc'
    , 'funcionvoid', 15, 'p_funcionvoid', 'parser.py', 106), (
    'opcionvarsimple -> varsimple ciclovarsimple', 'opcionvarsimple', 2,
    'p_opcionvarsimple', 'parser.py', 109), ('opcionvarsimple -> empty',
    'opcionvarsimple', 1, 'p_opcionvarsimple', 'parser.py', 110), (
    'ciclovarsimple -> COMA varsimple ciclovarsimple', 'ciclovarsimple', 3,
    'p_ciclovarsimple', 'parser.py', 113), ('ciclovarsimple -> empty',
    'ciclovarsimple', 1, 'p_ciclovarsimple', 'parser.py', 114), (
    'funcion -> tipo_func MODULE ID r_update_curr_function_name PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloquefunc r_endfunc r_asegurar_return'
    , 'funcion', 15, 'p_funcion', 'parser.py', 117), (
    'ident -> ID r_register_variable_name arrini arrini', 'ident', 4,
    'p_ident', 'parser.py', 120), ('arrini -> CORIZQ CORDER', 'arrini', 2,
    'p_arrini', 'parser.py', 123), ('arrini -> empty', 'arrini', 1,
    'p_arrini', 'parser.py', 124), ('bloque -> KEYIZQ bloqueopcion KEYDER',
    'bloque', 3, 'p_bloque', 'parser.py', 127), (
    'bloqueopcion -> estatuto bloqueopcion', 'bloqueopcion', 2,
    'p_bloqueopcion', 'parser.py', 130), ('bloqueopcion -> empty',
    'bloqueopcion', 1, 'p_bloqueopcion', 'parser.py', 131), (
    'bloquefunc -> KEYIZQ bloqueopcionfunc KEYDER', 'bloquefunc', 3,
    'p_bloquefunc', 'parser.py', 134), (
    'bloqueopcionfunc -> estatutofunc bloqueopcionfunc', 'bloqueopcionfunc',
    2, 'p_bloqueopcionfunc', 'parser.py', 137), (
    'bloqueopcionfunc -> empty', 'bloqueopcionfunc', 1,
    'p_bloqueopcionfunc', 'parser.py', 138), ('estatuto -> asignacion',
    'estatuto', 1, 'p_estatuto', 'parser.py', 141), ('estatuto -> decision',
    'estatuto', 1, 'p_estatuto', 'parser.py', 142), (
    'estatuto -> escritura', 'estatuto', 1, 'p_estatuto', 'parser.py', 143),
    ('estatuto -> llamadafunc', 'estatuto', 1, 'p_estatuto', 'parser.py', 
    144), ('estatuto -> repeticion', 'estatuto', 1, 'p_estatuto',
    'parser.py', 145), ('estatuto -> lectura', 'estatuto', 1, 'p_estatuto',
    'parser.py', 146), ('estatutofunc -> asignacion', 'estatutofunc', 1,
    'p_estatutofunc', 'parser.py', 149), ('estatutofunc -> decisionfunc',
    'estatutofunc', 1, 'p_estatutofunc', 'parser.py', 150), (
    'estatutofunc -> escritura', 'estatutofunc', 1, 'p_estatutofunc',
    'parser.py', 151), ('estatutofunc -> llamadafunc', 'estatutofunc', 1,
    'p_estatutofunc', 'parser.py', 152), ('estatutofunc -> repeticionfunc',
    'estatutofunc', 1, 'p_estatutofunc', 'parser.py', 153), (
    'estatutofunc -> lectura', 'estatutofunc', 1, 'p_estatutofunc',
    'parser.py', 154), (
    'estatutofunc -> RETURN PARIZQ expresion r_return_func PARDER PTOCOM',
    'estatutofunc', 6, 'p_estatutofunc', 'parser.py', 155), (
    'asignacion -> ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion r_pop_igu PTOCOM'
    , 'asignacion', 11, 'p_asignacion', 'parser.py', 159), (
    'expresion -> exp r_pop_comp expresionsig', 'expresion', 3,
    'p_expresion', 'parser.py', 162), (
    'expresionsig -> MAY r_pila_operadores_push_may expresionsigequal expresion'
    , 'expresionsig', 4, 'p_expresionsig', 'parser.py', 165), (
    'expresionsig -> MEN r_pila_operadores_push_men expresionsigequal expresion'
    , 'expresionsig', 4, 'p_expresionsig', 'parser.py', 166), (
    'expresionsig -> DIF r_pila_operadores_push_dif expresion',
    'expresionsig', 3, 'p_expresionsig', 'parser.py', 167), (
    'expresionsig -> IGUIGU r_pila_operadores_push_iguigu expresion',
    'expresionsig', 3, 'p_expresionsig', 'parser.py', 168), (
    'expresionsig -> AND r_pila_operadores_push_and expresion',
    'expresionsig', 3, 'p_expresionsig', 'parser.py', 169), (
    'expresionsig -> OR r_pila_operadores_push_or expresion',
    'expresionsig', 3, 'p_expresionsig', 'parser.py', 170), (
    'expresionsig -> MAYIGU r_pila_operadores_push_mayigu expresionsigequal expresion'
    , 'expresionsig', 4, 'p_expresionsig', 'parser.py', 171), (
    'expresionsig -> MENIGU r_pila_operadores_push_menigu expresionsigequal expresion'
    , 'expresionsig', 4, 'p_expresionsig', 'parser.py', 172), (
    'expresionsig -> empty', 'expresionsig', 1, 'p_expresionsig',
    'parser.py', 173), ('expresionsigequal -> IGU', 'expresionsigequal', 1,
    'p_expresionsigequal', 'parser.py', 176), ('expresionsigequal -> empty',
    'expresionsigequal', 1, 'p_expresionsigequal', 'parser.py', 177), (
    'exp -> termino r_pop_mas expciclo', 'exp', 3, 'p_exp', 'parser.py', 
    180), ('expciclo -> MAS r_pila_operadores_push_mas exp', 'expciclo', 3,
    'p_expciclo', 'parser.py', 183), (
    'expciclo -> MENOS r_pila_operadores_push_menos exp', 'expciclo', 3,
    'p_expciclo', 'parser.py', 184), ('expciclo -> empty', 'expciclo', 1,
    'p_expciclo', 'parser.py', 185), (
    'termino -> factor r_pop_mult factorciclo', 'termino', 3, 'p_termino',
    'parser.py', 189), (
    'factorciclo -> MULT r_pila_operadores_push_mult termino',
    'factorciclo', 3, 'p_factorciclo', 'parser.py', 192), (
    'factorciclo -> DIV r_pila_operadores_push_div termino', 'factorciclo',
    3, 'p_factorciclo', 'parser.py', 193), ('factorciclo -> empty',
    'factorciclo', 1, 'p_factorciclo', 'parser.py', 194), (
    'factor -> PARIZQ r_marcar_fondo_de_pila expresion r_desmarcar_fondo_de_pila PARDER'
    , 'factor', 5, 'p_factor', 'parser.py', 198), (
    'factor -> masomenos varcte', 'factor', 2, 'p_factor', 'parser.py', 199
    ), (
    'factor -> ID r_verifica_variable_existe r_guardar_variable opcionid r_pila_operandos_push'
    , 'factor', 5, 'p_factor', 'parser.py', 200), ('masomenos -> MAS',
    'masomenos', 1, 'p_masomenos', 'parser.py', 204), ('masomenos -> MENOS',
    'masomenos', 1, 'p_masomenos', 'parser.py', 205), ('masomenos -> empty',
    'masomenos', 1, 'p_masomenos', 'parser.py', 206), (
    'opcionid -> PARIZQ r_era_funcion_retorno parametros r_terminar_parametro PARDER'
    , 'opcionid', 5, 'p_opcionid', 'parser.py', 210), (
    'opcionid -> arrexp_uno arrexp_dos', 'opcionid', 2, 'p_opcionid',
    'parser.py', 211), (
    'arrexp_uno -> CORIZQ r_push_arr expresion r_verifica_arrexp_uno CORDER',
    'arrexp_uno', 5, 'p_arrexp_uno', 'parser.py', 214), (
    'arrexp_uno -> empty', 'arrexp_uno', 1, 'p_arrexp_uno', 'parser.py', 
    215), (
    'arrexp_dos -> CORIZQ r_push_arr expresion r_verifica_arrexp_dos CORDER',
    'arrexp_dos', 5, 'p_arrexp_dos', 'parser.py', 218), (
    'arrexp_dos -> empty', 'arrexp_dos', 1, 'p_arrexp_dos', 'parser.py', 
    219), ('varcte -> iddim', 'varcte', 1, 'p_varcte', 'parser.py', 222), (
    'varcte -> CTEI r_pila_operandos_push_cte_int', 'varcte', 2, 'p_varcte',
    'parser.py', 223), ('varcte -> CTEF r_pila_operandos_push_cte_flt',
    'varcte', 2, 'p_varcte', 'parser.py', 224), (
    'parametros -> expresion r_extraer_parametro cicloparametros',
    'parametros', 3, 'p_parametros', 'parser.py', 228), (
    'parametros -> empty', 'parametros', 1, 'p_parametros', 'parser.py', 
    229), (
    'cicloparametros -> COMA expresion r_extraer_parametro cicloparametros',
    'cicloparametros', 4, 'p_cicloparametros', 'parser.py', 232), (
    'cicloparametros -> empty', 'cicloparametros', 1, 'p_cicloparametros',
    'parser.py', 233), (
    'llamadafunc -> ID r_verifica_void PARIZQ r_era_funcion_void parametros r_terminar_parametro_void PARDER PTOCOM'
    , 'llamadafunc', 8, 'p_llamadafunc', 'parser.py', 237), (
    'decision -> IF PARIZQ expresion PARDER r_if_paso_1 THEN bloque decision_else r_if_paso_3'
    , 'decision', 9, 'p_decision', 'parser.py', 240), (
    'decision_else -> ELSE r_if_paso_2 bloque', 'decision_else', 3,
    'p_decision_else', 'parser.py', 243), ('decision_else -> empty',
    'decision_else', 1, 'p_decision_else', 'parser.py', 244), (
    'decisionfunc -> IF PARIZQ expresion PARDER r_if_paso_1 THEN bloquefunc decisionfunc_else r_if_paso_3'
    , 'decisionfunc', 9, 'p_decisionfunc', 'parser.py', 247), (
    'decisionfunc_else -> ELSE r_if_paso_2 bloquefunc', 'decisionfunc_else',
    3, 'p_decisionfunc_else', 'parser.py', 251), (
    'decisionfunc_else -> empty', 'decisionfunc_else', 1,
    'p_decisionfunc_else', 'parser.py', 252), (
    'condicional -> WHILE r_while_paso_1 PARIZQ expresion PARDER r_while_paso_2 DO bloque r_while_paso_3'
    , 'condicional', 9, 'p_condicional', 'parser.py', 255), (
    'condicionalfunc -> WHILE r_while_paso_1 PARIZQ r_while_paso_2 expresion PARDER DO bloquefunc'
    , 'condicionalfunc', 8, 'p_condicionalfunc', 'parser.py', 258), (
    'nocondicional -> FOR ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion TO r_pop_igu_for expresion r_for_paso_1 DO bloque r_for_paso_2'
    , 'nocondicional', 17, 'p_nocondicional', 'parser.py', 261), (
    'nocondicionalfunc -> FOR ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion TO r_pop_igu_for expresion r_for_paso_1 DO bloquefunc r_for_paso_2'
    , 'nocondicionalfunc', 17, 'p_nocondicionalfunc', 'parser.py', 265), (
    'escritura -> WRITE PARIZQ escrituraciclo otro PARDER PTOCOM',
    'escritura', 6, 'p_escritura', 'parser.py', 268), (
    'lectura -> READ PARIZQ ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push r_genera_lectura ciclodim PARDER PTOCOM'
    , 'lectura', 12, 'p_lectura', 'parser.py', 271), (
    'escrituraciclo -> CTE_STRING r_genera_escribe_string',
    'escrituraciclo', 2, 'p_escrituraciclo', 'parser.py', 274), (
    'escrituraciclo -> expresion r_genera_escribe', 'escrituraciclo', 2,
    'p_escrituraciclo', 'parser.py', 275), (
    'otro -> COMA escrituraciclo otro', 'otro', 3, 'p_otro', 'parser.py', 
    278), ('otro -> empty', 'otro', 1, 'p_otro', 'parser.py', 279), (
    'repeticion -> condicional', 'repeticion', 1, 'p_repeticion',
    'parser.py', 283), ('repeticion -> nocondicional', 'repeticion', 1,
    'p_repeticion', 'parser.py', 284), ('repeticionfunc -> condicionalfunc',
    'repeticionfunc', 1, 'p_repeticionfunc', 'parser.py', 288), (
    'repeticionfunc -> nocondicionalfunc', 'repeticionfunc', 1,
    'p_repeticionfunc', 'parser.py', 289), ('empty -> <empty>', 'empty', 0,
    'p_empty', 'parser.py', 293), (
    'ciclodim -> COMA iddim r_genera_lectura ciclodim', 'ciclodim', 4,
    'p_ciclodim', 'parser.py', 297), ('ciclodim -> empty', 'ciclodim', 1,
    'p_ciclodim', 'parser.py', 298), (
    'iddim -> ID r_verifica_variable_existe r_pila_operandos_push_id arrexp arrexp'
    , 'iddim', 5, 'p_iddim', 'parser.py', 302), (
    'arrexp -> CORIZQ expresion CORDER', 'arrexp', 3, 'p_arrexp',
    'parser.py', 305), ('arrexp -> empty', 'arrexp', 1, 'p_arrexp',
    'parser.py', 306), ('r_register_gotomain -> <empty>',
    'r_register_gotomain', 0, 'p_r_register_gotomain', 'parser.py', 329), (
    'r_register_global -> <empty>', 'r_register_global', 0,
    'p_r_register_global', 'parser.py', 335), (
    'r_register_function -> <empty>', 'r_register_function', 0,
    'p_r_register_function', 'parser.py', 340), (
    'r_register_const -> <empty>', 'r_register_const', 0,
    'p_r_register_const', 'parser.py', 347), (
    'r_switch_to_global -> <empty>', 'r_switch_to_global', 0,
    'p_r_switch_to_global', 'parser.py', 355), (
    'r_update_curr_function_name_especial -> <empty>',
    'r_update_curr_function_name_especial', 0,
    'p_r_update_curr_function_name_especial', 'parser.py', 362), (
    'r_update_curr_function_name -> <empty>', 'r_update_curr_function_name',
    0, 'p_r_update_curr_function_name', 'parser.py', 367), (
    'r_register_param_types -> <empty>', 'r_register_param_types', 0,
    'p_r_register_param_types', 'parser.py', 372), (
    'r_register_variable_type -> <empty>', 'r_register_variable_type', 0,
    'p_r_register_variable_type', 'parser.py', 389), (
    'r_update_func_type -> <empty>', 'r_update_func_type', 0,
    'p_r_update_func_type', 'parser.py', 395), (
    'r_register_quad -> <empty>', 'r_register_quad', 0, 'p_r_register_quad',
    'parser.py', 399), ('r_era_funcion_void -> <empty>',
    'r_era_funcion_void', 0, 'p_r_era_funcion_void', 'parser.py', 403), (
    'r_era_funcion_retorno -> <empty>', 'r_era_funcion_retorno', 0,
    'p_r_era_funcion_retorno', 'parser.py', 427), (
    'r_asegurar_return -> <empty>', 'r_asegurar_return', 0,
    'p_r_asegurar_return', 'parser.py', 449), (
    'r_terminar_parametro -> <empty>', 'r_terminar_parametro', 0,
    'p_r_terminar_parametro', 'parser.py', 460), (
    'r_terminar_parametro_void -> <empty>', 'r_terminar_parametro_void', 0,
    'p_r_terminar_parametro_void', 'parser.py', 483), (
    'r_extraer_parametro -> <empty>', 'r_extraer_parametro', 0,
    'p_r_extraer_parametro', 'parser.py', 506), (
    'r_verifica_void -> <empty>', 'r_verifica_void', 0, 'p_r_verifica_void',
    'parser.py', 526), ('r_marcar_funcion -> <empty>', 'r_marcar_funcion', 
    0, 'p_r_marcar_funcion', 'parser.py', 545), (
    'r_desmarcar_funcion -> <empty>', 'r_desmarcar_funcion', 0,
    'p_r_desmarcar_funcion', 'parser.py', 550), ('r_endfunc -> <empty>',
    'r_endfunc', 0, 'p_r_endfunc', 'parser.py', 559), (
    'r_if_paso_1 -> <empty>', 'r_if_paso_1', 0, 'p_r_if_paso_1',
    'parser.py', 565), ('r_register_variable_name -> <empty>',
    'r_register_variable_name', 0, 'p_r_register_variable_name',
    'parser.py', 573), ('r_arr_dim_uno -> <empty>', 'r_arr_dim_uno', 0,
    'p_r_arr_dim_uno', 'parser.py', 605), ('r_arr_dim_dos -> <empty>',
    'r_arr_dim_dos', 0, 'p_r_arr_dim_dos', 'parser.py', 614), (
    'r_verify_array -> <empty>', 'r_verify_array', 0, 'p_r_verify_array',
    'parser.py', 623), ('r_verifica_variable_existe -> <empty>',
    'r_verifica_variable_existe', 0, 'p_r_verifica_variable_existe',
    'parser.py', 663), ('r_verifica_arrexp_uno -> <empty>',
    'r_verifica_arrexp_uno', 0, 'p_r_verifica_arrexp_uno', 'parser.py', 682
    ), ('r_verifica_arrexp_dos -> <empty>', 'r_verifica_arrexp_dos', 0,
    'p_r_verifica_arrexp_dos', 'parser.py', 742), (
    'r_return_func -> <empty>', 'r_return_func', 0, 'p_r_return_func',
    'parser.py', 782), ('r_if_paso_2 -> <empty>', 'r_if_paso_2', 0,
    'p_r_if_paso_2', 'parser.py', 797), ('r_if_paso_3 -> <empty>',
    'r_if_paso_3', 0, 'p_r_if_paso_3', 'parser.py', 805), (
    'r_while_paso_1 -> <empty>', 'r_while_paso_1', 0, 'p_r_while_paso_1',
    'parser.py', 810), ('r_while_paso_2 -> <empty>', 'r_while_paso_2', 0,
    'p_r_while_paso_2', 'parser.py', 814), ('r_while_paso_3 -> <empty>',
    'r_while_paso_3', 0, 'p_r_while_paso_3', 'parser.py', 822), (
    'r_pop_igu_for -> <empty>', 'r_pop_igu_for', 0, 'p_r_pop_igu_for',
    'parser.py', 831), ('r_for_paso_1 -> <empty>', 'r_for_paso_1', 0,
    'p_r_for_paso_1', 'parser.py', 850), ('r_for_paso_2 -> <empty>',
    'r_for_paso_2', 0, 'p_r_for_paso_2', 'parser.py', 870), (
    'r_guardar_variable -> <empty>', 'r_guardar_variable', 0,
    'p_r_guardar_variable', 'parser.py', 894), (
    'r_pila_operandos_push -> <empty>', 'r_pila_operandos_push', 0,
    'p_r_pila_operandos_push', 'parser.py', 898), (
    'r_pila_operandos_push_id -> <empty>', 'r_pila_operandos_push_id', 0,
    'p_r_pila_operandos_push_id', 'parser.py', 942), (
    'r_pila_operandos_push_cte_int -> <empty>',
    'r_pila_operandos_push_cte_int', 0, 'p_r_pila_operandos_push_cte_int',
    'parser.py', 956), ('r_pila_operandos_push_cte_flt -> <empty>',
    'r_pila_operandos_push_cte_flt', 0, 'p_r_pila_operandos_push_cte_flt',
    'parser.py', 971), ('r_pop_mult -> <empty>', 'r_pop_mult', 0,
    'p_r_pop_mult', 'parser.py', 986), ('r_pop_mas -> <empty>', 'r_pop_mas',
    0, 'p_r_pop_mas', 'parser.py', 1029), ('r_push_arr -> <empty>',
    'r_push_arr', 0, 'p_r_push_arr', 'parser.py', 1080), (
    'r_genera_escribe -> <empty>', 'r_genera_escribe', 0,
    'p_r_genera_escribe', 'parser.py', 1084), (
    'r_genera_lectura -> <empty>', 'r_genera_lectura', 0,
    'p_r_genera_lectura', 'parser.py', 1090), (
    'r_genera_escribe_string -> <empty>', 'r_genera_escribe_string', 0,
    'p_r_genera_escribe_string', 'parser.py', 1097), (
    'r_pop_comp -> <empty>', 'r_pop_comp', 0, 'p_r_pop_comp', 'parser.py', 
    1112), ('r_pop_igu -> <empty>', 'r_pop_igu', 0, 'p_r_pop_igu',
    'parser.py', 1159), ('r_marcar_fondo_de_pila -> <empty>',
    'r_marcar_fondo_de_pila', 0, 'p_r_marcar_fondo_de_pila', 'parser.py', 
    1177), ('r_desmarcar_fondo_de_pila -> <empty>',
    'r_desmarcar_fondo_de_pila', 0, 'p_r_desmarcar_fondo_de_pila',
    'parser.py', 1181), ('r_pila_operadores_push_mult -> <empty>',
    'r_pila_operadores_push_mult', 0, 'p_r_pila_operadores_push_mult',
    'parser.py', 1192), ('r_pila_operadores_push_div -> <empty>',
    'r_pila_operadores_push_div', 0, 'p_r_pila_operadores_push_div',
    'parser.py', 1196), ('r_pila_operadores_push_mas -> <empty>',
    'r_pila_operadores_push_mas', 0, 'p_r_pila_operadores_push_mas',
    'parser.py', 1200), ('r_pila_operadores_push_menos -> <empty>',
    'r_pila_operadores_push_menos', 0, 'p_r_pila_operadores_push_menos',
    'parser.py', 1204), ('r_pila_operadores_push_may -> <empty>',
    'r_pila_operadores_push_may', 0, 'p_r_pila_operadores_push_may',
    'parser.py', 1208), ('r_pila_operadores_push_men -> <empty>',
    'r_pila_operadores_push_men', 0, 'p_r_pila_operadores_push_men',
    'parser.py', 1212), ('r_pila_operadores_push_dif -> <empty>',
    'r_pila_operadores_push_dif', 0, 'p_r_pila_operadores_push_dif',
    'parser.py', 1216), ('r_pila_operadores_push_iguigu -> <empty>',
    'r_pila_operadores_push_iguigu', 0, 'p_r_pila_operadores_push_iguigu',
    'parser.py', 1220), ('r_pila_operadores_push_and -> <empty>',
    'r_pila_operadores_push_and', 0, 'p_r_pila_operadores_push_and',
    'parser.py', 1224), ('r_pila_operadores_push_or -> <empty>',
    'r_pila_operadores_push_or', 0, 'p_r_pila_operadores_push_or',
    'parser.py', 1228), ('r_pila_operadores_push_igu -> <empty>',
    'r_pila_operadores_push_igu', 0, 'p_r_pila_operadores_push_igu',
    'parser.py', 1232), ('r_pila_operadores_push_mayigu -> <empty>',
    'r_pila_operadores_push_mayigu', 0, 'p_r_pila_operadores_push_mayigu',
    'parser.py', 1236), ('r_pila_operadores_push_menigu -> <empty>',
    'r_pila_operadores_push_menigu', 0, 'p_r_pila_operadores_push_menigu',
    'parser.py', 1240), ('r_push_fondo_falso -> <empty>',
    'r_push_fondo_falso', 0, 'p_r_push_fondo_falso', 'parser.py', 1244), (
    'r_vaciar_fondo_falso -> <empty>', 'r_vaciar_fondo_falso', 0,
    'p_r_vaciar_fondo_falso', 'parser.py', 1249), (
    'r_register_dim -> <empty>', 'r_register_dim', 0, 'p_r_register_dim',
    'parser.py', 1254)]


# parsetab.py
# This file is automatically generated. Do not edit.
# pylint: disable=W,C,R
_tabversion = '3.10'

_lr_method = 'LALR'

_lr_signature = 'AND CHAR COMA CORDER CORIZQ CTEF CTEI CTE_STRING DIF DIV DO DOSPTS ELSE FLT FOR ID IF IGU IGUIGU INT KEYDER KEYIZQ MAIN MAS MAY MAYIGU MEN MENIGU MENOS MODULE MULT OR PARDER PARIZQ PRO PTOCOM READ RETURN THEN TO VARTOKEN VOID WHILE WRITEprogram : PRO r_register_gotomain ID r_register_global PTOCOM opvars opfunciones MAIN r_switch_to_global PARIZQ PARDER bloqueopvars : vars\n    | emptyopfunciones : funciones opfunciones\n    | emptyvars : VARTOKEN tipo ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo PTOCOM tipociclovarciclo : COMA ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo\n    | emptyarr : CORIZQ CTEI r_register_const CORDER\n    | emptyarr_uno : CORIZQ CTEI r_register_const r_arr_dim_uno CORDER\n    | emptyarr_dos : CORIZQ CTEI r_register_const r_arr_dim_dos CORDER\n    | emptytipociclo : tipo opciontipo\n    | emptyopciontipo : ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo PTOCOM tipociclo\n    | MODULE ID r_update_func_type r_update_curr_function_name_especial PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloquefunc r_endfunc r_asegurar_returntipo : INT r_register_variable_type\n    | FLT r_register_variable_type\n    | CHAR r_register_variable_typetipo_func : INT r_register_function\n    | FLT r_register_function\n    | CHAR r_register_function\n    varsimple : tipo identfunciones : funcionvoid \n    | funcionfuncionvoid : VOID r_register_function MODULE ID r_update_curr_function_name PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloque  r_endfuncopcionvarsimple : varsimple ciclovarsimple\n    | emptyciclovarsimple : COMA varsimple ciclovarsimple\n    | emptyfuncion : tipo_func MODULE ID r_update_curr_function_name PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloquefunc r_endfunc r_asegurar_returnident : ID r_register_variable_name arrini arriniarrini : CORIZQ CORDER\n    | emptybloque : KEYIZQ bloqueopcion KEYDERbloqueopcion : estatuto bloqueopcion\n    | emptybloquefunc : KEYIZQ bloqueopcionfunc KEYDERbloqueopcionfunc : estatutofunc bloqueopcionfunc\n    | emptyestatuto : asignacion\n    | decision\n    | escritura\n    | llamadafunc\n    | repeticion\n    | lecturaestatutofunc : asignacion\n    | decisionfunc\n    | escritura\n    | llamadafunc\n    | repeticionfunc\n    | lectura\n    | RETURN PARIZQ expresion r_return_func PARDER PTOCOM\n    asignacion : ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu  expresion r_pop_igu PTOCOMexpresion : exp r_pop_comp expresionsigexpresionsig : MAY r_pila_operadores_push_may expresionsigequal expresion\n    | MEN r_pila_operadores_push_men expresionsigequal expresion\n    | DIF r_pila_operadores_push_dif expresion\n    | IGUIGU r_pila_operadores_push_iguigu expresion\n    | AND r_pila_operadores_push_and expresion\n    | OR r_pila_operadores_push_or expresion\n    | MAYIGU r_pila_operadores_push_mayigu expresionsigequal expresion\n    | MENIGU r_pila_operadores_push_menigu expresionsigequal expresion\n    | emptyexpresionsigequal : IGU\n    | emptyexp : termino r_pop_mas  expcicloexpciclo : MAS r_pila_operadores_push_mas exp\n    | MENOS r_pila_operadores_push_menos  exp\n    | empty\n    termino : factor r_pop_mult factorciclofactorciclo : MULT r_pila_operadores_push_mult termino\n    | DIV  r_pila_operadores_push_div termino\n    | empty\n    factor : PARIZQ r_marcar_fondo_de_pila expresion r_desmarcar_fondo_de_pila PARDER\n    | masomenos varcte\n    | ID r_verifica_variable_existe r_guardar_variable opcionid r_pila_operandos_push\n    masomenos : MAS\n    | MENOS\n    | empty\n    opcionid : PARIZQ r_era_funcion_retorno parametros r_terminar_parametro PARDER \n    | arrexp_uno arrexp_dos  arrexp_uno : CORIZQ r_push_arr expresion r_verifica_arrexp_uno CORDER\n    | emptyarrexp_dos : CORIZQ  r_push_arr expresion r_verifica_arrexp_dos CORDER\n    | emptyvarcte : iddim\n    | CTEI r_pila_operandos_push_cte_int\n    | CTEF r_pila_operandos_push_cte_flt\n    parametros : expresion r_extraer_parametro cicloparametros\n    | emptycicloparametros : COMA expresion r_extraer_parametro cicloparametros\n    | empty\n    llamadafunc : ID r_verifica_void PARIZQ r_era_funcion_void parametros r_terminar_parametro_void PARDER PTOCOMdecision : IF PARIZQ expresion PARDER r_if_paso_1 THEN bloque decision_else r_if_paso_3decision_else : ELSE r_if_paso_2 bloque\n    | emptydecisionfunc : IF PARIZQ expresion PARDER r_if_paso_1 THEN bloquefunc decisionfunc_else r_if_paso_3\n    decisionfunc_else : ELSE r_if_paso_2 bloquefunc\n    | emptycondicional : WHILE r_while_paso_1 PARIZQ expresion PARDER r_while_paso_2 DO bloque r_while_paso_3condicionalfunc : WHILE r_while_paso_1 PARIZQ r_while_paso_2 expresion PARDER DO bloquefuncnocondicional : FOR ID r_verifica_variable_existe r_guardar_variable arrexp_uno  arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion TO r_pop_igu_for expresion r_for_paso_1 DO bloque r_for_paso_2\n    nocondicionalfunc : FOR ID r_verifica_variable_existe r_guardar_variable arrexp_uno  arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion TO r_pop_igu_for expresion r_for_paso_1 DO bloquefunc r_for_paso_2escritura : WRITE PARIZQ escrituraciclo otro PARDER PTOCOMlectura : READ PARIZQ ID r_verifica_variable_existe r_guardar_variable arrexp_uno  arrexp_dos r_pila_operandos_push  r_genera_lectura ciclodim PARDER PTOCOMescrituraciclo : CTE_STRING r_genera_escribe_string\n    | expresion r_genera_escribeotro : COMA escrituraciclo otro\n    | empty\n    repeticion : condicional \n    | nocondicional\n    repeticionfunc : condicionalfunc\n    | nocondicionalfunc\n    empty :ciclodim : COMA iddim r_genera_lectura ciclodim\n    | empty\n    iddim : ID r_verifica_variable_existe r_pila_operandos_push_id arrexp arrexparrexp : CORIZQ expresion CORDER\n    | emptyr_register_gotomain : r_register_global : r_register_function : r_register_const : r_switch_to_global : r_update_curr_function_name_especial : r_update_curr_function_name : r_register_param_types : r_register_variable_type : r_update_func_type : r_register_quad : r_era_funcion_void : r_era_funcion_retorno : r_asegurar_return : r_terminar_parametro : r_terminar_parametro_void : r_extraer_parametro : r_verifica_void : r_marcar_funcion : r_desmarcar_funcion : r_endfunc : r_if_paso_1 : r_register_variable_name : r_arr_dim_uno : r_arr_dim_dos : r_verify_array : r_verifica_variable_existe : r_verifica_arrexp_uno : r_verifica_arrexp_dos : r_return_func : r_if_paso_2 : r_if_paso_3 : r_while_paso_1 : r_while_paso_2 : r_while_paso_3 : r_pop_igu_for : r_for_paso_1 : r_for_paso_2 : r_guardar_variable : r_pila_operandos_push : r_pila_operandos_push_id : r_pila_operandos_push_cte_int : r_pila_operandos_push_cte_flt : r_pop_mult : r_pop_mas : r_push_arr : r_genera_escribe : r_genera_lectura : r_genera_escribe_string : r_pop_comp : r_pop_igu : r_marcar_fondo_de_pila : r_desmarcar_fondo_de_pila : r_pila_operadores_push_mult : r_pila_operadores_push_div : r_pila_operadores_push_mas : r_pila_operadores_push_menos : r_pila_operadores_push_may : r_pila_operadores_push_men : r_pila_operadores_push_dif : r_pila_operadores_push_iguigu : r_pila_operadores_push_and : r_pila_operadores_push_or : r_pila_operadores_push_igu : r_pila_operadores_push_mayigu : r_pila_operadores_push_menigu : r_push_fondo_falso : r_vaciar_fondo_falso : r_register_dim : '
    
_lr_action_items = {'PRO':([0,],[2,]),'$end':([1,53,87,],[0,-1,-37,]),'ID':([2,3,21,22,23,24,28,33,34,35,37,54,61,63,64,65,66,67,68,72,73,76,81,83,87,91,92,93,108,109,114,116,117,118,123,129,135,137,138,150,165,168,170,173,177,178,179,180,181,182,183,184,187,188,191,192,211,217,218,219,220,221,222,223,224,225,226,227,228,231,233,243,248,251,252,253,254,255,260,261,267,270,277,281,284,286,288,297,298,302,304,305,306,307,308,309,312,313,315,321,326,327,330,332,333,340,343,348,352,355,358,362,364,372,378,383,385,386,387,389,390,392,394,395,398,400,404,405,],[-123,4,32,-131,-131,-131,38,-19,-20,-21,41,69,69,-43,-44,-45,-46,-47,-48,-113,-114,95,102,104,-37,115,115,122,-134,-174,147,-80,-81,-82,115,164,-168,115,115,115,208,-168,115,-82,-180,-181,-182,-183,-184,-185,-187,-188,-178,-179,-176,-177,115,-117,-117,115,115,115,115,-117,-117,115,115,115,115,-135,-107,-186,115,-117,115,-67,-68,115,115,115,115,115,69,115,-96,-154,-99,-157,-186,69,-49,-50,-51,-52,-53,-54,-115,-116,335,-97,-103,115,-40,115,115,-98,147,-156,-56,-158,115,-108,115,-55,-117,-154,-102,-104,-186,-160,-100,115,-105,-101,-158,115,-160,-106,]),'PTOCOM':([4,5,32,39,43,45,49,51,57,82,84,104,106,111,112,113,115,132,133,136,140,141,142,143,144,145,146,147,148,164,166,169,176,185,186,189,190,193,194,195,196,197,198,207,209,229,230,232,240,242,246,250,256,257,258,259,262,263,264,265,266,268,269,271,278,280,283,289,290,291,292,293,316,318,319,323,336,338,341,353,365,],[-124,6,-145,-117,-117,-12,-148,-14,-117,103,-8,-145,-11,-172,-167,-166,-149,-117,-13,-86,-117,-117,-117,-78,-89,-164,-165,-149,-161,-145,-117,-88,-57,-66,-69,-72,-73,-76,-90,-91,-163,-117,233,-117,-148,-117,-162,-117,-117,-117,284,-77,-60,-61,-62,-63,-70,-71,-74,-75,-117,-122,-79,-84,-148,-7,-85,-58,-59,-64,-65,-120,-117,-173,-87,-121,350,352,-83,362,372,]),'VARTOKEN':([6,126,157,158,203,369,376,],[10,-130,-130,10,10,-130,10,]),'VOID':([6,7,8,9,12,14,15,87,103,130,131,163,276,299,300,328,329,330,350,360,393,397,399,],[-117,16,-2,-3,16,-26,-27,-37,-117,-6,-16,-15,-143,-143,-136,-28,-33,-40,-117,-17,-143,-136,-18,]),'INT':([6,7,8,9,10,12,14,15,48,55,56,77,87,99,103,130,131,163,276,299,300,317,328,329,330,337,350,360,393,397,399,],[-117,18,-2,-3,22,18,-26,-27,-141,-141,22,22,-37,22,22,-6,-16,-15,-143,-143,-136,-141,-28,-33,-40,22,22,-17,-143,-136,-18,]),'FLT':([6,7,8,9,10,12,14,15,48,55,56,77,87,99,103,130,131,163,276,299,300,317,328,329,330,337,350,360,393,397,399,],[-117,19,-2,-3,23,19,-26,-27,-141,-141,23,23,-37,23,23,-6,-16,-15,-143,-143,-136,-141,-28,-33,-40,23,23,-17,-143,-136,-18,]),'CHAR':([6,7,8,9,10,12,14,15,48,55,56,77,87,99,103,130,131,163,276,299,300,317,328,329,330,337,350,360,393,397,399,],[-117,20,-2,-3,24,20,-26,-27,-141,-141,24,24,-37,24,24,-6,-16,-15,-143,-143,-136,-141,-28,-33,-40,24,24,-17,-143,-136,-18,]),'MAIN':([6,7,8,9,11,12,13,14,15,26,87,103,130,131,163,276,299,300,328,329,330,350,360,393,397,399,],[-117,-117,-2,-3,25,-117,-5,-26,-27,-4,-37,-117,-6,-16,-15,-143,-143,-136,-28,-33,-40,-117,-17,-143,-136,-18,]),'KEYIZQ':([8,9,46,103,126,130,131,157,158,163,203,204,216,238,239,273,275,287,322,330,350,360,369,373,376,379,381,382,384,388,391,393,397,399,403,],[-2,-3,54,-117,-130,-6,-16,-130,-117,-15,-117,-133,54,-133,277,54,54,-153,54,-40,-117,-17,-130,277,-117,277,-133,54,-153,277,277,-143,-136,-18,277,]),'MODULE':([16,17,18,19,20,22,23,24,27,29,30,31,33,34,35,129,],[-125,28,-125,-125,-125,-131,-131,-131,37,-22,-23,-24,-19,-20,-21,165,]),'PARIZQ':([25,36,38,41,42,47,69,70,71,74,75,90,91,92,94,108,109,115,123,135,137,138,148,150,168,170,177,178,179,180,181,182,183,184,187,188,191,192,197,208,211,217,218,219,220,221,222,223,224,225,226,227,228,231,241,243,248,252,253,254,255,260,261,267,270,279,281,298,310,311,314,327,332,333,334,348,355,358,364,387,392,398,400,],[-127,40,-129,-129,48,55,-140,91,92,93,-155,108,109,109,123,-134,-174,-149,109,-168,109,109,-161,109,-168,109,-180,-181,-182,-183,-184,-185,-187,-188,-178,-179,-176,-177,231,-132,109,-117,-117,109,109,109,109,-117,-117,109,109,109,109,-135,-128,-186,109,109,-67,-68,109,109,109,109,109,317,109,-186,332,333,-155,109,109,109,348,-156,-158,109,109,-186,109,-158,109,]),'CORIZQ':([32,39,43,45,69,89,95,102,104,106,107,115,122,124,128,132,134,136,147,148,154,156,160,162,164,166,196,197,200,202,206,207,229,232,235,240,266,268,283,323,335,349,359,368,],[-145,44,50,-12,-149,-161,-149,-145,-145,-11,135,-149,-149,-161,161,44,168,-86,-149,-161,-161,135,161,-36,-145,50,-163,135,135,168,-35,44,267,168,168,50,267,-122,-85,-121,-149,-161,135,168,]),'COMA':([32,39,43,45,49,51,57,79,101,102,104,106,111,112,113,115,119,120,121,122,127,128,132,133,136,140,141,142,143,144,145,146,147,148,152,153,154,160,162,164,166,169,172,176,185,186,189,190,193,194,195,196,197,199,200,205,206,207,209,214,229,230,232,235,240,242,250,256,257,258,259,262,263,264,265,266,268,269,271,272,278,283,285,289,290,291,292,293,296,316,319,320,323,325,341,354,363,],[-145,-117,-117,-12,-148,-14,83,99,-25,-145,-145,-11,-172,-167,-166,-149,150,-171,-169,-149,99,-117,-117,-13,-86,-117,-117,-117,-78,-89,-164,-165,-149,-161,-109,-110,-161,-117,-36,-145,-117,-88,-139,-57,-66,-69,-72,-73,-76,-90,-91,-163,-117,150,-117,-34,-35,-117,-148,248,-117,-162,-117,-117,-117,83,-77,-60,-61,-62,-63,-70,-71,-74,-75,-117,-122,-79,-84,-162,-148,-85,-139,-58,-59,-64,-65,-120,-170,83,-87,248,-121,343,-83,-170,343,]),'PARDER':([40,48,55,56,77,78,79,80,96,97,98,100,101,102,108,110,111,112,113,115,119,120,121,122,125,127,128,136,137,140,141,142,143,144,145,146,147,148,149,151,152,153,154,155,159,160,162,169,171,172,173,174,176,185,186,189,190,193,194,195,196,197,199,200,205,206,213,214,215,229,230,231,232,234,235,247,249,250,256,257,258,259,262,263,264,265,266,268,269,270,271,272,283,285,289,290,291,292,293,295,296,317,319,320,323,324,325,337,339,341,342,344,346,347,351,354,356,361,363,367,370,],[46,-141,-141,-117,-117,-142,-117,-30,-142,126,-29,-32,-25,-145,-134,139,-172,-167,-166,-149,-117,-171,-169,-149,157,-117,-117,-86,-117,-117,-117,-117,-78,-89,-164,-165,-149,-161,198,-112,-109,-110,-161,201,-31,-117,-36,-88,-138,-139,-93,-175,-57,-66,-69,-72,-73,-76,-90,-91,-163,-117,-117,-117,-34,-35,246,-117,250,-117,-162,-135,-117,-111,-117,-92,-95,-77,-60,-61,-62,-63,-70,-71,-74,-75,-117,-122,-79,-117,-84,-162,-85,-139,-58,-59,-64,-65,-120,-137,-170,-141,-87,-117,-121,341,-117,-117,-94,-83,353,-119,-152,357,-142,-170,365,369,-117,374,-118,]),'CTEI':([44,50,91,92,108,109,114,116,117,118,123,135,137,138,150,168,170,173,177,178,179,180,181,182,183,184,187,188,191,192,211,217,218,219,220,221,222,223,224,225,226,227,228,231,243,248,252,253,254,255,260,261,267,270,281,298,327,332,333,348,355,358,364,387,392,398,400,],[52,58,-117,-117,-134,-174,145,-80,-81,-82,-117,-168,-117,-117,-117,-168,-117,-82,-180,-181,-182,-183,-184,-185,-187,-188,-178,-179,-176,-177,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-135,-186,-117,-117,-67,-68,-117,-117,-117,-117,-117,-117,-186,-117,-117,-117,-156,-158,-117,-117,-186,-117,-158,-117,]),'CORDER':([52,58,59,85,86,105,111,112,113,115,136,140,141,142,143,144,145,146,147,148,161,169,176,185,186,189,190,193,194,195,196,197,212,229,230,232,244,245,250,256,257,258,259,262,263,264,265,266,268,269,271,282,283,289,290,291,292,293,294,319,323,341,],[-126,-126,-146,-147,106,133,-172,-167,-166,-149,-86,-117,-117,-117,-78,-89,-164,-165,-149,-161,206,-88,-57,-66,-69,-72,-73,-76,-90,-91,-163,-117,-150,-117,-162,-117,-151,283,-77,-60,-61,-62,-63,-70,-71,-74,-75,-117,-122,-79,-84,319,-85,-58,-59,-64,-65,-120,323,-87,-121,-83,]),'KEYDER':([54,60,61,62,63,64,65,66,67,68,72,73,87,88,233,251,277,284,286,288,297,301,302,303,304,305,306,307,308,309,312,313,321,326,330,331,340,352,362,372,378,383,385,386,389,390,394,395,404,405,],[-117,87,-117,-39,-43,-44,-45,-46,-47,-48,-113,-114,-37,-38,-107,-117,-117,-96,-154,-99,-157,330,-117,-42,-49,-50,-51,-52,-53,-54,-115,-116,-97,-103,-40,-41,-98,-56,-108,-55,-117,-154,-102,-104,-160,-100,-105,-101,-160,-106,]),'IF':([54,61,63,64,65,66,67,68,72,73,87,233,251,277,284,286,288,297,302,304,305,306,307,308,309,312,313,321,326,330,340,352,362,372,378,383,385,386,389,390,394,395,404,405,],[70,70,-43,-44,-45,-46,-47,-48,-113,-114,-37,-107,-117,311,-96,-154,-99,-157,311,-49,-50,-51,-52,-53,-54,-115,-116,-97,-103,-40,-98,-56,-108,-55,-117,-154,-102,-104,-160,-100,-105,-101,-160,-106,]),'WRITE':([54,61,63,64,65,66,67,68,72,73,87,233,251,277,284,286,288,297,302,304,305,306,307,308,309,312,313,321,326,330,340,352,362,372,378,383,385,386,389,390,394,395,404,405,],[71,71,-43,-44,-45,-46,-47,-48,-113,-114,-37,-107,-117,71,-96,-154,-99,-157,71,-49,-50,-51,-52,-53,-54,-115,-116,-97,-103,-40,-98,-56,-108,-55,-117,-154,-102,-104,-160,-100,-105,-101,-160,-106,]),'READ':([54,61,63,64,65,66,67,68,72,73,87,233,251,277,284,286,288,297,302,304,305,306,307,308,309,312,313,321,326,330,340,352,362,372,378,383,385,386,389,390,394,395,404,405,],[74,74,-43,-44,-45,-46,-47,-48,-113,-114,-37,-107,-117,74,-96,-154,-99,-157,74,-49,-50,-51,-52,-53,-54,-115,-116,-97,-103,-40,-98,-56,-108,-55,-117,-154,-102,-104,-160,-100,-105,-101,-160,-106,]),'WHILE':([54,61,63,64,65,66,67,68,72,73,87,233,251,277,284,286,288,297,302,304,305,306,307,308,309,312,313,321,326,330,340,352,362,372,378,383,385,386,389,390,394,395,404,405,],[75,75,-43,-44,-45,-46,-47,-48,-113,-114,-37,-107,-117,314,-96,-154,-99,-157,314,-49,-50,-51,-52,-53,-54,-115,-116,-97,-103,-40,-98,-56,-108,-55,-117,-154,-102,-104,-160,-100,-105,-101,-160,-106,]),'FOR':([54,61,63,64,65,66,67,68,72,73,87,233,251,277,284,286,288,297,302,304,305,306,307,308,309,312,313,321,326,330,340,352,362,372,378,383,385,386,389,390,394,395,404,405,],[76,76,-43,-44,-45,-46,-47,-48,-113,-114,-37,-107,-117,315,-96,-154,-99,-157,315,-49,-50,-51,-52,-53,-54,-115,-116,-97,-103,-40,-98,-56,-108,-55,-117,-154,-102,-104,-160,-100,-105,-101,-160,-106,]),'IGU':([69,89,95,107,124,134,136,156,167,169,177,178,183,184,202,210,217,218,223,224,237,274,283,319,335,349,359,368,375,380,],[-149,-161,-149,-117,-161,-117,-86,-117,-162,-88,-180,-181,-187,-188,-117,243,253,253,253,253,-162,298,-85,-87,-149,-161,-117,-117,-162,387,]),'ELSE':([87,251,330,378,],[-37,287,-40,384,]),'MAS':([91,92,108,109,112,113,115,123,135,136,137,138,141,142,143,144,145,146,147,148,150,168,169,170,177,178,179,180,181,182,183,184,187,188,190,191,192,193,194,195,196,197,211,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,243,248,250,252,253,254,255,260,261,264,265,266,267,268,269,270,271,281,283,293,298,319,323,327,332,333,341,348,355,358,364,387,392,398,400,],[116,116,-134,-174,-167,-166,-149,116,-168,-86,116,116,187,-117,-78,-89,-164,-165,-149,-161,116,-168,-88,116,-180,-181,-182,-183,-184,-185,-187,-188,-178,-179,-73,-176,-177,-76,-90,-91,-163,-117,116,-117,-117,116,116,116,116,-117,-117,116,116,116,116,-117,-162,-135,-117,-186,116,-77,116,-67,-68,116,116,116,-74,-75,-117,116,-122,-79,116,-84,116,-85,-120,-186,-87,-121,116,116,116,-83,-156,-158,116,116,-186,116,-158,116,]),'MENOS':([91,92,108,109,112,113,115,123,135,136,137,138,141,142,143,144,145,146,147,148,150,168,169,170,177,178,179,180,181,182,183,184,187,188,190,191,192,193,194,195,196,197,211,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,243,248,250,252,253,254,255,260,261,264,265,266,267,268,269,270,271,281,283,293,298,319,323,327,332,333,341,348,355,358,364,387,392,398,400,],[117,117,-134,-174,-167,-166,-149,117,-168,-86,117,117,188,-117,-78,-89,-164,-165,-149,-161,117,-168,-88,117,-180,-181,-182,-183,-184,-185,-187,-188,-178,-179,-73,-176,-177,-76,-90,-91,-163,-117,117,-117,-117,117,117,117,117,-117,-117,117,117,117,117,-117,-162,-135,-117,-186,117,-77,117,-67,-68,117,117,117,-74,-75,-117,117,-122,-79,117,-84,117,-85,-120,-186,-87,-121,117,117,117,-83,-156,-158,117,117,-186,117,-158,117,]),'CTEF':([91,92,108,109,114,116,117,118,123,135,137,138,150,168,170,173,177,178,179,180,181,182,183,184,187,188,191,192,211,217,218,219,220,221,222,223,224,225,226,227,228,231,243,248,252,253,254,255,260,261,267,270,281,298,327,332,333,348,355,358,364,387,392,398,400,],[-117,-117,-134,-174,146,-80,-81,-82,-117,-168,-117,-117,-117,-168,-117,-82,-180,-181,-182,-183,-184,-185,-187,-188,-178,-179,-176,-177,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-117,-135,-186,-117,-117,-67,-68,-117,-117,-117,-117,-117,-117,-186,-117,-117,-117,-156,-158,-117,-117,-186,-117,-158,-117,]),'CTE_STRING':([92,150,],[120,120,]),'MAY':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,177,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'MEN':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,178,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'DIF':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,179,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'IGUIGU':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,180,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'AND':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,181,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'OR':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,182,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'MAYIGU':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,183,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'MENIGU':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,186,189,190,193,194,195,196,197,229,230,232,250,262,263,264,265,266,268,269,271,283,293,319,323,341,],[-172,-167,-166,-149,-86,184,-117,-117,-78,-89,-164,-165,-149,-161,-88,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-70,-71,-74,-75,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'TO':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,176,185,186,189,190,193,194,195,196,197,229,230,232,250,256,257,258,259,262,263,264,265,266,268,269,271,283,289,290,291,292,293,319,323,341,345,396,],[-172,-167,-166,-149,-86,-117,-117,-117,-78,-89,-164,-165,-149,-161,-88,-57,-66,-69,-72,-73,-76,-90,-91,-163,-117,-117,-162,-117,-77,-60,-61,-62,-63,-70,-71,-74,-75,-117,-122,-79,-84,-85,-58,-59,-64,-65,-120,-87,-121,-83,355,398,]),'DO':([111,112,113,115,136,140,141,142,143,144,145,146,147,148,169,176,185,186,189,190,193,194,195,196,197,201,229,230,232,236,250,256,257,258,259,262,263,264,265,266,268,269,271,283,289,290,291,292,293,319,323,341,371,374,377,401,402,],[-172,-167,-166,-149,-86,-117,-117,-117,-78,-89,-164,-165,-149,-161,-88,-57,-66,-69,-72,-73,-76,-90,-91,-163,-117,-156,-117,-162,-117,273,-77,-60,-61,-62,-63,-70,-71,-74,-75,-117,-122,-79,-84,-85,-58,-59,-64,-65,-120,-87,-121,-83,-159,379,382,-159,403,]),'MULT':([113,115,136,142,143,144,145,146,147,148,169,194,195,196,197,229,230,232,250,266,268,269,271,283,293,319,323,341,],[-166,-149,-86,191,-78,-89,-164,-165,-149,-161,-88,-90,-91,-163,-117,-117,-162,-117,-77,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'DIV':([113,115,136,142,143,144,145,146,147,148,169,194,195,196,197,229,230,232,250,266,268,269,271,283,293,319,323,341,],[-166,-149,-86,192,-78,-89,-164,-165,-149,-161,-88,-90,-91,-163,-117,-117,-162,-117,-77,-117,-122,-79,-84,-85,-120,-87,-121,-83,]),'THEN':([139,175,357,366,],[-144,216,-144,373,]),'RETURN':([233,277,284,302,304,305,306,307,308,309,312,313,330,352,362,372,378,383,385,386,390,395,404,405,],[-107,310,-96,310,-49,-50,-51,-52,-53,-54,-115,-116,-40,-56,-108,-55,-117,-154,-102,-104,-100,-101,-160,-106,]),}

_lr_action = {}
for _k, _v in _lr_action_items.items():
   for _x,_y in zip(_v[0],_v[1]):
      if not _x in _lr_action:  _lr_action[_x] = {}
      _lr_action[_x][_k] = _y
del _lr_action_items

_lr_goto_items = {'program':([0,],[1,]),'r_register_gotomain':([2,],[3,]),'r_register_global':([4,],[5,]),'opvars':([6,158,203,376,],[7,204,238,381,]),'vars':([6,158,203,376,],[8,8,8,8,]),'empty':([6,7,12,39,43,54,56,57,61,77,79,91,92,103,107,119,123,127,128,132,134,137,138,140,141,142,150,156,158,160,166,170,197,199,200,202,203,207,211,214,217,218,219,220,221,222,223,224,225,226,227,228,229,232,235,240,242,248,251,252,255,260,261,266,267,270,277,281,302,316,320,325,327,332,333,337,350,358,359,363,364,368,376,378,392,400,],[9,13,13,45,51,62,80,84,62,80,100,118,118,131,136,151,118,100,162,45,169,173,118,185,189,193,118,136,9,162,51,118,136,151,136,169,9,45,118,249,254,254,118,118,118,118,254,254,118,118,118,118,268,169,169,51,84,118,288,118,118,118,118,268,118,173,303,118,303,84,249,344,118,118,118,80,131,118,136,344,118,169,9,385,118,118,]),'opfunciones':([7,12,],[11,26,]),'funciones':([7,12,],[12,12,]),'funcionvoid':([7,12,],[14,14,]),'funcion':([7,12,],[15,15,]),'tipo_func':([7,12,],[17,17,]),'tipo':([10,56,77,99,103,337,350,],[21,81,81,81,129,81,129,]),'r_register_function':([16,18,19,20,],[27,29,30,31,]),'r_register_variable_type':([22,23,24,],[33,34,35,]),'r_switch_to_global':([25,],[36,]),'r_register_variable_name':([32,102,104,164,],[39,128,132,207,]),'r_update_curr_function_name':([38,41,],[42,47,]),'arr_uno':([39,132,207,],[43,166,240,]),'arr_dos':([43,166,240,],[49,209,278,]),'bloque':([46,216,273,275,322,382,],[53,251,297,299,340,389,]),'r_marcar_funcion':([48,55,317,],[56,77,337,]),'r_verify_array':([49,209,278,],[57,242,316,]),'r_register_const':([52,58,],[59,85,]),'bloqueopcion':([54,61,],[60,88,]),'estatuto':([54,61,],[61,61,]),'asignacion':([54,61,277,302,],[63,63,304,304,]),'decision':([54,61,],[64,64,]),'escritura':([54,61,277,302,],[65,65,306,306,]),'llamadafunc':([54,61,277,302,],[66,66,307,307,]),'repeticion':([54,61,],[67,67,]),'lectura':([54,61,277,302,],[68,68,309,309,]),'condicional':([54,61,],[72,72,]),'nocondicional':([54,61,],[73,73,]),'opcionvarsimple':([56,77,337,],[78,96,351,]),'varsimple':([56,77,99,337,],[79,79,127,79,]),'varciclo':([57,242,316,],[82,280,336,]),'r_arr_dim_uno':([59,],[86,]),'r_verifica_variable_existe':([69,95,115,122,147,335,],[89,124,148,154,196,349,]),'r_verifica_void':([69,],[90,]),'r_while_paso_1':([75,314,],[94,334,]),'r_desmarcar_funcion':([78,96,351,],[97,125,361,]),'ciclovarsimple':([79,127,],[98,159,]),'ident':([81,],[101,]),'r_arr_dim_dos':([85,],[105,]),'r_guardar_variable':([89,124,148,154,349,],[107,156,197,200,359,]),'expresion':([91,92,123,137,138,150,170,211,219,220,221,222,248,252,255,260,261,267,270,281,327,332,333,358,364,392,400,],[110,121,155,172,174,121,212,244,256,257,258,259,285,289,290,291,292,294,172,318,345,346,347,367,371,396,401,]),'exp':([91,92,123,137,138,150,170,211,219,220,221,222,225,226,248,252,255,260,261,267,270,281,327,332,333,358,364,392,400,],[111,111,111,111,111,111,111,111,111,111,111,111,262,263,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,]),'termino':([91,92,123,137,138,150,170,211,219,220,221,222,225,226,227,228,248,252,255,260,261,267,270,281,327,332,333,358,364,392,400,],[112,112,112,112,112,112,112,112,112,112,112,112,112,112,264,265,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,]),'factor':([91,92,123,137,138,150,170,211,219,220,221,222,225,226,227,228,248,252,255,260,261,267,270,281,327,332,333,358,364,392,400,],[113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,]),'masomenos':([91,92,123,137,138,150,170,211,219,220,221,222,225,226,227,228,248,252,255,260,261,267,270,281,327,332,333,358,364,392,400,],[114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,]),'escrituraciclo':([92,150,],[119,199,]),'tipociclo':([103,350,],[130,360,]),'arrexp_uno':([107,156,197,200,359,],[134,202,232,235,368,]),'r_era_funcion_void':([108,],[137,]),'r_marcar_fondo_de_pila':([109,],[138,]),'r_pop_comp':([111,],[140,]),'r_pop_mas':([112,],[141,]),'r_pop_mult':([113,],[142,]),'varcte':([114,],[143,]),'iddim':([114,343,],[144,354,]),'otro':([119,199,],[149,234,]),'r_genera_escribe_string':([120,],[152,]),'r_genera_escribe':([121,],[153,]),'r_register_param_types':([126,157,369,],[158,203,376,]),'arrini':([128,160,],[160,205,]),'opciontipo':([129,],[163,]),'arrexp_dos':([134,202,232,235,368,],[167,237,271,272,375,]),'r_push_arr':([135,168,],[170,211,]),'parametros':([137,270,],[171,295,]),'r_if_paso_1':([139,357,],[175,366,]),'expresionsig':([140,],[176,]),'expciclo':([141,],[186,]),'factorciclo':([142,],[190,]),'r_pila_operandos_push_cte_int':([145,],[194,]),'r_pila_operandos_push_cte_flt':([146,],[195,]),'r_pila_operandos_push':([167,230,237,272,375,],[210,269,274,296,380,]),'r_terminar_parametro_void':([171,],[213,]),'r_extraer_parametro':([172,285,],[214,320,]),'r_desmarcar_fondo_de_pila':([174,],[215,]),'r_pila_operadores_push_may':([177,],[217,]),'r_pila_operadores_push_men':([178,],[218,]),'r_pila_operadores_push_dif':([179,],[219,]),'r_pila_operadores_push_iguigu':([180,],[220,]),'r_pila_operadores_push_and':([181,],[221,]),'r_pila_operadores_push_or':([182,],[222,]),'r_pila_operadores_push_mayigu':([183,],[223,]),'r_pila_operadores_push_menigu':([184,],[224,]),'r_pila_operadores_push_mas':([187,],[225,]),'r_pila_operadores_push_menos':([188,],[226,]),'r_pila_operadores_push_mult':([191,],[227,]),'r_pila_operadores_push_div':([192,],[228,]),'r_pila_operandos_push_id':([196,],[229,]),'opcionid':([197,],[230,]),'r_while_paso_2':([201,348,],[236,358,]),'r_register_quad':([204,238,381,],[239,275,388,]),'r_update_func_type':([208,],[241,]),'r_verifica_arrexp_uno':([212,],[245,]),'cicloparametros':([214,320,],[247,339,]),'expresionsigequal':([217,218,223,224,],[252,255,260,261,]),'arrexp':([229,266,],[266,293,]),'r_era_funcion_retorno':([231,],[270,]),'bloquefunc':([239,373,379,388,391,403,],[276,378,386,393,395,404,]),'r_update_curr_function_name_especial':([241,],[279,]),'r_pila_operadores_push_igu':([243,298,387,],[281,327,392,]),'r_verifica_arrexp_dos':([244,],[282,]),'decision_else':([251,],[286,]),'r_endfunc':([276,299,393,],[300,328,397,]),'bloqueopcionfunc':([277,302,],[301,331,]),'estatutofunc':([277,302,],[302,302,]),'decisionfunc':([277,302,],[305,305,]),'repeticionfunc':([277,302,],[308,308,]),'condicionalfunc':([277,302,],[312,312,]),'nocondicionalfunc':([277,302,],[313,313,]),'r_if_paso_3':([286,383,],[321,390,]),'r_if_paso_2':([287,384,],[322,391,]),'r_terminar_parametro':([295,],[324,]),'r_genera_lectura':([296,354,],[325,363,]),'r_while_paso_3':([297,],[326,]),'r_asegurar_return':([300,397,],[329,399,]),'r_pop_igu':([318,],[338,]),'ciclodim':([325,363,],[342,370,]),'r_return_func':([346,],[356,]),'r_pop_igu_for':([355,398,],[364,400,]),'r_for_paso_1':([371,401,],[377,402,]),'decisionfunc_else':([378,],[383,]),'r_for_paso_2':([389,404,],[394,405,]),}

_lr_goto = {}
for _k, _v in _lr_goto_items.items():
   for _x, _y in zip(_v[0], _v[1]):
       if not _x in _lr_goto: _lr_goto[_x] = {}
       _lr_goto[_x][_k] = _y
del _lr_goto_items
_lr_productions = [
  ("S' -> program","S'",1,None,None,None),
  ('program -> PRO r_register_gotomain ID r_register_global PTOCOM opvars opfunciones MAIN r_switch_to_global PARIZQ PARDER bloque','program',12,'p_program','parser.py',50),
  ('opvars -> vars','opvars',1,'p_opvars','parser.py',53),
  ('opvars -> empty','opvars',1,'p_opvars','parser.py',54),
  ('opfunciones -> funciones opfunciones','opfunciones',2,'p_opfunciones','parser.py',57),
  ('opfunciones -> empty','opfunciones',1,'p_opfunciones','parser.py',58),
  ('vars -> VARTOKEN tipo ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo PTOCOM tipociclo','vars',10,'p_vars','parser.py',61),
  ('varciclo -> COMA ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo','varciclo',7,'p_varciclo','parser.py',64),
  ('varciclo -> empty','varciclo',1,'p_varciclo','parser.py',65),
  ('arr -> CORIZQ CTEI r_register_const CORDER','arr',4,'p_arr','parser.py',68),
  ('arr -> empty','arr',1,'p_arr','parser.py',69),
  ('arr_uno -> CORIZQ CTEI r_register_const r_arr_dim_uno CORDER','arr_uno',5,'p_arr_uno','parser.py',72),
  ('arr_uno -> empty','arr_uno',1,'p_arr_uno','parser.py',73),
  ('arr_dos -> CORIZQ CTEI r_register_const r_arr_dim_dos CORDER','arr_dos',5,'p_arr_dos','parser.py',76),
  ('arr_dos -> empty','arr_dos',1,'p_arr_dos','parser.py',77),
  ('tipociclo -> tipo opciontipo','tipociclo',2,'p_tipociclo','parser.py',80),
  ('tipociclo -> empty','tipociclo',1,'p_tipociclo','parser.py',81),
  ('opciontipo -> ID r_register_variable_name arr_uno arr_dos r_verify_array varciclo PTOCOM tipociclo','opciontipo',8,'p_opciontipo','parser.py',84),
  ('opciontipo -> MODULE ID r_update_func_type r_update_curr_function_name_especial PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloquefunc r_endfunc r_asegurar_return','opciontipo',15,'p_opciontipo','parser.py',85),
  ('tipo -> INT r_register_variable_type','tipo',2,'p_tipo','parser.py',88),
  ('tipo -> FLT r_register_variable_type','tipo',2,'p_tipo','parser.py',89),
  ('tipo -> CHAR r_register_variable_type','tipo',2,'p_tipo','parser.py',90),
  ('tipo_func -> INT r_register_function','tipo_func',2,'p_tipo_func','parser.py',93),
  ('tipo_func -> FLT r_register_function','tipo_func',2,'p_tipo_func','parser.py',94),
  ('tipo_func -> CHAR r_register_function','tipo_func',2,'p_tipo_func','parser.py',95),
  ('varsimple -> tipo ident','varsimple',2,'p_varsimple','parser.py',99),
  ('funciones -> funcionvoid','funciones',1,'p_funciones','parser.py',102),
  ('funciones -> funcion','funciones',1,'p_funciones','parser.py',103),
  ('funcionvoid -> VOID r_register_function MODULE ID r_update_curr_function_name PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloque r_endfunc','funcionvoid',15,'p_funcionvoid','parser.py',106),
  ('opcionvarsimple -> varsimple ciclovarsimple','opcionvarsimple',2,'p_opcionvarsimple','parser.py',109),
  ('opcionvarsimple -> empty','opcionvarsimple',1,'p_opcionvarsimple','parser.py',110),
  ('ciclovarsimple -> COMA varsimple ciclovarsimple','ciclovarsimple',3,'p_ciclovarsimple','parser.py',113),
  ('ciclovarsimple -> empty','ciclovarsimple',1,'p_ciclovarsimple','parser.py',114),
  ('funcion -> tipo_func MODULE ID r_update_curr_function_name PARIZQ r_marcar_funcion opcionvarsimple r_desmarcar_funcion PARDER r_register_param_types opvars r_register_quad bloquefunc r_endfunc r_asegurar_return','funcion',15,'p_funcion','parser.py',117),
  ('ident -> ID r_register_variable_name arrini arrini','ident',4,'p_ident','parser.py',120),
  ('arrini -> CORIZQ CORDER','arrini',2,'p_arrini','parser.py',123),
  ('arrini -> empty','arrini',1,'p_arrini','parser.py',124),
  ('bloque -> KEYIZQ bloqueopcion KEYDER','bloque',3,'p_bloque','parser.py',127),
  ('bloqueopcion -> estatuto bloqueopcion','bloqueopcion',2,'p_bloqueopcion','parser.py',130),
  ('bloqueopcion -> empty','bloqueopcion',1,'p_bloqueopcion','parser.py',131),
  ('bloquefunc -> KEYIZQ bloqueopcionfunc KEYDER','bloquefunc',3,'p_bloquefunc','parser.py',134),
  ('bloqueopcionfunc -> estatutofunc bloqueopcionfunc','bloqueopcionfunc',2,'p_bloqueopcionfunc','parser.py',137),
  ('bloqueopcionfunc -> empty','bloqueopcionfunc',1,'p_bloqueopcionfunc','parser.py',138),
  ('estatuto -> asignacion','estatuto',1,'p_estatuto','parser.py',141),
  ('estatuto -> decision','estatuto',1,'p_estatuto','parser.py',142),
  ('estatuto -> escritura','estatuto',1,'p_estatuto','parser.py',143),
  ('estatuto -> llamadafunc','estatuto',1,'p_estatuto','parser.py',144),
  ('estatuto -> repeticion','estatuto',1,'p_estatuto','parser.py',145),
  ('estatuto -> lectura','estatuto',1,'p_estatuto','parser.py',146),
  ('estatutofunc -> asignacion','estatutofunc',1,'p_estatutofunc','parser.py',149),
  ('estatutofunc -> decisionfunc','estatutofunc',1,'p_estatutofunc','parser.py',150),
  ('estatutofunc -> escritura','estatutofunc',1,'p_estatutofunc','parser.py',151),
  ('estatutofunc -> llamadafunc','estatutofunc',1,'p_estatutofunc','parser.py',152),
  ('estatutofunc -> repeticionfunc','estatutofunc',1,'p_estatutofunc','parser.py',153),
  ('estatutofunc -> lectura','estatutofunc',1,'p_estatutofunc','parser.py',154),
  ('estatutofunc -> RETURN PARIZQ expresion r_return_func PARDER PTOCOM','estatutofunc',6,'p_estatutofunc','parser.py',155),
  ('asignacion -> ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion r_pop_igu PTOCOM','asignacion',11,'p_asignacion','parser.py',159),
  ('expresion -> exp r_pop_comp expresionsig','expresion',3,'p_expresion','parser.py',162),
  ('expresionsig -> MAY r_pila_operadores_push_may expresionsigequal expresion','expresionsig',4,'p_expresionsig','parser.py',165),
  ('expresionsig -> MEN r_pila_operadores_push_men expresionsigequal expresion','expresionsig',4,'p_expresionsig','parser.py',166),
  ('expresionsig -> DIF r_pila_operadores_push_dif expresion','expresionsig',3,'p_expresionsig','parser.py',167),
  ('expresionsig -> IGUIGU r_pila_operadores_push_iguigu expresion','expresionsig',3,'p_expresionsig','parser.py',168),
  ('expresionsig -> AND r_pila_operadores_push_and expresion','expresionsig',3,'p_expresionsig','parser.py',169),
  ('expresionsig -> OR r_pila_operadores_push_or expresion','expresionsig',3,'p_expresionsig','parser.py',170),
  ('expresionsig -> MAYIGU r_pila_operadores_push_mayigu expresionsigequal expresion','expresionsig',4,'p_expresionsig','parser.py',171),
  ('expresionsig -> MENIGU r_pila_operadores_push_menigu expresionsigequal expresion','expresionsig',4,'p_expresionsig','parser.py',172),
  ('expresionsig -> empty','expresionsig',1,'p_expresionsig','parser.py',173),
  ('expresionsigequal -> IGU','expresionsigequal',1,'p_expresionsigequal','parser.py',176),
  ('expresionsigequal -> empty','expresionsigequal',1,'p_expresionsigequal','parser.py',177),
  ('exp -> termino r_pop_mas expciclo','exp',3,'p_exp','parser.py',180),
  ('expciclo -> MAS r_pila_operadores_push_mas exp','expciclo',3,'p_expciclo','parser.py',183),
  ('expciclo -> MENOS r_pila_operadores_push_menos exp','expciclo',3,'p_expciclo','parser.py',184),
  ('expciclo -> empty','expciclo',1,'p_expciclo','parser.py',185),
  ('termino -> factor r_pop_mult factorciclo','termino',3,'p_termino','parser.py',189),
  ('factorciclo -> MULT r_pila_operadores_push_mult termino','factorciclo',3,'p_factorciclo','parser.py',192),
  ('factorciclo -> DIV r_pila_operadores_push_div termino','factorciclo',3,'p_factorciclo','parser.py',193),
  ('factorciclo -> empty','factorciclo',1,'p_factorciclo','parser.py',194),
  ('factor -> PARIZQ r_marcar_fondo_de_pila expresion r_desmarcar_fondo_de_pila PARDER','factor',5,'p_factor','parser.py',198),
  ('factor -> masomenos varcte','factor',2,'p_factor','parser.py',199),
  ('factor -> ID r_verifica_variable_existe r_guardar_variable opcionid r_pila_operandos_push','factor',5,'p_factor','parser.py',200),
  ('masomenos -> MAS','masomenos',1,'p_masomenos','parser.py',204),
  ('masomenos -> MENOS','masomenos',1,'p_masomenos','parser.py',205),
  ('masomenos -> empty','masomenos',1,'p_masomenos','parser.py',206),
  ('opcionid -> PARIZQ r_era_funcion_retorno parametros r_terminar_parametro PARDER','opcionid',5,'p_opcionid','parser.py',210),
  ('opcionid -> arrexp_uno arrexp_dos','opcionid',2,'p_opcionid','parser.py',211),
  ('arrexp_uno -> CORIZQ r_push_arr expresion r_verifica_arrexp_uno CORDER','arrexp_uno',5,'p_arrexp_uno','parser.py',214),
  ('arrexp_uno -> empty','arrexp_uno',1,'p_arrexp_uno','parser.py',215),
  ('arrexp_dos -> CORIZQ r_push_arr expresion r_verifica_arrexp_dos CORDER','arrexp_dos',5,'p_arrexp_dos','parser.py',218),
  ('arrexp_dos -> empty','arrexp_dos',1,'p_arrexp_dos','parser.py',219),
  ('varcte -> iddim','varcte',1,'p_varcte','parser.py',222),
  ('varcte -> CTEI r_pila_operandos_push_cte_int','varcte',2,'p_varcte','parser.py',223),
  ('varcte -> CTEF r_pila_operandos_push_cte_flt','varcte',2,'p_varcte','parser.py',224),
  ('parametros -> expresion r_extraer_parametro cicloparametros','parametros',3,'p_parametros','parser.py',228),
  ('parametros -> empty','parametros',1,'p_parametros','parser.py',229),
  ('cicloparametros -> COMA expresion r_extraer_parametro cicloparametros','cicloparametros',4,'p_cicloparametros','parser.py',232),
  ('cicloparametros -> empty','cicloparametros',1,'p_cicloparametros','parser.py',233),
  ('llamadafunc -> ID r_verifica_void PARIZQ r_era_funcion_void parametros r_terminar_parametro_void PARDER PTOCOM','llamadafunc',8,'p_llamadafunc','parser.py',237),
  ('decision -> IF PARIZQ expresion PARDER r_if_paso_1 THEN bloque decision_else r_if_paso_3','decision',9,'p_decision','parser.py',240),
  ('decision_else -> ELSE r_if_paso_2 bloque','decision_else',3,'p_decision_else','parser.py',243),
  ('decision_else -> empty','decision_else',1,'p_decision_else','parser.py',244),
  ('decisionfunc -> IF PARIZQ expresion PARDER r_if_paso_1 THEN bloquefunc decisionfunc_else r_if_paso_3','decisionfunc',9,'p_decisionfunc','parser.py',247),
  ('decisionfunc_else -> ELSE r_if_paso_2 bloquefunc','decisionfunc_else',3,'p_decisionfunc_else','parser.py',251),
  ('decisionfunc_else -> empty','decisionfunc_else',1,'p_decisionfunc_else','parser.py',252),
  ('condicional -> WHILE r_while_paso_1 PARIZQ expresion PARDER r_while_paso_2 DO bloque r_while_paso_3','condicional',9,'p_condicional','parser.py',255),
  ('condicionalfunc -> WHILE r_while_paso_1 PARIZQ r_while_paso_2 expresion PARDER DO bloquefunc','condicionalfunc',8,'p_condicionalfunc','parser.py',258),
  ('nocondicional -> FOR ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion TO r_pop_igu_for expresion r_for_paso_1 DO bloque r_for_paso_2','nocondicional',17,'p_nocondicional','parser.py',261),
  ('nocondicionalfunc -> FOR ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push IGU r_pila_operadores_push_igu expresion TO r_pop_igu_for expresion r_for_paso_1 DO bloquefunc r_for_paso_2','nocondicionalfunc',17,'p_nocondicionalfunc','parser.py',265),
  ('escritura -> WRITE PARIZQ escrituraciclo otro PARDER PTOCOM','escritura',6,'p_escritura','parser.py',268),
  ('lectura -> READ PARIZQ ID r_verifica_variable_existe r_guardar_variable arrexp_uno arrexp_dos r_pila_operandos_push r_genera_lectura ciclodim PARDER PTOCOM','lectura',12,'p_lectura','parser.py',271),
  ('escrituraciclo -> CTE_STRING r_genera_escribe_string','escrituraciclo',2,'p_escrituraciclo','parser.py',274),
  ('escrituraciclo -> expresion r_genera_escribe','escrituraciclo',2,'p_escrituraciclo','parser.py',275),
  ('otro -> COMA escrituraciclo otro','otro',3,'p_otro','parser.py',278),
  ('otro -> empty','otro',1,'p_otro','parser.py',279),
  ('repeticion -> condicional','repeticion',1,'p_repeticion','parser.py',283),
  ('repeticion -> nocondicional','repeticion',1,'p_repeticion','parser.py',284),
  ('repeticionfunc -> condicionalfunc','repeticionfunc',1,'p_repeticionfunc','parser.py',288),
  ('repeticionfunc -> nocondicionalfunc','repeticionfunc',1,'p_repeticionfunc','parser.py',289),
  ('empty -> <empty>','empty',0,'p_empty','parser.py',293),
  ('ciclodim -> COMA iddim r_genera_lectura ciclodim','ciclodim',4,'p_ciclodim','parser.py',297),
  ('ciclodim -> empty','ciclodim',1,'p_ciclodim','parser.py',298),
  ('iddim -> ID r_verifica_variable_existe r_pila_operandos_push_id arrexp arrexp','iddim',5,'p_iddim','parser.py',302),
  ('arrexp -> CORIZQ expresion CORDER','arrexp',3,'p_arrexp','parser.py',305),
  ('arrexp -> empty','arrexp',1,'p_arrexp','parser.py',306),
  ('r_register_gotomain -> <empty>','r_register_gotomain',0,'p_r_register_gotomain','parser.py',329),
  ('r_register_global -> <empty>','r_register_global',0,'p_r_register_global','parser.py',335),
  ('r_register_function -> <empty>','r_register_function',0,'p_r_register_function','parser.py',340),
  ('r_register_const -> <empty>','r_register_const',0,'p_r_register_const','parser.py',347),
  ('r_switch_to_global -> <empty>','r_switch_to_global',0,'p_r_switch_to_global','parser.py',355),
  ('r_update_curr_function_name_especial -> <empty>','r_update_curr_function_name_especial',0,'p_r_update_curr_function_name_especial','parser.py',362),
  ('r_update_curr_function_name -> <empty>','r_update_curr_function_name',0,'p_r_update_curr_function_name','parser.py',367),
  ('r_register_param_types -> <empty>','r_register_param_types',0,'p_r_register_param_types','parser.py',372),
  ('r_register_variable_type -> <empty>','r_register_variable_type',0,'p_r_register_variable_type','parser.py',389),
  ('r_update_func_type -> <empty>','r_update_func_type',0,'p_r_update_func_type','parser.py',395),
  ('r_register_quad -> <empty>','r_register_quad',0,'p_r_register_quad','parser.py',399),
  ('r_era_funcion_void -> <empty>','r_era_funcion_void',0,'p_r_era_funcion_void','parser.py',403),
  ('r_era_funcion_retorno -> <empty>','r_era_funcion_retorno',0,'p_r_era_funcion_retorno','parser.py',427),
  ('r_asegurar_return -> <empty>','r_asegurar_return',0,'p_r_asegurar_return','parser.py',449),
  ('r_terminar_parametro -> <empty>','r_terminar_parametro',0,'p_r_terminar_parametro','parser.py',460),
  ('r_terminar_parametro_void -> <empty>','r_terminar_parametro_void',0,'p_r_terminar_parametro_void','parser.py',483),
  ('r_extraer_parametro -> <empty>','r_extraer_parametro',0,'p_r_extraer_parametro','parser.py',506),
  ('r_verifica_void -> <empty>','r_verifica_void',0,'p_r_verifica_void','parser.py',526),
  ('r_marcar_funcion -> <empty>','r_marcar_funcion',0,'p_r_marcar_funcion','parser.py',545),
  ('r_desmarcar_funcion -> <empty>','r_desmarcar_funcion',0,'p_r_desmarcar_funcion','parser.py',550),
  ('r_endfunc -> <empty>','r_endfunc',0,'p_r_endfunc','parser.py',559),
  ('r_if_paso_1 -> <empty>','r_if_paso_1',0,'p_r_if_paso_1','parser.py',565),
  ('r_register_variable_name -> <empty>','r_register_variable_name',0,'p_r_register_variable_name','parser.py',573),
  ('r_arr_dim_uno -> <empty>','r_arr_dim_uno',0,'p_r_arr_dim_uno','parser.py',605),
  ('r_arr_dim_dos -> <empty>','r_arr_dim_dos',0,'p_r_arr_dim_dos','parser.py',614),
  ('r_verify_array -> <empty>','r_verify_array',0,'p_r_verify_array','parser.py',623),
  ('r_verifica_variable_existe -> <empty>','r_verifica_variable_existe',0,'p_r_verifica_variable_existe','parser.py',663),
  ('r_verifica_arrexp_uno -> <empty>','r_verifica_arrexp_uno',0,'p_r_verifica_arrexp_uno','parser.py',682),
  ('r_verifica_arrexp_dos -> <empty>','r_verifica_arrexp_dos',0,'p_r_verifica_arrexp_dos','parser.py',742),
  ('r_return_func -> <empty>','r_return_func',0,'p_r_return_func','parser.py',782),
  ('r_if_paso_2 -> <empty>','r_if_paso_2',0,'p_r_if_paso_2','parser.py',797),
  ('r_if_paso_3 -> <empty>','r_if_paso_3',0,'p_r_if_paso_3','parser.py',805),
  ('r_while_paso_1 -> <empty>','r_while_paso_1',0,'p_r_while_paso_1','parser.py',810),
  ('r_while_paso_2 -> <empty>','r_while_paso_2',0,'p_r_while_paso_2','parser.py',814),
  ('r_while_paso_3 -> <empty>','r_while_paso_3',0,'p_r_while_paso_3','parser.py',822),
  ('r_pop_igu_for -> <empty>','r_pop_igu_for',0,'p_r_pop_igu_for','parser.py',831),
  ('r_for_paso_1 -> <empty>','r_for_paso_1',0,'p_r_for_paso_1','parser.py',850),
  ('r_for_paso_2 -> <empty>','r_for_paso_2',0,'p_r_for_paso_2','parser.py',870),
  ('r_guardar_variable -> <empty>','r_guardar_variable',0,'p_r_guardar_variable','parser.py',894),
  ('r_pila_operandos_push -> <empty>','r_pila_operandos_push',0,'p_r_pila_operandos_push','parser.py',898),
  ('r_pila_operandos_push_id -> <empty>','r_pila_operandos_push_id',0,'p_r_pila_operandos_push_id','parser.py',942),
  ('r_pila_operandos_push_cte_int -> <empty>','r_pila_operandos_push_cte_int',0,'p_r_pila_operandos_push_cte_int','parser.py',956),
  ('r_pila_operandos_push_cte_flt -> <empty>','r_pila_operandos_push_cte_flt',0,'p_r_pila_operandos_push_cte_flt','parser.py',971),
  ('r_pop_mult -> <empty>','r_pop_mult',0,'p_r_pop_mult','parser.py',986),
  ('r_pop_mas -> <empty>','r_pop_mas',0,'p_r_pop_mas','parser.py',1029),
  ('r_push_arr -> <empty>','r_push_arr',0,'p_r_push_arr','parser.py',1080),
  ('r_genera_escribe -> <empty>','r_genera_escribe',0,'p_r_genera_escribe','parser.py',1084),
  ('r_genera_lectura -> <empty>','r_genera_lectura',0,'p_r_genera_lectura','parser.py',1090),
  ('r_genera_escribe_string -> <empty>','r_genera_escribe_string',0,'p_r_genera_escribe_string','parser.py',1097),
  ('r_pop_comp -> <empty>','r_pop_comp',0,'p_r_pop_comp','parser.py',1112),
  ('r_pop_igu -> <empty>','r_pop_igu',0,'p_r_pop_igu','parser.py',1159),
  ('r_marcar_fondo_de_pila -> <empty>','r_marcar_fondo_de_pila',0,'p_r_marcar_fondo_de_pila','parser.py',1177),
  ('r_desmarcar_fondo_de_pila -> <empty>','r_desmarcar_fondo_de_pila',0,'p_r_desmarcar_fondo_de_pila','parser.py',1181),
  ('r_pila_operadores_push_mult -> <empty>','r_pila_operadores_push_mult',0,'p_r_pila_operadores_push_mult','parser.py',1192),
  ('r_pila_operadores_push_div -> <empty>','r_pila_operadores_push_div',0,'p_r_pila_operadores_push_div','parser.py',1196),
  ('r_pila_operadores_push_mas -> <empty>','r_pila_operadores_push_mas',0,'p_r_pila_operadores_push_mas','parser.py',1200),
  ('r_pila_operadores_push_menos -> <empty>','r_pila_operadores_push_menos',0,'p_r_pila_operadores_push_menos','parser.py',1204),
  ('r_pila_operadores_push_may -> <empty>','r_pila_operadores_push_may',0,'p_r_pila_operadores_push_may','parser.py',1208),
  ('r_pila_operadores_push_men -> <empty>','r_pila_operadores_push_men',0,'p_r_pila_operadores_push_men','parser.py',1212),
  ('r_pila_operadores_push_dif -> <empty>','r_pila_operadores_push_dif',0,'p_r_pila_operadores_push_dif','parser.py',1216),
  ('r_pila_operadores_push_iguigu -> <empty>','r_pila_operadores_push_iguigu',0,'p_r_pila_operadores_push_iguigu','parser.py',1220),
  ('r_pila_operadores_push_and -> <empty>','r_pila_operadores_push_and',0,'p_r_pila_operadores_push_and','parser.py',1224),
  ('r_pila_operadores_push_or -> <empty>','r_pila_operadores_push_or',0,'p_r_pila_operadores_push_or','parser.py',1228),
  ('r_pila_operadores_push_igu -> <empty>','r_pila_operadores_push_igu',0,'p_r_pila_operadores_push_igu','parser.py',1232),
  ('r_pila_operadores_push_mayigu -> <empty>','r_pila_operadores_push_mayigu',0,'p_r_pila_operadores_push_mayigu','parser.py',1236),
  ('r_pila_operadores_push_menigu -> <empty>','r_pila_operadores_push_menigu',0,'p_r_pila_operadores_push_menigu','parser.py',1240),
  ('r_push_fondo_falso -> <empty>','r_push_fondo_falso',0,'p_r_push_fondo_falso','parser.py',1244),
  ('r_vaciar_fondo_falso -> <empty>','r_vaciar_fondo_falso',0,'p_r_vaciar_fondo_falso','parser.py',1249),
  ('r_register_dim -> <empty>','r_register_dim',0,'p_r_register_dim','parser.py',1254),
]
