Esempio n. 1
0
def subprghead():
    line = tokens[0]
    token = peek_token()
    global line_number
    line_number = get_line_number()
    if token == 'function':
        match('function')
        line = tokens[0]
        match('id')
        # var_type = subprghead_()
        test = nodes
        node = nodes[0]

        green_node = GreenNode(line[1], "temptype")

        node.left_child = green_node
        for n in nodes:
            if n.data == green_node.data:
                green_node_duplicated(line_number, green_node.data)
        nodes.insert(0, green_node)
        var_type = subprghead_()
        green_node.return_type = var_type
        variable_types.update({line[1]: var_type})
        return var_type
    else:
        # synch_set = ['function', 'begin', 'var']
        del synch_set[:]
        synch_set.append('function')
        synch_set.append('begin')
        synch_set.append('var')
        handle_sync()
        syntax_error(token, 'function')
Esempio n. 2
0
def prg():
    global line_number
    line_number = get_line_number()
    token = peek_token()
    if token == 'program':
        match('program')
        token = tokens[0]
        match('id')
        green_node = GreenNode(token[1], 'pname')
        green_node.previous_node = "root"
        nodes.insert(0, green_node)
        # print nodes
        match('(')
        idlist()
        match(')')
        match(';')
        prg_()
    else:
        del synch_set[:]
        synch_set.append('$')
        handle_sync()
        syntax_error(token, 'program')