Esempio n. 1
0
def p_input(p):
    'input : SCAN ID'
    var = symtable.get_var(p[2])
    if not var:
      var = symtable.add_var(p[2], str, None)
    codegen.gen_quad(dir.scan, -1, -1, var['dir'])
Esempio n. 2
0
def p_assignment_array(p):
    '''assignment : ID EQ array'''
    array = p[3]
    var = symtable.add_var(p[1], int, len(array))
    for i in range(len(array)):
        codegen.gen_quad(dir.asigna, array[i]['dir'], -1, var['dir']+i)
Esempio n. 3
0
def p_assignment_array_2(p):
    '''assignment : ID EQ type LBRACK INT RBRACK'''
    var = symtable.add_var(p[1], p[3], p[5])
Esempio n. 4
0
def p_assignment_expression(p):
    '''assignment : ID EQ expression'''
    exp_res = codegen.opdos.pop()
    var = symtable.add_var(p[1], exp_res['type'], None)
    codegen.gen_quad(dir.asigna, exp_res['dir'], -1, var['dir'])