/*******************************************************************************
*
* Parser generated by RDP on Oct 31 2005 17:42:55 from gtb.bnf
*
*******************************************************************************/
#include <time.h>
#include "gtb_scr.h"
#include "gtb.h"

char
  *rdp_sourcefilename,          /* current source file name */
  **rdp_sourcefilenames,        /* array of source file names */
  *rdp_outputfilename = "gtb.out";         /* output file name */

int
  rdp_symbol_echo = 0,                 /* symbol echo flag */
  rdp_verbose = 0,                     /* verbosity flag */
  rdp_sourcefilenumber,                /* Source file counter */
  rdp_pass;                            /* pass number */

int rdp_error_return = 0;              /* return value for main routine */

char *rdp_tokens = "IGNORE\0" 
"ID\0" "INTEGER\0" "REAL\0" "CHAR\0" "CHAR_ESC\0" "STRING\0" "STRING_ESC\0" "COMMENT\0" 
"COMMENT_VISIBLE\0" "COMMENT_NEST\0" "COMMENT_NEST_VISIBLE\0" "COMMENT_LINE\0" "COMMENT_LINE_VISIBLE\0" "EOF\0" "EOLN\0" "'\"'\0" 
"'#'\0" "'$'\0" "'$='\0" "'%'\0" "'%='\0" "'&'\0" "'&='\0" "'\''\0" 
"'('\0" "'(*'\0" "')'\0" "'*'\0" "'**'\0" "'**='\0" "'*='\0" "'+'\0" 
"'+='\0" "'-'\0" "'-='\0" "'.'\0" "'/'\0" "'/='\0" "':'\0" "'::'\0" 
"'::='\0" "':='\0" "'<'\0" "'<<'\0" "'<<='\0" "'<='\0" "'<>'\0" "'='\0" 
"'=$'\0" "'=%'\0" "'=&'\0" "'=*'\0" "'=**'\0" "'=+'\0" "'=-'\0" "'=/'\0" 
"'=<'\0" "'=<<'\0" "'=='\0" "'=>'\0" "'=>>'\0" "'=|'\0" "'>'\0" "'>='\0" 
"'>>'\0" "'>>='\0" "'?'\0" "'@'\0" "'['\0" "'[*'\0" "']'\0" "'`'\0" 
"'|'\0" "'|='\0" "'~'\0" ;


/* Tree update function for noterminal nodes */
static int rdp_tree_update = 0;

rdp_tree_node_data* rdp_tree_last_child;

rdp_tree_node_data* rdp_add_node(char* id, rdp_tree_node_data* rdp_tree)
{
  if (rdp_tree_update)
  {
     rdp_tree_node_data *node  = (rdp_tree_node_data*) graph_insert_node(sizeof(rdp_tree_node_data), rdp_tree);
     if (id != NULL)
       node->id = id;
     else
       memcpy(node, text_scan_data, sizeof(scan_data));
       return node;
  }
  else
    return NULL;
}

rdp_tree_node_data* rdp_add_child(char* id, rdp_tree_node_data* rdp_tree)
{
  if (rdp_tree_update)
  {
    rdp_tree_last_child = (rdp_tree_node_data*) graph_insert_node(sizeof(rdp_tree_node_data), rdp_tree);
      if (id != NULL)
        rdp_tree_last_child->id = id;
    else
      memcpy(rdp_tree_last_child, text_scan_data, sizeof(scan_data));

    ((rdp_tree_edge_data*) graph_insert_edge_after_final(sizeof(rdp_tree_edge_data), rdp_tree_last_child, rdp_tree))->rdp_edge_kind = 1;
    return rdp_tree_last_child;
  }
  else
    return NULL;
}

rdp_tree_node_data* rdp_add_parent(char* id, rdp_tree_node_data* rdp_tree)
{
  if (rdp_tree_update)
  {
    rdp_tree_node_data *parent = (rdp_tree_node_data*) graph_insert_node_parent(sizeof(rdp_tree_node_data), sizeof(rdp_tree_edge_data), rdp_tree);
    if (id != NULL)
      parent->id = id;
    else
      memcpy(parent, text_scan_data, sizeof(scan_data));

    ((rdp_tree_edge_data*) graph_next_out_edge(parent))->rdp_edge_kind = 1;

    return parent;
  }
  else
    return NULL;
}


/* Load keywords */
static void rdp_load_keywords(void)
{
  scan_load_keyword("\"", "\\", RDP_T_34 /* " */, SCAN_P_STRING_ESC);
  scan_load_keyword("#", NULL, RDP_T_35 /* # */, SCAN_P_IGNORE);
  scan_load_keyword("$", NULL, RDP_T_36 /* $ */, SCAN_P_IGNORE);
  scan_load_keyword("$=", NULL, RDP_T_3661 /* $= */, SCAN_P_IGNORE);
  scan_load_keyword("%", NULL, RDP_T_37 /* % */, SCAN_P_IGNORE);
  scan_load_keyword("%=", NULL, RDP_T_3761 /* %= */, SCAN_P_IGNORE);
  scan_load_keyword("&", NULL, RDP_T_38 /* & */, SCAN_P_IGNORE);
  scan_load_keyword("&=", NULL, RDP_T_3861 /* &= */, SCAN_P_IGNORE);
  scan_load_keyword("\'", "\\", RDP_T_39 /* ' */, SCAN_P_STRING_ESC);
  scan_load_keyword("(", NULL, RDP_T_40 /* ( */, SCAN_P_IGNORE);
  scan_load_keyword("(*", "*)", RDP_T_4042 /* (* */, SCAN_P_COMMENT_NEST);
  scan_load_keyword(")", NULL, RDP_T_41 /* ) */, SCAN_P_IGNORE);
  scan_load_keyword("*", NULL, RDP_T_42 /* * */, SCAN_P_IGNORE);
  scan_load_keyword("**", NULL, RDP_T_4242 /* ** */, SCAN_P_IGNORE);
  scan_load_keyword("**=", NULL, RDP_T_424261 /* **= */, SCAN_P_IGNORE);
  scan_load_keyword("*=", NULL, RDP_T_4261 /* *= */, SCAN_P_IGNORE);
  scan_load_keyword("+", NULL, RDP_T_43 /* + */, SCAN_P_IGNORE);
  scan_load_keyword("+=", NULL, RDP_T_4361 /* += */, SCAN_P_IGNORE);
  scan_load_keyword("-", NULL, RDP_T_45 /* - */, SCAN_P_IGNORE);
  scan_load_keyword("-=", NULL, RDP_T_4561 /* -= */, SCAN_P_IGNORE);
  scan_load_keyword(".", NULL, RDP_T_46 /* . */, SCAN_P_IGNORE);
  scan_load_keyword("/", NULL, RDP_T_47 /* / */, SCAN_P_IGNORE);
  scan_load_keyword("/=", NULL, RDP_T_4761 /* /= */, SCAN_P_IGNORE);
  scan_load_keyword(":", NULL, RDP_T_58 /* : */, SCAN_P_IGNORE);
  scan_load_keyword("::", NULL, RDP_T_5858 /* :: */, SCAN_P_IGNORE);
  scan_load_keyword("::=", NULL, RDP_T_585861 /* ::= */, SCAN_P_IGNORE);
  scan_load_keyword(":=", NULL, RDP_T_5861 /* := */, SCAN_P_IGNORE);
  scan_load_keyword("<", NULL, RDP_T_60 /* < */, SCAN_P_IGNORE);
  scan_load_keyword("<<", NULL, RDP_T_6060 /* << */, SCAN_P_IGNORE);
  scan_load_keyword("<<=", NULL, RDP_T_606061 /* <<= */, SCAN_P_IGNORE);
  scan_load_keyword("<=", NULL, RDP_T_6061 /* <= */, SCAN_P_IGNORE);
  scan_load_keyword("<>", NULL, RDP_T_6062 /* <> */, SCAN_P_IGNORE);
  scan_load_keyword("=", NULL, RDP_T_61 /* = */, SCAN_P_IGNORE);
  scan_load_keyword("=$", NULL, RDP_T_6136 /* =$ */, SCAN_P_IGNORE);
  scan_load_keyword("=%", NULL, RDP_T_6137 /* =% */, SCAN_P_IGNORE);
  scan_load_keyword("=&", NULL, RDP_T_6138 /* =& */, SCAN_P_IGNORE);
  scan_load_keyword("=*", NULL, RDP_T_6142 /* =* */, SCAN_P_IGNORE);
  scan_load_keyword("=**", NULL, RDP_T_614242 /* =** */, SCAN_P_IGNORE);
  scan_load_keyword("=+", NULL, RDP_T_6143 /* =+ */, SCAN_P_IGNORE);
  scan_load_keyword("=-", NULL, RDP_T_6145 /* =- */, SCAN_P_IGNORE);
  scan_load_keyword("=/", NULL, RDP_T_6147 /* =/ */, SCAN_P_IGNORE);
  scan_load_keyword("=<", NULL, RDP_T_6160 /* =< */, SCAN_P_IGNORE);
  scan_load_keyword("=<<", NULL, RDP_T_616060 /* =<< */, SCAN_P_IGNORE);
  scan_load_keyword("==", NULL, RDP_T_6161 /* == */, SCAN_P_IGNORE);
  scan_load_keyword("=>", NULL, RDP_T_6162 /* => */, SCAN_P_IGNORE);
  scan_load_keyword("=>>", NULL, RDP_T_616262 /* =>> */, SCAN_P_IGNORE);
  scan_load_keyword("=|", NULL, RDP_T_61124 /* =| */, SCAN_P_IGNORE);
  scan_load_keyword(">", NULL, RDP_T_62 /* > */, SCAN_P_IGNORE);
  scan_load_keyword(">=", NULL, RDP_T_6261 /* >= */, SCAN_P_IGNORE);
  scan_load_keyword(">>", NULL, RDP_T_6262 /* >> */, SCAN_P_IGNORE);
  scan_load_keyword(">>=", NULL, RDP_T_626261 /* >>= */, SCAN_P_IGNORE);
  scan_load_keyword("?", NULL, RDP_T_63 /* ? */, SCAN_P_IGNORE);
  scan_load_keyword("@", NULL, RDP_T_64 /* @ */, SCAN_P_IGNORE);
  scan_load_keyword("[", NULL, RDP_T_91 /* [ */, SCAN_P_IGNORE);
  scan_load_keyword("[*", "*]", RDP_T_9142 /* [* */, SCAN_P_COMMENT_VISIBLE);
  scan_load_keyword("]", NULL, RDP_T_93 /* ] */, SCAN_P_IGNORE);
  scan_load_keyword("`", "\\", RDP_T_96 /* ` */, SCAN_P_CHAR_ESC);
  scan_load_keyword("|", NULL, RDP_T_124 /* | */, SCAN_P_IGNORE);
  scan_load_keyword("|=", NULL, RDP_T_12461 /* |= */, SCAN_P_IGNORE);
  scan_load_keyword("~", NULL, RDP_T_126 /* ~ */, SCAN_P_IGNORE);
}

