home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
cs.rhul.ac.uk
/
www.cs.rhul.ac.uk.zip
/
www.cs.rhul.ac.uk
/
pub
/
rdp
/
rdp_cs3460.tar
/
test.c
< prev
next >
Wrap
C/C++ Source or Header
|
2009-02-05
|
90KB
|
2,134 lines
/*******************************************************************************
*
* Parser generated by RDP on Dec 20 1997 19:18:32 from rdp.bnf
*
*******************************************************************************/
#include <time.h>
#include "arg.h"
#include "graph.h"
#include "memalloc.h"
#include "scan.h"
#include "set.h"
#include "symbol.h"
#include "textio.h"
#include "rdp_aux.h"
#include "rdp_gram.h"
#include "rdp_prnt.h"
#include "rdp.h"
char
* rdp_sourcefilename = NULL, /* source file name */
* rdp_outputfilename = "rdparser"; /* output file name */
int
rdp_symbol_echo = 0, /* symbol echo flag */
rdp_verbose = 0, /* verbosity flag */
rdp_pass; /* pass number */
int rdp_error_return = 0; /* return value for main routine */
char * rdp_tokens = "IGNORE"
"ID" "INTEGER" "REAL" "CHAR" "CHAR_ESC" "STRING" "STRING_ESC" "COMMENT"
"COMMENT_VISIBLE" "COMMENT_NEST" "COMMENT_NEST_VISIBLE" "COMMENT_LINE" "COMMENT_LINE_VISIBLE" "EOF" "EOLN" "\'\"\'"
"\'#\'" "\'\'\'" "\'(\'" "\'(*\'" "\')\'" "\'*\'" "\'.\'" "\':\'"
"\'::\'" "\'::=\'" "\'<\'" "\'>\'" "\'@\'" "\'ALT_ID\'" "\'ANNOTATED_EPSILON_TREE\'" "\'ARG_BLANK\'"
"\'ARG_BOOLEAN\'" "\'ARG_NUMERIC\'" "\'ARG_STRING\'" "\'CASE_INSENSITIVE\'" "\'CHAR\'" "\'CHAR_ESC\'" "\'COMMENT\'" "\'COMMENT_LINE\'"
"\'COMMENT_LINE_VISIBLE\'" "\'COMMENT_NEST\'" "\'COMMENT_NEST_VISIBLE\'" "\'COMMENT_VISIBLE\'" "\'EPSILON_TREE\'" "\'HASH_PRIME\'" "\'HASH_SIZE\'" "\'INCLUDE\'"
"\'INTERPRETER\'" "\'MAX_ERRORS\'" "\'MAX_WARNINGS\'" "\'NEW_ID\'" "\'NUMBER\'" "\'OPTION\'" "\'OUTPUT_FILE\'" "\'PARSER\'"
"\'PASSES\'" "\'POST_PARSE\'" "\'POST_PROCESS\'" "\'PRE_PARSE\'" "\'PRE_PROCESS\'" "\'SET_SIZE\'" "\'SHOW_SKIPS\'" "\'STRING\'"
"\'STRING_ESC\'" "\'SUFFIX\'" "\'SYMBOL_TABLE\'" "\'TAB_WIDTH\'" "\'TEXT_SIZE\'" "\'TITLE\'" "\'TREE\'" "\'USES\'"
"\'[\'" "\'[*\'" "\']\'" "\'^\'" "\'^^\'" "\'^^^\'" "\'^_\'" "\'{\'"
"\'|\'" "\'}\'";
locals_data * locals_temp = NULL;
void * locals = NULL;
codes_data * codes_temp = NULL;
void * codes = NULL;
tokens_data * tokens_temp = NULL;
void * tokens = NULL;
rdp_data * rdp_temp = NULL;
void * rdp = NULL;
/* Load keywords */
static void rdp_load_keywords(void)
{
scan_load_keyword("\"", "\\", RDP_T_16 /* " */ , SCAN_P_STRING_ESC);
scan_load_keyword("#", NULL, RDP_T_17 /* # */ , SCAN_P_IGNORE);
scan_load_keyword("\'", "\\", RDP_T_18 /* ' */ , SCAN_P_STRING_ESC);
scan_load_keyword("(", NULL, RDP_T_19 /* ( */ , SCAN_P_IGNORE);
scan_load_keyword("(*", "*)", RDP_T_20 /* (* */ , SCAN_P_COMMENT);
scan_load_keyword(")", NULL, RDP_T_21 /* ) */ , SCAN_P_IGNORE);
scan_load_keyword("*", NULL, RDP_T_22 /* * */ , SCAN_P_IGNORE);
scan_load_keyword(".", NULL, RDP_T_23 /* . */ , SCAN_P_IGNORE);
scan_load_keyword(":", NULL, RDP_T_24 /* : */ , SCAN_P_IGNORE);
scan_load_keyword("::", NULL, RDP_T_25 /* :: */ , SCAN_P_IGNORE);
scan_load_keyword("::=", NULL, RDP_T_26 /* ::= */ , SCAN_P_IGNORE);
scan_load_keyword("<", NULL, RDP_T_27 /* < */ , SCAN_P_IGNORE);
scan_load_keyword(">", NULL, RDP_T_28 /* > */ , SCAN_P_IGNORE);
scan_load_keyword("@", NULL, RDP_T_29 /* @ */ , SCAN_P_IGNORE);
scan_load_keyword("ALT_ID", NULL, RDP_T_ALT_ID, SCAN_P_IGNORE);
scan_load_keyword("ANNOTATED_EPSILON_TREE", NULL, RDP_T_ANNOTATED_EPSILON_TREE, SCAN_P_IGNORE);
scan_load_keyword("ARG_BLANK", NULL, RDP_T_ARG_BLANK, SCAN_P_IGNORE);
scan_load_keyword("ARG_BOOLEAN", NULL, RDP_T_ARG_BOOLEAN, SCAN_P_IGNORE);
scan_load_keyword("ARG_NUMERIC", NULL, RDP_T_ARG_NUMERIC, SCAN_P_IGNORE);
scan_load_keyword("ARG_STRING", NULL, RDP_T_ARG_STRING, SCAN_P_IGNORE);
scan_load_keyword("CASE_INSENSITIVE", NULL, RDP_T_CASE_INSENSITIVE, SCAN_P_IGNORE);
scan_load_keyword("CHAR", NULL, RDP_T_CHAR, SCAN_P_IGNORE);
scan_load_keyword("CHAR_ESC", NULL, RDP_T_CHAR_ESC, SCAN_P_IGNORE);
scan_load_keyword("COMMENT", NULL, RDP_T_COMMENT, SCAN_P_IGNORE);
scan_load_keyword("COMMENT_LINE", NULL, RDP_T_COMMENT_LINE, SCAN_P_IGNORE);
scan_load_keyword("COMMENT_LINE_VISIBLE", NULL, RDP_T_COMMENT_LINE_VISIBLE, SCAN_P_IGNORE);
scan_load_keyword("COMMENT_NEST", NULL, RDP_T_COMMENT_NEST, SCAN_P_IGNORE);
scan_load_keyword("COMMENT_NEST_VISIBLE", NULL, RDP_T_COMMENT_NEST_VISIBLE, SCAN_P_IGNORE);
scan_load_keyword("COMMENT_VISIBLE", NULL, RDP_T_COMMENT_VISIBLE, SCAN_P_IGNORE);
scan_load_keyword("EPSILON_TREE", NULL, RDP_T_EPSILON_TREE, SCAN_P_IGNORE);
scan_load_keyword("HASH_PRIME", NULL, RDP_T_HASH_PRIME, SCAN_P_IGNORE);
scan_load_keyword("HASH_SIZE", NULL, RDP_T_HASH_SIZE, SCAN_P_IGNORE);
scan_load_keyword("INCLUDE", NULL, RDP_T_INCLUDE, SCAN_P_IGNORE);
scan_load_keyword("INTERPRETER", NULL, RDP_T_INTERPRETER, SCAN_P_IGNORE);
scan_load_keyword("MAX_ERRORS", NULL, RDP_T_MAX_ERRORS, SCAN_P_IGNORE);
scan_load_keyword("MAX_WARNINGS", NULL, RDP_T_MAX_WARNINGS, SCAN_P_IGNORE);
scan_load_keyword("NEW_ID", NULL, RDP_T_NEW_ID, SCAN_P_IGNORE);
scan_load_keyword("NUMBER", NULL, RDP_T_NUMBER, SCAN_P_IGNORE);
scan_load_keyword("OPTION", NULL, RDP_T_OPTION, SCAN_P_IGNORE);
scan_load_keyword("OUTPUT_FILE", NULL, RDP_T_OUTPUT_FILE, SCAN_P_IGNORE);
scan_load_keyword("PARSER", NULL, RDP_T_PARSER, SCAN_P_IGNORE);
scan_load_keyword("PASSES", NULL, RDP_T_PASSES, SCAN_P_IGNORE);
scan_load_keyword("POST_PARSE", NULL, RDP_T_POST_PARSE, SCAN_P_IGNORE);
scan_load_keyword("POST_PROCESS", NULL, RDP_T_POST_PROCESS, SCAN_P_IGNORE);
scan_load_keyword("PRE_PARSE", NULL, RDP_T_PRE_PARSE, SCAN_P_IGNORE);
scan_load_keyword("PRE_PROCESS", NULL, RDP_T_PRE_PROCESS, SCAN_P_IGNORE);
scan_load_keyword("SET_SIZE", NULL, RDP_T_SET_SIZE, SCAN_P_IGNORE);
scan_load_keyword("SHOW_SKIPS", NULL, RDP_T_SHOW_SKIPS, SCAN_P_IGNORE);
scan_load_keyword("STRING", NULL, RDP_T_STRING, SCAN_P_IGNORE);
scan_load_keyword("STRING_ESC", NULL, RDP_T_STRING_ESC, SCAN_P_IGNORE);
scan_load_keyword("SUFFIX", NULL, RDP_T_SUFFIX, SCAN_P_IGNORE);
scan_load_keyword("SYMBOL_TABLE", NULL, RDP_T_SYMBOL_TABLE, SCAN_P_IGNORE);
scan_load_keyword("TAB_WIDTH", NULL, RDP_T_TAB_WIDTH, SCAN_P_IGNORE);
scan_load_keyword("TEXT_SIZE", NULL, RDP_T_TEXT_SIZE, SCAN_P_IGNORE);
scan_load_keyword("TITLE", NULL, RDP_T_TITLE, SCAN_P_IGNORE);
scan_load_keyword("TREE", NULL, RDP_T_TREE, SCAN_P_IGNORE);
scan_load_keyword("USES", NULL, RDP_T_USES, SCAN_P_IGNORE);
scan_load_keyword("[", NULL, RDP_T_73 /* [ */ , SCAN_P_IGNORE);
scan_load_keyword("[*", "*]", RDP_T_74 /* [* */ , SCAN_P_COMMENT_VISIBLE);
scan_load_keyword("]", NULL, RDP_T_75 /* ] */ , SCAN_P_IGNORE);
scan_load_keyword("^", NULL, RDP_T_76 /* ^ */ , SCAN_P_IGNORE);
scan_load_keyword("^^", NULL, RDP_T_77 /* ^^ */ , SCAN_P_IGNORE);
scan_load_keyword("^^^", NULL, RDP_T_78 /* ^^^ */ , SCAN_P_IGNORE);
scan_load_keyword("^_", NULL, RDP_T_79 /* ^_ */ , SCAN_P_IGNORE);
scan_load_keyword("{", NULL, RDP_T_80 /* { */ , SCAN_P_IGNORE);
scan_load_keyword("|", NULL, RDP_T_81 /* | */ , SCAN_P_IGNORE);
scan_load_keyword("}", NULL, RDP_T_82 /* } */ , SCAN_P_IGNORE);
}
/* Set declarations */
set_ String_stop = SET_NULL;
set_ code_stop = SET_NULL;
set_ comment_stop = SET_NULL;
set_ dir_first = SET_NULL;
set_ dir_stop = SET_NULL;
set_ item_com_first = SET_NULL;
set_ item_com_stop = SET_NULL;
set_ item_inl_first = SET_NULL;
set_ item_inl_stop = SET_NULL;
set_ item_ret_first = SET_NULL;
set_ item_ret_stop = SET_NULL;
set_ prod_first = SET_NULL;
set_ prod_stop = SET_NULL;
set_ rdp_dir_11_first = SET_NULL;
set_ rdp_dir_3_first = SET_NULL;
set_ rdp_dir_30_first = SET_NULL;
set_ rdp_dir_33_first = SET_NULL;
set_ rdp_dir_7_first = SET_NULL;
set_ rdp_item_inl_14_first = SET_NULL;
set_ rdp_item_inl_15_first = SET_NULL;
set_ rdp_item_inl_16_first = SET_NULL;
set_ rdp_item_inl_21_first = SET_NULL;
set_ rdp_item_inl_22_first = SET_NULL;
set_ rdp_item_inl_9_first = SET_NULL;
set_ rdp_item_ret_4_first = SET_NULL;
set_ rdp_item_ret_5_first = SET_NULL;
set_ rdp_item_ret_6_first = SET_NULL;
set_ rdp_prod_0_first = SET_NULL;
set_ rdp_prod_1_first = SET_NULL;
set_ rdp_prod_2_first = SET_NULL;
set_ rdp_rule_16_first = SET_NULL;
set_ rdp_seq_0_first = SET_NULL;
set_ rdp_seq_1_first = SET_NULL;
set_ rdp_seq_10_first = SET_NULL;
set_ rdp_seq_17_first = SET_NULL;
set_ rdp_seq_2_first = SET_NULL;
set_ rdp_seq_23_first = SET_NULL;
set_ rdp_seq_24_first = SET_NULL;
set_ rdp_seq_25_first = SET_NULL;
set_ rdp_seq_28_first = SET_NULL;
set_ rdp_seq_29_first = SET_NULL;
set_ rdp_seq_30_first = SET_NULL;
set_ rdp_seq_31_first = SET_NULL;
set_ rdp_seq_32_first = SET_NULL;
set_ rdp_seq_9_first = SET_NULL;
set_ rdp_unit_1_first = SET_NULL;
set_ rdp_unit_2_first = SET_NULL;
set_ rdp_unit_3_first = SET_NULL;
set_ rule_stop = SET_NULL;
set_ seq_first = SET_NULL;
set_ seq_stop = SET_NULL;
set_ token_stop = SET_NULL;
set_ unit_first = SET_NULL;
set_ unit_stop = SET_NULL;
/* Initialise sets */
static void rdp_set_initialise(void)
{
set_assign_list(& String_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_16 /* " */ , RDP_T_18 /* ' */ ,
RDP_T_19 /* ( */ , RDP_T_21 /* ) */ , RDP_T_23 /* . */ , RDP_T_24 /* : */ , RDP_T_27 /* < */ ,
RDP_T_28 /* > */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_75 /* ] */ , RDP_T_76 /* ^ */ , RDP_T_77 /* ^^ */ , RDP_T_78 /* ^^^ */ ,
RDP_T_79 /* ^_ */ , RDP_T_80 /* { */ , RDP_T_81 /* | */ , RDP_T_82 /* } */ , SET_END);
set_assign_list(& code_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_16 /* " */ , RDP_T_18 /* ' */ ,
RDP_T_19 /* ( */ , RDP_T_21 /* ) */ , RDP_T_23 /* . */ , RDP_T_24 /* : */ , RDP_T_27 /* < */ ,
RDP_T_28 /* > */ , RDP_T_29 /* @ */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC,
RDP_T_COMMENT, RDP_T_COMMENT_LINE, RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST,
RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE, RDP_T_NEW_ID, RDP_T_NUMBER,
RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ , RDP_T_74 /* [* */ , RDP_T_75 /* ] */ ,
RDP_T_76 /* ^ */ , RDP_T_77 /* ^^ */ , RDP_T_78 /* ^^^ */ , RDP_T_79 /* ^_ */ , RDP_T_80 /* { */ ,
RDP_T_81 /* | */ , RDP_T_82 /* } */ , SET_END);
set_assign_list(& comment_stop, SCAN_P_EOF, SET_END);
set_assign_list(& dir_first, RDP_T_ANNOTATED_EPSILON_TREE, RDP_T_ARG_BLANK, RDP_T_ARG_BOOLEAN, RDP_T_ARG_NUMERIC,
RDP_T_ARG_STRING, RDP_T_CASE_INSENSITIVE, RDP_T_EPSILON_TREE, RDP_T_HASH_PRIME,
RDP_T_HASH_SIZE, RDP_T_INCLUDE, RDP_T_INTERPRETER, RDP_T_MAX_ERRORS, RDP_T_MAX_WARNINGS,
RDP_T_OPTION, RDP_T_OUTPUT_FILE, RDP_T_PARSER, RDP_T_PASSES, RDP_T_POST_PARSE,
RDP_T_POST_PROCESS, RDP_T_PRE_PARSE, RDP_T_PRE_PROCESS, RDP_T_SET_SIZE, RDP_T_SHOW_SKIPS,
RDP_T_SUFFIX, RDP_T_SYMBOL_TABLE, RDP_T_TAB_WIDTH, RDP_T_TEXT_SIZE, RDP_T_TITLE,
RDP_T_TREE, RDP_T_USES, SET_END);
set_assign_list(& dir_stop, SCAN_P_ID, SCAN_P_EOF, RDP_T_ANNOTATED_EPSILON_TREE, RDP_T_ARG_BLANK, RDP_T_ARG_BOOLEAN,
RDP_T_ARG_NUMERIC, RDP_T_ARG_STRING, RDP_T_CASE_INSENSITIVE, RDP_T_EPSILON_TREE,
RDP_T_HASH_PRIME, RDP_T_HASH_SIZE, RDP_T_INCLUDE, RDP_T_INTERPRETER, RDP_T_MAX_ERRORS,
RDP_T_MAX_WARNINGS, RDP_T_OPTION, RDP_T_OUTPUT_FILE, RDP_T_PARSER, RDP_T_PASSES,
RDP_T_POST_PARSE, RDP_T_POST_PROCESS, RDP_T_PRE_PARSE, RDP_T_PRE_PROCESS, RDP_T_SET_SIZE,
RDP_T_SHOW_SKIPS, RDP_T_SUFFIX, RDP_T_SYMBOL_TABLE, RDP_T_TAB_WIDTH, RDP_T_TEXT_SIZE,
RDP_T_TITLE, RDP_T_TREE, RDP_T_USES, SET_END);
set_assign_list(& item_com_first, RDP_T_COMMENT, RDP_T_COMMENT_LINE, RDP_T_COMMENT_NEST, SET_END);
set_assign_list(& item_com_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_16 /* " */ , RDP_T_18 /* ' */ ,
RDP_T_19 /* ( */ , RDP_T_21 /* ) */ , RDP_T_23 /* . */ , RDP_T_24 /* : */ , RDP_T_27 /* < */ ,
RDP_T_28 /* > */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_75 /* ] */ , RDP_T_76 /* ^ */ , RDP_T_77 /* ^^ */ , RDP_T_78 /* ^^^ */ ,
RDP_T_79 /* ^_ */ , RDP_T_80 /* { */ , RDP_T_81 /* | */ , RDP_T_82 /* } */ , SET_END);
set_assign_list(& item_inl_first, RDP_T_19 /* ( */ , RDP_T_27 /* < */ , RDP_T_73 /* [ */ , RDP_T_74 /* [* */ , RDP_T_80 /* { */ , SET_END);
set_assign_list(& item_inl_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_16 /* " */ , RDP_T_18 /* ' */ ,
RDP_T_19 /* ( */ , RDP_T_21 /* ) */ , RDP_T_23 /* . */ , RDP_T_24 /* : */ , RDP_T_27 /* < */ ,
RDP_T_28 /* > */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_75 /* ] */ , RDP_T_80 /* { */ , RDP_T_81 /* | */ , RDP_T_82 /* } */ , SET_END);
set_assign_list(& item_ret_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , RDP_T_18 /* ' */ , RDP_T_ALT_ID,
RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST_VISIBLE,
RDP_T_COMMENT_VISIBLE, RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, SET_END);
set_assign_list(& item_ret_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_16 /* " */ , RDP_T_18 /* ' */ ,
RDP_T_19 /* ( */ , RDP_T_21 /* ) */ , RDP_T_23 /* . */ , RDP_T_24 /* : */ , RDP_T_27 /* < */ ,
RDP_T_28 /* > */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_75 /* ] */ , RDP_T_76 /* ^ */ , RDP_T_77 /* ^^ */ , RDP_T_78 /* ^^^ */ ,
RDP_T_79 /* ^_ */ , RDP_T_80 /* { */ , RDP_T_81 /* | */ , RDP_T_82 /* } */ , SET_END);
set_assign_list(& prod_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , RDP_T_18 /* ' */ , RDP_T_19 /* ( */ ,
RDP_T_27 /* < */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_80 /* { */ , SET_END);
set_assign_list(& prod_stop, SCAN_P_EOF, RDP_T_21 /* ) */ , RDP_T_23 /* . */ , RDP_T_28 /* > */ , RDP_T_75 /* ] */ ,
RDP_T_82 /* } */ , SET_END);
set_assign_list(& rdp_dir_11_first, SCAN_P_ID, RDP_T_74 /* [* */ , SET_END);
set_assign_list(& rdp_dir_3_first, SCAN_P_ID, RDP_T_74 /* [* */ , SET_END);
set_assign_list(& rdp_dir_30_first, RDP_T_ANNOTATED_EPSILON_TREE, RDP_T_EPSILON_TREE, RDP_T_TREE, SET_END);
set_assign_list(& rdp_dir_33_first, RDP_T_ANNOTATED_EPSILON_TREE, RDP_T_EPSILON_TREE, RDP_T_TREE, SET_END);
set_assign_list(& rdp_dir_7_first, SCAN_P_ID, RDP_T_74 /* [* */ , SET_END);
set_assign_list(& rdp_item_inl_14_first, RDP_T_76 /* ^ */ , RDP_T_77 /* ^^ */ , RDP_T_78 /* ^^^ */ , RDP_T_79 /* ^_ */ , SET_END);
set_assign_list(& rdp_item_inl_15_first, SCAN_P_INTEGER, RDP_T_29 /* @ */ , SET_END);
set_assign_list(& rdp_item_inl_16_first, SCAN_P_INTEGER, RDP_T_29 /* @ */ , SET_END);
set_assign_list(& rdp_item_inl_21_first, RDP_T_19 /* ( */ , RDP_T_27 /* < */ , RDP_T_73 /* [ */ , RDP_T_74 /* [* */ , RDP_T_80 /* { */ , SET_END);
set_assign_list(& rdp_item_inl_22_first, RDP_T_19 /* ( */ , RDP_T_27 /* < */ , RDP_T_73 /* [ */ , RDP_T_74 /* [* */ , RDP_T_80 /* { */ , SET_END);
set_assign_list(& rdp_item_inl_9_first, RDP_T_17 /* # */ , RDP_T_18 /* ' */ , SET_END);
set_assign_list(& rdp_item_ret_4_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , SET_END);
set_assign_list(& rdp_item_ret_5_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , SET_END);
set_assign_list(& rdp_item_ret_6_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , SET_END);
set_assign_list(& rdp_prod_0_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , RDP_T_18 /* ' */ , RDP_T_19 /* ( */ ,
RDP_T_27 /* < */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_80 /* { */ , SET_END);
set_assign_list(& rdp_prod_1_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , RDP_T_18 /* ' */ , RDP_T_19 /* ( */ ,
RDP_T_27 /* < */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_80 /* { */ , SET_END);
set_assign_list(& rdp_prod_2_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , RDP_T_18 /* ' */ , RDP_T_19 /* ( */ ,
RDP_T_27 /* < */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_80 /* { */ , SET_END);
set_assign_list(& rdp_rule_16_first, RDP_T_76 /* ^ */ , RDP_T_77 /* ^^ */ , RDP_T_78 /* ^^^ */ , RDP_T_79 /* ^_ */ , SET_END);
set_assign_list(& rdp_seq_0_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , RDP_T_18 /* ' */ , RDP_T_ALT_ID,
RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST_VISIBLE,
RDP_T_COMMENT_VISIBLE, RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, SET_END);
set_assign_list(& rdp_seq_1_first, RDP_T_COMMENT, RDP_T_COMMENT_LINE, RDP_T_COMMENT_NEST, SET_END);
set_assign_list(& rdp_seq_10_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , RDP_T_18 /* ' */ , RDP_T_ALT_ID,
RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE, RDP_T_COMMENT_LINE_VISIBLE,
RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE, RDP_T_NEW_ID,
RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, SET_END);
set_assign_list(& rdp_seq_17_first, RDP_T_76 /* ^ */ , RDP_T_77 /* ^^ */ , RDP_T_78 /* ^^^ */ , RDP_T_79 /* ^_ */ , SET_END);
set_assign_list(& rdp_seq_2_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , RDP_T_18 /* ' */ , RDP_T_ALT_ID,
RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE, RDP_T_COMMENT_LINE_VISIBLE,
RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE, RDP_T_NEW_ID,
RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, SET_END);
set_assign_list(& rdp_seq_23_first, RDP_T_76 /* ^ */ , RDP_T_77 /* ^^ */ , RDP_T_78 /* ^^^ */ , RDP_T_79 /* ^_ */ , SET_END);
set_assign_list(& rdp_seq_24_first, RDP_T_76 /* ^ */ , RDP_T_77 /* ^^ */ , RDP_T_78 /* ^^^ */ , RDP_T_79 /* ^_ */ , SET_END);
set_assign_list(& rdp_seq_25_first, RDP_T_74 /* [* */ , RDP_T_76 /* ^ */ , RDP_T_77 /* ^^ */ , RDP_T_78 /* ^^^ */ , RDP_T_79 /* ^_ */ , SET_END);
set_assign_list(& rdp_seq_28_first, RDP_T_19 /* ( */ , RDP_T_27 /* < */ , RDP_T_73 /* [ */ , RDP_T_74 /* [* */ , RDP_T_80 /* { */ , SET_END);
set_assign_list(& rdp_seq_29_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , RDP_T_18 /* ' */ , RDP_T_19 /* ( */ ,
RDP_T_27 /* < */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_80 /* { */ , SET_END);
set_assign_list(& rdp_seq_30_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , RDP_T_18 /* ' */ , RDP_T_19 /* ( */ ,
RDP_T_27 /* < */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_80 /* { */ , SET_END);
set_assign_list(& rdp_seq_31_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , RDP_T_18 /* ' */ , RDP_T_19 /* ( */ ,
RDP_T_27 /* < */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_80 /* { */ , SET_END);
set_assign_list(& rdp_seq_32_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , RDP_T_18 /* ' */ , RDP_T_19 /* ( */ ,
RDP_T_27 /* < */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_80 /* { */ , SET_END);
set_assign_list(& rdp_seq_9_first, RDP_T_76 /* ^ */ , RDP_T_77 /* ^^ */ , RDP_T_78 /* ^^^ */ , RDP_T_79 /* ^_ */ , SET_END);
set_assign_list(& rdp_unit_1_first, RDP_T_ANNOTATED_EPSILON_TREE, RDP_T_ARG_BLANK, RDP_T_ARG_BOOLEAN, RDP_T_ARG_NUMERIC,
RDP_T_ARG_STRING, RDP_T_CASE_INSENSITIVE, RDP_T_EPSILON_TREE, RDP_T_HASH_PRIME,
RDP_T_HASH_SIZE, RDP_T_INCLUDE, RDP_T_INTERPRETER, RDP_T_MAX_ERRORS, RDP_T_MAX_WARNINGS,
RDP_T_OPTION, RDP_T_OUTPUT_FILE, RDP_T_PARSER, RDP_T_PASSES, RDP_T_POST_PARSE,
RDP_T_POST_PROCESS, RDP_T_PRE_PARSE, RDP_T_PRE_PROCESS, RDP_T_SET_SIZE, RDP_T_SHOW_SKIPS,
RDP_T_SUFFIX, RDP_T_SYMBOL_TABLE, RDP_T_TAB_WIDTH, RDP_T_TEXT_SIZE, RDP_T_TITLE,
RDP_T_TREE, RDP_T_USES, SET_END);
set_assign_list(& rdp_unit_2_first, SCAN_P_ID, RDP_T_ANNOTATED_EPSILON_TREE, RDP_T_ARG_BLANK, RDP_T_ARG_BOOLEAN, RDP_T_ARG_NUMERIC,
RDP_T_ARG_STRING, RDP_T_CASE_INSENSITIVE, RDP_T_EPSILON_TREE, RDP_T_HASH_PRIME,
RDP_T_HASH_SIZE, RDP_T_INCLUDE, RDP_T_INTERPRETER, RDP_T_MAX_ERRORS, RDP_T_MAX_WARNINGS,
RDP_T_OPTION, RDP_T_OUTPUT_FILE, RDP_T_PARSER, RDP_T_PASSES, RDP_T_POST_PARSE,
RDP_T_POST_PROCESS, RDP_T_PRE_PARSE, RDP_T_PRE_PROCESS, RDP_T_SET_SIZE, RDP_T_SHOW_SKIPS,
RDP_T_SUFFIX, RDP_T_SYMBOL_TABLE, RDP_T_TAB_WIDTH, RDP_T_TEXT_SIZE, RDP_T_TITLE,
RDP_T_TREE, RDP_T_USES, SET_END);
set_assign_list(& rdp_unit_3_first, SCAN_P_ID, RDP_T_ANNOTATED_EPSILON_TREE, RDP_T_ARG_BLANK, RDP_T_ARG_BOOLEAN, RDP_T_ARG_NUMERIC,
RDP_T_ARG_STRING, RDP_T_CASE_INSENSITIVE, RDP_T_EPSILON_TREE, RDP_T_HASH_PRIME,
RDP_T_HASH_SIZE, RDP_T_INCLUDE, RDP_T_INTERPRETER, RDP_T_MAX_ERRORS, RDP_T_MAX_WARNINGS,
RDP_T_OPTION, RDP_T_OUTPUT_FILE, RDP_T_PARSER, RDP_T_PASSES, RDP_T_POST_PARSE,
RDP_T_POST_PROCESS, RDP_T_PRE_PARSE, RDP_T_PRE_PROCESS, RDP_T_SET_SIZE, RDP_T_SHOW_SKIPS,
RDP_T_SUFFIX, RDP_T_SYMBOL_TABLE, RDP_T_TAB_WIDTH, RDP_T_TEXT_SIZE, RDP_T_TITLE,
RDP_T_TREE, RDP_T_USES, SET_END);
set_assign_list(& rule_stop, SCAN_P_ID, SCAN_P_EOF, RDP_T_ANNOTATED_EPSILON_TREE, RDP_T_ARG_BLANK, RDP_T_ARG_BOOLEAN,
RDP_T_ARG_NUMERIC, RDP_T_ARG_STRING, RDP_T_CASE_INSENSITIVE, RDP_T_EPSILON_TREE,
RDP_T_HASH_PRIME, RDP_T_HASH_SIZE, RDP_T_INCLUDE, RDP_T_INTERPRETER, RDP_T_MAX_ERRORS,
RDP_T_MAX_WARNINGS, RDP_T_OPTION, RDP_T_OUTPUT_FILE, RDP_T_PARSER, RDP_T_PASSES,
RDP_T_POST_PARSE, RDP_T_POST_PROCESS, RDP_T_PRE_PARSE, RDP_T_PRE_PROCESS, RDP_T_SET_SIZE,
RDP_T_SHOW_SKIPS, RDP_T_SUFFIX, RDP_T_SYMBOL_TABLE, RDP_T_TAB_WIDTH, RDP_T_TEXT_SIZE,
RDP_T_TITLE, RDP_T_TREE, RDP_T_USES, SET_END);
set_assign_list(& seq_first, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, RDP_T_16 /* " */ , RDP_T_18 /* ' */ , RDP_T_19 /* ( */ ,
RDP_T_27 /* < */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_80 /* { */ , SET_END);
set_assign_list(& seq_stop, SCAN_P_EOF, RDP_T_21 /* ) */ , RDP_T_23 /* . */ , RDP_T_28 /* > */ , RDP_T_75 /* ] */ ,
RDP_T_81 /* | */ , RDP_T_82 /* } */ , SET_END);
set_assign_list(& token_stop, SCAN_P_ID, SCAN_P_INTEGER, SCAN_P_REAL, SCAN_P_EOF, RDP_T_16 /* " */ , RDP_T_18 /* ' */ ,
RDP_T_19 /* ( */ , RDP_T_21 /* ) */ , RDP_T_23 /* . */ , RDP_T_24 /* : */ , RDP_T_27 /* < */ ,
RDP_T_28 /* > */ , RDP_T_ALT_ID, RDP_T_CHAR, RDP_T_CHAR_ESC, RDP_T_COMMENT, RDP_T_COMMENT_LINE,
RDP_T_COMMENT_LINE_VISIBLE, RDP_T_COMMENT_NEST, RDP_T_COMMENT_NEST_VISIBLE, RDP_T_COMMENT_VISIBLE,
RDP_T_NEW_ID, RDP_T_NUMBER, RDP_T_STRING, RDP_T_STRING_ESC, RDP_T_73 /* [ */ ,
RDP_T_74 /* [* */ , RDP_T_75 /* ] */ , RDP_T_76 /* ^ */ , RDP_T_77 /* ^^ */ , RDP_T_78 /* ^^^ */ ,
RDP_T_79 /* ^_ */ , RDP_T_80 /* { */ , RDP_T_81 /* | */ , RDP_T_82 /* } */ , SET_END);
set_assign_list(& unit_first, SCAN_P_ID, RDP_T_ANNOTATED_EPSILON_TREE, RDP_T_ARG_BLANK, RDP_T_ARG_BOOLEAN, RDP_T_ARG_NUMERIC,
RDP_T_ARG_STRING, RDP_T_CASE_INSENSITIVE, RDP_T_EPSILON_TREE, RDP_T_HASH_PRIME,
RDP_T_HASH_SIZE, RDP_T_INCLUDE, RDP_T_INTERPRETER, RDP_T_MAX_ERRORS, RDP_T_MAX_WARNINGS,
RDP_T_OPTION, RDP_T_OUTPUT_FILE, RDP_T_PARSER, RDP_T_PASSES, RDP_T_POST_PARSE,
RDP_T_POST_PROCESS, RDP_T_PRE_PARSE, RDP_T_PRE_PROCESS, RDP_T_SET_SIZE, RDP_T_SHOW_SKIPS,
RDP_T_SUFFIX, RDP_T_SYMBOL_TABLE, RDP_T_TAB_WIDTH, RDP_T_TEXT_SIZE, RDP_T_TITLE,
RDP_T_TREE, RDP_T_USES, SET_END);
set_assign_list(& unit_stop, SCAN_P_EOF, SET_END);
}
/* Parser forward declarations and macros */
static char * String(void);
static char * code(void);
static void dir(void);
static rdp_data * item_com(void);
static rdp_data * item_inl(void);
static rdp_data * item_ret(void);
static rdp_list * prod(void);
static rdp_data * rule(void);
static rdp_list * seq(void);
static char * token(void);
void unit(void);
/* Parser functions */
static char * String(void)
{
char * result;
{
scan_test(NULL, RDP_T_16 /* " */ , & String_stop);
result = SCAN_CAST->id;
scan_();
scan_test_set(NULL, & String_stop, & String_stop);
}
return result;
}
static char * code(void)
{
char * result;
{
scan_test(NULL, RDP_T_74 /* [* */ , & code_stop);
result = SCAN_CAST->id;
scan_();
scan_test_set(NULL, & code_stop, & code_stop);
}
return result;
}
static void dir(void)
{
char * filename;
char * key;
char * var;
char * desc;
char * name;
long int size;
long int prime;
char * compare;
char * hash;
char * print;
char * data_fields;
char * s;
long int n;
char * str;
{
if (scan_test(NULL, RDP_T_INCLUDE, NULL))
{
scan_test(NULL, RDP_T_INCLUDE, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
filename = code();
if (rdp_pass == 2){ \
if (text_open(filename)== NULL)\
text_message(TEXT_ERROR_ECHO, "include file \'%s\' not found\n", filename); \
text_get_char(); \
scan_(); \
\
}
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_ARG_BOOLEAN, NULL))
{
scan_test(NULL, RDP_T_ARG_BOOLEAN, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_ID, & dir_stop);
key = SCAN_CAST->id;
scan_();
{ /* Start of rdp_dir_3 */
while (1)
{
scan_test_set(NULL, & rdp_dir_3_first, & dir_stop);
{
if (scan_test(NULL, SCAN_P_ID, NULL))
{
scan_test(NULL, SCAN_P_ID, & dir_stop);
var = SCAN_CAST->id;
scan_();
}
else
if (scan_test(NULL, RDP_T_74 /* [* */ , NULL))
{
var = code();
}
else
scan_test_set(NULL, & rdp_dir_3_first, & dir_stop);
}
break; /* hi limit is 1! */
}
} /* end of rdp_dir_3 */
desc = String();
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
if (rdp_pass == 2){ \
rdp_add_arg(ARG_BOOLEAN, key, var, desc); \
}
}
else
if (scan_test(NULL, RDP_T_ARG_NUMERIC, NULL))
{
scan_test(NULL, RDP_T_ARG_NUMERIC, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_ID, & dir_stop);
key = SCAN_CAST->id;
scan_();
{ /* Start of rdp_dir_7 */
while (1)
{
scan_test_set(NULL, & rdp_dir_7_first, & dir_stop);
{
if (scan_test(NULL, SCAN_P_ID, NULL))
{
scan_test(NULL, SCAN_P_ID, & dir_stop);
var = SCAN_CAST->id;
scan_();
}
else
if (scan_test(NULL, RDP_T_74 /* [* */ , NULL))
{
var = code();
}
else
scan_test_set(NULL, & rdp_dir_7_first, & dir_stop);
}
break; /* hi limit is 1! */
}
} /* end of rdp_dir_7 */
desc = String();
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
if (rdp_pass == 2){ \
rdp_add_arg(ARG_NUMERIC, key, var, desc); \
}
}
else
if (scan_test(NULL, RDP_T_ARG_STRING, NULL))
{
scan_test(NULL, RDP_T_ARG_STRING, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_ID, & dir_stop);
key = SCAN_CAST->id;
scan_();
{ /* Start of rdp_dir_11 */
while (1)
{
scan_test_set(NULL, & rdp_dir_11_first, & dir_stop);
{
if (scan_test(NULL, SCAN_P_ID, NULL))
{
scan_test(NULL, SCAN_P_ID, & dir_stop);
var = SCAN_CAST->id;
scan_();
}
else
if (scan_test(NULL, RDP_T_74 /* [* */ , NULL))
{
var = code();
}
else
scan_test_set(NULL, & rdp_dir_11_first, & dir_stop);
}
break; /* hi limit is 1! */
}
} /* end of rdp_dir_11 */
desc = String();
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
if (rdp_pass == 2){ \
rdp_add_arg(ARG_STRING, key, var, desc); \
}
}
else
if (scan_test(NULL, RDP_T_ARG_BLANK, NULL))
{
scan_test(NULL, RDP_T_ARG_BLANK, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
desc = String();
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
if (rdp_pass == 2){ \
rdp_add_arg(ARG_BLANK, NULL, NULL, desc); \
}
}
else
if (scan_test(NULL, RDP_T_SYMBOL_TABLE, NULL))
{
rdp_table_list * temp;
scan_test(NULL, RDP_T_SYMBOL_TABLE, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_ID, & dir_stop);
name = SCAN_CAST->id;
scan_();
scan_test(NULL, SCAN_P_INTEGER, & dir_stop);
size = SCAN_CAST->data.i;
scan_();
scan_test(NULL, SCAN_P_INTEGER, & dir_stop);
prime = SCAN_CAST->data.i;
scan_();
scan_test(NULL, SCAN_P_ID, & dir_stop);
compare = SCAN_CAST->id;
scan_();
scan_test(NULL, SCAN_P_ID, & dir_stop);
hash = SCAN_CAST->id;
scan_();
scan_test(NULL, SCAN_P_ID, & dir_stop);
print = SCAN_CAST->id;
scan_();
data_fields = code();
if (rdp_pass == 2){ \
temp =(rdp_table_list *) mem_malloc(sizeof(rdp_table_list)); \
temp->name = name; \
temp->size =(unsigned) size; \
temp->prime =(unsigned) prime; \
temp->compare = compare; \
temp->hash = hash; \
temp->print = print; \
temp->data_fields = data_fields; \
temp->next = rdp_dir_symbol_table; \
rdp_dir_symbol_table = temp; \
\
}
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_USES, NULL))
{
rdp_string_list * temp;
scan_test(NULL, RDP_T_USES, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
s = String();
if (rdp_pass == 2){ \
temp =(rdp_string_list *) mem_malloc(sizeof(rdp_string_list)); \
temp->str1 = s; \
temp->next = rdp_dir_include; \
rdp_dir_include = temp; \
\
}
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_OUTPUT_FILE, NULL))
{
scan_test(NULL, RDP_T_OUTPUT_FILE, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
s = String();
rdp_dir_output_file = s;
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_PARSER, NULL))
{
scan_test(NULL, RDP_T_PARSER, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_ID, & dir_stop);
name = SCAN_CAST->id;
scan_();
if (rdp_pass == 2){ \
rdp_start_prod = rdp_find(name, K_PRIMARY, RDP_OLD); rdp_start_prod->call_count++; \
}
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_POST_PARSE, NULL))
{
scan_test(NULL, RDP_T_POST_PARSE, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
s = code();
rdp_dir_post_parse = s;
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_PRE_PARSE, NULL))
{
scan_test(NULL, RDP_T_PRE_PARSE, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
s = code();
rdp_dir_pre_parse = s;
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_SUFFIX, NULL))
{
scan_test(NULL, RDP_T_SUFFIX, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
s = String();
rdp_dir_suffix = s;
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_TITLE, NULL))
{
scan_test(NULL, RDP_T_TITLE, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
s = String();
rdp_dir_title = s;
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_MAX_ERRORS, NULL))
{
scan_test(NULL, RDP_T_MAX_ERRORS, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_INTEGER, & dir_stop);
n = SCAN_CAST->data.i;
scan_();
rdp_dir_max_errors =(unsigned) n;
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_MAX_WARNINGS, NULL))
{
scan_test(NULL, RDP_T_MAX_WARNINGS, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_INTEGER, & dir_stop);
n = SCAN_CAST->data.i;
scan_();
rdp_dir_max_warnings =(unsigned) n;
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_PASSES, NULL))
{
scan_test(NULL, RDP_T_PASSES, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_INTEGER, & dir_stop);
n = SCAN_CAST->data.i;
scan_();
rdp_dir_passes =(unsigned) n;
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_TAB_WIDTH, NULL))
{
scan_test(NULL, RDP_T_TAB_WIDTH, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_INTEGER, & dir_stop);
n = SCAN_CAST->data.i;
scan_();
rdp_dir_tab_width =(unsigned) n;
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_TEXT_SIZE, NULL))
{
scan_test(NULL, RDP_T_TEXT_SIZE, & dir_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_INTEGER, & dir_stop);
n = SCAN_CAST->data.i;
scan_();
rdp_dir_text_size =(unsigned) n;
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test_set(NULL, & rdp_dir_33_first, NULL))
{
{ /* Start of rdp_dir_30 */
while (1)
{
scan_test_set(NULL, & rdp_dir_30_first, & dir_stop);
{
if (scan_test(NULL, RDP_T_ANNOTATED_EPSILON_TREE, NULL))
{
scan_test(NULL, RDP_T_ANNOTATED_EPSILON_TREE, & dir_stop);
scan_();
rdp_dir_annotated_epsilon_tree = 1; rdp_dir_epsilon_tree = 1;
}
else
if (scan_test(NULL, RDP_T_EPSILON_TREE, NULL))
{
scan_test(NULL, RDP_T_EPSILON_TREE, & dir_stop);
scan_();
rdp_dir_epsilon_tree = 1;
}
else
if (scan_test(NULL, RDP_T_TREE, NULL))
{
scan_test(NULL, RDP_T_TREE, & dir_stop);
scan_();
}
else
scan_test_set(NULL, & rdp_dir_30_first, & dir_stop);
}
break; /* hi limit is 1! */
}
} /* end of rdp_dir_30 */
if (rdp_pass == 1){ \
rdp_dir_tree = 1; \
\
}
if (scan_test(NULL, RDP_T_19 /* ( */ , NULL))
{ /* Start of rdp_dir_32 */
while (1)
{
{
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
str = code();
rdp_dir_tree_fields = str;
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
break; /* hi limit is 1! */
}
} /* end of rdp_dir_32 */
}
else
if (scan_test(NULL, RDP_T_CASE_INSENSITIVE, NULL))
{
scan_test(NULL, RDP_T_CASE_INSENSITIVE, & dir_stop);
scan_();
rdp_dir_case_insensitive = 1;
}
else
if (scan_test(NULL, RDP_T_SHOW_SKIPS, NULL))
{
scan_test(NULL, RDP_T_SHOW_SKIPS, & dir_stop);
scan_();
rdp_dir_show_skips = 1;
}
else
if (scan_test(NULL, RDP_T_OPTION, NULL))
{
scan_test(NULL, RDP_T_OPTION, & dir_stop);
scan_();
text_message(TEXT_ERROR_ECHO, "Obsolete directive: OPTION replaced by ARG_* at version 1.5\n");
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
String();
if (scan_test(NULL, RDP_T_74 /* [* */ , NULL))
{ /* Start of rdp_dir_37 */
while (1)
{
{
code();
}
break; /* hi limit is 1! */
}
} /* end of rdp_dir_37 */
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_PRE_PROCESS, NULL))
{
scan_test(NULL, RDP_T_PRE_PROCESS, & dir_stop);
scan_();
text_message(TEXT_ERROR_ECHO, "Obsolete directive: PRE_PROCESS renamed PRE_PARSE at version 1.3\n");
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
code();
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_POST_PROCESS, NULL))
{
scan_test(NULL, RDP_T_POST_PROCESS, & dir_stop);
scan_();
text_message(TEXT_ERROR_ECHO, "Obsolete directive: POST_PROCESS renamed POST_PARSE at version 1.3\n");
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
code();
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_SET_SIZE, NULL))
{
scan_test(NULL, RDP_T_SET_SIZE, & dir_stop);
scan_();
text_message(TEXT_ERROR_ECHO, "Obsolete directive: SET_SIZE deleted at version 1.4\n");
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_INTEGER, & dir_stop);
scan_();
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_HASH_SIZE, NULL))
{
scan_test(NULL, RDP_T_HASH_SIZE, & dir_stop);
scan_();
text_message(TEXT_ERROR_ECHO, "Obsolete directive: HASH_SIZE replaced by SYMBOL_TABLE at version 1.4\n");
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_INTEGER, & dir_stop);
scan_();
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_HASH_PRIME, NULL))
{
scan_test(NULL, RDP_T_HASH_PRIME, & dir_stop);
scan_();
text_message(TEXT_ERROR_ECHO, "Obsolete directive: HASH_PRIME replaced by SYMBOL_TABLE at version 1.4\n");
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_INTEGER, & dir_stop);
scan_();
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
if (scan_test(NULL, RDP_T_INTERPRETER, NULL))
{
scan_test(NULL, RDP_T_INTERPRETER, & dir_stop);
scan_();
text_message(TEXT_ERROR_ECHO, "Obsolete directive: INTERPRETER mode deleted at version 1.4\n");
scan_test(NULL, RDP_T_19 /* ( */ , & dir_stop);
scan_();
scan_test(NULL, SCAN_P_INTEGER, & dir_stop);
scan_();
scan_test(NULL, RDP_T_21 /* ) */ , & dir_stop);
scan_();
}
else
scan_test_set(NULL, & dir_first, & dir_stop);
scan_test_set(NULL, & dir_stop, & dir_stop);
}
}
static rdp_data * item_com(void)
{
rdp_data * result;
char * name;
char * close;
{
if (scan_test(NULL, RDP_T_COMMENT, NULL))
{
scan_test(NULL, RDP_T_COMMENT, & item_com_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & item_com_stop);
scan_();
name = token();
close = token();
scan_test(NULL, RDP_T_21 /* ) */ , & item_com_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find_extended(name, close, SCAN_P_COMMENT); \
}
}
else
if (scan_test(NULL, RDP_T_COMMENT_LINE, NULL))
{
scan_test(NULL, RDP_T_COMMENT_LINE, & item_com_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & item_com_stop);
scan_();
name = token();
scan_test(NULL, RDP_T_21 /* ) */ , & item_com_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find_extended(name, NULL, SCAN_P_COMMENT_LINE); \
}
}
else
if (scan_test(NULL, RDP_T_COMMENT_NEST, NULL))
{
scan_test(NULL, RDP_T_COMMENT_NEST, & item_com_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & item_com_stop);
scan_();
name = token();
close = token();
scan_test(NULL, RDP_T_21 /* ) */ , & item_com_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find_extended(name, close, SCAN_P_COMMENT_NEST); \
}
}
else
scan_test_set(NULL, & item_com_first, & item_com_stop);
scan_test_set(NULL, & item_com_stop, & item_com_stop);
}
return result;
}
static rdp_data * item_inl(void)
{
rdp_data * result;
char * name;
long int pass;
rdp_list * body;
long int val;
char * delimiter;
{
int promote_op = PROMOTE_DEFAULT;
{ /* Start of rdp_item_inl_21 */
while (1)
{
scan_test_set(NULL, & rdp_item_inl_21_first, & item_inl_stop);
{
if (scan_test(NULL, RDP_T_74 /* [* */ , NULL))
{
name = code();
if (rdp_pass == 2){ \
result = rdp_find(name, K_CODE, RDP_ANY); \
result->contains_null = 1; \
result->call_count++; /* increment call count */ \
\
}
if (scan_test(NULL, RDP_T_29 /* @ */ , NULL))
{ /* Start of rdp_item_inl_1 */
while (1)
{
{
scan_test(NULL, RDP_T_29 /* @ */ , & item_inl_stop);
scan_();
scan_test(NULL, SCAN_P_INTEGER, & item_inl_stop);
pass = SCAN_CAST->data.i;
scan_();
if (rdp_pass == 2){ \
result->code_pass =(unsigned) pass; \
}
}
break; /* hi limit is 1! */
}
} /* end of rdp_item_inl_1 */
}
else
if (scan_test(NULL, RDP_T_19 /* ( */ , NULL))
{
scan_test(NULL, RDP_T_19 /* ( */ , & item_inl_stop);
scan_();
body = prod();
scan_test(NULL, RDP_T_21 /* ) */ , & item_inl_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find(text_insert_substring("rdp", rdp_primary_id, rdp_component++), K_LIST, RDP_ANY); \
result->promote = promote_op; \
result->list = body; \
result->call_count++; \
result->lo = 1; \
result->hi = 1; \
\
}
if (scan_test_set(NULL, & rdp_item_inl_16_first, NULL))
{ /* Start of rdp_item_inl_16 */
while (1)
{
{
if (scan_test(NULL, SCAN_P_INTEGER, NULL))
{ /* Start of rdp_item_inl_4 */
while (1)
{
{
scan_test(NULL, SCAN_P_INTEGER, & item_inl_stop);
val = SCAN_CAST->data.i;
scan_();
if (rdp_pass == 2){ \
result->lo = val; \
}
}
break; /* hi limit is 1! */
}
} /* end of rdp_item_inl_4 */
scan_test(NULL, RDP_T_29 /* @ */ , & item_inl_stop);
scan_();
if (rdp_pass == 2){ \
result->hi = 0; /* iterate for ever by default */ \
}
if (scan_test(NULL, SCAN_P_INTEGER, NULL))
{ /* Start of rdp_item_inl_6 */
while (1)
{
{
scan_test(NULL, SCAN_P_INTEGER, & item_inl_stop);
val = SCAN_CAST->data.i;
scan_();
if (rdp_pass == 2){ \
result->hi = val; \
}
}
break; /* hi limit is 1! */
}
} /* end of rdp_item_inl_6 */
if (rdp_pass == 2){ \
if (result->lo == 0) result->contains_null = 1; \
if (result->hi != 0 &&(result->hi < result->lo))\
text_message(TEXT_ERROR_ECHO, "Iterator high count must be greater than low count"); \
\
}if (rdp_pass == 2){ \
result->delimiter_promote = PROMOTE_DONT; \
}
{ /* Start of rdp_item_inl_9 */
while (1)
{
scan_test_set(NULL, & rdp_item_inl_9_first, & item_inl_stop);
{
if (scan_test(NULL, RDP_T_18 /* ' */ , NULL))
{
delimiter = token();
if (rdp_pass == 2){ \
result->supplementary_token = rdp_find(delimiter, K_TOKEN, RDP_ANY); \
}
}
else
if (scan_test(NULL, RDP_T_17 /* # */ , NULL))
{
scan_test(NULL, RDP_T_17 /* # */ , & item_inl_stop);
scan_();
}
else
scan_test_set(NULL, & rdp_item_inl_9_first, & item_inl_stop);
}
break; /* hi limit is 1! */
}
} /* end of rdp_item_inl_9 */
if (scan_test_set(NULL, & rdp_item_inl_14_first, NULL))
{ /* Start of rdp_item_inl_14 */
while (1)
{
{
if (scan_test(NULL, RDP_T_79 /* ^_ */ , NULL))
{
scan_test(NULL, RDP_T_79 /* ^_ */ , & item_inl_stop);
scan_();
if (rdp_pass == 2){ \
result->delimiter_promote = PROMOTE_DONT; \
}
}
else
if (scan_test(NULL, RDP_T_76 /* ^ */ , NULL))
{
scan_test(NULL, RDP_T_76 /* ^ */ , & item_inl_stop);
scan_();
if (rdp_pass == 2){ \
result->delimiter_promote = PROMOTE; \
}
}
else
if (scan_test(NULL, RDP_T_77 /* ^^ */ , NULL))
{
scan_test(NULL, RDP_T_77 /* ^^ */ , & item_inl_stop);
scan_();
if (rdp_pass == 2){ \
result->delimiter_promote = PROMOTE_AND_COPY; \
}
}
else
if (scan_test(NULL, RDP_T_78 /* ^^^ */ , NULL))
{
scan_test(NULL, RDP_T_78 /* ^^^ */ , & item_inl_stop);
scan_();
if (rdp_pass == 2){ \
result->delimiter_promote = PROMOTE_ABOVE; \
}
}
}
break; /* hi limit is 1! */
}
} /* end of rdp_item_inl_14 */
}
break; /* hi limit is 1! */
}
} /* end of rdp_item_inl_16 */
}
else
if (scan_test(NULL, RDP_T_80 /* { */ , NULL))
{
scan_test(NULL, RDP_T_80 /* { */ , & item_inl_stop);
scan_();
body = prod();
scan_test(NULL, RDP_T_82 /* } */ , & item_inl_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find(text_insert_substring("rdp", rdp_primary_id, rdp_component++), K_LIST, RDP_ANY); \
result->promote = promote_op; \
result->list = body; result->contains_null = 1; \
result->call_count++; \
result->lo = 0; \
result->hi = 0; \
\
}
}
else
if (scan_test(NULL, RDP_T_73 /* [ */ , NULL))
{
scan_test(NULL, RDP_T_73 /* [ */ , & item_inl_stop);
scan_();
body = prod();
scan_test(NULL, RDP_T_75 /* ] */ , & item_inl_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find(text_insert_substring("rdp", rdp_primary_id, rdp_component++), K_LIST, RDP_ANY); \
result->promote = promote_op; \
result->list = body; result->contains_null = 1; \
result->call_count++; \
result->lo = 0; \
result->hi = 1; \
\
}
}
else
if (scan_test(NULL, RDP_T_27 /* < */ , NULL))
{
scan_test(NULL, RDP_T_27 /* < */ , & item_inl_stop);
scan_();
body = prod();
scan_test(NULL, RDP_T_28 /* > */ , & item_inl_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find(text_insert_substring("rdp", rdp_primary_id, rdp_component++), K_LIST, RDP_ANY); \
result->promote = promote_op; \
result->list = body; \
result->call_count++; \
result->lo = 1; \
result->hi = 0; \
\
}
}
else
scan_test_set(NULL, & rdp_item_inl_21_first, & item_inl_stop);
}
break; /* hi limit is 1! */
}
} /* end of rdp_item_inl_21 */
scan_test_set(NULL, & item_inl_stop, & item_inl_stop);
}
return result;
}
static rdp_data * item_ret(void)
{
rdp_data * result;
char * name;
long int n;
double r;
char * str;
char * quote;
char * close;
{
if (scan_test(NULL, SCAN_P_ID, NULL))
{
scan_test(NULL, SCAN_P_ID, & item_ret_stop);
name = SCAN_CAST->id;
scan_();
if (rdp_pass == 2){ \
result = rdp_find(name, K_PRIMARY, RDP_OLD); \
rdp_check_eoln(name); \
result->call_count++; /* increment call count */ \
result->actuals = NULL; \
\
}if (rdp_pass == 2 && result->parameterised){
scan_test(NULL, RDP_T_19 /* ( */ , & item_ret_stop);
scan_();
if (scan_test_set(NULL, & rdp_item_ret_6_first, NULL))
{ /* Start of rdp_item_ret_6 */
while (1)
{
{
rdp_param_list * param;
{ /* Start of rdp_item_ret_4 */
while (1)
{
scan_test_set(NULL, & rdp_item_ret_4_first, & item_ret_stop);
{
if (scan_test(NULL, SCAN_P_INTEGER, NULL))
{
scan_test(NULL, SCAN_P_INTEGER, & item_ret_stop);
n = SCAN_CAST->data.i;
scan_();
if (rdp_pass == 2){ \
param =(rdp_param_list *) mem_calloc(sizeof(rdp_param_list), 1); \
param->n = n; \
param->next = result->actuals; \
result->actuals = param; \
param->flavour = PARAM_INTEGER; \
\
}
}
else
if (scan_test(NULL, SCAN_P_REAL, NULL))
{
scan_test(NULL, SCAN_P_REAL, & item_ret_stop);
r = SCAN_CAST->data.r;
scan_();
if (rdp_pass == 2){ \
param =(rdp_param_list *) mem_calloc(sizeof(rdp_param_list), 1); \
param->r = r; \
param->next = result->actuals; \
result->actuals = param; \
param->flavour = PARAM_REAL; \
\
}
}
else
if (scan_test(NULL, RDP_T_16 /* " */ , NULL))
{
str = String();
if (rdp_pass == 2){ \
param =(rdp_param_list *) mem_calloc(sizeof(rdp_param_list), 1); \
param->id = str; \
param->next = result->actuals; \
result->actuals = param; \
param->flavour = PARAM_STRING; \
\
}
}
else
if (scan_test(NULL, SCAN_P_ID, NULL))
{
scan_test(NULL, SCAN_P_ID, & item_ret_stop);
name = SCAN_CAST->id;
scan_();
if (rdp_pass == 2){ \
param =(rdp_param_list *) mem_calloc(sizeof(rdp_param_list), 1); \
param->id = name; \
param->next = result->actuals; \
result->actuals = param; \
param->flavour = PARAM_ID; \
\
}
}
else
scan_test_set(NULL, & rdp_item_ret_4_first, & item_ret_stop);
}
break; /* hi limit is 1! */
}
} /* end of rdp_item_ret_4 */
}
if (!scan_test_set(NULL, & rdp_item_ret_6_first, NULL)) break;
}
} /* end of rdp_item_ret_6 */
scan_test(NULL, RDP_T_21 /* ) */ , & item_ret_stop);
scan_();
}
}
else
if (scan_test(NULL, RDP_T_18 /* ' */ , NULL))
{
name = token();
if (rdp_pass == 2){ \
result =(rdp_data *) rdp_process_token(name); \
}
}
else
if (scan_test(NULL, RDP_T_CHAR, NULL))
{
scan_test(NULL, RDP_T_CHAR, & item_ret_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & item_ret_stop);
scan_();
name = token();
scan_test(NULL, RDP_T_21 /* ) */ , & item_ret_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find_extended(name, NULL, SCAN_P_CHAR); \
}
}
else
if (scan_test(NULL, RDP_T_CHAR_ESC, NULL))
{
scan_test(NULL, RDP_T_CHAR_ESC, & item_ret_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & item_ret_stop);
scan_();
name = token();
quote = token();
scan_test(NULL, RDP_T_21 /* ) */ , & item_ret_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find_extended(name, quote, SCAN_P_CHAR_ESC); \
}
}
else
if (scan_test(NULL, RDP_T_STRING, NULL))
{
scan_test(NULL, RDP_T_STRING, & item_ret_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & item_ret_stop);
scan_();
name = token();
scan_test(NULL, RDP_T_21 /* ) */ , & item_ret_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find_extended(name, NULL, SCAN_P_STRING); \
}
}
else
if (scan_test(NULL, RDP_T_STRING_ESC, NULL))
{
scan_test(NULL, RDP_T_STRING_ESC, & item_ret_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & item_ret_stop);
scan_();
name = token();
quote = token();
scan_test(NULL, RDP_T_21 /* ) */ , & item_ret_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find_extended(name, quote, SCAN_P_STRING_ESC); \
}
}
else
if (scan_test(NULL, RDP_T_COMMENT_VISIBLE, NULL))
{
scan_test(NULL, RDP_T_COMMENT_VISIBLE, & item_ret_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & item_ret_stop);
scan_();
name = token();
close = token();
scan_test(NULL, RDP_T_21 /* ) */ , & item_ret_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find_extended(name, close, SCAN_P_COMMENT_VISIBLE); \
}
}
else
if (scan_test(NULL, RDP_T_COMMENT_NEST_VISIBLE, NULL))
{
scan_test(NULL, RDP_T_COMMENT_NEST_VISIBLE, & item_ret_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & item_ret_stop);
scan_();
name = token();
close = token();
scan_test(NULL, RDP_T_21 /* ) */ , & item_ret_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find_extended(name, close, SCAN_P_COMMENT_NEST_VISIBLE); \
}
}
else
if (scan_test(NULL, RDP_T_COMMENT_LINE_VISIBLE, NULL))
{
scan_test(NULL, RDP_T_COMMENT_LINE_VISIBLE, & item_ret_stop);
scan_();
scan_test(NULL, RDP_T_19 /* ( */ , & item_ret_stop);
scan_();
name = token();
scan_test(NULL, RDP_T_21 /* ) */ , & item_ret_stop);
scan_();
if (rdp_pass == 2){ \
result = rdp_find_extended(name, NULL, SCAN_P_COMMENT_LINE_VISIBLE); \
}
}
else
if (scan_test(NULL, RDP_T_NUMBER, NULL))
{
scan_test(NULL, RDP_T_NUMBER, & item_ret_stop);
scan_();
text_message(TEXT_ERROR_ECHO, "Obsolete scanner primitive: NUMBER renamed INTEGER at version 1.3\n");
}
else
if (scan_test(NULL, RDP_T_NEW_ID, NULL))
{
scan_test(NULL, RDP_T_NEW_ID, & item_ret_stop);
scan_();
text_message(TEXT_ERROR_ECHO, "Obsolete scanner primitive: NEW_ID deleted at version 1.4\n");
}
else
if (scan_test(NULL, RDP_T_ALT_ID, NULL))
{
scan_test(NULL, RDP_T_ALT_ID, & item_ret_stop);
scan_();
text_message(TEXT_ERROR_ECHO, "Obsolete scanner primitive: ALT_ID deleted at version 1.4\n");
}
else
if (scan_test(NULL, RDP_T_16 /* " */ , NULL))
{
str = String();
if (rdp_pass == 2){ \
text_message(TEXT_ERROR_ECHO, "Illegal grammar element: perhaps you intended to write \'%s\'\n", str); \
}
}
else
if (scan_test(NULL, SCAN_P_INTEGER, NULL))
{
scan_test(NULL, SCAN_P_INTEGER, & item_ret_stop);
scan_();
if (rdp_pass == 2){ \
text_message(TEXT_ERROR_ECHO, "Illegal grammar element: an integer may not appear here\n"); \
}
}
else
if (scan_test(NULL, SCAN_P_REAL, NULL))
{
scan_test(NULL, SCAN_P_REAL, & item_ret_stop);
scan_();
if (rdp_pass == 2){ \
text_message(TEXT_ERROR_ECHO, "Illegal grammar element: a real may not appear here\n"); \
}
}
else
scan_test_set(NULL, & item_ret_first, & item_ret_stop);
scan_test_set(NULL, & item_ret_stop, & item_ret_stop);
}
return result;
}
static rdp_list * prod(void)
{
rdp_list * result;
rdp_list * body;
{
rdp_list * end; if (rdp_pass == 2){ \
end = result =(rdp_list *) mem_calloc(sizeof(rdp_list), 1); \
}
{ /* Start of rdp_prod_1 */
while (1)
{
scan_test_set(NULL, & rdp_prod_1_first, & prod_stop);
{
body = seq();
if (rdp_pass == 2){ \
end->next =(rdp_list *) mem_calloc(sizeof(rdp_list), 1); \
end = end->next; \
end->production = rdp_find(text_insert_substring("rdp", rdp_primary_id, rdp_component++), K_SEQUENCE, RDP_NEW); \
end->production->call_count++; \
end->production->list = body; \
\
}
}
if (SCAN_CAST->token != RDP_T_81 /* | */) break;
scan_();
}
} /* end of rdp_prod_1 */
if (rdp_pass == 2){ \
result = result->next; \
}
scan_test_set(NULL, & prod_stop, & prod_stop);
}
return result;
}
static rdp_data * rule(void)
{
rdp_data * result;
char * name;
char * type;
rdp_list * body;
{
unsigned stars;
scan_test(NULL, SCAN_P_ID, & rule_stop);
name = SCAN_CAST->id;
scan_();
rdp_primary_id = name; rdp_component = 0; \
rdp_rule_count++; \
result = rdp_find(rdp_primary_id, K_PRIMARY, rdp_pass == 1 ? RDP_NEW: RDP_OLD); \
if (rdp_start_prod == NULL)\
{ \
rdp_start_prod = result; \
result->call_count++; \
} \
if (scan_test(NULL, RDP_T_19 /* ( */ , NULL))
{ /* Start of rdp_rule_7 */
while (1)
{
{
scan_test(NULL, RDP_T_19 /* ( */ , & rule_stop);
scan_();
result->parameterised = 1;
if (scan_test(NULL, SCAN_P_ID, NULL))
{ /* Start of rdp_rule_5 */
while (1)
{
{
rdp_param_list * param; type = "void";
scan_test(NULL, SCAN_P_ID, & rule_stop);
name = SCAN_CAST->id;
scan_();
if (scan_test(NULL, RDP_T_24 /* : */ , NULL))
{ /* Start of rdp_rule_3 */
while (1)
{
{
scan_test(NULL, RDP_T_24 /* : */ , & rule_stop);
scan_();
scan_test(NULL, SCAN_P_ID, & rule_stop);
type = SCAN_CAST->id;
scan_();
stars = 0;
if (scan_test(NULL, RDP_T_22 /* * */ , NULL))
{ /* Start of rdp_rule_1 */
while (1)
{
{
scan_test(NULL, RDP_T_22 /* * */ , & rule_stop);
scan_();
stars++;
}
if (!scan_test(NULL, RDP_T_22 /* * */ , NULL)) break;
}
} /* end of rdp_rule_1 */
}
break; /* hi limit is 1! */
}
} /* end of rdp_rule_3 */
if (rdp_pass == 1){ \
param =(rdp_param_list *) mem_calloc(sizeof(rdp_param_list), 1); \
param->id = name; \
param->type = type; \
param->stars = stars; \
param->next = result->params; \
result->params = param; \
\
}
}
if (!scan_test(NULL, SCAN_P_ID, NULL)) break;
}
} /* end of rdp_rule_5 */
scan_test(NULL, RDP_T_21 /* ) */ , & rule_stop);
scan_();
}
break; /* hi limit is 1! */
}
} /* end of rdp_rule_7 */
type = "void"; stars = 0;
if (scan_test(NULL, RDP_T_24 /* : */ , NULL))
{ /* Start of rdp_rule_11 */
while (1)
{
{
scan_test(NULL, RDP_T_24 /* : */ , & rule_stop);
scan_();
scan_test(NULL, SCAN_P_ID, & rule_stop);
type = SCAN_CAST->id;
scan_();
if (scan_test(NULL, RDP_T_22 /* * */ , NULL))
{ /* Start of rdp_rule_9 */
while (1)
{
{
scan_test(NULL, RDP_T_22 /* * */ , & rule_stop);
scan_();
stars++;
}
if (!scan_test(NULL, RDP_T_22 /* * */ , NULL)) break;
}
} /* end of rdp_rule_9 */
}
break; /* hi limit is 1! */
}
} /* end of rdp_rule_11 */
if (rdp_pass == 2){ \
result->promote_default = PROMOTE_DONT; \
}
if (scan_test_set(NULL, & rdp_rule_16_first, NULL))
{ /* Start of rdp_rule_16 */
while (1)
{
{
if (scan_test(NULL, RDP_T_79 /* ^_ */ , NULL))
{
scan_test(NULL, RDP_T_79 /* ^_ */ , & rule_stop);
scan_();
if (rdp_pass == 2){ \
result->promote_default = PROMOTE_DONT; \
}
}
else
if (scan_test(NULL, RDP_T_76 /* ^ */ , NULL))
{
scan_test(NULL, RDP_T_76 /* ^ */ , & rule_stop);
scan_();
if (rdp_pass == 2){ \
result->promote_default = PROMOTE; \
}
}
else
if (scan_test(NULL, RDP_T_77 /* ^^ */ , NULL))
{
scan_test(NULL, RDP_T_77 /* ^^ */ , & rule_stop);
scan_();
if (rdp_pass == 2){ \
result->promote_default = PROMOTE_AND_COPY; \
}
}
else
if (scan_test(NULL, RDP_T_78 /* ^^^ */ , NULL))
{
scan_test(NULL, RDP_T_78 /* ^^^ */ , & rule_stop);
scan_();
if (rdp_pass == 2){ \
result->promote_default = PROMOTE_ABOVE; \
}
}
}
break; /* hi limit is 1! */
}
} /* end of rdp_rule_16 */
rdp_comment_only = 1; /* set comments only flag */
scan_test(NULL, RDP_T_26 /* ::= */ , & rule_stop);
scan_();
body = prod();
if (rdp_pass == 2){ \
rdp_rule_count++; \
result->list = body; \
result->been_defined = 1; \
result->return_type = type; \
result->return_type_stars = stars; \
result->comment_only = rdp_comment_only; \
\
}
scan_test(NULL, RDP_T_23 /* . */ , & rule_stop);
scan_();
scan_test_set(NULL, & rule_stop, & rule_stop);
}
return result;
}
static rdp_list * seq(void)
{
rdp_list * result;
rdp_data * body;
char * ret_name;
char * default_action;
{
rdp_list * end; int promote_op; int promote_epsilon; if (rdp_pass == 2){ \
end = result =(rdp_list *) mem_calloc(sizeof(rdp_list), 1); \
}
{ /* Start of rdp_seq_31 */
while (1)
{
scan_test_set(NULL, & rdp_seq_31_first, & seq_stop);
{
if (rdp_pass == 2){ \
ret_name = NULL; promote_epsilon = PROMOTE_DONT; promote_op = PROMOTE_DEFAULT; \
}
{ /* Start of rdp_seq_29 */
while (1)
{
scan_test_set(NULL, & rdp_seq_29_first, & seq_stop);
{
if (scan_test_set(NULL, & rdp_seq_10_first, NULL))
{
{ /* Start of rdp_seq_2 */
while (1)
{
scan_test_set(NULL, & rdp_seq_2_first, & seq_stop);
{
if (scan_test_set(NULL, & rdp_seq_0_first, NULL))
{
body = item_ret();
rdp_comment_only = 0;
}
else
if (scan_test_set(NULL, & rdp_seq_1_first, NULL))
{
body = item_com();
}
else
scan_test_set(NULL, & rdp_seq_2_first, & seq_stop);
}
break; /* hi limit is 1! */
}
} /* end of rdp_seq_2 */
if (scan_test(NULL, RDP_T_24 /* : */ , NULL))
{ /* Start of rdp_seq_4 */
while (1)
{
{
scan_test(NULL, RDP_T_24 /* : */ , & seq_stop);
scan_();
scan_test(NULL, SCAN_P_ID, & seq_stop);
ret_name = SCAN_CAST->id;
scan_();
}
break; /* hi limit is 1! */
}
} /* end of rdp_seq_4 */
if (scan_test_set(NULL, & rdp_seq_9_first, NULL))
{ /* Start of rdp_seq_9 */
while (1)
{
{
if (scan_test(NULL, RDP_T_79 /* ^_ */ , NULL))
{
scan_test(NULL, RDP_T_79 /* ^_ */ , & seq_stop);
scan_();
if (rdp_pass == 2){ \
promote_op = PROMOTE_DONT; \
}
}
else
if (scan_test(NULL, RDP_T_76 /* ^ */ , NULL))
{
scan_test(NULL, RDP_T_76 /* ^ */ , & seq_stop);
scan_();
if (rdp_pass == 2){ \
promote_op = PROMOTE; \
}
}
else
if (scan_test(NULL, RDP_T_77 /* ^^ */ , NULL))
{
scan_test(NULL, RDP_T_77 /* ^^ */ , & seq_stop);
scan_();
if (rdp_pass == 2){ \
promote_op = PROMOTE_AND_COPY; \
}
}
else
if (scan_test(NULL, RDP_T_78 /* ^^^ */ , NULL))
{
scan_test(NULL, RDP_T_78 /* ^^^ */ , & seq_stop);
scan_();
if (rdp_pass == 2){ \
promote_op = PROMOTE_ABOVE; \
}
}
}
break; /* hi limit is 1! */
}
} /* end of rdp_seq_9 */
}
else
if (scan_test_set(NULL, & rdp_seq_28_first, NULL))
{
body = item_inl();
rdp_comment_only = 0;
if (rdp_pass == 2){ \
promote_op = body->promote; default_action = NULL; \
}
if (scan_test(NULL, RDP_T_24 /* : */ , NULL))
{ /* Start of rdp_seq_27 */
while (1)
{
{
scan_test(NULL, RDP_T_24 /* : */ , & seq_stop);
scan_();
if (scan_test(NULL, SCAN_P_ID, NULL))
{ /* Start of rdp_seq_12 */
while (1)
{
{
scan_test(NULL, SCAN_P_ID, & seq_stop);
scan_();
if (rdp_pass == 2){ \
text_message(TEXT_ERROR_ECHO, "Illegal grammar element: expressions may not retun a value"); \
}
}
break; /* hi limit is 1! */
}
} /* end of rdp_seq_12 */
if (scan_test_set(NULL, & rdp_seq_25_first, NULL))
{ /* Start of rdp_seq_25 */
while (1)
{
{
if (scan_test(NULL, RDP_T_74 /* [* */ , NULL))
{
default_action = code();
if (scan_test_set(NULL, & rdp_seq_17_first, NULL))
{ /* Start of rdp_seq_17 */
while (1)
{
{
if (scan_test(NULL, RDP_T_79 /* ^_ */ , NULL))
{
scan_test(NULL, RDP_T_79 /* ^_ */ , & seq_stop);
scan_();
if (rdp_pass == 2){ \
promote_epsilon = PROMOTE_DONT; \
}
}
else
if (scan_test(NULL, RDP_T_76 /* ^ */ , NULL))
{
scan_test(NULL, RDP_T_76 /* ^ */ , & seq_stop);
scan_();
if (rdp_pass == 2){ \
promote_epsilon = PROMOTE; \
}
}
else
if (scan_test(NULL, RDP_T_77 /* ^^ */ , NULL))
{
scan_test(NULL, RDP_T_77 /* ^^ */ , & seq_stop);
scan_();
if (rdp_pass == 2){ \
promote_epsilon = PROMOTE_AND_COPY; \
}
}
else
if (scan_test(NULL, RDP_T_78 /* ^^^ */ , NULL))
{
scan_test(NULL, RDP_T_78 /* ^^^ */ , & seq_stop);
scan_();
if (rdp_pass == 2){ \
promote_epsilon = PROMOTE_ABOVE; \
}
}
}
break; /* hi limit is 1! */
}
} /* end of rdp_seq_17 */
}
else
if (scan_test_set(NULL, & rdp_seq_24_first, NULL))
{
{ /* Start of rdp_seq_23 */
while (1)
{
scan_test_set(NULL, & rdp_seq_23_first, & seq_stop);
{
if (scan_test(NULL, RDP_T_79 /* ^_ */ , NULL))
{
scan_test(NULL, RDP_T_79 /* ^_ */ , & seq_stop);
scan_();
if (rdp_pass == 2){ \
promote_epsilon = PROMOTE_DONT; \
}
}
else
if (scan_test(NULL, RDP_T_76 /* ^ */ , NULL))
{
scan_test(NULL, RDP_T_76 /* ^ */ , & seq_stop);
scan_();
if (rdp_pass == 2){ \
promote_epsilon = PROMOTE; \
}
}
else
if (scan_test(NULL, RDP_T_77 /* ^^ */ , NULL))
{
scan_test(NULL, RDP_T_77 /* ^^ */ , & seq_stop);
scan_();
if (rdp_pass == 2){ \
promote_epsilon = PROMOTE_AND_COPY; \
}
}
else
if (scan_test(NULL, RDP_T_78 /* ^^^ */ , NULL))
{
scan_test(NULL, RDP_T_78 /* ^^^ */ , & seq_stop);
scan_();
if (rdp_pass == 2){ \
promote_epsilon = PROMOTE_ABOVE; \
}
}
else
scan_test_set(NULL, & rdp_seq_23_first, & seq_stop);
}
break; /* hi limit is 1! */
}
} /* end of rdp_seq_23 */
}
}
break; /* hi limit is 1! */
}
} /* end of rdp_seq_25 */
}
break; /* hi limit is 1! */
}
} /* end of rdp_seq_27 */
}
else
scan_test_set(NULL, & rdp_seq_29_first, & seq_stop);
}
break; /* hi limit is 1! */
}
} /* end of rdp_seq_29 */
if (rdp_pass == 2){ \
end->next =(rdp_list *) mem_calloc(sizeof(rdp_list), 1); \
end = end->next; \
end->production = body; \
end->actuals = body->actuals; \
end->return_name = ret_name; \
end->promote = promote_op; \
end->promote_epsilon = promote_epsilon; \
end->default_action = default_action; \
\
}
}
if (!scan_test_set(NULL, & rdp_seq_31_first, NULL)) break;
}
} /* end of rdp_seq_31 */
if (rdp_pass == 2){ \
result = result->next; \
}
scan_test_set(NULL, & seq_stop, & seq_stop);
}
return result;
}
static char * token(void)
{
char * result;
{
scan_test(NULL, RDP_T_18 /* ' */ , & token_stop);
result = SCAN_CAST->id;
scan_();
scan_test_set(NULL, & token_stop, & token_stop);
}
return result;
}
void unit(void)
{
{
if (scan_test_set(NULL, & rdp_unit_2_first, NULL))
{ /* Start of rdp_unit_2 */
while (1)
{
{
if (scan_test(NULL, SCAN_P_ID, NULL))
{
rule();
}
else
if (scan_test_set(NULL, & rdp_unit_1_first, NULL))
{
dir();
}
}
if (!scan_test_set(NULL, & rdp_unit_2_first, NULL)) break;
}
} /* end of rdp_unit_2 */
if (rdp_rule_count == 0) text_message(TEXT_FATAL, "no rule definitions found\n");
scan_test_set(NULL, & unit_stop, & unit_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 */
unsigned long rdp_textsize = 34000l; /* size of scanner text array */
unsigned long rdp_tabwidth = 8l; /* tab expansion width */
char * rdp_vcg_filename = NULL; /* filename for -V option */
arg_message("Recursive descent parser generator V1.50 (c) Adrian Johnstone 1997\n" RDP_STAMP "\n\n" "Usage: rdp [options] source[.BNF]");
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_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 - not available in this parser)", & rdp_vcg_filename);
arg_message("");
arg_boolean('e', "Write out expanded BNF along with first and follow sets", & rdp_expanded);
arg_boolean('E', "Add rule name to error messages in generated parser", & rdp_error_production_name);
arg_boolean('F', "Force creation of output files", & rdp_force);
arg_boolean('p', "Make parser only (omit semantic actions from generated code)", & rdp_parser_only);
arg_boolean('R', "Add rule entry and exit messages", & rdp_trace);
arg_message("");
arg_message("You can contact the author (Adrian Johnstone) at:");
arg_message("");
arg_message("Computer Science Department, Royal Holloway, University of London");
arg_message("Egham, Surrey, TW20 0EX UK. Email: A.Johnstone@rhbnc.ac.uk");
rdp_sourcefilename = * arg_process(argc, argv);
if (rdp_filter)
{
rdp_sourcefilename = "-";
rdp_outputfilename = "-";
}
if (rdp_sourcefilename == NULL)
arg_help("No source file specified");
rdp_sourcefilename = text_default_filetype(rdp_sourcefilename, "BNF");
text_init(rdp_textsize, 50, 120, (int) rdp_tabwidth);
scan_init(0, 0, 1, rdp_symbol_echo, rdp_tokens);
locals = symbol_new_table("locals", 101, 31, symbol_compare_string, symbol_hash_string, symbol_print_string);
codes = symbol_new_table("codes", 101, 31, symbol_compare_string, symbol_hash_string, symbol_print_string);
tokens = symbol_new_table("tokens", 101, 31, symbol_compare_string, symbol_hash_string, symbol_print_string);
rdp = symbol_new_table("rdp", 101, 31, symbol_compare_string, symbol_hash_string, symbol_print_string);
rdp_set_initialise();
rdp_load_keywords();
if (rdp_verbose)
text_printf("\nRecursive descent parser generator V1.50 (c) Adrian Johnstone 1997\n" RDP_STAMP "\n\n");
rdp_pre_parse();
for (rdp_pass = 1; rdp_pass <= RDP_PASSES; rdp_pass++)
{
text_echo(rdp_line_echo_all ||(rdp_line_echo && rdp_pass == RDP_PASSES));
if (text_open(rdp_sourcefilename)== NULL)
arg_help("unable to open source file");
text_get_char();
scan_();
unit(); /* call parser at top level */
if (text_total_errors()!= 0)
text_message(TEXT_FATAL, "error%s detected in source file\n", text_total_errors()== 1 ? "": "s"); /* crash quietly */
}
if (rdp_symbol_statistics)
symbol_print_all_table_statistics(11);
rdp_post_parse(rdp_outputfilename, rdp_force);
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 rdp.c */