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')
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')