/* Set declarations */

  set_ c_action_stop = SET_NULL;
  set_ character_stop = SET_NULL;
  set_ comment_stop = SET_NULL;
  set_ e1_first = SET_NULL;
  set_ e1_stop = SET_NULL;
  set_ e10_first = SET_NULL;
  set_ e10_stop = SET_NULL;
  set_ e11_first = SET_NULL;
  set_ e11_stop = SET_NULL;
  set_ e12_first = SET_NULL;
  set_ e12_stop = SET_NULL;
  set_ e13_first = SET_NULL;
  set_ e13_stop = SET_NULL;
  set_ e14_first = SET_NULL;
  set_ e14_stop = SET_NULL;
  set_ e2_first = SET_NULL;
  set_ e2_stop = SET_NULL;
  set_ e3_first = SET_NULL;
  set_ e3_stop = SET_NULL;
  set_ e4_first = SET_NULL;
  set_ e4_stop = SET_NULL;
  set_ e5_first = SET_NULL;
  set_ e5_stop = SET_NULL;
  set_ e6_first = SET_NULL;
  set_ e6_stop = SET_NULL;
  set_ e7_first = SET_NULL;
  set_ e7_stop = SET_NULL;
  set_ e8_first = SET_NULL;
  set_ e8_stop = SET_NULL;
  set_ e9_first = SET_NULL;
  set_ e9_stop = SET_NULL;
  set_ epsilon_stop = SET_NULL;
  set_ identifier_stop = SET_NULL;
  set_ keyword_stop = SET_NULL;
  set_ prod_first = SET_NULL;
  set_ prod_stop = SET_NULL;
  set_ rdp_e10_2_first = SET_NULL;
  set_ rdp_e10_3_first = SET_NULL;
  set_ rdp_e11_2_first = SET_NULL;
  set_ rdp_e12_0_first = SET_NULL;
  set_ rdp_e13_2_first = SET_NULL;
  set_ rdp_e1_2_first = SET_NULL;
  set_ rdp_e2_2_first = SET_NULL;
  set_ rdp_e2_3_first = SET_NULL;
  set_ rdp_e3_23_first = SET_NULL;
  set_ rdp_e3_24_first = SET_NULL;
  set_ rdp_e4_6_first = SET_NULL;
  set_ rdp_e4_7_first = SET_NULL;
  set_ rdp_e5_2_first = SET_NULL;
  set_ rdp_e6_2_first = SET_NULL;
  set_ rdp_e7_2_first = SET_NULL;
  set_ rdp_e8_2_first = SET_NULL;
  set_ rdp_e8_3_first = SET_NULL;
  set_ rdp_e9_3_first = SET_NULL;
  set_ rdp_e9_4_first = SET_NULL;
  set_ rdp_identifier_0_first = SET_NULL;
  set_ rdp_identifier_1_first = SET_NULL;
  set_ rdp_prod_0_first = SET_NULL;
  set_ rdp_prod_6_first = SET_NULL;
  set_ rdp_prod_7_first = SET_NULL;
  set_ rdp_rule_0_first = SET_NULL;
  set_ rdp_rule_1_first = SET_NULL;
  set_ rdp_rule_2_first = SET_NULL;
  set_ rdp_rule_name_2_first = SET_NULL;
  set_ rdp_rule_name_3_first = SET_NULL;
  set_ rdp_rule_name_6_first = SET_NULL;
  set_ rdp_rules_0_first = SET_NULL;
  set_ rdp_rules_1_first = SET_NULL;
  set_ rdp_rules_2_first = SET_NULL;
  set_ rdp_script_0_first = SET_NULL;
  set_ rdp_script_1_first = SET_NULL;
  set_ rdp_text_2_first = SET_NULL;
  set_ rule_first = SET_NULL;
  set_ rule_stop = SET_NULL;
  set_ rule_name_first = SET_NULL;
  set_ rule_name_stop = SET_NULL;
  set_ rules_first = SET_NULL;
  set_ rules_stop = SET_NULL;
  set_ script_stop = SET_NULL;
  set_ text_first = SET_NULL;
  set_ text_stop = SET_NULL;

/* Initialise sets */

