コード例 #1
0
ファイル: parser.py プロジェクト: kevinradtke/c-poop
def p_func_start(p):
    '''func_start : LBRACE'''
    utils.func_start_pos = code_generator.quad_pos()
コード例 #2
0
ファイル: parser.py プロジェクト: kevinradtke/c-poop
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()
コード例 #3
0
ファイル: parser.py プロジェクト: kevinradtke/c-poop
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]
コード例 #4
0
ファイル: parser.py プロジェクト: kevinradtke/c-poop
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]
コード例 #5
0
ファイル: parser.py プロジェクト: kevinradtke/c-poop
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()
コード例 #6
0
ファイル: parser.py プロジェクト: kevinradtke/c-poop
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