1## -*- tcl -*- 2## 3## NX-based Tcl/PARAM implementation of the parsing 4## expression grammar 5## 6## TEMPLATE 7## 8## Generated from file TEST 9## for user unknown 10## 11# # ## ### ##### ######## ############# ##################### 12## Requirements 13 14package require Tcl 8.5 15package require nx 16package require pt::rde::nx ; # NX-based implementation of the 17 # PARAM virtual machine 18 # underlying the Tcl/PARAM code 19 # used below. 20 21# # ## ### ##### ######## ############# ##################### 22## 23 24nx::Class create PARSER -superclasses pt::rde::nx { 25 # # ## ### ##### ######## ############# 26 ## Public API 27 28 :public method parse {channel} { 29 :reset $channel 30 :MAIN ; # Entrypoint for the generated code. 31 return [:complete] 32 } 33 34 :public method parset {text} { 35 :reset {} 36 :data $text 37 :MAIN ; # Entrypoint for the generated code. 38 return [:complete] 39 } 40 41 # # ## ### ###### ######## ############# 42 ## BEGIN of GENERATED CODE. DO NOT EDIT. 43 44 # 45 # Grammar Start Expression 46 # 47 48 :method MAIN {} { 49 : sym_eos 50 return 51 } 52 53 # 54 # value Symbol 'eos' 55 # 56 57 :method sym_eos {} { 58 # x 59 # (ex) 60 # * 61 # x 62 # + 63 # <space> 64 # (ex) 65 66 : si:value_symbol_start eos 67 : sequence_11 68 : si:reduce_symbol_end eos 69 return 70 } 71 72 :method sequence_11 {} { 73 # x 74 # (ex) 75 # * 76 # x 77 # + 78 # <space> 79 # (ex) 80 81 : si:value_state_push 82 : sym_ex 83 : si:valuevalue_part 84 : kleene_9 85 : si:value_state_merge 86 return 87 } 88 89 :method kleene_9 {} { 90 # * 91 # x 92 # + 93 # <space> 94 # (ex) 95 96 while {1} { 97 : si:void2_state_push 98 : sequence_7 99 : si:kleene_close 100 } 101 return 102 } 103 104 :method sequence_7 {} { 105 # x 106 # + 107 # <space> 108 # (ex) 109 110 : si:void_state_push 111 : poskleene_4 112 : si:voidvalue_part 113 : sym_ex 114 : si:value_state_merge 115 return 116 } 117 118 :method poskleene_4 {} { 119 # + 120 # <space> 121 122 : i_loc_push 123 : si:next_space 124 : si:kleene_abort 125 while {1} { 126 : si:void2_state_push 127 : si:next_space 128 : si:kleene_close 129 } 130 return 131 } 132 133 # 134 # value Symbol 'ex' 135 # 136 137 :method sym_ex {} { 138 # x 139 # + 140 # x 141 # ! 142 # (X) 143 # [xz] 144 # ? 145 # (X) 146 147 : si:value_symbol_start ex 148 : sequence_25 149 : si:reduce_symbol_end ex 150 return 151 } 152 153 :method sequence_25 {} { 154 # x 155 # + 156 # x 157 # ! 158 # (X) 159 # [xz] 160 # ? 161 # (X) 162 163 : si:void_state_push 164 : poskleene_20 165 : si:voidvalue_part 166 : optional_23 167 : si:value_state_merge 168 return 169 } 170 171 :method poskleene_20 {} { 172 # + 173 # x 174 # ! 175 # (X) 176 # [xz] 177 178 : i_loc_push 179 : sequence_18 180 : si:kleene_abort 181 while {1} { 182 : si:void2_state_push 183 : sequence_18 184 : si:kleene_close 185 } 186 return 187 } 188 189 :method sequence_18 {} { 190 # x 191 # ! 192 # (X) 193 # [xz] 194 195 : si:void_state_push 196 : notahead_15 197 : si:voidvoid_part 198 : si:next_class xz 199 : si:void_state_merge 200 return 201 } 202 203 :method notahead_15 {} { 204 # ! 205 # (X) 206 207 : si:value_notahead_start 208 : sym_X 209 : si:value_notahead_exit 210 return 211 } 212 213 :method optional_23 {} { 214 # ? 215 # (X) 216 217 : si:void2_state_push 218 : sym_X 219 : si:void_state_merge_ok 220 return 221 } 222 223 # 224 # value Symbol 'X' 225 # 226 227 :method sym_X {} { 228 # 'x' 229 230 : si:void_symbol_start X 231 : si:next_char x 232 : si:void_leaf_symbol_end X 233 return 234 } 235 236 ## END of GENERATED CODE. DO NOT EDIT. 237 # # ## ### ###### ######## ############# 238} 239 240# # ## ### ##### ######## ############# ##################### 241## Ready 242 243package provide NX_PACKAGE 1 244return 245