static void rdp_set_initialise(void)
{
  set_assign_list(&c_action_stop, SCAN_P_ID, SCAN_P_EOF, RDP_T_35 /* # */, RDP_T_39 /* ' */, RDP_T_40 /* ( */, RDP_T_46 /* . */, 
RDP_T_9142 /* [* */, RDP_T_96 /* ` */, RDP_T_124 /* | */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&character_stop, SCAN_P_ID, SCAN_P_EOF, RDP_T_35 /* # */, RDP_T_39 /* ' */, RDP_T_40 /* ( */, RDP_T_46 /* . */, 
RDP_T_9142 /* [* */, RDP_T_96 /* ` */, RDP_T_124 /* | */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&comment_stop, SCAN_P_EOF,SET_END);
  set_assign_list(&e1_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&e1_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_40 /* ( */, 
RDP_T_41 /* ) */, RDP_T_93 /* ] */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&e10_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&e10_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_36 /* $ */, 
RDP_T_3661 /* $= */, RDP_T_37 /* % */, RDP_T_3761 /* %= */, RDP_T_38 /* & */, 
RDP_T_3861 /* &= */, RDP_T_40 /* ( */, RDP_T_41 /* ) */, RDP_T_42 /* * */, RDP_T_424261 /* **= */, 
RDP_T_4261 /* *= */, RDP_T_43 /* + */, RDP_T_4361 /* += */, RDP_T_45 /* - */, 
RDP_T_4561 /* -= */, RDP_T_47 /* / */, RDP_T_4761 /* /= */, RDP_T_5861 /* := */, 
RDP_T_60 /* < */, RDP_T_606061 /* <<= */, RDP_T_6061 /* <= */, RDP_T_6062 /* <> */, 
RDP_T_61 /* = */, RDP_T_6136 /* =$ */, RDP_T_6137 /* =% */, RDP_T_6138 /* =& */, 
RDP_T_6142 /* =* */, RDP_T_614242 /* =** */, RDP_T_6143 /* =+ */, RDP_T_6145 /* =- */, 
RDP_T_6147 /* =/ */, RDP_T_616060 /* =<< */, RDP_T_6161 /* == */, RDP_T_616262 /* =>> */, 
RDP_T_61124 /* =| */, RDP_T_62 /* > */, RDP_T_6261 /* >= */, RDP_T_626261 /* >>= */, 
RDP_T_63 /* ? */, RDP_T_64 /* @ */, RDP_T_93 /* ] */, RDP_T_124 /* | */, RDP_T_12461 /* |= */, 
RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&e11_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&e11_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_36 /* $ */, 
RDP_T_3661 /* $= */, RDP_T_37 /* % */, RDP_T_3761 /* %= */, RDP_T_38 /* & */, 
RDP_T_3861 /* &= */, RDP_T_40 /* ( */, RDP_T_41 /* ) */, RDP_T_42 /* * */, RDP_T_424261 /* **= */, 
RDP_T_4261 /* *= */, RDP_T_43 /* + */, RDP_T_4361 /* += */, RDP_T_45 /* - */, 
RDP_T_4561 /* -= */, RDP_T_47 /* / */, RDP_T_4761 /* /= */, RDP_T_5861 /* := */, 
RDP_T_60 /* < */, RDP_T_6060 /* << */, RDP_T_606061 /* <<= */, RDP_T_6061 /* <= */, 
RDP_T_6062 /* <> */, RDP_T_61 /* = */, RDP_T_6136 /* =$ */, RDP_T_6137 /* =% */, 
RDP_T_6138 /* =& */, RDP_T_6142 /* =* */, RDP_T_614242 /* =** */, RDP_T_6143 /* =+ */, 
RDP_T_6145 /* =- */, RDP_T_6147 /* =/ */, RDP_T_616060 /* =<< */, RDP_T_6161 /* == */, 
RDP_T_616262 /* =>> */, RDP_T_61124 /* =| */, RDP_T_62 /* > */, RDP_T_6261 /* >= */, 
RDP_T_6262 /* >> */, RDP_T_626261 /* >>= */, RDP_T_63 /* ? */, RDP_T_64 /* @ */, 
RDP_T_93 /* ] */, RDP_T_124 /* | */, RDP_T_12461 /* |= */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&e12_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&e12_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_36 /* $ */, 
RDP_T_3661 /* $= */, RDP_T_37 /* % */, RDP_T_3761 /* %= */, RDP_T_38 /* & */, 
RDP_T_3861 /* &= */, RDP_T_40 /* ( */, RDP_T_41 /* ) */, RDP_T_42 /* * */, RDP_T_4242 /* ** */, 
RDP_T_424261 /* **= */, RDP_T_4261 /* *= */, RDP_T_43 /* + */, RDP_T_4361 /* += */, 
RDP_T_45 /* - */, RDP_T_4561 /* -= */, RDP_T_47 /* / */, RDP_T_4761 /* /= */, 
RDP_T_5861 /* := */, RDP_T_60 /* < */, RDP_T_6060 /* << */, RDP_T_606061 /* <<= */, 
RDP_T_6061 /* <= */, RDP_T_6062 /* <> */, RDP_T_61 /* = */, RDP_T_6136 /* =$ */, 
RDP_T_6137 /* =% */, RDP_T_6138 /* =& */, RDP_T_6142 /* =* */, RDP_T_614242 /* =** */, 
RDP_T_6143 /* =+ */, RDP_T_6145 /* =- */, RDP_T_6147 /* =/ */, RDP_T_616060 /* =<< */, 
RDP_T_6161 /* == */, RDP_T_616262 /* =>> */, RDP_T_61124 /* =| */, RDP_T_62 /* > */, 
RDP_T_6261 /* >= */, RDP_T_6262 /* >> */, RDP_T_626261 /* >>= */, RDP_T_63 /* ? */, 
RDP_T_64 /* @ */, RDP_T_93 /* ] */, RDP_T_124 /* | */, RDP_T_12461 /* |= */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&e13_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, SET_END);
  set_assign_list(&e13_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_36 /* $ */, 
RDP_T_3661 /* $= */, RDP_T_37 /* % */, RDP_T_3761 /* %= */, RDP_T_38 /* & */, 
RDP_T_3861 /* &= */, RDP_T_40 /* ( */, RDP_T_41 /* ) */, RDP_T_42 /* * */, RDP_T_4242 /* ** */, 
RDP_T_424261 /* **= */, RDP_T_4261 /* *= */, RDP_T_43 /* + */, RDP_T_4361 /* += */, 
RDP_T_45 /* - */, RDP_T_4561 /* -= */, RDP_T_47 /* / */, RDP_T_4761 /* /= */, 
RDP_T_5861 /* := */, RDP_T_60 /* < */, RDP_T_6060 /* << */, RDP_T_606061 /* <<= */, 
RDP_T_6061 /* <= */, RDP_T_6062 /* <> */, RDP_T_61 /* = */, RDP_T_6136 /* =$ */, 
RDP_T_6137 /* =% */, RDP_T_6138 /* =& */, RDP_T_6142 /* =* */, RDP_T_614242 /* =** */, 
RDP_T_6143 /* =+ */, RDP_T_6145 /* =- */, RDP_T_6147 /* =/ */, RDP_T_616060 /* =<< */, 
RDP_T_6161 /* == */, RDP_T_616262 /* =>> */, RDP_T_61124 /* =| */, RDP_T_62 /* > */, 
RDP_T_6261 /* >= */, RDP_T_6262 /* >> */, RDP_T_626261 /* >>= */, RDP_T_63 /* ? */, 
RDP_T_64 /* @ */, RDP_T_93 /* ] */, RDP_T_124 /* | */, RDP_T_12461 /* |= */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&e14_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, SET_END);
  set_assign_list(&e14_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_36 /* $ */, 
RDP_T_3661 /* $= */, RDP_T_37 /* % */, RDP_T_3761 /* %= */, RDP_T_38 /* & */, 
RDP_T_3861 /* &= */, RDP_T_40 /* ( */, RDP_T_41 /* ) */, RDP_T_42 /* * */, RDP_T_4242 /* ** */, 
RDP_T_424261 /* **= */, RDP_T_4261 /* *= */, RDP_T_43 /* + */, RDP_T_4361 /* += */, 
RDP_T_45 /* - */, RDP_T_4561 /* -= */, RDP_T_47 /* / */, RDP_T_4761 /* /= */, 
RDP_T_5858 /* :: */, RDP_T_5861 /* := */, RDP_T_60 /* < */, RDP_T_6060 /* << */, 
RDP_T_606061 /* <<= */, RDP_T_6061 /* <= */, RDP_T_6062 /* <> */, RDP_T_61 /* = */, 
RDP_T_6136 /* =$ */, RDP_T_6137 /* =% */, RDP_T_6138 /* =& */, RDP_T_6142 /* =* */, 
RDP_T_614242 /* =** */, RDP_T_6143 /* =+ */, RDP_T_6145 /* =- */, RDP_T_6147 /* =/ */, 
RDP_T_616060 /* =<< */, RDP_T_6161 /* == */, RDP_T_616262 /* =>> */, RDP_T_61124 /* =| */, 
RDP_T_62 /* > */, RDP_T_6261 /* >= */, RDP_T_6262 /* >> */, RDP_T_626261 /* >>= */, 
RDP_T_63 /* ? */, RDP_T_64 /* @ */, RDP_T_93 /* ] */, RDP_T_124 /* | */, RDP_T_12461 /* |= */, 
RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&e2_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&e2_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_40 /* ( */, 
RDP_T_41 /* ) */, RDP_T_6161 /* == */, RDP_T_93 /* ] */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&e3_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&e3_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_40 /* ( */, 
RDP_T_41 /* ) */, RDP_T_6161 /* == */, RDP_T_63 /* ? */, RDP_T_64 /* @ */, RDP_T_93 /* ] */, 
RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&e4_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&e4_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_3661 /* $= */, 
RDP_T_3761 /* %= */, RDP_T_3861 /* &= */, RDP_T_40 /* ( */, RDP_T_41 /* ) */, 
RDP_T_424261 /* **= */, RDP_T_4261 /* *= */, RDP_T_4361 /* += */, RDP_T_4561 /* -= */, 
RDP_T_4761 /* /= */, RDP_T_5861 /* := */, RDP_T_606061 /* <<= */, RDP_T_6136 /* =$ */, 
RDP_T_6137 /* =% */, RDP_T_6138 /* =& */, RDP_T_6142 /* =* */, RDP_T_614242 /* =** */, 
RDP_T_6143 /* =+ */, RDP_T_6145 /* =- */, RDP_T_6147 /* =/ */, RDP_T_616060 /* =<< */, 
RDP_T_6161 /* == */, RDP_T_616262 /* =>> */, RDP_T_61124 /* =| */, RDP_T_626261 /* >>= */, 
RDP_T_63 /* ? */, RDP_T_64 /* @ */, RDP_T_93 /* ] */, RDP_T_12461 /* |= */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&e5_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&e5_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_3661 /* $= */, 
RDP_T_3761 /* %= */, RDP_T_3861 /* &= */, RDP_T_40 /* ( */, RDP_T_41 /* ) */, 
RDP_T_424261 /* **= */, RDP_T_4261 /* *= */, RDP_T_4361 /* += */, RDP_T_4561 /* -= */, 
RDP_T_4761 /* /= */, RDP_T_5861 /* := */, RDP_T_60 /* < */, RDP_T_606061 /* <<= */, 
RDP_T_6061 /* <= */, RDP_T_6062 /* <> */, RDP_T_61 /* = */, RDP_T_6136 /* =$ */, 
RDP_T_6137 /* =% */, RDP_T_6138 /* =& */, RDP_T_6142 /* =* */, RDP_T_614242 /* =** */, 
RDP_T_6143 /* =+ */, RDP_T_6145 /* =- */, RDP_T_6147 /* =/ */, RDP_T_616060 /* =<< */, 
RDP_T_6161 /* == */, RDP_T_616262 /* =>> */, RDP_T_61124 /* =| */, RDP_T_62 /* > */, 
RDP_T_6261 /* >= */, RDP_T_626261 /* >>= */, RDP_T_63 /* ? */, RDP_T_64 /* @ */, 
RDP_T_93 /* ] */, RDP_T_12461 /* |= */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&e6_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&e6_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_3661 /* $= */, 
RDP_T_3761 /* %= */, RDP_T_3861 /* &= */, RDP_T_40 /* ( */, RDP_T_41 /* ) */, 
RDP_T_424261 /* **= */, RDP_T_4261 /* *= */, RDP_T_4361 /* += */, RDP_T_4561 /* -= */, 
RDP_T_4761 /* /= */, RDP_T_5861 /* := */, RDP_T_60 /* < */, RDP_T_606061 /* <<= */, 
RDP_T_6061 /* <= */, RDP_T_6062 /* <> */, RDP_T_61 /* = */, RDP_T_6136 /* =$ */, 
RDP_T_6137 /* =% */, RDP_T_6138 /* =& */, RDP_T_6142 /* =* */, RDP_T_614242 /* =** */, 
RDP_T_6143 /* =+ */, RDP_T_6145 /* =- */, RDP_T_6147 /* =/ */, RDP_T_616060 /* =<< */, 
RDP_T_6161 /* == */, RDP_T_616262 /* =>> */, RDP_T_61124 /* =| */, RDP_T_62 /* > */, 
RDP_T_6261 /* >= */, RDP_T_626261 /* >>= */, RDP_T_63 /* ? */, RDP_T_64 /* @ */, 
RDP_T_93 /* ] */, RDP_T_124 /* | */, RDP_T_12461 /* |= */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&e7_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&e7_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_3661 /* $= */, 
RDP_T_3761 /* %= */, RDP_T_38 /* & */, RDP_T_3861 /* &= */, RDP_T_40 /* ( */, 
RDP_T_41 /* ) */, RDP_T_424261 /* **= */, RDP_T_4261 /* *= */, RDP_T_4361 /* += */, 
RDP_T_4561 /* -= */, RDP_T_4761 /* /= */, RDP_T_5861 /* := */, RDP_T_60 /* < */, 
RDP_T_606061 /* <<= */, RDP_T_6061 /* <= */, RDP_T_6062 /* <> */, RDP_T_61 /* = */, 
RDP_T_6136 /* =$ */, RDP_T_6137 /* =% */, RDP_T_6138 /* =& */, RDP_T_6142 /* =* */, 
RDP_T_614242 /* =** */, RDP_T_6143 /* =+ */, RDP_T_6145 /* =- */, RDP_T_6147 /* =/ */, 
RDP_T_616060 /* =<< */, RDP_T_6161 /* == */, RDP_T_616262 /* =>> */, RDP_T_61124 /* =| */, 
RDP_T_62 /* > */, RDP_T_6261 /* >= */, RDP_T_626261 /* >>= */, RDP_T_63 /* ? */, 
RDP_T_64 /* @ */, RDP_T_93 /* ] */, RDP_T_124 /* | */, RDP_T_12461 /* |= */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&e8_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&e8_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_36 /* $ */, 
RDP_T_3661 /* $= */, RDP_T_3761 /* %= */, RDP_T_38 /* & */, RDP_T_3861 /* &= */, 
RDP_T_40 /* ( */, RDP_T_41 /* ) */, RDP_T_424261 /* **= */, RDP_T_4261 /* *= */, 
RDP_T_4361 /* += */, RDP_T_4561 /* -= */, RDP_T_4761 /* /= */, RDP_T_5861 /* := */, 
RDP_T_60 /* < */, RDP_T_606061 /* <<= */, RDP_T_6061 /* <= */, RDP_T_6062 /* <> */, 
RDP_T_61 /* = */, RDP_T_6136 /* =$ */, RDP_T_6137 /* =% */, RDP_T_6138 /* =& */, 
RDP_T_6142 /* =* */, RDP_T_614242 /* =** */, RDP_T_6143 /* =+ */, RDP_T_6145 /* =- */, 
RDP_T_6147 /* =/ */, RDP_T_616060 /* =<< */, RDP_T_6161 /* == */, RDP_T_616262 /* =>> */, 
RDP_T_61124 /* =| */, RDP_T_62 /* > */, RDP_T_6261 /* >= */, RDP_T_626261 /* >>= */, 
RDP_T_63 /* ? */, RDP_T_64 /* @ */, RDP_T_93 /* ] */, RDP_T_124 /* | */, RDP_T_12461 /* |= */, 
RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&e9_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&e9_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_36 /* $ */, 
RDP_T_3661 /* $= */, RDP_T_3761 /* %= */, RDP_T_38 /* & */, RDP_T_3861 /* &= */, 
RDP_T_40 /* ( */, RDP_T_41 /* ) */, RDP_T_424261 /* **= */, RDP_T_4261 /* *= */, 
RDP_T_43 /* + */, RDP_T_4361 /* += */, RDP_T_45 /* - */, RDP_T_4561 /* -= */, 
RDP_T_4761 /* /= */, RDP_T_5861 /* := */, RDP_T_60 /* < */, RDP_T_606061 /* <<= */, 
RDP_T_6061 /* <= */, RDP_T_6062 /* <> */, RDP_T_61 /* = */, RDP_T_6136 /* =$ */, 
RDP_T_6137 /* =% */, RDP_T_6138 /* =& */, RDP_T_6142 /* =* */, RDP_T_614242 /* =** */, 
RDP_T_6143 /* =+ */, RDP_T_6145 /* =- */, RDP_T_6147 /* =/ */, RDP_T_616060 /* =<< */, 
RDP_T_6161 /* == */, RDP_T_616262 /* =>> */, RDP_T_61124 /* =| */, RDP_T_62 /* > */, 
RDP_T_6261 /* >= */, RDP_T_626261 /* >>= */, RDP_T_63 /* ? */, RDP_T_64 /* @ */, 
RDP_T_93 /* ] */, RDP_T_124 /* | */, RDP_T_12461 /* |= */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&epsilon_stop, SCAN_P_ID, SCAN_P_EOF, RDP_T_35 /* # */, RDP_T_39 /* ' */, RDP_T_40 /* ( */, RDP_T_46 /* . */, 
RDP_T_9142 /* [* */, RDP_T_96 /* ` */, RDP_T_124 /* | */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&identifier_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_36 /* $ */, 
RDP_T_3661 /* $= */, RDP_T_37 /* % */, RDP_T_3761 /* %= */, RDP_T_38 /* & */, 
RDP_T_3861 /* &= */, RDP_T_40 /* ( */, RDP_T_41 /* ) */, RDP_T_42 /* * */, RDP_T_4242 /* ** */, 
RDP_T_424261 /* **= */, RDP_T_4261 /* *= */, RDP_T_43 /* + */, RDP_T_4361 /* += */, 
RDP_T_45 /* - */, RDP_T_4561 /* -= */, RDP_T_47 /* / */, RDP_T_4761 /* /= */, 
RDP_T_5858 /* :: */, RDP_T_5861 /* := */, RDP_T_60 /* < */, RDP_T_6060 /* << */, 
RDP_T_606061 /* <<= */, RDP_T_6061 /* <= */, RDP_T_6062 /* <> */, RDP_T_61 /* = */, 
RDP_T_6136 /* =$ */, RDP_T_6137 /* =% */, RDP_T_6138 /* =& */, RDP_T_6142 /* =* */, 
RDP_T_614242 /* =** */, RDP_T_6143 /* =+ */, RDP_T_6145 /* =- */, RDP_T_6147 /* =/ */, 
RDP_T_616060 /* =<< */, RDP_T_6161 /* == */, RDP_T_616262 /* =>> */, RDP_T_61124 /* =| */, 
RDP_T_62 /* > */, RDP_T_6261 /* >= */, RDP_T_6262 /* >> */, RDP_T_626261 /* >>= */, 
RDP_T_63 /* ? */, RDP_T_64 /* @ */, RDP_T_93 /* ] */, RDP_T_124 /* | */, RDP_T_12461 /* |= */, 
RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&keyword_stop, SCAN_P_ID, SCAN_P_EOF, RDP_T_35 /* # */, RDP_T_39 /* ' */, RDP_T_40 /* ( */, RDP_T_46 /* . */, 
RDP_T_9142 /* [* */, RDP_T_96 /* ` */, RDP_T_124 /* | */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&prod_first, SCAN_P_ID, RDP_T_35 /* # */, RDP_T_39 /* ' */, RDP_T_40 /* ( */, RDP_T_9142 /* [* */, 
RDP_T_96 /* ` */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&prod_stop, SCAN_P_EOF, RDP_T_46 /* . */, RDP_T_124 /* | */,SET_END);
  set_assign_list(&rdp_e10_2_first, RDP_T_6060 /* << */, RDP_T_6262 /* >> */, SET_END);
  set_assign_list(&rdp_e10_3_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_e11_2_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_e12_0_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, SET_END);
  set_assign_list(&rdp_e13_2_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, SET_END);
  set_assign_list(&rdp_e1_2_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_e2_2_first, RDP_T_63 /* ? */, RDP_T_64 /* @ */, SET_END);
  set_assign_list(&rdp_e2_3_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_e3_23_first, RDP_T_3661 /* $= */, RDP_T_3761 /* %= */, RDP_T_3861 /* &= */, RDP_T_424261 /* **= */, 
RDP_T_4261 /* *= */, RDP_T_4361 /* += */, RDP_T_4561 /* -= */, RDP_T_4761 /* /= */, 
RDP_T_5861 /* := */, RDP_T_606061 /* <<= */, RDP_T_6136 /* =$ */, RDP_T_6137 /* =% */, 
RDP_T_6138 /* =& */, RDP_T_6142 /* =* */, RDP_T_614242 /* =** */, RDP_T_6143 /* =+ */, 
RDP_T_6145 /* =- */, RDP_T_6147 /* =/ */, RDP_T_616060 /* =<< */, RDP_T_616262 /* =>> */, 
RDP_T_61124 /* =| */, RDP_T_626261 /* >>= */, RDP_T_12461 /* |= */, SET_END);
  set_assign_list(&rdp_e3_24_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_e4_6_first, RDP_T_60 /* < */, RDP_T_6061 /* <= */, RDP_T_6062 /* <> */, RDP_T_61 /* = */, 
RDP_T_62 /* > */, RDP_T_6261 /* >= */, SET_END);
  set_assign_list(&rdp_e4_7_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_e5_2_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_e6_2_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_e7_2_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_e8_2_first, RDP_T_43 /* + */, RDP_T_45 /* - */, SET_END);
  set_assign_list(&rdp_e8_3_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_e9_3_first, RDP_T_37 /* % */, RDP_T_42 /* * */, RDP_T_47 /* / */, SET_END);
  set_assign_list(&rdp_e9_4_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_identifier_0_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_identifier_1_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_prod_0_first, SCAN_P_ID, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_prod_6_first, SCAN_P_ID, RDP_T_35 /* # */, RDP_T_39 /* ' */, RDP_T_40 /* ( */, RDP_T_9142 /* [* */, 
RDP_T_96 /* ` */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_prod_7_first, SCAN_P_ID, RDP_T_35 /* # */, RDP_T_39 /* ' */, RDP_T_40 /* ( */, RDP_T_9142 /* [* */, 
RDP_T_96 /* ` */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_rule_0_first, SCAN_P_ID, RDP_T_35 /* # */, RDP_T_39 /* ' */, RDP_T_40 /* ( */, RDP_T_9142 /* [* */, 
RDP_T_96 /* ` */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_rule_1_first, SCAN_P_ID, RDP_T_35 /* # */, RDP_T_39 /* ' */, RDP_T_40 /* ( */, RDP_T_9142 /* [* */, 
RDP_T_96 /* ` */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_rule_2_first, SCAN_P_ID, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_rule_name_2_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_rule_name_3_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_rule_name_6_first, SCAN_P_ID, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_rules_0_first, SCAN_P_ID, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_rules_1_first, SCAN_P_ID, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_rules_2_first, SCAN_P_ID, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_script_0_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_script_1_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_34 /* " */, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rdp_text_2_first, SCAN_P_ID, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rule_first, SCAN_P_ID, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rule_stop, SCAN_P_ID, SCAN_P_EOF, RDP_T_40 /* ( */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&rule_name_first, SCAN_P_ID, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rule_name_stop, SCAN_P_ID, SCAN_P_EOF, RDP_T_35 /* # */, RDP_T_39 /* ' */, RDP_T_40 /* ( */, RDP_T_46 /* . */, 
RDP_T_585861 /* ::= */, RDP_T_9142 /* [* */, RDP_T_96 /* ` */, RDP_T_124 /* | */, 
RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&rules_first, SCAN_P_ID, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&rules_stop, SCAN_P_EOF, RDP_T_40 /* ( */,SET_END);
  set_assign_list(&script_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_34 /* " */, RDP_T_35 /* # */, 
RDP_T_36 /* $ */, RDP_T_3661 /* $= */, RDP_T_37 /* % */, RDP_T_3761 /* %= */, 
RDP_T_38 /* & */, RDP_T_3861 /* &= */, RDP_T_39 /* ' */, RDP_T_40 /* ( */, RDP_T_41 /* ) */, 
RDP_T_42 /* * */, RDP_T_4242 /* ** */, RDP_T_424261 /* **= */, RDP_T_4261 /* *= */, 
RDP_T_43 /* + */, RDP_T_4361 /* += */, RDP_T_45 /* - */, RDP_T_4561 /* -= */, 
RDP_T_46 /* . */, RDP_T_47 /* / */, RDP_T_4761 /* /= */, RDP_T_5858 /* :: */, 
RDP_T_5861 /* := */, RDP_T_60 /* < */, RDP_T_6060 /* << */, RDP_T_606061 /* <<= */, 
RDP_T_6061 /* <= */, RDP_T_6062 /* <> */, RDP_T_61 /* = */, RDP_T_6136 /* =$ */, 
RDP_T_6137 /* =% */, RDP_T_6138 /* =& */, RDP_T_6142 /* =* */, RDP_T_614242 /* =** */, 
RDP_T_6143 /* =+ */, RDP_T_6145 /* =- */, RDP_T_6147 /* =/ */, RDP_T_616060 /* =<< */, 
RDP_T_6161 /* == */, RDP_T_616262 /* =>> */, RDP_T_61124 /* =| */, RDP_T_62 /* > */, 
RDP_T_6261 /* >= */, RDP_T_6262 /* >> */, RDP_T_626261 /* >>= */, RDP_T_63 /* ? */, 
RDP_T_64 /* @ */, RDP_T_9142 /* [* */, RDP_T_93 /* ] */, RDP_T_96 /* ` */, RDP_T_124 /* | */, 
RDP_T_12461 /* |= */, RDP_T_126 /* ~ */,SET_END);
  set_assign_list(&text_first, SCAN_P_ID, RDP_T_40 /* ( */, RDP_T_126 /* ~ */, SET_END);
  set_assign_list(&text_stop, SCAN_P_EOF,SET_END);
}

