1 /* 2 * = = == === ===== ======== ============= ===================== 3 * == pt::rde (critcl) - Data Structures - PARAM architectural state. 4 */ 5 6 #ifndef _RDE_DS_PARAM_H 7 #define _RDE_DS_PARAM_H 1 8 9 #include "tcl.h" 10 #include <util.h> /* Scoping */ 11 #include <stack.h> /* Stack handling */ 12 13 /* 14 * The state structure is opaque, its internals are known only to the 15 * functions declared here. 16 */ 17 18 typedef struct RDE_PARAM_* RDE_PARAM; 19 20 typedef struct ERROR_STATE { 21 int refCount; 22 long int loc; 23 RDE_STACK msg; /* long int :: error messages */ 24 } ERROR_STATE; 25 26 typedef struct NC_STATE { 27 long int CL; 28 long int ST; 29 Tcl_Obj* SV; 30 ERROR_STATE* ER; 31 } NC_STATE; 32 33 /* SKIP START */ 34 /* Admin 35 */ 36 37 SCOPE RDE_PARAM rde_param_new (long int n, char** strings); 38 SCOPE void rde_param_del (RDE_PARAM p); 39 SCOPE void rde_param_reset (RDE_PARAM p, Tcl_Channel chan); 40 SCOPE void rde_param_update_strings (RDE_PARAM p, long int n, char** strings); 41 SCOPE void rde_param_data (RDE_PARAM p, char* buf, long int len); 42 SCOPE void rde_param_clientdata (RDE_PARAM p, ClientData clientData); 43 44 /* Accessors 45 */ 46 47 SCOPE ClientData rde_param_query_clientdata (RDE_PARAM p); 48 SCOPE void rde_param_query_amark (RDE_PARAM p, long int* mc, void*** mv); 49 SCOPE void rde_param_query_ast (RDE_PARAM p, long int* ac, Tcl_Obj*** av); 50 SCOPE const char* rde_param_query_in (RDE_PARAM p); 51 SCOPE const char* rde_param_query_cc (RDE_PARAM p, long int* len); 52 SCOPE int rde_param_query_cl (RDE_PARAM p); 53 SCOPE const ERROR_STATE* rde_param_query_er (RDE_PARAM p); 54 SCOPE Tcl_Obj* rde_param_query_er_tcl (RDE_PARAM p, const ERROR_STATE* er); 55 SCOPE void rde_param_query_es (RDE_PARAM p, long int* ec, ERROR_STATE*** ev); 56 SCOPE void rde_param_query_ls (RDE_PARAM p, long int* lc, void*** lv); 57 SCOPE long int rde_param_query_lstop (RDE_PARAM p); 58 SCOPE Tcl_HashTable* rde_param_query_nc (RDE_PARAM p); 59 SCOPE int rde_param_query_st (RDE_PARAM p); 60 SCOPE Tcl_Obj* rde_param_query_sv (RDE_PARAM p); 61 SCOPE long int rde_param_query_tc_size (RDE_PARAM p); 62 SCOPE void rde_param_query_tc_get_s (RDE_PARAM p, long int at, long int last, char** ch, long int* len); 63 SCOPE const char* rde_param_query_string (RDE_PARAM p, long int id); 64 65 /* Instructions 66 */ 67 68 SCOPE void rde_param_i_ast_pop_discard (RDE_PARAM p); 69 SCOPE void rde_param_i_ast_pop_rewind (RDE_PARAM p); 70 SCOPE void rde_param_i_ast_push (RDE_PARAM p); 71 SCOPE void rde_param_i_ast_rewind (RDE_PARAM p); 72 SCOPE void rde_param_i_ast_value_push (RDE_PARAM p); 73 74 SCOPE void rde_param_i_error_clear (RDE_PARAM p); 75 SCOPE void rde_param_i_error_nonterminal (RDE_PARAM p, long int s); 76 SCOPE void rde_param_i_error_pop_merge (RDE_PARAM p); 77 SCOPE void rde_param_i_error_push (RDE_PARAM p); 78 79 SCOPE void rde_param_i_loc_pop_discard (RDE_PARAM p); 80 SCOPE void rde_param_i_loc_pop_rewind (RDE_PARAM p); 81 SCOPE void rde_param_i_loc_push (RDE_PARAM p); 82 SCOPE void rde_param_i_loc_rewind (RDE_PARAM p); 83 84 SCOPE void rde_param_i_input_next (RDE_PARAM p, long int m); 85 86 SCOPE void rde_param_i_status_fail (RDE_PARAM p); 87 SCOPE void rde_param_i_status_ok (RDE_PARAM p); 88 SCOPE void rde_param_i_status_negate (RDE_PARAM p); 89 90 SCOPE int rde_param_i_symbol_restore (RDE_PARAM p, long int s); 91 SCOPE void rde_param_i_symbol_save (RDE_PARAM p, long int s); 92 93 SCOPE void rde_param_i_test_char (RDE_PARAM p, const char* c, long int m); 94 SCOPE void rde_param_i_test_range (RDE_PARAM p, const char* s, const char* e, long int m); 95 96 SCOPE void rde_param_i_test_alnum (RDE_PARAM p); 97 SCOPE void rde_param_i_test_alpha (RDE_PARAM p); 98 SCOPE void rde_param_i_test_ascii (RDE_PARAM p); 99 SCOPE void rde_param_i_test_control (RDE_PARAM p); 100 SCOPE void rde_param_i_test_ddigit (RDE_PARAM p); 101 SCOPE void rde_param_i_test_digit (RDE_PARAM p); 102 SCOPE void rde_param_i_test_graph (RDE_PARAM p); 103 SCOPE void rde_param_i_test_lower (RDE_PARAM p); 104 SCOPE void rde_param_i_test_print (RDE_PARAM p); 105 SCOPE void rde_param_i_test_punct (RDE_PARAM p); 106 SCOPE void rde_param_i_test_space (RDE_PARAM p); 107 SCOPE void rde_param_i_test_upper (RDE_PARAM p); 108 SCOPE void rde_param_i_test_wordchar (RDE_PARAM p); 109 SCOPE void rde_param_i_test_xdigit (RDE_PARAM p); 110 111 SCOPE void rde_param_i_value_clear (RDE_PARAM p); 112 SCOPE void rde_param_i_value_leaf (RDE_PARAM p, long int s); 113 SCOPE void rde_param_i_value_reduce (RDE_PARAM p, long int s); 114 115 /* Super Instructions - Aggregated common instruction sequences. 116 */ 117 118 SCOPE int rde_param_i_symbol_start (RDE_PARAM p, long int s); 119 SCOPE int rde_param_i_symbol_start_d (RDE_PARAM p, long int s); 120 SCOPE int rde_param_i_symbol_void_start (RDE_PARAM p, long int s); 121 SCOPE int rde_param_i_symbol_void_start_d (RDE_PARAM p, long int s); 122 123 SCOPE void rde_param_i_symbol_done_d_reduce (RDE_PARAM p, long int s, long int m); 124 SCOPE void rde_param_i_symbol_done_leaf (RDE_PARAM p, long int s, long int m); 125 SCOPE void rde_param_i_symbol_done_d_leaf (RDE_PARAM p, long int s, long int m); 126 SCOPE void rde_param_i_symbol_done_void (RDE_PARAM p, long int s, long int m); 127 SCOPE void rde_param_i_symbol_done_d_void (RDE_PARAM p, long int s, long int m); 128 129 SCOPE void rde_param_i_next_char (RDE_PARAM p, const char* c, long int m); 130 SCOPE void rde_param_i_next_range (RDE_PARAM p, const char* s, const char* e, long int m); 131 132 SCOPE void rde_param_i_next_alnum (RDE_PARAM p, long int m); 133 SCOPE void rde_param_i_next_alpha (RDE_PARAM p, long int m); 134 SCOPE void rde_param_i_next_ascii (RDE_PARAM p, long int m); 135 SCOPE void rde_param_i_next_control (RDE_PARAM p, long int m); 136 SCOPE void rde_param_i_next_ddigit (RDE_PARAM p, long int m); 137 SCOPE void rde_param_i_next_digit (RDE_PARAM p, long int m); 138 SCOPE void rde_param_i_next_graph (RDE_PARAM p, long int m); 139 SCOPE void rde_param_i_next_lower (RDE_PARAM p, long int m); 140 SCOPE void rde_param_i_next_print (RDE_PARAM p, long int m); 141 SCOPE void rde_param_i_next_punct (RDE_PARAM p, long int m); 142 SCOPE void rde_param_i_next_space (RDE_PARAM p, long int m); 143 SCOPE void rde_param_i_next_upper (RDE_PARAM p, long int m); 144 SCOPE void rde_param_i_next_wordchar (RDE_PARAM p, long int m); 145 SCOPE void rde_param_i_next_xdigit (RDE_PARAM p, long int m); 146 147 SCOPE void rde_param_i_notahead_start_d (RDE_PARAM p); 148 SCOPE void rde_param_i_notahead_exit_d (RDE_PARAM p); 149 SCOPE void rde_param_i_notahead_exit (RDE_PARAM p); 150 151 SCOPE void rde_param_i_state_push_2 (RDE_PARAM p); 152 SCOPE void rde_param_i_state_push_void (RDE_PARAM p); 153 SCOPE void rde_param_i_state_push_value (RDE_PARAM p); 154 155 SCOPE void rde_param_i_state_merge_ok (RDE_PARAM p); 156 SCOPE void rde_param_i_state_merge_void (RDE_PARAM p); 157 SCOPE void rde_param_i_state_merge_value (RDE_PARAM p); 158 159 SCOPE int rde_param_i_kleene_close (RDE_PARAM p); 160 SCOPE int rde_param_i_kleene_abort (RDE_PARAM p); 161 162 SCOPE int rde_param_i_seq_void2void (RDE_PARAM p); 163 SCOPE int rde_param_i_seq_void2value (RDE_PARAM p); 164 SCOPE int rde_param_i_seq_value2value (RDE_PARAM p); 165 166 SCOPE int rde_param_i_bra_void2void (RDE_PARAM p); 167 SCOPE int rde_param_i_bra_void2value (RDE_PARAM p); 168 SCOPE int rde_param_i_bra_value2void (RDE_PARAM p); 169 SCOPE int rde_param_i_bra_value2value (RDE_PARAM p); 170 171 SCOPE void rde_param_i_next_str (RDE_PARAM p, const char* str, long int m); 172 SCOPE void rde_param_i_next_class (RDE_PARAM p, const char* class, long int m); 173 174 /* SKIP END */ 175 #endif /* _RDE_DS_PARAM_H */ 176 177 /* 178 * Local Variables: 179 * mode: c 180 * c-basic-offset: 4 181 * fill-column: 78 182 * End: 183 */ 184