hotcell 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 891615844b788d5a97cd05732e62ccfea7fa9677
4
- data.tar.gz: ce382e5b004e762cbb7bfecae1993cb29a62f408
3
+ metadata.gz: 627e6358e79beed36bea1cabf8b3dd5876e8bb39
4
+ data.tar.gz: 7cb9469540c1d9af0826bf6420a32f66b90f8d83
5
5
  SHA512:
6
- metadata.gz: a23dfdd6e27f2d288d4ef3f8eab2b193a0ca72a6d7214bf3e3bd497587a4c22073906e79abdce32727188f31db5f5d71aa76435bc53bddaa12845cec202240b4
7
- data.tar.gz: a677eb7af6252857c6e0210101676c93702e6b33a65174234d01b7e571dbf2700261bd0f49f035da806ee73bf9ff9c48d19243195489c6bbeb7675ec94f61373
6
+ metadata.gz: ad625dfa7fcd9096d5d971414a89b17a940d57fcb865ddd3fcb2d284cabf3c777c67f139ea6dd3520b21549fc172739f1f57454eb89e9eb5949b1a623cc57f2b
7
+ data.tar.gz: 1b4f73d262a17033e35b5619f247b3d14900a24d21d7a448d7457a4ba472058fd6238bbe7a4ca6de29e18816a0fefc035824fd2675b9e47179b8e261badfc79f
data/README.md CHANGED
@@ -135,11 +135,12 @@ Hotcell has several basic types:
135
135
  Last two have the same meaning, use whatever you like.
136
136
 
137
137
  All the basic types are objects and support method calls on themselfs.
138
+ Hotcell supports ruby-like string interpolation: `{{ "hello, #{name}" }}`
138
139
 
139
140
  ### Variables
140
141
 
141
142
  Variable is a value reference (`{{ name }}`). Variable name is better
142
- to describe with regexp
143
+ to describe with regexp
143
144
 
