예제 #1
0
def p_type(p):
    '''type : MATRIX subty
            | VECTOR
            | SCALAR'''
    if len(p) == 3:
        if p[2] is None:
            p[0] = ast.IdentExp(p[1])
        else:
            p[0] = ast.QualIdentExp(p[1], p[2])
    else:
        p[0] = ast.IdentExp(p[1])
예제 #2
0
def p_subty(p):
    '''subty : "." DIA
            | empty'''
    if p[1] is None:
        p[0] = None
    else:
        p[0] = ast.IdentExp(p[2])
예제 #3
0
def p_sid(p):
    'sid : ID'
    p[0] = ast.IdentExp(p[1], p.lineno(1))
예제 #4
0
def p_prog_b(p):
    '''prog : sid IN params            '{' stmts '}'
            | sid           OUT params '{' stmts '}' '''
    p[0] = ast.FunDec(p[1], ast.IdentExp('void'), [], p[3], p[5])