def p_func_start(p): '''func_start : LBRACE''' utils.func_start_pos = code_generator.quad_pos()
def p_function_return(p): '''function_return : RETURN expresion SEMICOLON''' code_generator.gen_return(p[2]) symbol_table.func_dir[utils.context]['end'] = code_generator.quad_pos()
def p_set_void(p): '''set_void : DEF VOID dec_func''' symbol_table.func_dir[p[3]]['pos'] = code_generator.quad_pos() p[0] = p[3]
def p_set_type(p): '''set_type : DEF tipo dec_func''' symbol_table.func_dir[p[3]]['pos'] = code_generator.quad_pos() symbol_table.func_dir[p[3]]['type'] = p[2] symbol_table.insert_global_var(p[3], p[2]) p[0] = p[3]
def p_main_init(p): '''main_init : MAIN''' utils.context = 'main' symbol_table.insert_func('main') code_generator.mod_quad(utils.goto_main, 4, code_generator.quad_pos()) symbol_table.func_dir['main']['pos'] = code_generator.quad_pos()
def p_program_init(p): '''program_init : init2 ID SEMICOLON | init2 ID SEMICOLON vars_main''' code_generator.gen_quad('GOTO', '', '', '') utils.goto_main = code_generator.quad_pos() - 2