/* Parser forward declarations and macros */
static void c_action(rdp_tree_node_data* rdp_tree);
static void character(rdp_tree_node_data* rdp_tree);
static void e1(rdp_tree_node_data* rdp_tree);
static void e10(rdp_tree_node_data* rdp_tree);
static void e11(rdp_tree_node_data* rdp_tree);
static void e12(rdp_tree_node_data* rdp_tree);
static void e13(rdp_tree_node_data* rdp_tree);
static void e14(rdp_tree_node_data* rdp_tree);
static void e2(rdp_tree_node_data* rdp_tree);
static void e3(rdp_tree_node_data* rdp_tree);
static void e4(rdp_tree_node_data* rdp_tree);
static void e5(rdp_tree_node_data* rdp_tree);
static void e6(rdp_tree_node_data* rdp_tree);
static void e7(rdp_tree_node_data* rdp_tree);
static void e8(rdp_tree_node_data* rdp_tree);
static void e9(rdp_tree_node_data* rdp_tree);
static void epsilon(rdp_tree_node_data* rdp_tree);
static char* identifier(rdp_tree_node_data* rdp_tree);
static void keyword(rdp_tree_node_data* rdp_tree);
static void prod(rdp_tree_node_data* rdp_tree);
static void rule(rdp_tree_node_data* rdp_tree);
static char* rule_name(rdp_tree_node_data* rdp_tree);
static void rules(rdp_tree_node_data* rdp_tree);
static void script(rdp_tree_node_data* rdp_tree);
void text(rdp_tree_node_data* rdp_tree);

