示例#1
0
def p_param_spec(p):
    '''
    param_spec : type_spec ID
               | LBRACKET type_spec ID EQUALS value_option RBRACKET
    '''
    if DEBUG:
        print("\nparam spec: ", end="")
        for i in range(len(p)):
            print(i, " ", p[i], " ", end="")
    if len(p) == 7:
        p[0] = ast.ParamSpec(p[2], ast.ID(p[3]), p[5])
    else:
        p[0] = ast.ParamSpec(p[1], ast.ID(p[2]), None)
示例#2
0
def p_value_option(p):
    '''
    value_option : ID
    '''
    if DEBUG:
        print("\nvalue option: ", end="")
        for i in range(len(p)):
            print(i, " ", p[i], " ", end="")
    p[0] = ast.ID(p[1])
示例#3
0
def p_function_decl(p):
    '''
    function_decl : FUNCTION return_type_spec ID param_list compound_statement
    '''
    if DEBUG:
        print("\nfun decl: ", end="")
        for i in range(len(p)):
            print(i, " ", p[i], " ", end="")
    p[0] = ast.FunctionDecl(p[2], ast.ID(p[3]), p[4], p[5])
示例#4
0
def p_primary_expr_ID(p):
    '''
    primary_expr : ID
    '''
    if DEBUG:
        print("\nprimary expr: ", end="")
        for i in range(len(p)):
            print(i, " ", p[i], " ", end="")
    p[0] = ast.ID(p[1])
示例#5
0
def p_object_call(p):
    '''
    object_call : PERIOD ID
    '''
    if DEBUG:
        print("\nobject call: ", end="")
        for i in range(len(p)):
            print(i, " ", p[i], " ", end="")
    p[0] = ast.ObjectCall(ast.ID(p[2]))
示例#6
0
def p_for_statement(p):
    '''
    for_statement : FOR LPAREN ID IN expr RPAREN statement
    '''
    if DEBUG:
        print("\nfor stmt: ", end="")
        for i in range(len(p)):
            print(i, " ", p[i], " ", end="")
    p[0] = ast.For(ast.ID(p[3]), p[5], p[7])
示例#7
0
def p_object_class_spec(p):
    '''
    object_class_spec : GT ID LT
    '''
    if DEBUG:
        print("\nobject class spec: ", end="")
        for i in range(len(p)):
            print(i, " ", p[i], " ", end="")
    #p[0] = p[2]
    p[0] = ast.ObjectClassSpec(ast.ID(p[2]))
示例#8
0
def p_argument_expr(p):
    '''
    argument_expr : conditional_expr
                  | ID EQUALS conditional_expr
    '''
    if DEBUG:
        print("\nargument expr: ", end="")
        for i in range(len(p)):
            print(i, " ", p[i], " ", end="")
    if len(p) == 4:
        p[0] = (ast.ID(p[1]), p[3])
    else:
        p[0] = p[1]
示例#9
0
 def p_identifier(self, p):
     """ identifier : ID """
     p[0] = ast.ID(p[1], coord=self._token_coord(p, 1))
示例#10
0
def p_id(p):
    "id : ID"
    p[0] = ast.ID(p[1])