144
145
  ```ruby
145
146
  /\[_a-z\]\[_a-z0-9\]*[?!]?/i
@@ -169,6 +170,8 @@ Operators between values form an expression: `{{ forty_two = 6 * 7 }}` or
169
170
  method arguments passing: `{{ hello(who, where) }}`
170
171
  * `[]` is used for array or hash elements access (`{{ some_array[2] }}`
171
172
  or `{{ [1, 2, 3][2] }}` or `{{ { foo: 'bar' }['foo'] }}`)
173
+ * `?:` - ternary conditional operator: `{{ cond ? branch1 : branch2 }}`.
174
+ Similar behavior as ruby's, right-associative.
172
175
 
173
176
  Method call args are similar to ruby ones. You can call function like
174
177
  this: `{{ foo(42, 'string', opt1: 3, opt2: /regexp/) }}`, and the last
data/Rakefile CHANGED
@@ -28,8 +28,8 @@ namespace :project do
28
28
  end
29
29
 
30
30
  task :dot do
31
- `ragel -Vp lib/hotcell/lexerr.rl > lexerr.dot`
32
- `ragel -Vp lib/hotcell/lexerc.rl > lexerc.dot`
31
+ `ragel -Vp -I lib/hotcell lib/hotcell/lexerr.rl > lexerr.dot`
32
+ `ragel -Vp -I lib/hotcell ext/lexerc/lexerc.rl > lexerc.dot`
33
33
  end
34
34
 
35
35
  desc 'Build parser'
@@ -1,3 +1,3 @@
1
1
  require 'mkmf'
2
2
 
3
- create_makefile('lexerc')
3
+ create_makefile('hotcell/lexerc')
@@ -1,7 +1,7 @@
1
1
 
2
2
  #line 1 "ext/lexerc/lexerc.rl"
3
3
 
4
- #line 12 "ext/lexerc/lexerc.rl"
4
+ #line 39 "ext/lexerc/lexerc.rl"
5
5
 
6
6
 
7
7
 
@@ -13,22 +13,26 @@ static VALUE cHotcellLexer;
13
13
 
14
14
 
15
15
  #line 16 "ext/lexerc/lexerc.c"
16
- static const int puffer_lexer_start = 13;
17
- static const int puffer_lexer_first_final = 13;
18
- static const int puffer_lexer_error = 0;
16
+ static const int hotcell_lexer_start = 19;
17
+ static const int hotcell_lexer_first_final = 19;
18
+ static const int hotcell_lexer_error = 0;
19
19
 
20
- static const int puffer_lexer_en_expression = 17;
21
- static const int puffer_lexer_en_template_comment = 29;
22
- static const int puffer_lexer_en_main = 13;
20
+ static const int hotcell_lexer_en_dstring = 23;
21
+ static const int hotcell_lexer_en_interpolation = 26;
22
+ static const int hotcell_lexer_en_expression = 37;
23
+ static const int hotcell_lexer_en_template_comment = 50;
24
+ static const int hotcell_lexer_en_main = 19;
23
25
 
24
26
 
25
- #line 22 "ext/lexerc/lexerc.rl"
27
+ #line 49 "ext/lexerc/lexerc.rl"
26
28
 
27
29
  static char *p;
28
30
  static char *ts;
29
31
  static char *te;
30
32
  static char *data;
31
33
  static VALUE encoding;
34
+ static int braces_count;
35
+ static long dstring_start;
32
36
 
33
37
  static VALUE tokenize(VALUE self) {
34
38
  VALUE source = rb_iv_get(self, "@source");
@@ -47,18 +51,18 @@ static VALUE tokenize(VALUE self) {
47
51
  char *eof = pe;
48
52
 
49
53
 
50
- #line 51 "ext/lexerc/lexerc.c"
54
+ #line 55 "ext/lexerc/lexerc.c"
51
55
  {
52
- cs = puffer_lexer_start;
56
+ cs = hotcell_lexer_start;
53
57
  top = 0;
54
58
  ts = 0;
55
59
  te = 0;
56
60
  act = 0;
57
61
  }
58
62
 
59
- #line 46 "ext/lexerc/lexerc.rl"
63
+ #line 75 "ext/lexerc/lexerc.rl"
60
64
 
61
- #line 62 "ext/lexerc/lexerc.c"
65
+ #line 66 "ext/lexerc/lexerc.c"
62
66
  {
63
67
  if ( p == pe )
64
68
  goto _test_eof;
@@ -66,38 +70,59 @@ static VALUE tokenize(VALUE self) {
66
70
 
67
71
  _again:
68
72
  switch ( cs ) {
69
- case 13: goto st13;
70
- case 14: goto st14;
71
- case 15: goto st15;
72
- case 16: goto st16;
73
- case 1: goto st1;
74
- case 17: goto st17;
75
- case 0: goto st0;
76
- case 18: goto st18;
77
- case 2: goto st2;
78
- case 3: goto st3;
79
73
  case 19: goto st19;
80
- case 4: goto st4;
81
- case 5: goto st5;
82
- case 6: goto st6;
83
- case 7: goto st7;
84
74
  case 20: goto st20;
85
75
  case 21: goto st21;
86
- case 8: goto st8;
87
76
  case 22: goto st22;
77
+ case 1: goto st1;
88
78
  case 23: goto st23;
89
79
  case 24: goto st24;
80
+ case 2: goto st2;
90
81
  case 25: goto st25;
91
- case 9: goto st9;
92
82
  case 26: goto st26;
93
- case 10: goto st10;
83
+ case 0: goto st0;
94
84
  case 27: goto st27;
95
- case 11: goto st11;
96
85
  case 28: goto st28;
86
+ case 3: goto st3;
87
+ case 4: goto st4;
88
+ case 5: goto st5;
97
89
  case 29: goto st29;
98
90
  case 30: goto st30;
91
+ case 6: goto st6;
99
92
  case 31: goto st31;
93
+ case 32: goto st32;
94
+ case 33: goto st33;
95
+ case 34: goto st34;
96
+ case 7: goto st7;
97
+ case 35: goto st35;
98
+ case 8: goto st8;
99
+ case 36: goto st36;
100
+ case 9: goto st9;
101
+ case 37: goto st37;
102
+ case 38: goto st38;
103
+ case 39: goto st39;
104
+ case 40: goto st40;
105
+ case 10: goto st10;
106
+ case 11: goto st11;
100
107
  case 12: goto st12;
108
+ case 13: goto st13;
109
+ case 41: goto st41;
110
+ case 42: goto st42;
111
+ case 14: goto st14;
112
+ case 43: goto st43;
113
+ case 44: goto st44;
114
+ case 45: goto st45;
115
+ case 46: goto st46;
116
+ case 15: goto st15;
117
+ case 47: goto st47;
118
+ case 16: goto st16;
119
+ case 48: goto st48;
120
+ case 17: goto st17;
121
+ case 49: goto st49;
122
+ case 50: goto st50;
123
+ case 51: goto st51;
124
+ case 52: goto st52;
125
+ case 18: goto st18;
101
126
  default: break;
102
127
  }
103
128
 
@@ -107,69 +132,69 @@ _resume:
107
132
  switch ( cs )
108
133
  {
109
134
  tr0:
110
- #line 91 "lib/hotcell/lexer.rl"
111
- {{p = ((te))-1;}{ emit_tag; {stack[top++] = 13; goto st17;} }}
112
- goto st13;
135
+ #line 110 "lib/hotcell/lexer.rl"
136
+ {{p = ((te))-1;}{ emit_tag; {stack[top++] = 19; goto st37;} }}
137
+ goto st19;
113
138
  tr1:
114
- #line 91 "lib/hotcell/lexer.rl"
115
- {te = p+1;{ emit_tag; {stack[top++] = 13; goto st17;} }}
116
- goto st13;
117
- tr22:
118
- #line 93 "lib/hotcell/lexer.rl"
139
+ #line 110 "lib/hotcell/lexer.rl"
140
+ {te = p+1;{ emit_tag; {stack[top++] = 19; goto st37;} }}
141
+ goto st19;
142
+ tr31:
143
+ #line 112 "lib/hotcell/lexer.rl"
119
144
  {te = p;p--;{ emit_template; }}
120
- goto st13;
121
- tr24:
122
- #line 91 "lib/hotcell/lexer.rl"
123
- {te = p;p--;{ emit_tag; {stack[top++] = 13; goto st17;} }}
124
- goto st13;
125
- tr25:
126
- #line 92 "lib/hotcell/lexer.rl"
127
- {te = p+1;{ emit_comment; {stack[top++] = 13; goto st29;} }}
128
- goto st13;
129
- st13:
145
+ goto st19;
146
+ tr33:
147
+ #line 110 "lib/hotcell/lexer.rl"
148
+ {te = p;p--;{ emit_tag; {stack[top++] = 19; goto st37;} }}
149
+ goto st19;
150
+ tr34:
151
+ #line 111 "lib/hotcell/lexer.rl"
152
+ {te = p+1;{ emit_comment; {stack[top++] = 19; goto st50;} }}
153
+ goto st19;
154
+ st19:
130
155
  #line 1 "NONE"
131
156
  {ts = 0;}
132
157
  if ( ++p == pe )
133
- goto _test_eof13;
134
- case 13:
158
+ goto _test_eof19;
159
+ case 19:
135
160
  #line 1 "NONE"
136
161
  {ts = p;}
137
- #line 138 "ext/lexerc/lexerc.c"
162
+ #line 163 "ext/lexerc/lexerc.c"
138
163
  if ( (*p) == 123 )
139
- goto st15;
140
- goto st14;
141
- st14:
164
+ goto st21;
165
+ goto st20;
166
+ st20:
142
167
  if ( ++p == pe )
143
- goto _test_eof14;
144
- case 14:
168
+ goto _test_eof20;
169
+ case 20:
145
170
  if ( (*p) == 123 )
146
- goto tr22;
147
- goto st14;
148
- st15:
171
+ goto tr31;
172
+ goto st20;
173
+ st21:
149
174
  if ( ++p == pe )
150
- goto _test_eof15;
151
- case 15:
175
+ goto _test_eof21;
176
+ case 21:
152
177
  if ( (*p) == 123 )
153
- goto tr23;
154
- goto tr22;
155
- tr23:
178
+ goto tr32;
179
+ goto tr31;
180
+ tr32:
156
181
  #line 1 "NONE"
157
182
  {te = p+1;}
158
- goto st16;
159
- st16:
183
+ goto st22;
184
+ st22:
160
185
  if ( ++p == pe )
161
- goto _test_eof16;
162
- case 16:
163
- #line 164 "ext/lexerc/lexerc.c"
186
+ goto _test_eof22;
187
+ case 22:
188
+ #line 189 "ext/lexerc/lexerc.c"
164
189
  switch( (*p) ) {
165
190
  case 33: goto tr1;
166
- case 35: goto tr25;
191
+ case 35: goto tr34;
167
192
  case 94: goto tr1;
168
193
  case 101: goto st1;
169
194
  case 114: goto st1;
170
195
  case 126: goto tr1;
171
196
  }
172
- goto tr24;
197
+ goto tr33;
173
198
  st1:
174
199
  if ( ++p == pe )
175
200
  goto _test_eof1;
@@ -177,447 +202,840 @@ case 1:
177
202
  if ( (*p) == 32 )
178
203
  goto tr1;
179
204
  goto tr0;
205
+ tr2:
206
+ #line 1 "NONE"
207
+ { switch( act ) {
208
+ case 0:
209
+ {{goto st0;}}
210
+ break;
211
+ case 3:
212
+ {{p = ((te))-1;} emit_dstring; }
213
+ break;
214
+ }
215
+ }
216
+ goto st23;
217
+ tr36:
218
+ #line 73 "lib/hotcell/lexer.rl"
219
+ {te = p+1;{ emit_dstring_close; {cs = stack[--top];goto _again;} }}
220
+ goto st23;
221
+ tr39:
222
+ #line 75 "lib/hotcell/lexer.rl"
223
+ {te = p;p--;{ emit_dstring; }}
224
+ goto st23;
225
+ tr40:
226
+ #line 11 "ext/lexerc/lexerc.rl"
227
+ {te = p+1;{
228
+ braces_count = 0;
229
+ emit_interpolation;
230
+ {stack[top++] = 23; goto st26;}
231
+ }}
232
+ goto st23;
233
+ st23:
234
+ #line 1 "NONE"
235
+ {ts = 0;}
236
+ #line 1 "NONE"
237
+ {act = 0;}
238
+ if ( ++p == pe )
239
+ goto _test_eof23;
240
+ case 23:
241
+ #line 1 "NONE"
242
+ {ts = p;}
243
+ #line 244 "ext/lexerc/lexerc.c"
244
+ switch( (*p) ) {
245
+ case 34: goto tr36;
246
+ case 35: goto st25;
247
+ case 92: goto st2;
248
+ }
249
+ goto tr3;
180
250
  tr3:
181
- #line 79 "lib/hotcell/lexer.rl"
182
- {te = p+1;{ emit_dstring; }}
183
- goto st17;
184
- tr5:
185
- #line 81 "lib/hotcell/lexer.rl"
186
- {{p = ((te))-1;}{ emit_comment; }}
187
- goto st17;
188
- tr7:
251
+ #line 1 "NONE"
252
+ {te = p+1;}
189
253
  #line 75 "lib/hotcell/lexer.rl"
254
+ {act = 3;}
255
+ goto st24;
256
+ st24:
257
+ if ( ++p == pe )
258
+ goto _test_eof24;
259
+ case 24:
260
+ #line 261 "ext/lexerc/lexerc.c"
261
+ if ( (*p) == 92 )
262
+ goto st2;
263
+ if ( 34 <= (*p) && (*p) <= 35 )
264
+ goto tr39;
265
+ goto tr3;
266
+ st2:
267
+ if ( ++p == pe )
268
+ goto _test_eof2;
269
+ case 2:
270
+ goto tr3;
271
+ st25:
272
+ if ( ++p == pe )
273
+ goto _test_eof25;
274
+ case 25:
275
+ if ( (*p) == 123 )
276
+ goto tr40;
277
+ goto tr39;
278
+ tr4:
279
+ #line 81 "lib/hotcell/lexer.rl"
190
280
  {te = p+1;{ emit_operator; }}
191
- goto st17;
192
- tr10:
193
- #line 78 "lib/hotcell/lexer.rl"
194
- {te = p+1;{ emit_sstring; }}
195
- goto st17;
196
- tr12:
281
+ goto st26;
282
+ tr7:
283
+ #line 87 "lib/hotcell/lexer.rl"
284
+ {te = p+1;{ emit_string; }}
285
+ goto st26;
286
+ tr9:
197
287
  #line 1 "NONE"
198
288
  { switch( act ) {
199
- case 2:
289
+ case 4:
200
290
  {{p = ((te))-1;} emit_operator; }
201
291
  break;
202
- case 3:
292
+ case 8:
203
293
  {{p = ((te))-1;} emit_numeric; }
204
294
  break;
205
295
  }
206
296
  }
207
- goto st17;
208
- tr14:
209
- #line 75 "lib/hotcell/lexer.rl"
297
+ goto st26;
298
+ tr11:
299
+ #line 81 "lib/hotcell/lexer.rl"
210
300
  {{p = ((te))-1;}{ emit_operator; }}
211
- goto st17;
212
- tr27:
213
- #line 82 "lib/hotcell/lexer.rl"
301
+ goto st26;
302
+ tr41:
303
+ #line 89 "lib/hotcell/lexer.rl"
214
304
  {te = p+1;}
215
- goto st17;
216
- tr38:
217
- #line 75 "lib/hotcell/lexer.rl"
218
- {te = p;p--;{ emit_operator; }}
219
- goto st17;
220
- tr39:
305
+ goto st26;
306
+ tr51:
307
+ #line 17 "ext/lexerc/lexerc.rl"
308
+ {te = p+1;{
309
+ emit_operator;
310
+ braces_count++;
311
+ }}
312
+ goto st26;
313
+ tr53:
314
+ #line 22 "ext/lexerc/lexerc.rl"
315
+ {te = p+1;{
316
+ if (braces_count < 1) {
317
+ emit_interpolation;
318
+ {cs = stack[--top];goto _again;}
319
+ } else {
320
+ emit_operator;
321
+ braces_count--;
322
+ }
323
+ }}
324
+ goto st26;
325
+ tr54:
221
326
  #line 81 "lib/hotcell/lexer.rl"
222
- {te = p;p--;{ emit_comment; }}
223
- goto st17;
224
- tr42:
225
- #line 76 "lib/hotcell/lexer.rl"
327
+ {te = p;p--;{ emit_operator; }}
328
+ goto st26;
329
+ tr55:
330
+ #line 32 "ext/lexerc/lexerc.rl"
331
+ {te = p;p--;{
332
+ dstring_start = ts - data;
333
+ emit_dstring_open;
334
+ {stack[top++] = 26; goto st23;}
335
+ }}
336
+ goto st26;
337
+ tr57:
338
+ #line 85 "lib/hotcell/lexer.rl"
226
339
  {te = p;p--;{ emit_numeric; }}
227
- goto st17;
228
- tr44:
229
- #line 80 "lib/hotcell/lexer.rl"
340
+ goto st26;
341
+ tr59:
342
+ #line 88 "lib/hotcell/lexer.rl"
230
343
  {te = p;p--;{ emit_regexp; }}
231
- goto st17;
232
- tr45:
233
- #line 77 "lib/hotcell/lexer.rl"
344
+ goto st26;
345
+ tr60:
346
+ #line 86 "lib/hotcell/lexer.rl"
234
347
  {te = p;p--;{ emit_identifer; }}
235
- goto st17;
236
- tr46:
237
- #line 77 "lib/hotcell/lexer.rl"
348
+ goto st26;
349
+ tr61:
350
+ #line 86 "lib/hotcell/lexer.rl"
238
351
  {te = p+1;{ emit_identifer; }}
239
- goto st17;
240
- tr47:
241
- #line 74 "lib/hotcell/lexer.rl"
242
- {te = p+1;{ emit_tag; {cs = stack[--top];goto _again;} }}
243
- goto st17;
244
- st17:
352
+ goto st26;
353
+ st26:
245
354
  #line 1 "NONE"
246
355
  {ts = 0;}
247
356
  if ( ++p == pe )
248
- goto _test_eof17;
249
- case 17:
357
+ goto _test_eof26;
358
+ case 26:
250
359
  #line 1 "NONE"
251
360
  {ts = p;}
252
- #line 253 "ext/lexerc/lexerc.c"
361
+ #line 362 "ext/lexerc/lexerc.c"
253
362
  switch( (*p) ) {
254
- case 10: goto tr7;
255
- case 32: goto tr27;
256
- case 33: goto st18;
257
- case 34: goto st2;
258
- case 35: goto tr6;
259
- case 38: goto st5;
260
- case 39: goto st6;
261
- case 42: goto st20;
262
- case 45: goto tr31;
263
- case 46: goto st23;
264
- case 47: goto tr33;
265
- case 63: goto tr7;
266
- case 91: goto tr7;
267
- case 93: goto tr7;
268
- case 95: goto st27;
269
- case 123: goto tr7;
270
- case 124: goto st11;
271
- case 125: goto st28;
363
+ case 10: goto tr4;
364
+ case 32: goto tr41;
365
+ case 33: goto st27;
366
+ case 34: goto st28;
367
+ case 38: goto st3;
368
+ case 39: goto st4;
369
+ case 42: goto st29;
370
+ case 45: goto tr46;
371
+ case 46: goto st32;
372
+ case 47: goto tr48;
373
+ case 63: goto tr4;
374
+ case 91: goto tr4;
375
+ case 93: goto tr4;
376
+ case 95: goto st36;
377
+ case 123: goto tr51;
378
+ case 124: goto st9;
379
+ case 125: goto tr53;
272
380
  }
273
381
  if ( (*p) < 58 ) {
274
382
  if ( (*p) < 37 ) {
275
383
  if ( 9 <= (*p) && (*p) <= 13 )
276
- goto tr27;
384
+ goto tr41;
277
385
  } else if ( (*p) > 44 ) {
278
386
  if ( 48 <= (*p) && (*p) <= 57 )
279
- goto tr34;
387
+ goto tr49;
280
388
  } else
281
- goto tr7;
389
+ goto tr4;
282
390
  } else if ( (*p) > 59 ) {
283
391
  if ( (*p) < 65 ) {
284
392
  if ( 60 <= (*p) && (*p) <= 62 )
285
- goto st18;
393
+ goto st27;
286
394
  } else if ( (*p) > 90 ) {
287
395
  if ( 97 <= (*p) && (*p) <= 122 )
288
- goto st27;
396
+ goto st36;
289
397
  } else
290
- goto st27;
398
+ goto st36;
291
399
  } else
292
- goto tr7;
400
+ goto tr4;
293
401
  goto st0;
294
402
  st0:
295
403
  cs = 0;
296
404
  goto _out;
297
- st18:
405
+ st27:
298
406
  if ( ++p == pe )
299
- goto _test_eof18;
300
- case 18:
407
+ goto _test_eof27;
408
+ case 27:
301
409
  if ( (*p) == 61 )
302
- goto tr7;
303
- goto tr38;
304
- st2:
410
+ goto tr4;
411
+ goto tr54;
412
+ st28:
305
413
  if ( ++p == pe )
306
- goto _test_eof2;
307
- case 2:
308
- switch( (*p) ) {
309
- case 34: goto tr3;
310
- case 92: goto st3;
311
- }
312
- goto st2;
414
+ goto _test_eof28;
415
+ case 28:
416
+ if ( (*p) == 34 )
417
+ goto tr7;
418
+ goto tr55;
313
419
  st3:
314
420
  if ( ++p == pe )
315
421
  goto _test_eof3;
316
422
  case 3:
317
- goto st2;
318
- tr6:
319
- #line 1 "NONE"
320
- {te = p+1;}
321
- goto st19;
322
- st19:
323
- if ( ++p == pe )
324
- goto _test_eof19;
325
- case 19:
326
- #line 327 "ext/lexerc/lexerc.c"
327
- switch( (*p) ) {
328
- case 10: goto tr39;
329
- case 125: goto st4;
330
- }
331
- goto tr6;
423
+ if ( (*p) == 38 )
424
+ goto tr4;
425
+ goto st0;
332
426
  st4:
333
427
  if ( ++p == pe )
334
428
  goto _test_eof4;
335
429
  case 4:
336
- if ( (*p) == 125 )
337
- goto tr5;
338
- goto tr6;
430
+ switch( (*p) ) {
431
+ case 39: goto tr7;
432
+ case 92: goto st5;
433
+ }
434
+ goto st4;
339
435
  st5:
340
436
  if ( ++p == pe )
341
437
  goto _test_eof5;
342
438
  case 5:
343
- if ( (*p) == 38 )
344
- goto tr7;
345
- goto st0;
439
+ goto st4;
440
+ st29:
441
+ if ( ++p == pe )
442
+ goto _test_eof29;
443
+ case 29:
444
+ if ( (*p) == 42 )
445
+ goto tr4;
446
+ goto tr54;
447
+ tr46:
448
+ #line 1 "NONE"
449
+ {te = p+1;}
450
+ #line 81 "lib/hotcell/lexer.rl"
451
+ {act = 4;}
452
+ goto st30;
453
+ tr49:
454
+ #line 1 "NONE"
455
+ {te = p+1;}
456
+ #line 85 "lib/hotcell/lexer.rl"
457
+ {act = 8;}
458
+ goto st30;
459
+ st30:
460
+ if ( ++p == pe )
461
+ goto _test_eof30;
462
+ case 30:
463
+ #line 464 "ext/lexerc/lexerc.c"
464
+ if ( (*p) == 46 )
465
+ goto st6;
466
+ if ( 48 <= (*p) && (*p) <= 57 )
467
+ goto tr49;
468
+ goto tr9;
346
469
  st6:
347
470
  if ( ++p == pe )
348
471
  goto _test_eof6;
349
472
  case 6:
473
+ if ( 48 <= (*p) && (*p) <= 57 )
474
+ goto st31;
475
+ goto tr9;
476
+ st31:
477
+ if ( ++p == pe )
478
+ goto _test_eof31;
479
+ case 31:
480
+ if ( 48 <= (*p) && (*p) <= 57 )
481
+ goto st31;
482
+ goto tr57;
483
+ st32:
484
+ if ( ++p == pe )
485
+ goto _test_eof32;
486
+ case 32:
487
+ if ( (*p) == 46 )
488
+ goto st33;
489
+ if ( 48 <= (*p) && (*p) <= 57 )
490
+ goto st31;
491
+ goto tr54;
492
+ st33:
493
+ if ( ++p == pe )
494
+ goto _test_eof33;
495
+ case 33:
496
+ if ( (*p) == 46 )
497
+ goto tr4;
498
+ goto tr54;
499
+ tr48:
500
+ #line 1 "NONE"
501
+ {te = p+1;}
502
+ #line 4 "ext/lexerc/lexerc.rl"
503
+ {
504
+ if (regexp_possible == Qfalse) {
505
+ emit_operator;
506
+ {goto st37;}
507
+ }
508
+ }
509
+ goto st34;
510
+ st34:
511
+ if ( ++p == pe )
512
+ goto _test_eof34;
513
+ case 34:
514
+ #line 515 "ext/lexerc/lexerc.c"
350
515
  switch( (*p) ) {
351
- case 39: goto tr10;
352
- case 92: goto st7;
516
+ case 47: goto st35;
517
+ case 92: goto st8;
353
518
  }
354
- goto st6;
519
+ goto st7;
355
520
  st7:
356
521
  if ( ++p == pe )
357
522
  goto _test_eof7;
358
523
  case 7:
359
- goto st6;
360
- st20:
524
+ switch( (*p) ) {
525
+ case 47: goto st35;
526
+ case 92: goto st8;
527
+ }
528
+ goto st7;
529
+ st35:
361
530
  if ( ++p == pe )
362
- goto _test_eof20;
363
- case 20:
531
+ goto _test_eof35;
532
+ case 35:
533
+ if ( (*p) > 90 ) {
534
+ if ( 97 <= (*p) && (*p) <= 122 )
535
+ goto st35;
536
+ } else if ( (*p) >= 65 )
537
+ goto st35;
538
+ goto tr59;
539
+ st8:
540
+ if ( ++p == pe )
541
+ goto _test_eof8;
542
+ case 8:
543
+ goto st7;
544
+ st36:
545
+ if ( ++p == pe )
546
+ goto _test_eof36;
547
+ case 36:
548
+ switch( (*p) ) {
549
+ case 33: goto tr61;
550
+ case 63: goto tr61;
551
+ case 95: goto st36;
552
+ }
553
+ if ( (*p) < 65 ) {
554
+ if ( 48 <= (*p) && (*p) <= 57 )
555
+ goto st36;
556
+ } else if ( (*p) > 90 ) {
557
+ if ( 97 <= (*p) && (*p) <= 122 )
558
+ goto st36;
559
+ } else
560
+ goto st36;
561
+ goto tr60;
562
+ st9:
563
+ if ( ++p == pe )
564
+ goto _test_eof9;
565
+ case 9:
566
+ if ( (*p) == 124 )
567
+ goto tr4;
568
+ goto st0;
569
+ tr15:
570
+ #line 100 "lib/hotcell/lexer.rl"
571
+ {{p = ((te))-1;}{ emit_comment; }}
572
+ goto st37;
573
+ tr17:
574
+ #line 95 "lib/hotcell/lexer.rl"
575
+ {te = p+1;{ emit_operator; }}
576
+ goto st37;
577
+ tr19:
578
+ #line 98 "lib/hotcell/lexer.rl"
579
+ {te = p+1;{ emit_string; }}
580
+ goto st37;
581
+ tr21:
582
+ #line 1 "NONE"
583
+ { switch( act ) {
584
+ case 15:
585
+ {{p = ((te))-1;} emit_operator; }
586
+ break;
587
+ case 16:
588
+ {{p = ((te))-1;} emit_numeric; }
589
+ break;
590
+ }
591
+ }
592
+ goto st37;
593
+ tr23:
594
+ #line 95 "lib/hotcell/lexer.rl"
595
+ {{p = ((te))-1;}{ emit_operator; }}
596
+ goto st37;
597
+ tr62:
598
+ #line 101 "lib/hotcell/lexer.rl"
599
+ {te = p+1;}
600
+ goto st37;
601
+ tr74:
602
+ #line 95 "lib/hotcell/lexer.rl"
603
+ {te = p;p--;{ emit_operator; }}
604
+ goto st37;
605
+ tr75:
606
+ #line 32 "ext/lexerc/lexerc.rl"
607
+ {te = p;p--;{
608
+ dstring_start = ts - data;
609
+ emit_dstring_open;
610
+ {stack[top++] = 37; goto st23;}
611
+ }}
612
+ goto st37;
613
+ tr76:
614
+ #line 100 "lib/hotcell/lexer.rl"
615
+ {te = p;p--;{ emit_comment; }}
616
+ goto st37;
617
+ tr79:
618
+ #line 96 "lib/hotcell/lexer.rl"
619
+ {te = p;p--;{ emit_numeric; }}
620
+ goto st37;
621
+ tr81:
622
+ #line 99 "lib/hotcell/lexer.rl"
623
+ {te = p;p--;{ emit_regexp; }}
624
+ goto st37;
625
+ tr82:
626
+ #line 97 "lib/hotcell/lexer.rl"
627
+ {te = p;p--;{ emit_identifer; }}
628
+ goto st37;
629
+ tr83:
630
+ #line 97 "lib/hotcell/lexer.rl"
631
+ {te = p+1;{ emit_identifer; }}
632
+ goto st37;
633
+ tr84:
634
+ #line 93 "lib/hotcell/lexer.rl"
635
+ {te = p+1;{ emit_tag; {cs = stack[--top];goto _again;} }}
636
+ goto st37;
637
+ st37:
638
+ #line 1 "NONE"
639
+ {ts = 0;}
640
+ if ( ++p == pe )
641
+ goto _test_eof37;
642
+ case 37:
643
+ #line 1 "NONE"
644
+ {ts = p;}
645
+ #line 646 "ext/lexerc/lexerc.c"
646
+ switch( (*p) ) {
647
+ case 10: goto tr17;
648
+ case 32: goto tr62;
649
+ case 33: goto st38;
650
+ case 34: goto st39;
651
+ case 35: goto tr16;
652
+ case 38: goto st11;
653
+ case 39: goto st12;
654
+ case 42: goto st41;
655
+ case 45: goto tr67;
656
+ case 46: goto st44;
657
+ case 47: goto tr69;
658
+ case 63: goto tr17;
659
+ case 91: goto tr17;
660
+ case 93: goto tr17;
661
+ case 95: goto st48;
662
+ case 123: goto tr17;
663
+ case 124: goto st17;
664
+ case 125: goto st49;
665
+ }
666
+ if ( (*p) < 58 ) {
667
+ if ( (*p) < 37 ) {
668
+ if ( 9 <= (*p) && (*p) <= 13 )
669
+ goto tr62;
670
+ } else if ( (*p) > 44 ) {
671
+ if ( 48 <= (*p) && (*p) <= 57 )
672
+ goto tr70;
673
+ } else
674
+ goto tr17;
675
+ } else if ( (*p) > 59 ) {
676
+ if ( (*p) < 65 ) {
677
+ if ( 60 <= (*p) && (*p) <= 62 )
678
+ goto st38;
679
+ } else if ( (*p) > 90 ) {
680
+ if ( 97 <= (*p) && (*p) <= 122 )
681
+ goto st48;
682
+ } else
683
+ goto st48;
684
+ } else
685
+ goto tr17;
686
+ goto st0;
687
+ st38:
688
+ if ( ++p == pe )
689
+ goto _test_eof38;
690
+ case 38:
691
+ if ( (*p) == 61 )
692
+ goto tr17;
693
+ goto tr74;
694
+ st39:
695
+ if ( ++p == pe )
696
+ goto _test_eof39;
697
+ case 39:
698
+ if ( (*p) == 34 )
699
+ goto tr19;
700
+ goto tr75;
701
+ tr16:
702
+ #line 1 "NONE"
703
+ {te = p+1;}
704
+ goto st40;
705
+ st40:
706
+ if ( ++p == pe )
707
+ goto _test_eof40;
708
+ case 40:
709
+ #line 710 "ext/lexerc/lexerc.c"
710
+ switch( (*p) ) {
711
+ case 10: goto tr76;
712
+ case 125: goto st10;
713
+ }
714
+ goto tr16;
715
+ st10:
716
+ if ( ++p == pe )
717
+ goto _test_eof10;
718
+ case 10:
719
+ if ( (*p) == 125 )
720
+ goto tr15;
721
+ goto tr16;
722
+ st11:
723
+ if ( ++p == pe )
724
+ goto _test_eof11;
725
+ case 11:
726
+ if ( (*p) == 38 )
727
+ goto tr17;
728
+ goto st0;
729
+ st12:
730
+ if ( ++p == pe )
731
+ goto _test_eof12;
732
+ case 12:
733
+ switch( (*p) ) {
734
+ case 39: goto tr19;
735
+ case 92: goto st13;
736
+ }
737
+ goto st12;
738
+ st13:
739
+ if ( ++p == pe )
740
+ goto _test_eof13;
741
+ case 13:
742
+ goto st12;
743
+ st41:
744
+ if ( ++p == pe )
745
+ goto _test_eof41;
746
+ case 41:
364
747
  if ( (*p) == 42 )
365
- goto tr7;
366
- goto tr38;
367
- tr31:
748
+ goto tr17;
749
+ goto tr74;
750
+ tr67:
368
751
  #line 1 "NONE"
369
752
  {te = p+1;}
370
- #line 75 "lib/hotcell/lexer.rl"
371
- {act = 2;}
372
- goto st21;
373
- tr34:
753
+ #line 95 "lib/hotcell/lexer.rl"
754
+ {act = 15;}
755
+ goto st42;
756
+ tr70:
374
757
  #line 1 "NONE"
375
758
  {te = p+1;}
376
- #line 76 "lib/hotcell/lexer.rl"
377
- {act = 3;}
378
- goto st21;
379
- st21:
759
+ #line 96 "lib/hotcell/lexer.rl"
760
+ {act = 16;}
761
+ goto st42;
762
+ st42:
380
763
  if ( ++p == pe )
381
- goto _test_eof21;
382
- case 21:
383
- #line 384 "ext/lexerc/lexerc.c"
764
+ goto _test_eof42;
765
+ case 42:
766
+ #line 767 "ext/lexerc/lexerc.c"
384
767
  if ( (*p) == 46 )
385
- goto st8;
768
+ goto st14;
386
769
  if ( 48 <= (*p) && (*p) <= 57 )
387
- goto tr34;
388
- goto tr12;
389
- st8:
770
+ goto tr70;
771
+ goto tr21;
772
+ st14:
390
773
  if ( ++p == pe )
391
- goto _test_eof8;
392
- case 8:
774
+ goto _test_eof14;
775
+ case 14:
393
776
  if ( 48 <= (*p) && (*p) <= 57 )
394
- goto st22;
395
- goto tr12;
396
- st22:
777
+ goto st43;
778
+ goto tr21;
779
+ st43:
397
780
  if ( ++p == pe )
398
- goto _test_eof22;
399
- case 22:
781
+ goto _test_eof43;
782
+ case 43:
400
783
  if ( 48 <= (*p) && (*p) <= 57 )
401
- goto st22;
402
- goto tr42;
403
- st23:
784
+ goto st43;
785
+ goto tr79;
786
+ st44:
404
787
  if ( ++p == pe )
405
- goto _test_eof23;
406
- case 23:
788
+ goto _test_eof44;
789
+ case 44:
407
790
  if ( (*p) == 46 )
408
- goto st24;
791
+ goto st45;
409
792
  if ( 48 <= (*p) && (*p) <= 57 )
410
- goto st22;
411
- goto tr38;
412
- st24:
793
+ goto st43;
794
+ goto tr74;
795
+ st45:
413
796
  if ( ++p == pe )
414
- goto _test_eof24;
415
- case 24:
797
+ goto _test_eof45;
798
+ case 45:
416
799
  if ( (*p) == 46 )
417
- goto tr7;
418
- goto tr38;
419
- tr33:
800
+ goto tr17;
801
+ goto tr74;
802
+ tr69:
420
803
  #line 1 "NONE"
421
804
  {te = p+1;}
422
805
  #line 4 "ext/lexerc/lexerc.rl"
423
806
  {
424
807
  if (regexp_possible == Qfalse) {
425
808
  emit_operator;
426
- {goto st17;}
809
+ {goto st37;}
427
810
  }
428
811
  }
429
- goto st25;
430
- st25:
812
+ goto st46;
813
+ st46:
431
814
  if ( ++p == pe )
432
- goto _test_eof25;
433
- case 25:
434
- #line 435 "ext/lexerc/lexerc.c"
815
+ goto _test_eof46;
816
+ case 46:
817
+ #line 818 "ext/lexerc/lexerc.c"
435
818
  switch( (*p) ) {
436
- case 47: goto st26;
437
- case 92: goto st10;
819
+ case 47: goto st47;
820
+ case 92: goto st16;
438
821
  }
439
- goto st9;
440
- st9:
822
+ goto st15;
823
+ st15:
441
824
  if ( ++p == pe )
442
- goto _test_eof9;
443
- case 9:
825
+ goto _test_eof15;
826
+ case 15:
444
827
  switch( (*p) ) {
445
- case 47: goto st26;
446
- case 92: goto st10;
828
+ case 47: goto st47;
829
+ case 92: goto st16;
447
830
  }
448
- goto st9;
449
- st26:
831
+ goto st15;
832
+ st47:
450
833
  if ( ++p == pe )
451
- goto _test_eof26;
452
- case 26:
834
+ goto _test_eof47;
835
+ case 47:
453
836
  if ( (*p) > 90 ) {
454
837
  if ( 97 <= (*p) && (*p) <= 122 )
455
- goto st26;
838
+ goto st47;
456
839
  } else if ( (*p) >= 65 )
457
- goto st26;
458
- goto tr44;
459
- st10:
840
+ goto st47;
841
+ goto tr81;
842
+ st16:
460
843
  if ( ++p == pe )
461
- goto _test_eof10;
462
- case 10:
463
- goto st9;
464
- st27:
844
+ goto _test_eof16;
845
+ case 16:
846
+ goto st15;
847
+ st48:
465
848
  if ( ++p == pe )
466
- goto _test_eof27;
467
- case 27:
849
+ goto _test_eof48;
850
+ case 48:
468
851
  switch( (*p) ) {
469
- case 33: goto tr46;
470
- case 63: goto tr46;
471
- case 95: goto st27;
852
+ case 33: goto tr83;
853
+ case 63: goto tr83;
854
+ case 95: goto st48;
472
855
  }
473
856
  if ( (*p) < 65 ) {
474
857
  if ( 48 <= (*p) && (*p) <= 57 )
475
- goto st27;
858
+ goto st48;
476
859
  } else if ( (*p) > 90 ) {
477
860
  if ( 97 <= (*p) && (*p) <= 122 )
478
- goto st27;
861
+ goto st48;
479
862
  } else
480
- goto st27;
481
- goto tr45;
482
- st11:
863
+ goto st48;
864
+ goto tr82;
865
+ st17:
483
866
  if ( ++p == pe )
484
- goto _test_eof11;
485
- case 11:
867
+ goto _test_eof17;
868
+ case 17:
486
869
  if ( (*p) == 124 )
487
- goto tr7;
870
+ goto tr17;
488
871
  goto st0;
489
- st28:
872
+ st49:
490
873
  if ( ++p == pe )
491
- goto _test_eof28;
492
- case 28:
874
+ goto _test_eof49;
875
+ case 49:
493
876
  if ( (*p) == 125 )
494
- goto tr47;
495
- goto tr38;
496
- tr18:
497
- #line 87 "lib/hotcell/lexer.rl"
877
+ goto tr84;
878
+ goto tr74;
879
+ tr27:
880
+ #line 106 "lib/hotcell/lexer.rl"
498
881
  {{p = ((te))-1;}{ emit_comment; }}
499
- goto st29;
500
- tr19:
501
- #line 86 "lib/hotcell/lexer.rl"
882
+ goto st50;
883
+ tr28:
884
+ #line 105 "lib/hotcell/lexer.rl"
502
885
  {te = p+1;{ emit_comment; {cs = stack[--top];goto _again;} }}
503
- goto st29;
504
- tr50:
505
- #line 87 "lib/hotcell/lexer.rl"
886
+ goto st50;
887
+ tr87:
888
+ #line 106 "lib/hotcell/lexer.rl"
506
889
  {te = p;p--;{ emit_comment; }}
507
- goto st29;
508
- st29:
890
+ goto st50;
891
+ st50:
509
892
  #line 1 "NONE"
510
893
  {ts = 0;}
511
894
  if ( ++p == pe )
512
- goto _test_eof29;
513
- case 29:
895
+ goto _test_eof50;
896
+ case 50:
514
897
  #line 1 "NONE"
515
898
  {ts = p;}
516
- #line 517 "ext/lexerc/lexerc.c"
899
+ #line 900 "ext/lexerc/lexerc.c"
517
900
  if ( (*p) == 35 )
518
- goto tr49;
519
- goto st30;
520
- st30:
901
+ goto tr86;
902
+ goto st51;
903
+ st51:
521
904
  if ( ++p == pe )
522
- goto _test_eof30;
523
- case 30:
905
+ goto _test_eof51;
906
+ case 51:
524
907
  if ( (*p) == 35 )
525
- goto tr50;
526
- goto st30;
527
- tr49:
908
+ goto tr87;
909
+ goto st51;
910
+ tr86:
528
911
  #line 1 "NONE"
529
912
  {te = p+1;}
530
- goto st31;
531
- st31:
913
+ goto st52;
914
+ st52:
532
915
  if ( ++p == pe )
533
- goto _test_eof31;
534
- case 31:
535
- #line 536 "ext/lexerc/lexerc.c"
916
+ goto _test_eof52;
917
+ case 52:
918
+ #line 919 "ext/lexerc/lexerc.c"
536
919
  if ( (*p) == 125 )
537
- goto st12;
538
- goto tr50;
539
- st12:
920
+ goto st18;
921
+ goto tr87;
922
+ st18:
540
923
  if ( ++p == pe )
541
- goto _test_eof12;
542
- case 12:
924
+ goto _test_eof18;
925
+ case 18:
543
926
  if ( (*p) == 125 )
544
- goto tr19;
545
- goto tr18;
927
+ goto tr28;
928
+ goto tr27;
546
929
  }
547
- _test_eof13: cs = 13; goto _test_eof;
548
- _test_eof14: cs = 14; goto _test_eof;
549
- _test_eof15: cs = 15; goto _test_eof;
550
- _test_eof16: cs = 16; goto _test_eof;
551
- _test_eof1: cs = 1; goto _test_eof;
552
- _test_eof17: cs = 17; goto _test_eof;
553
- _test_eof18: cs = 18; goto _test_eof;
554
- _test_eof2: cs = 2; goto _test_eof;
555
- _test_eof3: cs = 3; goto _test_eof;
556
930
  _test_eof19: cs = 19; goto _test_eof;
557
- _test_eof4: cs = 4; goto _test_eof;
558
- _test_eof5: cs = 5; goto _test_eof;
559
- _test_eof6: cs = 6; goto _test_eof;
560
- _test_eof7: cs = 7; goto _test_eof;
561
931
  _test_eof20: cs = 20; goto _test_eof;
562
932
  _test_eof21: cs = 21; goto _test_eof;
563
- _test_eof8: cs = 8; goto _test_eof;
564
933
  _test_eof22: cs = 22; goto _test_eof;
934
+ _test_eof1: cs = 1; goto _test_eof;
565
935
  _test_eof23: cs = 23; goto _test_eof;
566
936
  _test_eof24: cs = 24; goto _test_eof;
937
+ _test_eof2: cs = 2; goto _test_eof;
567
938
  _test_eof25: cs = 25; goto _test_eof;
568
- _test_eof9: cs = 9; goto _test_eof;
569
939
  _test_eof26: cs = 26; goto _test_eof;
570
- _test_eof10: cs = 10; goto _test_eof;
571
940
  _test_eof27: cs = 27; goto _test_eof;
572
- _test_eof11: cs = 11; goto _test_eof;
573
941
  _test_eof28: cs = 28; goto _test_eof;
942
+ _test_eof3: cs = 3; goto _test_eof;
943
+ _test_eof4: cs = 4; goto _test_eof;
944
+ _test_eof5: cs = 5; goto _test_eof;
574
945
  _test_eof29: cs = 29; goto _test_eof;
575
946
  _test_eof30: cs = 30; goto _test_eof;
947
+ _test_eof6: cs = 6; goto _test_eof;
576
948
  _test_eof31: cs = 31; goto _test_eof;
949
+ _test_eof32: cs = 32; goto _test_eof;
950
+ _test_eof33: cs = 33; goto _test_eof;
951
+ _test_eof34: cs = 34; goto _test_eof;
952
+ _test_eof7: cs = 7; goto _test_eof;
953
+ _test_eof35: cs = 35; goto _test_eof;
954
+ _test_eof8: cs = 8; goto _test_eof;
955
+ _test_eof36: cs = 36; goto _test_eof;
956
+ _test_eof9: cs = 9; goto _test_eof;
957
+ _test_eof37: cs = 37; goto _test_eof;
958
+ _test_eof38: cs = 38; goto _test_eof;
959
+ _test_eof39: cs = 39; goto _test_eof;
960
+ _test_eof40: cs = 40; goto _test_eof;
961
+ _test_eof10: cs = 10; goto _test_eof;
962
+ _test_eof11: cs = 11; goto _test_eof;
577
963
  _test_eof12: cs = 12; goto _test_eof;
964
+ _test_eof13: cs = 13; goto _test_eof;
965
+ _test_eof41: cs = 41; goto _test_eof;
966
+ _test_eof42: cs = 42; goto _test_eof;
967
+ _test_eof14: cs = 14; goto _test_eof;
968
+ _test_eof43: cs = 43; goto _test_eof;
969
+ _test_eof44: cs = 44; goto _test_eof;
970
+ _test_eof45: cs = 45; goto _test_eof;
971
+ _test_eof46: cs = 46; goto _test_eof;
972
+ _test_eof15: cs = 15; goto _test_eof;
973
+ _test_eof47: cs = 47; goto _test_eof;
974
+ _test_eof16: cs = 16; goto _test_eof;
975
+ _test_eof48: cs = 48; goto _test_eof;
976
+ _test_eof17: cs = 17; goto _test_eof;
977
+ _test_eof49: cs = 49; goto _test_eof;
978
+ _test_eof50: cs = 50; goto _test_eof;
979
+ _test_eof51: cs = 51; goto _test_eof;
980
+ _test_eof52: cs = 52; goto _test_eof;
981
+ _test_eof18: cs = 18; goto _test_eof;
578
982
 
579
983
  _test_eof: {}
580
984
  if ( p == eof )
581
985
  {
582
986
  switch ( cs ) {
583
- case 14: goto tr22;
584
- case 15: goto tr22;
585
- case 16: goto tr24;
987
+ case 20: goto tr31;
988
+ case 21: goto tr31;
989
+ case 22: goto tr33;
586
990
  case 1: goto tr0;
587
- case 18: goto tr38;
588
- case 19: goto tr39;
589
- case 4: goto tr5;
590
- case 20: goto tr38;
591
- case 21: goto tr12;
592
- case 8: goto tr12;
593
- case 22: goto tr42;
594
- case 23: goto tr38;
595
- case 24: goto tr38;
596
- case 25: goto tr38;
597
- case 9: goto tr14;
598
- case 26: goto tr44;
599
- case 10: goto tr14;
600
- case 27: goto tr45;
601
- case 28: goto tr38;
602
- case 30: goto tr50;
603
- case 31: goto tr50;
604
- case 12: goto tr18;
605
- case 6:
991
+ case 24: goto tr39;
992
+ case 2: goto tr2;
993
+ case 25: goto tr39;
994
+ case 27: goto tr54;
995
+ case 28: goto tr55;
996
+ case 29: goto tr54;
997
+ case 30: goto tr9;
998
+ case 6: goto tr9;
999
+ case 31: goto tr57;
1000
+ case 32: goto tr54;
1001
+ case 33: goto tr54;
1002
+ case 34: goto tr54;
1003
+ case 7: goto tr11;
1004
+ case 35: goto tr59;
1005
+ case 8: goto tr11;
1006
+ case 36: goto tr60;
1007
+ case 38: goto tr74;
1008
+ case 39: goto tr75;
1009
+ case 40: goto tr76;
1010
+ case 10: goto tr15;
1011
+ case 41: goto tr74;
1012
+ case 42: goto tr21;
1013
+ case 14: goto tr21;
1014
+ case 43: goto tr79;
1015
+ case 44: goto tr74;
1016
+ case 45: goto tr74;
1017
+ case 46: goto tr74;
1018
+ case 15: goto tr23;
1019
+ case 47: goto tr81;
1020
+ case 16: goto tr23;
1021
+ case 48: goto tr82;
1022
+ case 49: goto tr74;
1023
+ case 51: goto tr87;
1024
+ case 52: goto tr87;
1025
+ case 18: goto tr27;
1026
+ case 4:
1027
+ case 12:
606
1028
  #line 46 "lib/hotcell/lexer.rl"
607
1029
  { raise_unterminated_string; }
608
1030
  break;
609
- case 2:
610
- #line 50 "lib/hotcell/lexer.rl"
611
- { raise_unterminated_string; }
612
- break;
613
- #line 614 "ext/lexerc/lexerc.c"
1031
+ #line 1032 "ext/lexerc/lexerc.c"
614
1032
  }
615
1033
  }
616
1034
 
617
1035
  _out: {}
618
1036
  }
619
1037
 
620
- #line 47 "ext/lexerc/lexerc.rl"
1038
+ #line 76 "ext/lexerc/lexerc.rl"
621
1039
 
622
1040
  free(stack);
623
1041
 
@@ -625,6 +1043,11 @@ case 12:
625
1043
  raise_unexpected_symbol;
626
1044
  }
627
1045
 
1046
+ if (cs == hotcell_lexer_en_dstring) {
1047
+ ts = data + dstring_start;
1048
+ raise_unterminated_string;
1049
+ }
1050
+
628
1051
  return rb_iv_get(self, "@token_array");
629
1052
  }
630
1053