/* Parser functions */
static void c_action(rdp_tree_node_data* rdp_tree)
{
  {
    if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
    scan_test(NULL, RDP_T_9142 /* [* */, &c_action_stop);
    scan_();
    if (rdp_pass == 2) { \
 rdp_tree->symbol_table_entry = script_symbol_find("`");\
                                               if (rdp_tree->symbol_table_entry->value == NULL)\
                                               {\
                                                 rdp_tree->symbol_table_entry->value = (script_value*) mem_calloc(1, sizeof(script_value));\
                                                 rdp_tree->symbol_table_entry->value->type = SCRIPT_P_C_ACTION;\
                                                 rdp_tree->symbol_table_entry->read_only = 1;\
                                               }\
                                             \
}
    scan_test_set(NULL, &c_action_stop, &c_action_stop);
   }
}

static void character(rdp_tree_node_data* rdp_tree)
{
  {
    if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
    scan_test(NULL, RDP_T_96 /* ` */, &character_stop);
    scan_();
    if (rdp_pass == 2) { \
 rdp_tree->symbol_table_entry = script_symbol_find("`");\
                                               if (rdp_tree->symbol_table_entry->value == NULL)\
                                               {\
                                                 rdp_tree->symbol_table_entry->value = (script_value*) mem_calloc(1, sizeof(script_value));\
                                                 rdp_tree->symbol_table_entry->value->type = SCRIPT_P_TERMINAL_ELEMENT;\
                                                 rdp_tree->symbol_table_entry->read_only = 1;\
                                               }\
                                             \
}
    scan_test_set(NULL, &character_stop, &character_stop);
   }
}

