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