static void e1(rdp_tree_node_data* rdp_tree)
{
  {
    if(rdp_tree_update) {rdp_tree->id = "e2"; rdp_tree->token = 0;}
e2(rdp_tree);
    if (scan_test(NULL, RDP_T_6161 /* == */, NULL))
    { /* Start of rdp_e1_1 */
      while (1)
      {
        {
          if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
          scan_test(NULL, RDP_T_6161 /* == */, &e1_stop);
          scan_();
          e2(rdp_add_child("e2", rdp_tree));
          }
        break;   /* hi limit is 1! */
      }
    } /* end of rdp_e1_1 */
    else
    {
      /* default action processing for rdp_e1_1*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &e1_stop, &e1_stop);
   }
}

static void e10(rdp_tree_node_data* rdp_tree)
{
  {
    if(rdp_tree_update) {rdp_tree->id = "e11"; rdp_tree->token = 0;}
e11(rdp_tree);
    if (scan_test_set(NULL, &rdp_e10_2_first, NULL))
    { /* Start of rdp_e10_2 */
      while (1)
      {
        {
          if (scan_test(NULL, RDP_T_6060 /* << */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_6060 /* << */, &e10_stop);
            scan_();
            e11(rdp_add_child("e11", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_6262 /* >> */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_6262 /* >> */, &e10_stop);
            scan_();
            e11(rdp_add_child("e11", rdp_tree));
          }
          else
            scan_test_set(NULL, &rdp_e10_2_first, &e10_stop)          ;
          }
        if (!scan_test_set(NULL, &rdp_e10_2_first, NULL)) break;
      }
    } /* end of rdp_e10_2 */
    else
    {
      /* default action processing for rdp_e10_2*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &e10_stop, &e10_stop);
   }
}

static void e11(rdp_tree_node_data* rdp_tree)
{
  {
    e12(rdp_add_child("e12", rdp_tree));
    if (scan_test(NULL, RDP_T_4242 /* ** */, NULL))
    { /* Start of rdp_e11_1 */
      while (1)
      {
        {
          if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
          scan_test(NULL, RDP_T_4242 /* ** */, &e11_stop);
          scan_();
          e11(rdp_add_child("e11", rdp_tree));
          }
        break;   /* hi limit is 1! */
      }
    } /* end of rdp_e11_1 */
    else
    {
      /* default action processing for rdp_e11_1*/
      if (rdp_tree_update) {rdp_tree->id = NULL; rdp_tree->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &e11_stop, &e11_stop);
   }
}

static void e12(rdp_tree_node_data* rdp_tree)
{
  {
    if (scan_test_set(NULL, &rdp_e12_0_first, NULL))
    {
      if(rdp_tree_update) {rdp_tree->id = "e13"; rdp_tree->token = 0;}
e13(rdp_tree);
    }
    else
    if (scan_test(NULL, RDP_T_126 /* ~ */, NULL))
    {
      if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
      scan_test(NULL, RDP_T_126 /* ~ */, &e12_stop);
      scan_();
      e12(rdp_add_child("e12", rdp_tree));
    }
    else
      scan_test_set(NULL, &e12_first, &e12_stop)    ;
    scan_test_set(NULL, &e12_stop, &e12_stop);
   }
}

static void e13(rdp_tree_node_data* rdp_tree)
{
  {
    if(rdp_tree_update) {rdp_tree->id = "e14"; rdp_tree->token = 0;}
e14(rdp_tree);
    if (scan_test(NULL, RDP_T_5858 /* :: */, NULL))
    { /* Start of rdp_e13_1 */
      while (1)
      {
        {
          if (rdp_tree_update) rdp_add_child(NULL, rdp_tree);
          scan_test(NULL, RDP_T_5858 /* :: */, &e13_stop);
          scan_();
          if (rdp_tree_update) rdp_add_child(NULL, rdp_tree);
          scan_test(NULL, SCAN_P_ID, &e13_stop);
          scan_();
          }
        break;   /* hi limit is 1! */
      }
    } /* end of rdp_e13_1 */
    else
    {
      /* default action processing for rdp_e13_1*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &e13_stop, &e13_stop);
   }
}

static void e14(rdp_tree_node_data* rdp_tree)
{
  {
    if (scan_test(NULL, SCAN_P_ID, NULL))
    {
      if(rdp_tree_update) {rdp_tree->id = "identifier"; rdp_tree->token = 0;}
identifier(rdp_tree);
    }
    else
    if (scan_test(NULL, SCAN_P_INTEGER, NULL))
    {
      if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
      scan_test(NULL, SCAN_P_INTEGER, &e14_stop);
      scan_();
    }
    else
    if (scan_test(NULL, SCAN_P_REAL, NULL))
    {
      if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
      scan_test(NULL, SCAN_P_REAL, &e14_stop);
      scan_();
    }
    else
    if (scan_test(NULL, RDP_T_34 /* " */, NULL))
    {
      if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
      scan_test(NULL, RDP_T_34 /* " */, &e14_stop);
      scan_();
    }
    else
    if (scan_test(NULL, RDP_T_40 /* ( */, NULL))
    {
      if(rdp_tree_update) {rdp_tree->id = "script"; rdp_tree->token = 0;}
script(rdp_tree);
    }
    else
      scan_test_set(NULL, &e14_first, &e14_stop)    ;
    scan_test_set(NULL, &e14_stop, &e14_stop);
   }
}

static void e2(rdp_tree_node_data* rdp_tree)
{
  {
    if(rdp_tree_update) {rdp_tree->id = "e3"; rdp_tree->token = 0;}
e3(rdp_tree);
    if (scan_test_set(NULL, &rdp_e2_2_first, NULL))
    { /* Start of rdp_e2_2 */
      while (1)
      {
        {
          if (scan_test(NULL, RDP_T_63 /* ? */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_63 /* ? */, &e2_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_64 /* @ */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_64 /* @ */, &e2_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
            scan_test_set(NULL, &rdp_e2_2_first, &e2_stop)          ;
          }
        if (!scan_test_set(NULL, &rdp_e2_2_first, NULL)) break;
      }
    } /* end of rdp_e2_2 */
    else
    {
      /* default action processing for rdp_e2_2*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &e2_stop, &e2_stop);
   }
}

static void e3(rdp_tree_node_data* rdp_tree)
{
  {
    e4(rdp_add_child("e4", rdp_tree));
    if (scan_test_set(NULL, &rdp_e3_23_first, NULL))
    { /* Start of rdp_e3_23 */
      while (1)
      {
        {
          if (scan_test(NULL, RDP_T_5861 /* := */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_5861 /* := */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_12461 /* |= */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_12461 /* |= */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_3861 /* &= */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_3861 /* &= */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_3661 /* $= */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_3661 /* $= */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_4361 /* += */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_4361 /* += */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_4561 /* -= */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_4561 /* -= */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_4261 /* *= */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_4261 /* *= */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_4761 /* /= */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_4761 /* /= */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_3761 /* %= */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_3761 /* %= */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_606061 /* <<= */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_606061 /* <<= */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_626261 /* >>= */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_626261 /* >>= */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_424261 /* **= */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_424261 /* **= */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_61124 /* =| */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_61124 /* =| */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_6138 /* =& */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_6138 /* =& */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_6136 /* =$ */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_6136 /* =$ */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_6143 /* =+ */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_6143 /* =+ */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_6145 /* =- */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_6145 /* =- */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_6142 /* =* */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_6142 /* =* */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_6147 /* =/ */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_6147 /* =/ */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_6137 /* =% */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_6137 /* =% */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_616060 /* =<< */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_616060 /* =<< */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_616262 /* =>> */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_616262 /* =>> */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_614242 /* =** */, NULL))
          {
            if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
            scan_test(NULL, RDP_T_614242 /* =** */, &e3_stop);
            scan_();
            e3(rdp_add_child("e3", rdp_tree));
          }
          else
            scan_test_set(NULL, &rdp_e3_23_first, &e3_stop)          ;
          }
        break;   /* hi limit is 1! */
      }
    } /* end of rdp_e3_23 */
    else
    {
      /* default action processing for rdp_e3_23*/
      if (rdp_tree_update) {rdp_tree->id = NULL; rdp_tree->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &e3_stop, &e3_stop);
   }
}

static void e4(rdp_tree_node_data* rdp_tree)
{
  {
    if(rdp_tree_update) {rdp_tree->id = "e5"; rdp_tree->token = 0;}
e5(rdp_tree);
    if (scan_test_set(NULL, &rdp_e4_6_first, NULL))
    { /* Start of rdp_e4_6 */
      while (1)
      {
        {
          if (scan_test(NULL, RDP_T_62 /* > */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_62 /* > */, &e4_stop);
            scan_();
            e5(rdp_add_child("e5", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_60 /* < */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_60 /* < */, &e4_stop);
            scan_();
            e5(rdp_add_child("e5", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_6261 /* >= */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_6261 /* >= */, &e4_stop);
            scan_();
            e5(rdp_add_child("e5", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_6061 /* <= */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_6061 /* <= */, &e4_stop);
            scan_();
            e5(rdp_add_child("e5", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_61 /* = */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_61 /* = */, &e4_stop);
            scan_();
            e5(rdp_add_child("e5", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_6062 /* <> */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_6062 /* <> */, &e4_stop);
            scan_();
            e5(rdp_add_child("e5", rdp_tree));
          }
          else
            scan_test_set(NULL, &rdp_e4_6_first, &e4_stop)          ;
          }
        break;   /* hi limit is 1! */
      }
    } /* end of rdp_e4_6 */
    else
    {
      /* default action processing for rdp_e4_6*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &e4_stop, &e4_stop);
   }
}

static void e5(rdp_tree_node_data* rdp_tree)
{
  {
    if(rdp_tree_update) {rdp_tree->id = "e6"; rdp_tree->token = 0;}
e6(rdp_tree);
    if (scan_test(NULL, RDP_T_124 /* | */, NULL))
    { /* Start of rdp_e5_1 */
      while (1)
      {
        {
          if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
          scan_test(NULL, RDP_T_124 /* | */, &e5_stop);
          scan_();
          e6(rdp_add_child("e6", rdp_tree));
          }
        if (!scan_test(NULL, RDP_T_124 /* | */, NULL)) break;
      }
    } /* end of rdp_e5_1 */
    else
    {
      /* default action processing for rdp_e5_1*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &e5_stop, &e5_stop);
   }
}

static void e6(rdp_tree_node_data* rdp_tree)
{
  {
    if(rdp_tree_update) {rdp_tree->id = "e7"; rdp_tree->token = 0;}
e7(rdp_tree);
    if (scan_test(NULL, RDP_T_38 /* & */, NULL))
    { /* Start of rdp_e6_1 */
      while (1)
      {
        {
          if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
          scan_test(NULL, RDP_T_38 /* & */, &e6_stop);
          scan_();
          e7(rdp_add_child("e7", rdp_tree));
          }
        if (!scan_test(NULL, RDP_T_38 /* & */, NULL)) break;
      }
    } /* end of rdp_e6_1 */
    else
    {
      /* default action processing for rdp_e6_1*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &e6_stop, &e6_stop);
   }
}

static void e7(rdp_tree_node_data* rdp_tree)
{
  {
    if(rdp_tree_update) {rdp_tree->id = "e8"; rdp_tree->token = 0;}
e8(rdp_tree);
    if (scan_test(NULL, RDP_T_36 /* $ */, NULL))
    { /* Start of rdp_e7_1 */
      while (1)
      {
        {
          if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
          scan_test(NULL, RDP_T_36 /* $ */, &e7_stop);
          scan_();
          e8(rdp_add_child("e8", rdp_tree));
          }
        if (!scan_test(NULL, RDP_T_36 /* $ */, NULL)) break;
      }
    } /* end of rdp_e7_1 */
    else
    {
      /* default action processing for rdp_e7_1*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &e7_stop, &e7_stop);
   }
}

static void e8(rdp_tree_node_data* rdp_tree)
{
  {
    if(rdp_tree_update) {rdp_tree->id = "e9"; rdp_tree->token = 0;}
e9(rdp_tree);
    if (scan_test_set(NULL, &rdp_e8_2_first, NULL))
    { /* Start of rdp_e8_2 */
      while (1)
      {
        {
          if (scan_test(NULL, RDP_T_43 /* + */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_43 /* + */, &e8_stop);
            scan_();
            e9(rdp_add_child("e9", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_45 /* - */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_45 /* - */, &e8_stop);
            scan_();
            e9(rdp_add_child("e9", rdp_tree));
          }
          else
            scan_test_set(NULL, &rdp_e8_2_first, &e8_stop)          ;
          }
        if (!scan_test_set(NULL, &rdp_e8_2_first, NULL)) break;
      }
    } /* end of rdp_e8_2 */
    else
    {
      /* default action processing for rdp_e8_2*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &e8_stop, &e8_stop);
   }
}

static void e9(rdp_tree_node_data* rdp_tree)
{
  {
    if(rdp_tree_update) {rdp_tree->id = "e10"; rdp_tree->token = 0;}
e10(rdp_tree);
    if (scan_test_set(NULL, &rdp_e9_3_first, NULL))
    { /* Start of rdp_e9_3 */
      while (1)
      {
        {
          if (scan_test(NULL, RDP_T_42 /* * */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_42 /* * */, &e9_stop);
            scan_();
            e10(rdp_add_child("e10", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_47 /* / */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_47 /* / */, &e9_stop);
            scan_();
            e10(rdp_add_child("e10", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_37 /* % */, NULL))
          {
            if (rdp_tree_update) rdp_add_parent(NULL, rdp_tree);
            scan_test(NULL, RDP_T_37 /* % */, &e9_stop);
            scan_();
            e10(rdp_add_child("e10", rdp_tree));
          }
          else
            scan_test_set(NULL, &rdp_e9_3_first, &e9_stop)          ;
          }
        if (!scan_test_set(NULL, &rdp_e9_3_first, NULL)) break;
      }
    } /* end of rdp_e9_3 */
    else
    {
      /* default action processing for rdp_e9_3*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &e9_stop, &e9_stop);
   }
}

static void epsilon(rdp_tree_node_data* rdp_tree)
{
  char* pattern;
  {
    if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
    scan_test(NULL, RDP_T_35 /* # */, &epsilon_stop);
    pattern = SCAN_CAST->id;
    scan_();
    if (rdp_pass == 2) { \
 rdp_tree->symbol_table_entry = script_symbol_find(pattern);\
                                               if (rdp_tree->symbol_table_entry->value == NULL)\
                                               {\
                                                 rdp_tree->symbol_table_entry->value = (script_value*) mem_calloc(1, sizeof(script_value));\
                                                 rdp_tree->symbol_table_entry->value->type = SCRIPT_P_EPSILON;\
                                                 rdp_tree->symbol_table_entry->read_only = 1;\
                                               }\
                           \
}
    scan_test_set(NULL, &epsilon_stop, &epsilon_stop);
   }
}

static char* identifier(rdp_tree_node_data* rdp_tree)
{
  char* result;
  {
    if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
    scan_test(NULL, SCAN_P_ID, &identifier_stop);
    result = SCAN_CAST->id;
    scan_();
    if (rdp_pass == 2) { \
 rdp_tree->symbol_table_entry = script_symbol_find(result);  \
}
    if (scan_test(NULL, RDP_T_91 /* [ */, NULL))
    { /* Start of rdp_identifier_3 */
      while (1)
      {
        {
          scan_test(NULL, RDP_T_91 /* [ */, &identifier_stop);
          scan_();
          { /* Start of rdp_identifier_1 */
            while (1)
            {
              scan_test_set(NULL, &rdp_identifier_1_first, &identifier_stop);
              {
                e1(rdp_add_child("e1", rdp_tree));
                }
              if (!scan_test_set(NULL, &rdp_identifier_1_first, NULL)) break;
            }
          } /* end of rdp_identifier_1 */
          scan_test(NULL, RDP_T_93 /* ] */, &identifier_stop);
          scan_();
          }
        break;   /* hi limit is 1! */
      }
    } /* end of rdp_identifier_3 */
    else
    {
      /* default action processing for rdp_identifier_3*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &identifier_stop, &identifier_stop);
   }
  return result;
}

static void keyword(rdp_tree_node_data* rdp_tree)
{
  {
    if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
    scan_test(NULL, RDP_T_39 /* ' */, &keyword_stop);
    scan_();
    if (rdp_pass == 2) { \
 rdp_tree->symbol_table_entry = script_symbol_find("''");\
                                               if (rdp_tree->symbol_table_entry->value == NULL)\
                                               {\
                                                 rdp_tree->symbol_table_entry->value = (script_value*) mem_calloc(1, sizeof(script_value));\
                                                 rdp_tree->symbol_table_entry->value->type = SCRIPT_P_TERMINAL;\
                                                 rdp_tree->symbol_table_entry->read_only = 1;\
                                               }\
                                             \
}
    scan_test_set(NULL, &keyword_stop, &keyword_stop);
   }
}

static void prod(rdp_tree_node_data* rdp_tree)
{
  {
    { /* Start of rdp_prod_6 */
      while (1)
      {
        scan_test_set(NULL, &rdp_prod_6_first, &prod_stop);
        {
          if (scan_test_set(NULL, &rdp_prod_0_first, NULL))
          {
            rule_name(rdp_add_child("rule_name", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_39 /* ' */, NULL))
          {
            keyword(rdp_add_child("keyword", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_35 /* # */, NULL))
          {
            epsilon(rdp_add_child("epsilon", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_9142 /* [* */, NULL))
          {
            c_action(rdp_add_child("c_action", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_96 /* ` */, NULL))
          {
            character(rdp_add_child("character", rdp_tree));
          }
          else
          if (scan_test(NULL, RDP_T_40 /* ( */, NULL))
          {
            script(rdp_add_child("script", rdp_tree));
          }
          else
            scan_test_set(NULL, &rdp_prod_6_first, &prod_stop)          ;
          }
        if (!scan_test_set(NULL, &rdp_prod_6_first, NULL)) break;
      }
    } /* end of rdp_prod_6 */
    scan_test_set(NULL, &prod_stop, &prod_stop);
   }
}

static void rule(rdp_tree_node_data* rdp_tree)
{
  char* name;
  {
    if (rdp_pass == 2) { \
 script_open_scope();  \
}
    if(rdp_tree_update) {rdp_tree->id = "rule_name"; rdp_tree->token = 0;}
name = rule_name(rdp_tree);
    if (rdp_pass == 2) { \
 script_name_scope(name);  \
}if (rdp_pass == 1) { \
 script_symbol_find(name);  \
}
    scan_test(NULL, RDP_T_585861 /* ::= */, &rule_stop);
    scan_();
    { /* Start of rdp_rule_1 */
      while (1)
      {
        scan_test_set(NULL, &rdp_rule_1_first, &rule_stop);
        {
          prod(rdp_add_child("prod", rdp_tree));
          }
        if (SCAN_CAST->token != RDP_T_124 /* | */) break;
        scan_();
      }
    } /* end of rdp_rule_1 */
    scan_test(NULL, RDP_T_46 /* . */, &rule_stop);
    scan_();
    if (rdp_pass == 2) { \
 script_close_scope();  \
}
    scan_test_set(NULL, &rule_stop, &rule_stop);
   }
}

static char* rule_name(rdp_tree_node_data* rdp_tree)
{
  char* result;
  {
     int tilde = 0; 
    if (scan_test(NULL, RDP_T_126 /* ~ */, NULL))
    { /* Start of rdp_rule_name_1 */
      while (1)
      {
        {
          if (rdp_tree_update) rdp_add_child(NULL, rdp_tree);
          scan_test(NULL, RDP_T_126 /* ~ */, &rule_name_stop);
          scan_();
           tilde = 1; 
          }
        break;   /* hi limit is 1! */
      }
    } /* end of rdp_rule_name_1 */
    else
    {
      /* default action processing for rdp_rule_name_1*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    if (rdp_tree_update) memcpy(rdp_tree, text_scan_data, sizeof(scan_data));
    scan_test(NULL, SCAN_P_ID, &rule_name_stop);
    result = SCAN_CAST->id;
    scan_();
    if (rdp_pass == 2) { \
 rdp_tree->symbol_table_entry = script_symbol_find(result);\
                                    if (rdp_tree->symbol_table_entry->value == NULL)\
                                    {\
                                      rdp_tree->symbol_table_entry->value = (script_value*) mem_calloc(1, sizeof(script_value));\
                                      rdp_tree->symbol_table_entry->value->type = SCRIPT_P_NONTERMINAL;\
                                      rdp_tree->symbol_table_entry->value->v_POINTER = rdp_tree;\
                                      rdp_tree->symbol_table_entry->read_only = 1;\
                                    }\
                                    rdp_tree->tilde = tilde;\
                                  \
}
    if (scan_test(NULL, RDP_T_91 /* [ */, NULL))
    { /* Start of rdp_rule_name_5 */
      while (1)
      {
        {
          scan_test(NULL, RDP_T_91 /* [ */, &rule_name_stop);
          scan_();
          { /* Start of rdp_rule_name_3 */
            while (1)
            {
              scan_test_set(NULL, &rdp_rule_name_3_first, &rule_name_stop);
              {
                e1(rdp_add_child("e1", rdp_tree));
                }
              if (!scan_test_set(NULL, &rdp_rule_name_3_first, NULL)) break;
            }
          } /* end of rdp_rule_name_3 */
          scan_test(NULL, RDP_T_93 /* ] */, &rule_name_stop);
          scan_();
          }
        break;   /* hi limit is 1! */
      }
    } /* end of rdp_rule_name_5 */
    else
    {
      /* default action processing for rdp_rule_name_5*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &rule_name_stop, &rule_name_stop);
   }
  return result;
}

static void rules(rdp_tree_node_data* rdp_tree)
{
  {
    if (scan_test_set(NULL, &rdp_rules_1_first, NULL))
    { /* Start of rdp_rules_1 */
      while (1)
      {
        {
          rule(rdp_add_child("rule", rdp_tree));
          }
        if (!scan_test_set(NULL, &rdp_rules_1_first, NULL)) break;
      }
    } /* end of rdp_rules_1 */
    else
    {
      /* default action processing for rdp_rules_1*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test_set(NULL, &rules_stop, &rules_stop);
   }
}

static void script(rdp_tree_node_data* rdp_tree)
{
  {
    scan_test(NULL, RDP_T_40 /* ( */, &script_stop);
    scan_();
    if (scan_test_set(NULL, &rdp_script_1_first, NULL))
    { /* Start of rdp_script_1 */
      while (1)
      {
        {
          e1(rdp_add_child("e1", rdp_tree));
          }
        if (!scan_test_set(NULL, &rdp_script_1_first, NULL)) break;
      }
    } /* end of rdp_script_1 */
    else
    {
      /* default action processing for rdp_script_1*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
    }
    scan_test(NULL, RDP_T_41 /* ) */, &script_stop);
    scan_();
    scan_test_set(NULL, &script_stop, &script_stop);
   }
}

void text(rdp_tree_node_data* rdp_tree)
{
  {
    rules(rdp_add_child("rules", rdp_tree));
    if (scan_test(NULL, RDP_T_40 /* ( */, NULL))
    { /* Start of rdp_text_1 */
      while (1)
      {
        {
          if (rdp_pass == 2) { \
 script_open_scope(); script_name_scope("main script scope");  \
}
          script(rdp_add_child("script", rdp_tree));
          if (rdp_pass == 2) { \
 script_close_scope();  \
}
          }
        break;   /* hi limit is 1! */
      }
    } /* end of rdp_text_1 */
    else
    {
      /* default action processing for rdp_text_1*/
      if (rdp_tree_update) {rdp_tree_node_data *temp = rdp_add_child(NULL, rdp_tree); temp->id = NULL; temp->token = SCAN_P_ID;}
 text_message(TEXT_FATAL, "no script found in '%s'\n", rdp_sourcefilename); 
    }
    scan_test_set(NULL, &text_stop, &text_stop);
   }
}

int main(int argc, char *argv[])
{
  clock_t rdp_finish_time, rdp_start_time = clock();
  int
    rdp_symbol_statistics = 0,    /* show symbol_ table statistics flag */
    rdp_line_echo_all = 0,        /* make a listing on all passes flag */
    rdp_filter = 0,               /* filter flag */
    rdp_line_echo = 0,            /* make listing flag */

    rdp_lexicalise = 0;            /* print lexicalised output flag */

  unsigned long rdp_textsize = 170000l;   /* size of scanner text array */

  unsigned long rdp_tabwidth = 8l;   /* tab expansion width */

  char* rdp_vcg_filename = NULL;      /* filename for -V option */

  rdp_tree_node_data* rdp_tree = (rdp_tree_node_data*) graph_insert_graph("RDP derivation tree");  /* hook for derivation tree */
  rdp_tree_node_data* rdp_tree_root;

  arg_message("GTB V2.5 (c) Adrian Johnstone 2000-2005\n" RDP_STAMP "\n\n""Usage: gtb [options] source[.gtb]");

  arg_message("");
  arg_boolean('f', "Filter mode (read from stdin and write to stdout)", &rdp_filter);
  arg_boolean('l', "Make a listing", &rdp_line_echo);
  arg_boolean('L', "Print lexicalised source file", &rdp_lexicalise);
  arg_string ('o', "Write output to filename", &rdp_outputfilename);
  arg_boolean('s', "Echo each scanner symbol as it is read", &rdp_symbol_echo);
  arg_boolean('S', "Print summary symbol table statistics", &rdp_symbol_statistics);
  arg_numeric('t', "Tab expansion width (default 8)", &rdp_tabwidth);
  arg_numeric('T', "Text buffer size in bytes for scanner (default 20000)", &rdp_textsize);
  arg_boolean('v', "Set verbose mode", &rdp_verbose);
  arg_string ('V', "Write derivation tree to filename in VCG format", &rdp_vcg_filename);

  rdp_sourcefilenames = arg_process(argc, argv);

  /* Fix up filetypes */
  for (rdp_sourcefilenumber = 0; rdp_sourcefilenames[rdp_sourcefilenumber] != NULL; rdp_sourcefilenumber++)
    rdp_sourcefilenames[rdp_sourcefilenumber] = text_default_filetype(rdp_sourcefilenames[rdp_sourcefilenumber], "gtb");

  if (rdp_filter)
  {
    rdp_sourcefilenames[0] = "-";
    rdp_outputfilename = "-";
    rdp_sourcefilenames[1] = NULL;     /* make sure no further filenames are taken from the array */

  }
  if ((rdp_sourcefilename = rdp_sourcefilenames[0]) == NULL)
     arg_help("no source files specified");

  if (rdp_sourcefilenames[1] != NULL)
    text_message(TEXT_FATAL, "multiple source files not allowed\n");
  text_init(rdp_textsize, 25, 100, (int) rdp_tabwidth);
  scan_init(0, 0, 0, rdp_symbol_echo, rdp_tokens);
  if (rdp_lexicalise)
    scan_lexicalise();
  rdp_set_initialise();
  rdp_load_keywords();
   script_initialise(rdp_sourcefilename); 
  if (rdp_verbose)
     text_printf("\nGTB V2.5 (c) Adrian Johnstone 2000-2005\n" RDP_STAMP "\n\n");
  for (rdp_pass = 1; rdp_pass <= RDP_PASSES; rdp_pass++)
  {
    rdp_tree_update = rdp_pass == RDP_PASSES;
    text_echo(rdp_line_echo_all || (rdp_line_echo && rdp_pass == RDP_PASSES));

    for (rdp_sourcefilenumber = 0; (rdp_sourcefilename = rdp_sourcefilenames[rdp_sourcefilenumber]) != NULL; rdp_sourcefilenumber++)
    {
      if (text_open(rdp_sourcefilename) == NULL)
        arg_help("unable to open source file");

      text_get_char();
      scan_();

      text(rdp_tree_root = rdp_add_node("text", rdp_tree));            /* call parser at top level */
      if (text_total_errors() != 0)
        text_message(TEXT_FATAL, "error%s detected in source file 'gtb'\n", text_total_errors() == 1 ? "" : "s", rdp_sourcefilename);   /* crash quietly */ 
      graph_epsilon_prune_rdp_tree(rdp_tree_root, sizeof(rdp_tree_edge_data));
    }
  }

  rdp_sourcefilename = rdp_sourcefilenames[0];     /* Reset filename to first file in the list */

  graph_set_root(rdp_tree, rdp_tree_root);
  if (rdp_vcg_filename != NULL)
  {
    FILE *rdp_vcg_file;

    if (*rdp_vcg_filename == '\0')   /* No filename supplied */
      rdp_vcg_filename = "rdparser";
    rdp_vcg_file = fopen((rdp_vcg_filename = text_default_filetype(rdp_vcg_filename, "vcg")), "w");

    if (rdp_vcg_file == NULL)
      text_message(TEXT_FATAL, "unable to open VCG file '%s' for write\n", rdp_vcg_filename);

    if (rdp_verbose)
      text_message(TEXT_INFO, "Dumping derivation tree to VCG file '%s'\n", rdp_vcg_filename);

    text_redirect(rdp_vcg_file);
    graph_vcg(rdp_tree, NULL, scan_vcg_print_node, scan_vcg_print_edge);
    text_redirect(stdout);
    fclose(rdp_vcg_file);
  }

   script_process(rdp_tree); 
  if (rdp_symbol_statistics)
  {
    symbol_print_all_table_statistics(11);
    symbol_print_all_table();

  }
  text_print_total_errors();
  if (rdp_verbose)
  {
    rdp_finish_time = clock();
    text_message(TEXT_INFO, "%.3f CPU seconds used\n", ((double) (rdp_finish_time-rdp_start_time)) / CLOCKS_PER_SEC);
  }
  return rdp_error_return;
}

/* End of gtb.c */
