myco 0.1.0.dev

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +2 -0
  3. data/bin/myco +7 -0
  4. data/lib/myco/backtrace.rb +56 -0
  5. data/lib/myco/bootstrap/component.rb +142 -0
  6. data/lib/myco/bootstrap/empty_object.rb +4 -0
  7. data/lib/myco/bootstrap/file_toplevel.rb +5 -0
  8. data/lib/myco/bootstrap/find_constant.rb +86 -0
  9. data/lib/myco/bootstrap/instance.rb +52 -0
  10. data/lib/myco/bootstrap/meme.rb +160 -0
  11. data/lib/myco/bootstrap/void.rb +40 -0
  12. data/lib/myco/bootstrap.my +15 -0
  13. data/lib/myco/bootstrap.rb +10 -0
  14. data/lib/myco/command.my +33 -0
  15. data/lib/myco/core/BasicObject.my +46 -0
  16. data/lib/myco/core/Category.my +5 -0
  17. data/lib/myco/core/Decorator.my +18 -0
  18. data/lib/myco/core/FileToplevel.my +23 -0
  19. data/lib/myco/core/Object.my +24 -0
  20. data/lib/myco/core/Switch.my +31 -0
  21. data/lib/myco/eval.rb +63 -0
  22. data/lib/myco/parser/ast/constant_access.rb +29 -0
  23. data/lib/myco/parser/ast/constant_define.rb +40 -0
  24. data/lib/myco/parser/ast/constant_reopen.rb +47 -0
  25. data/lib/myco/parser/ast/declare_category.rb +51 -0
  26. data/lib/myco/parser/ast/declare_decorator.rb +35 -0
  27. data/lib/myco/parser/ast/declare_file.rb +54 -0
  28. data/lib/myco/parser/ast/declare_meme.rb +44 -0
  29. data/lib/myco/parser/ast/declare_object.rb +75 -0
  30. data/lib/myco/parser/ast/declare_string.rb +37 -0
  31. data/lib/myco/parser/ast/invoke.rb +66 -0
  32. data/lib/myco/parser/ast/local_variable_access_ambiguous.rb +38 -0
  33. data/lib/myco/parser/ast/misc.rb +61 -0
  34. data/lib/myco/parser/ast/myco_module_scope.rb +58 -0
  35. data/lib/myco/parser/ast/quest.rb +82 -0
  36. data/lib/myco/parser/ast.rb +15 -0
  37. data/lib/myco/parser/builder.output +3995 -0
  38. data/lib/myco/parser/builder.racc +585 -0
  39. data/lib/myco/parser/builder.rb +1592 -0
  40. data/lib/myco/parser/lexer.rb +2306 -0
  41. data/lib/myco/parser/lexer.rl +393 -0
  42. data/lib/myco/parser/lexer_char_classes.rl +56 -0
  43. data/lib/myco/parser/lexer_common.rb +95 -0
  44. data/lib/myco/parser/lexer_skeleton.rl +154 -0
  45. data/lib/myco/parser/peg_parser.kpeg +759 -0
  46. data/lib/myco/parser/peg_parser.rb +7094 -0
  47. data/lib/myco/parser.rb +40 -0
  48. data/lib/myco/tools/OptionParser.my +38 -0
  49. data/lib/myco/tools/mycompile.my +51 -0
  50. data/lib/myco/toolset.rb +16 -0
  51. data/lib/myco/version.rb +22 -0
  52. data/lib/myco.rb +15 -0
  53. metadata +247 -0
@@ -0,0 +1,2306 @@
1
+
2
+ # line 1 "lib/myco/parser/lexer_skeleton.rl"
3
+
4
+ ##
5
+ # Basic Lexer skeleton - taken from gist:
6
+ # https://gist.github.com/YorickPeterse/10658884
7
+ # Originally from:
8
+ # https://github.com/YorickPeterse/oga/blob/master/lib/oga/xml/lexer.rl
9
+ #
10
+ # License for the source gist reproduced below.
11
+
12
+ # Copyright (c) 2014, Yorick Peterse
13
+ #
14
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
15
+ # of this software and associated documentation files (the "Software"), to deal
16
+ # in the Software without restriction, including without limitation the rights
17
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
18
+ # copies of the Software, and to permit persons to whom the Software is
19
+ # furnished to do so, subject to the following conditions:
20
+ #
21
+ # The above copyright notice and this permission notice shall be included in
22
+ # all copies or substantial portions of the Software.
23
+ #
24
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
29
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
30
+ # THE SOFTWARE.
31
+
32
+
33
+ # line 32 "lib/myco/parser/lexer_skeleton.rl"
34
+ class CodeTools::Parser
35
+ class Lexer
36
+
37
+ # line 38 "lib/myco/parser/lexer.rb"
38
+ class << self
39
+ attr_accessor :_lexer_actions
40
+ private :_lexer_actions, :_lexer_actions=
41
+ end
42
+ self._lexer_actions = [
43
+ 0, 1, 0, 1, 2, 1, 3, 1,
44
+ 5, 1, 6, 1, 7, 1, 10, 1,
45
+ 11, 1, 12, 1, 13, 1, 15, 1,
46
+ 17, 1, 18, 1, 20, 1, 21, 1,
47
+ 22, 1, 23, 1, 27, 1, 28, 1,
48
+ 35, 1, 38, 1, 42, 1, 43, 1,
49
+ 45, 1, 47, 1, 48, 1, 49, 1,
50
+ 53, 1, 54, 1, 56, 1, 57, 1,
51
+ 58, 1, 64, 1, 65, 1, 66, 1,
52
+ 67, 1, 68, 1, 69, 1, 70, 1,
53
+ 71, 1, 72, 1, 76, 1, 77, 1,
54
+ 78, 1, 79, 1, 80, 1, 86, 1,
55
+ 87, 1, 88, 1, 89, 1, 90, 1,
56
+ 91, 1, 92, 1, 93, 1, 94, 1,
57
+ 95, 1, 96, 1, 97, 1, 98, 1,
58
+ 99, 1, 110, 1, 111, 1, 112, 1,
59
+ 113, 1, 114, 1, 115, 1, 116, 1,
60
+ 117, 1, 118, 1, 119, 1, 120, 1,
61
+ 121, 1, 122, 1, 123, 1, 124, 1,
62
+ 125, 1, 126, 1, 127, 1, 128, 1,
63
+ 129, 1, 130, 1, 131, 1, 132, 1,
64
+ 136, 1, 137, 1, 138, 1, 139, 1,
65
+ 140, 1, 141, 1, 142, 1, 143, 1,
66
+ 146, 1, 147, 1, 148, 1, 149, 1,
67
+ 150, 1, 151, 1, 152, 2, 0, 55,
68
+ 2, 0, 77, 2, 0, 126, 2, 2,
69
+ 3, 2, 4, 61, 2, 4, 83, 2,
70
+ 4, 145, 2, 8, 62, 2, 8, 84,
71
+ 2, 10, 11, 2, 12, 13, 2, 14,
72
+ 63, 2, 14, 85, 2, 16, 144, 2,
73
+ 17, 18, 2, 19, 144, 2, 24, 26,
74
+ 2, 24, 29, 2, 25, 20, 2, 28,
75
+ 0, 2, 28, 20, 2, 31, 32, 2,
76
+ 32, 38, 2, 33, 34, 2, 36, 37,
77
+ 2, 42, 0, 2, 42, 43, 2, 44,
78
+ 135, 2, 46, 100, 2, 49, 1, 2,
79
+ 49, 9, 2, 49, 50, 2, 49, 51,
80
+ 2, 49, 52, 2, 49, 73, 2, 49,
81
+ 74, 2, 49, 75, 2, 49, 101, 2,
82
+ 49, 102, 2, 49, 103, 2, 49, 104,
83
+ 2, 49, 105, 2, 49, 106, 2, 49,
84
+ 107, 2, 49, 108, 2, 49, 109, 3,
85
+ 24, 26, 0, 3, 24, 26, 27, 3,
86
+ 24, 26, 35, 3, 24, 29, 0, 3,
87
+ 24, 29, 27, 3, 24, 29, 35, 3,
88
+ 28, 39, 40, 3, 31, 24, 26, 3,
89
+ 33, 34, 0, 3, 36, 37, 59, 3,
90
+ 36, 37, 81, 3, 36, 37, 133, 3,
91
+ 39, 40, 60, 3, 39, 40, 82, 3,
92
+ 39, 40, 134, 3, 45, 46, 100, 3,
93
+ 49, 21, 50, 3, 49, 21, 73, 3,
94
+ 49, 21, 101, 3, 49, 23, 50, 3,
95
+ 49, 23, 73, 3, 49, 23, 101, 3,
96
+ 49, 25, 20, 3, 49, 41, 108, 4,
97
+ 24, 26, 39, 40, 4, 24, 29, 39,
98
+ 40, 4, 28, 0, 39, 40, 4, 33,
99
+ 34, 25, 20, 4, 49, 28, 20, 50,
100
+ 4, 49, 28, 20, 73, 4, 49, 28,
101
+ 20, 101, 5, 24, 26, 0, 39, 40,
102
+ 5, 24, 29, 0, 39, 40, 5, 36,
103
+ 37, 39, 40, 59, 5, 36, 37, 39,
104
+ 40, 81, 5, 36, 37, 39, 40, 133,
105
+ 5, 49, 24, 26, 27, 50, 5, 49,
106
+ 24, 26, 27, 73, 5, 49, 24, 26,
107
+ 27, 101, 5, 49, 24, 29, 27, 50,
108
+ 5, 49, 24, 29, 27, 73, 5, 49,
109
+ 24, 29, 27, 101, 5, 49, 30, 25,
110
+ 20, 51, 5, 49, 30, 25, 20, 74,
111
+ 5, 49, 30, 25, 20, 107, 6, 49,
112
+ 33, 34, 25, 20, 50, 6, 49, 33,
113
+ 34, 25, 20, 73, 6, 49, 33, 34,
114
+ 25, 20, 101
115
+ ]
116
+
117
+ class << self
118
+ attr_accessor :_lexer_key_offsets
119
+ private :_lexer_key_offsets, :_lexer_key_offsets=
120
+ end
121
+ self._lexer_key_offsets = [
122
+ 0, 0, 2, 5, 23, 30, 33, 38,
123
+ 45, 52, 53, 55, 73, 74, 76, 77,
124
+ 79, 87, 94, 101, 102, 104, 122, 128,
125
+ 135, 142, 143, 145, 163, 164, 166, 167,
126
+ 169, 176, 192, 197, 208, 213, 224, 226,
127
+ 229, 247, 254, 257, 262, 269, 276, 277,
128
+ 279, 297, 298, 300, 301, 303, 311, 318,
129
+ 325, 326, 328, 346, 352, 359, 366, 367,
130
+ 369, 387, 388, 390, 391, 393, 400, 416,
131
+ 421, 432, 437, 448, 453, 455, 458, 460,
132
+ 462, 464, 467, 485, 492, 495, 500, 507,
133
+ 514, 515, 517, 535, 536, 538, 539, 541,
134
+ 549, 556, 563, 564, 566, 584, 590, 597,
135
+ 604, 605, 607, 625, 626, 628, 629, 631,
136
+ 638, 662, 671, 673, 673, 677, 678, 680,
137
+ 683, 683, 702, 706, 711, 729, 736, 740,
138
+ 745, 763, 767, 772, 775, 779, 784, 795,
139
+ 795, 805, 821, 830, 855, 864, 866, 866,
140
+ 870, 871, 873, 876, 876, 895, 899, 904,
141
+ 922, 929, 933, 938, 956, 960, 965, 968,
142
+ 972, 977, 988, 988, 998, 1014, 1023, 1030,
143
+ 1034, 1038, 1039, 1040, 1041, 1090, 1106, 1106,
144
+ 1110, 1112, 1112, 1116, 1117, 1118, 1121, 1123,
145
+ 1130, 1139, 1139, 1141, 1144, 1144, 1145, 1146,
146
+ 1148, 1149, 1168, 1172, 1177, 1195, 1202, 1206,
147
+ 1211, 1229, 1233, 1238, 1241, 1245, 1250, 1251,
148
+ 1268, 1285, 1302, 1319, 1336, 1353, 1370, 1387,
149
+ 1404, 1421, 1438, 1455, 1472, 1489, 1506, 1523
150
+ ]
151
+
152
+ class << self
153
+ attr_accessor :_lexer_trans_keys
154
+ private :_lexer_trans_keys, :_lexer_trans_keys=
155
+ end
156
+ self._lexer_trans_keys = [
157
+ 34, 92, 0, 4, 26, 10, 32, 44,
158
+ 58, 96, 123, 0, 8, 9, 13, 14,
159
+ 47, 59, 64, 91, 94, 124, 127, 10,
160
+ 32, 44, 58, 123, 9, 13, 32, 9,
161
+ 13, 10, 32, 123, 9, 13, 10, 32,
162
+ 58, 9, 13, 65, 90, 10, 32, 58,
163
+ 9, 13, 65, 90, 58, 65, 90, 10,
164
+ 32, 44, 58, 96, 123, 0, 8, 9,
165
+ 13, 14, 47, 59, 64, 91, 94, 124,
166
+ 127, 58, 65, 90, 58, 65, 90, 10,
167
+ 32, 44, 58, 60, 123, 9, 13, 10,
168
+ 32, 58, 9, 13, 65, 90, 10, 32,
169
+ 58, 9, 13, 65, 90, 58, 65, 90,
170
+ 10, 32, 44, 58, 96, 123, 0, 8,
171
+ 9, 13, 14, 47, 59, 64, 91, 94,
172
+ 124, 127, 10, 32, 44, 123, 9, 13,
173
+ 10, 32, 58, 9, 13, 65, 90, 10,
174
+ 32, 58, 9, 13, 65, 90, 58, 65,
175
+ 90, 10, 32, 44, 58, 96, 123, 0,
176
+ 8, 9, 13, 14, 47, 59, 64, 91,
177
+ 94, 124, 127, 58, 65, 90, 58, 65,
178
+ 90, 10, 32, 58, 9, 13, 65, 90,
179
+ 9, 32, 93, 96, 0, 10, 11, 13,
180
+ 14, 47, 58, 64, 91, 94, 123, 127,
181
+ 9, 32, 93, 11, 13, 9, 32, 96,
182
+ 0, 10, 11, 13, 14, 94, 123, 127,
183
+ 9, 32, 58, 11, 13, 9, 32, 96,
184
+ 0, 10, 11, 13, 14, 94, 123, 127,
185
+ 34, 92, 0, 4, 26, 10, 32, 44,
186
+ 58, 96, 123, 0, 8, 9, 13, 14,
187
+ 47, 59, 64, 91, 94, 124, 127, 10,
188
+ 32, 44, 58, 123, 9, 13, 32, 9,
189
+ 13, 10, 32, 123, 9, 13, 10, 32,
190
+ 58, 9, 13, 65, 90, 10, 32, 58,
191
+ 9, 13, 65, 90, 58, 65, 90, 10,
192
+ 32, 44, 58, 96, 123, 0, 8, 9,
193
+ 13, 14, 47, 59, 64, 91, 94, 124,
194
+ 127, 58, 65, 90, 58, 65, 90, 10,
195
+ 32, 44, 58, 60, 123, 9, 13, 10,
196
+ 32, 58, 9, 13, 65, 90, 10, 32,
197
+ 58, 9, 13, 65, 90, 58, 65, 90,
198
+ 10, 32, 44, 58, 96, 123, 0, 8,
199
+ 9, 13, 14, 47, 59, 64, 91, 94,
200
+ 124, 127, 10, 32, 44, 123, 9, 13,
201
+ 10, 32, 58, 9, 13, 65, 90, 10,
202
+ 32, 58, 9, 13, 65, 90, 58, 65,
203
+ 90, 10, 32, 44, 58, 96, 123, 0,
204
+ 8, 9, 13, 14, 47, 59, 64, 91,
205
+ 94, 124, 127, 58, 65, 90, 58, 65,
206
+ 90, 10, 32, 58, 9, 13, 65, 90,
207
+ 9, 32, 93, 96, 0, 10, 11, 13,
208
+ 14, 47, 58, 64, 91, 94, 123, 127,
209
+ 9, 32, 93, 11, 13, 9, 32, 96,
210
+ 0, 10, 11, 13, 14, 94, 123, 127,
211
+ 9, 32, 58, 11, 13, 9, 32, 96,
212
+ 0, 10, 11, 13, 14, 94, 123, 127,
213
+ 10, 32, 40, 9, 13, 34, 92, 0,
214
+ 4, 26, 48, 57, 34, 92, 34, 92,
215
+ 0, 4, 26, 10, 32, 44, 58, 96,
216
+ 123, 0, 8, 9, 13, 14, 47, 59,
217
+ 64, 91, 94, 124, 127, 10, 32, 44,
218
+ 58, 123, 9, 13, 32, 9, 13, 10,
219
+ 32, 123, 9, 13, 10, 32, 58, 9,
220
+ 13, 65, 90, 10, 32, 58, 9, 13,
221
+ 65, 90, 58, 65, 90, 10, 32, 44,
222
+ 58, 96, 123, 0, 8, 9, 13, 14,
223
+ 47, 59, 64, 91, 94, 124, 127, 58,
224
+ 65, 90, 58, 65, 90, 10, 32, 44,
225
+ 58, 60, 123, 9, 13, 10, 32, 58,
226
+ 9, 13, 65, 90, 10, 32, 58, 9,
227
+ 13, 65, 90, 58, 65, 90, 10, 32,
228
+ 44, 58, 96, 123, 0, 8, 9, 13,
229
+ 14, 47, 59, 64, 91, 94, 124, 127,
230
+ 10, 32, 44, 123, 9, 13, 10, 32,
231
+ 58, 9, 13, 65, 90, 10, 32, 58,
232
+ 9, 13, 65, 90, 58, 65, 90, 10,
233
+ 32, 44, 58, 96, 123, 0, 8, 9,
234
+ 13, 14, 47, 59, 64, 91, 94, 124,
235
+ 127, 58, 65, 90, 58, 65, 90, 10,
236
+ 32, 58, 9, 13, 65, 90, 0, 4,
237
+ 10, 26, 32, 34, 35, 58, 59, 91,
238
+ 96, 105, 1, 8, 9, 13, 14, 64,
239
+ 65, 90, 92, 94, 123, 127, 96, 0,
240
+ 47, 58, 64, 91, 94, 123, 127, 34,
241
+ 92, 0, 4, 10, 26, 58, 65, 90,
242
+ 32, 9, 13, 10, 32, 44, 58, 60,
243
+ 96, 123, 0, 8, 9, 13, 14, 47,
244
+ 59, 64, 91, 94, 124, 127, 32, 58,
245
+ 9, 13, 32, 9, 13, 65, 90, 10,
246
+ 32, 44, 58, 96, 123, 0, 8, 9,
247
+ 13, 14, 47, 59, 64, 91, 94, 124,
248
+ 127, 10, 32, 58, 9, 13, 65, 90,
249
+ 32, 58, 9, 13, 32, 9, 13, 65,
250
+ 90, 10, 32, 44, 58, 96, 123, 0,
251
+ 8, 9, 13, 14, 47, 59, 64, 91,
252
+ 94, 124, 127, 32, 58, 9, 13, 32,
253
+ 9, 13, 65, 90, 32, 9, 13, 32,
254
+ 58, 9, 13, 32, 9, 13, 65, 90,
255
+ 9, 32, 96, 0, 10, 11, 13, 14,
256
+ 94, 123, 127, 96, 100, 0, 47, 58,
257
+ 64, 91, 94, 123, 127, 9, 32, 58,
258
+ 96, 0, 10, 11, 13, 14, 47, 59,
259
+ 64, 91, 94, 123, 127, 96, 0, 47,
260
+ 58, 64, 91, 94, 123, 127, 0, 4,
261
+ 10, 26, 32, 34, 35, 58, 59, 91,
262
+ 96, 105, 125, 1, 8, 9, 13, 14,
263
+ 64, 65, 90, 92, 94, 123, 127, 96,
264
+ 0, 47, 58, 64, 91, 94, 123, 127,
265
+ 34, 92, 0, 4, 10, 26, 58, 65,
266
+ 90, 32, 9, 13, 10, 32, 44, 58,
267
+ 60, 96, 123, 0, 8, 9, 13, 14,
268
+ 47, 59, 64, 91, 94, 124, 127, 32,
269
+ 58, 9, 13, 32, 9, 13, 65, 90,
270
+ 10, 32, 44, 58, 96, 123, 0, 8,
271
+ 9, 13, 14, 47, 59, 64, 91, 94,
272
+ 124, 127, 10, 32, 58, 9, 13, 65,
273
+ 90, 32, 58, 9, 13, 32, 9, 13,
274
+ 65, 90, 10, 32, 44, 58, 96, 123,
275
+ 0, 8, 9, 13, 14, 47, 59, 64,
276
+ 91, 94, 124, 127, 32, 58, 9, 13,
277
+ 32, 9, 13, 65, 90, 32, 9, 13,
278
+ 32, 58, 9, 13, 32, 9, 13, 65,
279
+ 90, 9, 32, 96, 0, 10, 11, 13,
280
+ 14, 94, 123, 127, 96, 100, 0, 47,
281
+ 58, 64, 91, 94, 123, 127, 9, 32,
282
+ 58, 96, 0, 10, 11, 13, 14, 47,
283
+ 59, 64, 91, 94, 123, 127, 96, 0,
284
+ 47, 58, 64, 91, 94, 123, 127, 10,
285
+ 32, 35, 123, 124, 9, 13, 10, 32,
286
+ 9, 13, 0, 4, 10, 26, 10, 10,
287
+ 10, 0, 4, 10, 26, 32, 34, 35,
288
+ 37, 38, 40, 41, 42, 43, 44, 45,
289
+ 46, 47, 58, 59, 60, 61, 62, 63,
290
+ 64, 91, 92, 93, 94, 96, 102, 110,
291
+ 115, 116, 118, 123, 124, 125, 1, 8,
292
+ 9, 13, 14, 39, 48, 57, 65, 90,
293
+ 126, 127, 10, 32, 40, 96, 0, 8,
294
+ 9, 13, 14, 47, 58, 64, 91, 94,
295
+ 123, 127, 9, 32, 11, 13, 34, 92,
296
+ 0, 4, 10, 26, 38, 42, 46, 48,
297
+ 57, 48, 57, 34, 58, 96, 0, 94,
298
+ 123, 127, 96, 0, 47, 58, 64, 91,
299
+ 94, 123, 127, 65, 90, 32, 9, 13,
300
+ 61, 62, 61, 126, 61, 10, 32, 44,
301
+ 58, 60, 96, 123, 0, 8, 9, 13,
302
+ 14, 47, 59, 64, 91, 94, 124, 127,
303
+ 32, 58, 9, 13, 32, 9, 13, 65,
304
+ 90, 10, 32, 44, 58, 96, 123, 0,
305
+ 8, 9, 13, 14, 47, 59, 64, 91,
306
+ 94, 124, 127, 10, 32, 58, 9, 13,
307
+ 65, 90, 32, 58, 9, 13, 32, 9,
308
+ 13, 65, 90, 10, 32, 44, 58, 96,
309
+ 123, 0, 8, 9, 13, 14, 47, 59,
310
+ 64, 91, 94, 124, 127, 32, 58, 9,
311
+ 13, 32, 9, 13, 65, 90, 32, 9,
312
+ 13, 32, 58, 9, 13, 32, 9, 13,
313
+ 65, 90, 10, 10, 32, 40, 96, 97,
314
+ 0, 8, 9, 13, 14, 47, 58, 64,
315
+ 91, 94, 123, 127, 10, 32, 40, 96,
316
+ 108, 0, 8, 9, 13, 14, 47, 58,
317
+ 64, 91, 94, 123, 127, 10, 32, 40,
318
+ 96, 115, 0, 8, 9, 13, 14, 47,
319
+ 58, 64, 91, 94, 123, 127, 10, 32,
320
+ 40, 96, 101, 0, 8, 9, 13, 14,
321
+ 47, 58, 64, 91, 94, 123, 127, 10,
322
+ 32, 40, 96, 117, 0, 8, 9, 13,
323
+ 14, 47, 58, 64, 91, 94, 123, 127,
324
+ 10, 32, 40, 96, 108, 0, 8, 9,
325
+ 13, 14, 47, 58, 64, 91, 94, 123,
326
+ 127, 10, 32, 40, 96, 108, 0, 8,
327
+ 9, 13, 14, 47, 58, 64, 91, 94,
328
+ 123, 127, 10, 32, 40, 96, 101, 0,
329
+ 8, 9, 13, 14, 47, 58, 64, 91,
330
+ 94, 123, 127, 10, 32, 40, 96, 108,
331
+ 0, 8, 9, 13, 14, 47, 58, 64,
332
+ 91, 94, 123, 127, 10, 32, 40, 96,
333
+ 102, 0, 8, 9, 13, 14, 47, 58,
334
+ 64, 91, 94, 123, 127, 10, 32, 40,
335
+ 96, 114, 0, 8, 9, 13, 14, 47,
336
+ 58, 64, 91, 94, 123, 127, 10, 32,
337
+ 40, 96, 117, 0, 8, 9, 13, 14,
338
+ 47, 58, 64, 91, 94, 123, 127, 10,
339
+ 32, 40, 96, 101, 0, 8, 9, 13,
340
+ 14, 47, 58, 64, 91, 94, 123, 127,
341
+ 10, 32, 40, 96, 111, 0, 8, 9,
342
+ 13, 14, 47, 58, 64, 91, 94, 123,
343
+ 127, 10, 32, 40, 96, 105, 0, 8,
344
+ 9, 13, 14, 47, 58, 64, 91, 94,
345
+ 123, 127, 10, 32, 40, 96, 100, 0,
346
+ 8, 9, 13, 14, 47, 58, 64, 91,
347
+ 94, 123, 127, 124, 0
348
+ ]
349
+
350
+ class << self
351
+ attr_accessor :_lexer_single_lengths
352
+ private :_lexer_single_lengths, :_lexer_single_lengths=
353
+ end
354
+ self._lexer_single_lengths = [
355
+ 0, 2, 3, 6, 5, 1, 3, 3,
356
+ 3, 1, 0, 6, 1, 0, 1, 0,
357
+ 6, 3, 3, 1, 0, 6, 4, 3,
358
+ 3, 1, 0, 6, 1, 0, 1, 0,
359
+ 3, 4, 3, 3, 3, 3, 2, 3,
360
+ 6, 5, 1, 3, 3, 3, 1, 0,
361
+ 6, 1, 0, 1, 0, 6, 3, 3,
362
+ 1, 0, 6, 4, 3, 3, 1, 0,
363
+ 6, 1, 0, 1, 0, 3, 4, 3,
364
+ 3, 3, 3, 3, 2, 3, 0, 2,
365
+ 2, 3, 6, 5, 1, 3, 3, 3,
366
+ 1, 0, 6, 1, 0, 1, 0, 6,
367
+ 3, 3, 1, 0, 6, 4, 3, 3,
368
+ 1, 0, 6, 1, 0, 1, 0, 3,
369
+ 12, 1, 2, 0, 4, 1, 0, 1,
370
+ 0, 7, 2, 1, 6, 3, 2, 1,
371
+ 6, 2, 1, 1, 2, 1, 3, 0,
372
+ 2, 4, 1, 13, 1, 2, 0, 4,
373
+ 1, 0, 1, 0, 7, 2, 1, 6,
374
+ 3, 2, 1, 6, 2, 1, 1, 2,
375
+ 1, 3, 0, 2, 4, 1, 5, 2,
376
+ 4, 1, 1, 1, 37, 4, 0, 2,
377
+ 2, 0, 4, 1, 1, 1, 0, 3,
378
+ 1, 0, 0, 1, 0, 1, 1, 2,
379
+ 1, 7, 2, 1, 6, 3, 2, 1,
380
+ 6, 2, 1, 1, 2, 1, 1, 5,
381
+ 5, 5, 5, 5, 5, 5, 5, 5,
382
+ 5, 5, 5, 5, 5, 5, 5, 1
383
+ ]
384
+
385
+ class << self
386
+ attr_accessor :_lexer_range_lengths
387
+ private :_lexer_range_lengths, :_lexer_range_lengths=
388
+ end
389
+ self._lexer_range_lengths = [
390
+ 0, 0, 0, 6, 1, 1, 1, 2,
391
+ 2, 0, 1, 6, 0, 1, 0, 1,
392
+ 1, 2, 2, 0, 1, 6, 1, 2,
393
+ 2, 0, 1, 6, 0, 1, 0, 1,
394
+ 2, 6, 1, 4, 1, 4, 0, 0,
395
+ 6, 1, 1, 1, 2, 2, 0, 1,
396
+ 6, 0, 1, 0, 1, 1, 2, 2,
397
+ 0, 1, 6, 1, 2, 2, 0, 1,
398
+ 6, 0, 1, 0, 1, 2, 6, 1,
399
+ 4, 1, 4, 1, 0, 0, 1, 0,
400
+ 0, 0, 6, 1, 1, 1, 2, 2,
401
+ 0, 1, 6, 0, 1, 0, 1, 1,
402
+ 2, 2, 0, 1, 6, 1, 2, 2,
403
+ 0, 1, 6, 0, 1, 0, 1, 2,
404
+ 6, 4, 0, 0, 0, 0, 1, 1,
405
+ 0, 6, 1, 2, 6, 2, 1, 2,
406
+ 6, 1, 2, 1, 1, 2, 4, 0,
407
+ 4, 6, 4, 6, 4, 0, 0, 0,
408
+ 0, 1, 1, 0, 6, 1, 2, 6,
409
+ 2, 1, 2, 6, 1, 2, 1, 1,
410
+ 2, 4, 0, 4, 6, 4, 1, 1,
411
+ 0, 0, 0, 0, 6, 6, 0, 1,
412
+ 0, 0, 0, 0, 0, 1, 1, 2,
413
+ 4, 0, 1, 1, 0, 0, 0, 0,
414
+ 0, 6, 1, 2, 6, 2, 1, 2,
415
+ 6, 1, 2, 1, 1, 2, 0, 6,
416
+ 6, 6, 6, 6, 6, 6, 6, 6,
417
+ 6, 6, 6, 6, 6, 6, 6, 0
418
+ ]
419
+
420
+ class << self
421
+ attr_accessor :_lexer_index_offsets
422
+ private :_lexer_index_offsets, :_lexer_index_offsets=
423
+ end
424
+ self._lexer_index_offsets = [
425
+ 0, 0, 3, 7, 20, 27, 30, 35,
426
+ 41, 47, 49, 51, 64, 66, 68, 70,
427
+ 72, 80, 86, 92, 94, 96, 109, 115,
428
+ 121, 127, 129, 131, 144, 146, 148, 150,
429
+ 152, 158, 169, 174, 182, 187, 195, 198,
430
+ 202, 215, 222, 225, 230, 236, 242, 244,
431
+ 246, 259, 261, 263, 265, 267, 275, 281,
432
+ 287, 289, 291, 304, 310, 316, 322, 324,
433
+ 326, 339, 341, 343, 345, 347, 353, 364,
434
+ 369, 377, 382, 390, 395, 398, 402, 404,
435
+ 407, 410, 414, 427, 434, 437, 442, 448,
436
+ 454, 456, 458, 471, 473, 475, 477, 479,
437
+ 487, 493, 499, 501, 503, 516, 522, 528,
438
+ 534, 536, 538, 551, 553, 555, 557, 559,
439
+ 565, 584, 590, 593, 594, 599, 601, 603,
440
+ 606, 607, 621, 625, 629, 642, 648, 652,
441
+ 656, 669, 673, 677, 680, 684, 688, 696,
442
+ 697, 704, 715, 721, 741, 747, 750, 751,
443
+ 756, 758, 760, 763, 764, 778, 782, 786,
444
+ 799, 805, 809, 813, 826, 830, 834, 837,
445
+ 841, 845, 853, 854, 861, 872, 878, 885,
446
+ 889, 894, 896, 898, 900, 944, 955, 956,
447
+ 960, 963, 964, 969, 971, 973, 976, 978,
448
+ 984, 990, 991, 993, 996, 997, 999, 1001,
449
+ 1004, 1006, 1020, 1024, 1028, 1041, 1047, 1051,
450
+ 1055, 1068, 1072, 1076, 1079, 1083, 1087, 1089,
451
+ 1101, 1113, 1125, 1137, 1149, 1161, 1173, 1185,
452
+ 1197, 1209, 1221, 1233, 1245, 1257, 1269, 1281
453
+ ]
454
+
455
+ class << self
456
+ attr_accessor :_lexer_indicies
457
+ private :_lexer_indicies, :_lexer_indicies=
458
+ end
459
+ self._lexer_indicies = [
460
+ 2, 3, 1, 0, 0, 0, 1, 7,
461
+ 6, 8, 9, 4, 10, 4, 6, 4,
462
+ 4, 4, 4, 5, 13, 12, 14, 4,
463
+ 15, 12, 11, 4, 4, 16, 13, 17,
464
+ 15, 17, 4, 19, 18, 20, 18, 21,
465
+ 4, 23, 22, 24, 22, 25, 4, 26,
466
+ 4, 27, 4, 30, 29, 31, 32, 4,
467
+ 33, 4, 29, 4, 4, 4, 4, 28,
468
+ 34, 4, 35, 4, 36, 4, 37, 4,
469
+ 13, 39, 14, 38, 40, 15, 39, 11,
470
+ 42, 41, 43, 41, 44, 16, 46, 45,
471
+ 47, 45, 48, 38, 49, 38, 50, 38,
472
+ 7, 52, 53, 54, 38, 10, 38, 52,
473
+ 38, 38, 38, 38, 51, 13, 55, 56,
474
+ 15, 55, 4, 58, 57, 59, 57, 60,
475
+ 4, 62, 61, 63, 61, 64, 4, 65,
476
+ 4, 66, 4, 30, 68, 69, 70, 4,
477
+ 33, 4, 68, 4, 4, 4, 4, 67,
478
+ 71, 4, 72, 4, 73, 38, 74, 38,
479
+ 42, 41, 75, 41, 76, 38, 78, 78,
480
+ 79, 0, 0, 78, 0, 0, 0, 0,
481
+ 77, 80, 80, 81, 80, 0, 83, 83,
482
+ 0, 0, 83, 0, 0, 82, 85, 85,
483
+ 86, 85, 84, 86, 86, 84, 84, 86,
484
+ 84, 84, 87, 90, 91, 89, 88, 88,
485
+ 88, 89, 95, 94, 96, 97, 92, 98,
486
+ 92, 94, 92, 92, 92, 92, 93, 101,
487
+ 100, 102, 92, 103, 100, 99, 92, 92,
488
+ 104, 101, 105, 103, 105, 92, 107, 106,
489
+ 108, 106, 109, 92, 111, 110, 112, 110,
490
+ 113, 92, 114, 92, 115, 92, 118, 117,
491
+ 119, 120, 92, 121, 92, 117, 92, 92,
492
+ 92, 92, 116, 122, 92, 123, 92, 124,
493
+ 92, 125, 92, 101, 127, 102, 126, 128,
494
+ 103, 127, 99, 130, 129, 131, 129, 132,
495
+ 104, 134, 133, 135, 133, 136, 126, 137,
496
+ 126, 138, 126, 95, 140, 141, 142, 126,
497
+ 98, 126, 140, 126, 126, 126, 126, 139,
498
+ 101, 143, 144, 103, 143, 92, 146, 145,
499
+ 147, 145, 148, 92, 150, 149, 151, 149,
500
+ 152, 92, 153, 92, 154, 92, 118, 156,
501
+ 157, 158, 92, 121, 92, 156, 92, 92,
502
+ 92, 92, 155, 159, 92, 160, 92, 161,
503
+ 126, 162, 126, 130, 129, 163, 129, 164,
504
+ 126, 166, 166, 167, 88, 88, 166, 88,
505
+ 88, 88, 88, 165, 168, 168, 169, 168,
506
+ 88, 171, 171, 88, 88, 171, 88, 88,
507
+ 170, 173, 173, 174, 173, 172, 174, 174,
508
+ 172, 172, 174, 172, 172, 175, 178, 177,
509
+ 179, 177, 176, 182, 183, 181, 180, 180,
510
+ 180, 181, 185, 184, 187, 188, 186, 190,
511
+ 191, 189, 180, 180, 180, 189, 194, 193,
512
+ 195, 196, 176, 197, 176, 193, 176, 176,
513
+ 176, 176, 192, 200, 199, 201, 176, 202,
514
+ 199, 198, 176, 176, 203, 200, 204, 202,
515
+ 204, 176, 206, 205, 207, 205, 208, 176,
516
+ 210, 209, 211, 209, 212, 176, 213, 176,
517
+ 214, 176, 217, 216, 218, 219, 176, 220,
518
+ 176, 216, 176, 176, 176, 176, 215, 221,
519
+ 176, 222, 176, 223, 176, 224, 176, 200,
520
+ 226, 201, 225, 227, 202, 226, 198, 229,
521
+ 228, 230, 228, 231, 203, 233, 232, 234,
522
+ 232, 235, 225, 236, 225, 237, 225, 194,
523
+ 239, 240, 241, 225, 197, 225, 239, 225,
524
+ 225, 225, 225, 238, 200, 242, 243, 202,
525
+ 242, 176, 245, 244, 246, 244, 247, 176,
526
+ 249, 248, 250, 248, 251, 176, 252, 176,
527
+ 253, 176, 217, 255, 256, 257, 176, 220,
528
+ 176, 255, 176, 176, 176, 176, 254, 258,
529
+ 176, 259, 176, 260, 225, 261, 225, 229,
530
+ 228, 262, 228, 263, 225, 265, 265, 268,
531
+ 265, 267, 269, 270, 271, 272, 274, 266,
532
+ 275, 266, 267, 266, 273, 266, 266, 264,
533
+ 276, 276, 276, 276, 276, 264, 279, 280,
534
+ 278, 281, 282, 282, 282, 282, 270, 284,
535
+ 283, 286, 285, 287, 287, 16, 288, 7,
536
+ 291, 8, 9, 292, 289, 10, 289, 291,
537
+ 289, 289, 289, 289, 290, 287, 293, 287,
538
+ 16, 287, 287, 294, 16, 297, 296, 298,
539
+ 299, 16, 300, 16, 296, 16, 16, 16,
540
+ 16, 295, 302, 301, 303, 301, 304, 16,
541
+ 287, 305, 287, 16, 287, 287, 306, 16,
542
+ 309, 308, 310, 311, 16, 312, 16, 308,
543
+ 16, 16, 16, 16, 307, 287, 313, 287,
544
+ 16, 287, 287, 314, 16, 315, 315, 316,
545
+ 287, 317, 287, 16, 287, 287, 318, 16,
546
+ 320, 320, 277, 277, 320, 277, 277, 319,
547
+ 321, 276, 322, 276, 276, 276, 276, 264,
548
+ 323, 323, 324, 276, 276, 323, 276, 276,
549
+ 276, 276, 264, 325, 325, 325, 325, 325,
550
+ 326, 328, 328, 331, 328, 330, 332, 333,
551
+ 334, 328, 336, 329, 337, 338, 329, 330,
552
+ 329, 335, 329, 329, 327, 339, 339, 339,
553
+ 339, 339, 327, 342, 343, 341, 344, 345,
554
+ 345, 345, 345, 333, 347, 346, 349, 348,
555
+ 350, 350, 104, 351, 95, 354, 96, 97,
556
+ 355, 352, 98, 352, 354, 352, 352, 352,
557
+ 352, 353, 350, 356, 350, 104, 350, 350,
558
+ 357, 104, 360, 359, 361, 362, 104, 363,
559
+ 104, 359, 104, 104, 104, 104, 358, 365,
560
+ 364, 366, 364, 367, 104, 350, 368, 350,
561
+ 104, 350, 350, 369, 104, 372, 371, 373,
562
+ 374, 104, 375, 104, 371, 104, 104, 104,
563
+ 104, 370, 350, 376, 350, 104, 350, 350,
564
+ 377, 104, 378, 378, 379, 350, 380, 350,
565
+ 104, 350, 350, 381, 104, 383, 383, 340,
566
+ 340, 383, 340, 340, 382, 384, 339, 385,
567
+ 339, 339, 339, 339, 327, 386, 386, 387,
568
+ 339, 339, 386, 339, 339, 339, 339, 327,
569
+ 388, 388, 388, 388, 388, 389, 392, 391,
570
+ 393, 394, 395, 391, 390, 392, 391, 391,
571
+ 396, 397, 397, 397, 397, 393, 398, 399,
572
+ 400, 401, 402, 403, 405, 405, 408, 405,
573
+ 407, 409, 410, 411, 412, 413, 414, 415,
574
+ 416, 417, 418, 419, 420, 422, 423, 424,
575
+ 425, 426, 427, 406, 429, 430, 431, 406,
576
+ 406, 432, 433, 434, 435, 436, 437, 438,
577
+ 439, 406, 407, 406, 421, 428, 406, 404,
578
+ 442, 441, 443, 176, 176, 441, 176, 176,
579
+ 176, 176, 440, 444, 407, 407, 407, 445,
580
+ 448, 449, 447, 450, 451, 451, 451, 451,
581
+ 410, 453, 452, 455, 454, 457, 421, 456,
582
+ 185, 458, 460, 461, 446, 446, 446, 459,
583
+ 462, 462, 462, 462, 462, 463, 464, 466,
584
+ 465, 467, 467, 203, 468, 470, 469, 471,
585
+ 469, 426, 471, 472, 471, 469, 194, 475,
586
+ 195, 196, 476, 473, 197, 473, 475, 473,
587
+ 473, 473, 473, 474, 467, 477, 467, 203,
588
+ 467, 467, 478, 203, 481, 480, 482, 483,
589
+ 203, 484, 203, 480, 203, 203, 203, 203,
590
+ 479, 486, 485, 487, 485, 488, 203, 467,
591
+ 489, 467, 203, 467, 467, 490, 203, 493,
592
+ 492, 494, 495, 203, 496, 203, 492, 203,
593
+ 203, 203, 203, 491, 467, 497, 467, 203,
594
+ 467, 467, 498, 203, 499, 499, 500, 467,
595
+ 501, 467, 203, 467, 467, 502, 203, 503,
596
+ 446, 442, 441, 443, 504, 505, 504, 441,
597
+ 504, 504, 504, 504, 440, 442, 441, 443,
598
+ 504, 506, 504, 441, 504, 504, 504, 504,
599
+ 440, 442, 441, 443, 504, 507, 504, 441,
600
+ 504, 504, 504, 504, 440, 442, 441, 443,
601
+ 504, 508, 504, 441, 504, 504, 504, 504,
602
+ 440, 442, 441, 443, 504, 509, 504, 441,
603
+ 504, 504, 504, 504, 440, 442, 441, 443,
604
+ 504, 510, 504, 441, 504, 504, 504, 504,
605
+ 440, 442, 441, 443, 504, 511, 504, 441,
606
+ 504, 504, 504, 504, 440, 442, 441, 443,
607
+ 504, 512, 504, 441, 504, 504, 504, 504,
608
+ 440, 442, 441, 443, 504, 513, 504, 441,
609
+ 504, 504, 504, 504, 440, 442, 441, 443,
610
+ 504, 514, 504, 441, 504, 504, 504, 504,
611
+ 440, 442, 441, 443, 504, 515, 504, 441,
612
+ 504, 504, 504, 504, 440, 442, 441, 443,
613
+ 504, 516, 504, 441, 504, 504, 504, 504,
614
+ 440, 442, 441, 443, 504, 517, 504, 441,
615
+ 504, 504, 504, 504, 440, 442, 441, 443,
616
+ 504, 518, 504, 441, 504, 504, 504, 504,
617
+ 440, 442, 441, 443, 504, 519, 504, 441,
618
+ 504, 504, 504, 504, 440, 442, 441, 443,
619
+ 504, 520, 504, 441, 504, 504, 504, 504,
620
+ 440, 522, 521, 0
621
+ ]
622
+
623
+ class << self
624
+ attr_accessor :_lexer_trans_targs
625
+ private :_lexer_trans_targs, :_lexer_trans_targs=
626
+ end
627
+ self._lexer_trans_targs = [
628
+ 112, 1, 115, 2, 112, 3, 4, 6,
629
+ 7, 14, 120, 5, 4, 6, 7, 120,
630
+ 119, 6, 8, 8, 9, 11, 8, 8,
631
+ 9, 11, 10, 11, 11, 4, 6, 7,
632
+ 12, 120, 13, 11, 15, 3, 112, 16,
633
+ 17, 18, 18, 122, 124, 18, 18, 19,
634
+ 21, 20, 21, 21, 22, 23, 30, 22,
635
+ 23, 24, 24, 25, 27, 24, 24, 25,
636
+ 27, 26, 27, 27, 22, 23, 28, 29,
637
+ 27, 31, 21, 19, 21, 33, 34, 135,
638
+ 34, 135, 33, 35, 112, 36, 37, 138,
639
+ 139, 38, 142, 39, 139, 40, 41, 43,
640
+ 44, 51, 147, 42, 41, 43, 44, 147,
641
+ 146, 43, 45, 45, 46, 48, 45, 45,
642
+ 46, 48, 47, 48, 48, 41, 43, 44,
643
+ 49, 147, 50, 48, 52, 40, 139, 53,
644
+ 54, 55, 55, 149, 151, 55, 55, 56,
645
+ 58, 57, 58, 58, 59, 60, 67, 59,
646
+ 60, 61, 61, 62, 64, 61, 61, 62,
647
+ 64, 63, 64, 64, 59, 60, 65, 66,
648
+ 64, 68, 58, 56, 58, 70, 71, 162,
649
+ 71, 162, 70, 72, 139, 73, 74, 165,
650
+ 172, 75, 75, 174, 172, 76, 177, 77,
651
+ 172, 182, 80, 185, 81, 80, 185, 81,
652
+ 82, 83, 85, 86, 93, 188, 84, 83,
653
+ 85, 86, 188, 187, 85, 87, 87, 88,
654
+ 90, 87, 87, 88, 90, 89, 90, 90,
655
+ 83, 85, 86, 91, 188, 92, 90, 94,
656
+ 82, 172, 95, 96, 97, 97, 194, 196,
657
+ 97, 97, 98, 100, 99, 100, 100, 101,
658
+ 102, 109, 101, 102, 103, 103, 104, 106,
659
+ 103, 103, 104, 106, 105, 106, 106, 101,
660
+ 102, 107, 108, 106, 110, 100, 98, 100,
661
+ 113, 112, 112, 112, 112, 114, 116, 117,
662
+ 112, 121, 134, 136, 112, 112, 1, 115,
663
+ 2, 112, 112, 112, 118, 112, 3, 112,
664
+ 112, 112, 121, 16, 32, 123, 124, 124,
665
+ 22, 6, 125, 132, 131, 24, 24, 126,
666
+ 128, 127, 128, 128, 22, 6, 125, 129,
667
+ 131, 130, 128, 112, 119, 133, 124, 33,
668
+ 35, 112, 137, 36, 37, 112, 138, 140,
669
+ 139, 139, 139, 139, 141, 143, 144, 148,
670
+ 161, 163, 139, 139, 139, 38, 142, 39,
671
+ 139, 139, 139, 145, 139, 40, 139, 139,
672
+ 139, 148, 53, 69, 150, 151, 151, 59,
673
+ 43, 152, 159, 158, 61, 61, 153, 155,
674
+ 154, 155, 155, 59, 43, 152, 156, 158,
675
+ 157, 155, 139, 146, 160, 151, 70, 72,
676
+ 139, 164, 73, 74, 139, 165, 166, 167,
677
+ 167, 168, 166, 166, 166, 166, 170, 0,
678
+ 169, 171, 169, 171, 173, 172, 172, 175,
679
+ 172, 176, 178, 172, 179, 172, 172, 180,
680
+ 172, 172, 172, 172, 172, 181, 183, 172,
681
+ 189, 191, 192, 172, 193, 172, 206, 172,
682
+ 207, 211, 214, 217, 220, 172, 223, 172,
683
+ 173, 75, 75, 174, 172, 172, 172, 76,
684
+ 177, 77, 172, 172, 172, 172, 172, 172,
685
+ 172, 78, 172, 184, 79, 186, 172, 184,
686
+ 172, 172, 82, 172, 172, 172, 190, 172,
687
+ 172, 172, 193, 95, 111, 195, 196, 196,
688
+ 101, 85, 197, 204, 203, 103, 103, 198,
689
+ 200, 199, 200, 200, 101, 85, 197, 201,
690
+ 203, 202, 200, 172, 187, 205, 196, 172,
691
+ 172, 208, 209, 210, 173, 212, 213, 173,
692
+ 215, 216, 173, 218, 219, 173, 221, 222,
693
+ 173, 172, 172
694
+ ]
695
+
696
+ class << self
697
+ attr_accessor :_lexer_trans_actions
698
+ private :_lexer_trans_actions, :_lexer_trans_actions=
699
+ end
700
+ self._lexer_trans_actions = [
701
+ 79, 0, 5, 0, 81, 0, 245, 335,
702
+ 339, 31, 343, 41, 0, 1, 35, 39,
703
+ 0, 0, 37, 254, 257, 257, 0, 1,
704
+ 27, 27, 0, 29, 0, 248, 347, 351,
705
+ 31, 355, 0, 33, 0, 33, 77, 0,
706
+ 263, 266, 367, 446, 550, 0, 1, 251,
707
+ 251, 0, 29, 0, 245, 339, 31, 0,
708
+ 35, 37, 254, 257, 257, 0, 1, 27,
709
+ 27, 0, 29, 0, 248, 351, 31, 0,
710
+ 33, 0, 33, 446, 446, 0, 17, 227,
711
+ 0, 19, 15, 0, 75, 0, 0, 11,
712
+ 107, 0, 5, 0, 109, 0, 245, 335,
713
+ 339, 31, 343, 41, 0, 1, 35, 39,
714
+ 0, 0, 37, 254, 257, 257, 0, 1,
715
+ 27, 27, 0, 29, 0, 248, 347, 351,
716
+ 31, 355, 0, 33, 0, 33, 105, 0,
717
+ 263, 266, 367, 446, 557, 0, 1, 251,
718
+ 251, 0, 29, 0, 245, 339, 31, 0,
719
+ 35, 37, 254, 257, 257, 0, 1, 27,
720
+ 27, 0, 29, 0, 248, 351, 31, 0,
721
+ 33, 0, 33, 446, 446, 0, 17, 227,
722
+ 0, 19, 15, 0, 103, 0, 0, 11,
723
+ 195, 0, 1, 45, 193, 0, 5, 0,
724
+ 189, 0, 23, 239, 23, 0, 25, 0,
725
+ 0, 245, 335, 339, 31, 343, 41, 0,
726
+ 1, 35, 39, 0, 0, 37, 254, 257,
727
+ 257, 0, 1, 27, 27, 0, 29, 0,
728
+ 248, 347, 351, 31, 355, 0, 33, 0,
729
+ 33, 191, 0, 263, 266, 367, 446, 564,
730
+ 0, 1, 251, 251, 0, 29, 0, 245,
731
+ 339, 31, 0, 35, 37, 254, 257, 257,
732
+ 0, 1, 27, 27, 0, 29, 0, 248,
733
+ 351, 31, 0, 33, 0, 33, 446, 446,
734
+ 0, 59, 61, 55, 197, 284, 0, 251,
735
+ 57, 532, 287, 7, 65, 73, 3, 206,
736
+ 3, 209, 63, 71, 296, 69, 29, 383,
737
+ 371, 67, 293, 363, 260, 0, 399, 290,
738
+ 431, 466, 496, 31, 343, 359, 441, 257,
739
+ 451, 0, 399, 290, 436, 472, 514, 31,
740
+ 355, 0, 411, 478, 269, 0, 411, 224,
741
+ 13, 230, 53, 9, 9, 218, 0, 0,
742
+ 85, 89, 83, 200, 284, 0, 251, 538,
743
+ 287, 7, 87, 93, 101, 3, 206, 3,
744
+ 212, 91, 99, 305, 97, 29, 387, 375,
745
+ 95, 302, 363, 260, 0, 403, 299, 431,
746
+ 466, 502, 31, 343, 359, 441, 257, 456,
747
+ 0, 403, 299, 436, 472, 520, 31, 355,
748
+ 0, 415, 484, 269, 0, 415, 224, 13,
749
+ 233, 53, 9, 9, 221, 0, 113, 0,
750
+ 1, 0, 115, 111, 117, 119, 1, 0,
751
+ 395, 47, 281, 0, 427, 153, 161, 0,
752
+ 203, 284, 0, 137, 0, 121, 157, 0,
753
+ 131, 149, 133, 127, 135, 53, 423, 151,
754
+ 0, 0, 0, 129, 544, 123, 0, 159,
755
+ 427, 427, 427, 427, 427, 125, 0, 155,
756
+ 329, 43, 272, 275, 278, 163, 187, 3,
757
+ 206, 3, 215, 165, 183, 143, 179, 139,
758
+ 167, 0, 169, 21, 21, 332, 236, 0,
759
+ 242, 175, 29, 391, 379, 181, 0, 141,
760
+ 177, 171, 326, 363, 260, 0, 407, 308,
761
+ 431, 466, 508, 31, 343, 359, 441, 257,
762
+ 461, 0, 407, 308, 436, 472, 526, 31,
763
+ 355, 0, 419, 490, 269, 0, 419, 147,
764
+ 173, 329, 329, 329, 323, 329, 329, 314,
765
+ 329, 329, 311, 329, 329, 320, 329, 329,
766
+ 317, 185, 145
767
+ ]
768
+
769
+ class << self
770
+ attr_accessor :_lexer_to_state_actions
771
+ private :_lexer_to_state_actions, :_lexer_to_state_actions=
772
+ end
773
+ self._lexer_to_state_actions = [
774
+ 0, 0, 0, 0, 0, 0, 0, 0,
775
+ 0, 0, 0, 0, 0, 0, 0, 0,
776
+ 0, 0, 0, 0, 0, 0, 0, 0,
777
+ 0, 0, 0, 0, 0, 0, 0, 0,
778
+ 0, 0, 0, 0, 0, 0, 0, 0,
779
+ 0, 0, 0, 0, 0, 0, 0, 0,
780
+ 0, 0, 0, 0, 0, 0, 0, 0,
781
+ 0, 0, 0, 0, 0, 0, 0, 0,
782
+ 0, 0, 0, 0, 0, 0, 0, 0,
783
+ 0, 0, 0, 0, 0, 0, 0, 0,
784
+ 0, 0, 0, 0, 0, 0, 0, 0,
785
+ 0, 0, 0, 0, 0, 0, 0, 0,
786
+ 0, 0, 0, 0, 0, 0, 0, 0,
787
+ 0, 0, 0, 0, 0, 0, 0, 0,
788
+ 49, 0, 0, 0, 0, 0, 0, 0,
789
+ 0, 0, 0, 0, 0, 0, 0, 0,
790
+ 0, 0, 0, 0, 0, 0, 0, 0,
791
+ 0, 0, 0, 49, 0, 0, 0, 0,
792
+ 0, 0, 0, 0, 0, 0, 0, 0,
793
+ 0, 0, 0, 0, 0, 0, 0, 0,
794
+ 0, 0, 0, 0, 0, 0, 49, 0,
795
+ 0, 49, 0, 0, 49, 0, 0, 0,
796
+ 0, 0, 0, 0, 0, 0, 0, 0,
797
+ 0, 0, 0, 0, 0, 0, 0, 0,
798
+ 0, 0, 0, 0, 0, 0, 0, 0,
799
+ 0, 0, 0, 0, 0, 0, 0, 0,
800
+ 0, 0, 0, 0, 0, 0, 0, 0,
801
+ 0, 0, 0, 0, 0, 0, 0, 0
802
+ ]
803
+
804
+ class << self
805
+ attr_accessor :_lexer_from_state_actions
806
+ private :_lexer_from_state_actions, :_lexer_from_state_actions=
807
+ end
808
+ self._lexer_from_state_actions = [
809
+ 0, 0, 0, 0, 0, 0, 0, 0,
810
+ 0, 0, 0, 0, 0, 0, 0, 0,
811
+ 0, 0, 0, 0, 0, 0, 0, 0,
812
+ 0, 0, 0, 0, 0, 0, 0, 0,
813
+ 0, 0, 0, 0, 0, 0, 0, 0,
814
+ 0, 0, 0, 0, 0, 0, 0, 0,
815
+ 0, 0, 0, 0, 0, 0, 0, 0,
816
+ 0, 0, 0, 0, 0, 0, 0, 0,
817
+ 0, 0, 0, 0, 0, 0, 0, 0,
818
+ 0, 0, 0, 0, 0, 0, 0, 0,
819
+ 0, 0, 0, 0, 0, 0, 0, 0,
820
+ 0, 0, 0, 0, 0, 0, 0, 0,
821
+ 0, 0, 0, 0, 0, 0, 0, 0,
822
+ 0, 0, 0, 0, 0, 0, 0, 0,
823
+ 51, 0, 0, 0, 0, 0, 0, 0,
824
+ 0, 0, 0, 0, 0, 0, 0, 0,
825
+ 0, 0, 0, 0, 0, 0, 0, 0,
826
+ 0, 0, 0, 51, 0, 0, 0, 0,
827
+ 0, 0, 0, 0, 0, 0, 0, 0,
828
+ 0, 0, 0, 0, 0, 0, 0, 0,
829
+ 0, 0, 0, 0, 0, 0, 51, 0,
830
+ 0, 51, 0, 0, 51, 0, 0, 0,
831
+ 0, 0, 0, 0, 0, 0, 0, 0,
832
+ 0, 0, 0, 0, 0, 0, 0, 0,
833
+ 0, 0, 0, 0, 0, 0, 0, 0,
834
+ 0, 0, 0, 0, 0, 0, 0, 0,
835
+ 0, 0, 0, 0, 0, 0, 0, 0,
836
+ 0, 0, 0, 0, 0, 0, 0, 0
837
+ ]
838
+
839
+ class << self
840
+ attr_accessor :_lexer_eof_trans
841
+ private :_lexer_eof_trans, :_lexer_eof_trans=
842
+ end
843
+ self._lexer_eof_trans = [
844
+ 0, 1, 1, 5, 5, 5, 5, 5,
845
+ 5, 5, 5, 5, 5, 5, 5, 5,
846
+ 39, 39, 39, 39, 39, 39, 5, 5,
847
+ 5, 5, 5, 5, 5, 5, 39, 39,
848
+ 39, 1, 1, 1, 85, 85, 89, 89,
849
+ 93, 93, 93, 93, 93, 93, 93, 93,
850
+ 93, 93, 93, 93, 93, 127, 127, 127,
851
+ 127, 127, 127, 93, 93, 93, 93, 93,
852
+ 93, 93, 93, 127, 127, 127, 89, 89,
853
+ 89, 173, 173, 177, 181, 181, 185, 181,
854
+ 181, 181, 177, 177, 177, 177, 177, 177,
855
+ 177, 177, 177, 177, 177, 177, 177, 226,
856
+ 226, 226, 226, 226, 226, 177, 177, 177,
857
+ 177, 177, 177, 177, 177, 226, 226, 226,
858
+ 0, 277, 278, 282, 283, 284, 286, 288,
859
+ 289, 290, 288, 288, 288, 288, 288, 288,
860
+ 288, 288, 288, 316, 288, 288, 278, 322,
861
+ 277, 277, 326, 0, 340, 341, 345, 346,
862
+ 347, 349, 351, 352, 353, 351, 351, 351,
863
+ 351, 351, 351, 351, 351, 351, 379, 351,
864
+ 351, 341, 385, 340, 340, 389, 0, 397,
865
+ 398, 0, 401, 403, 0, 177, 445, 446,
866
+ 447, 451, 452, 453, 455, 457, 459, 447,
867
+ 463, 465, 466, 468, 469, 470, 470, 473,
868
+ 470, 474, 468, 468, 468, 468, 468, 468,
869
+ 468, 468, 468, 500, 468, 468, 447, 505,
870
+ 505, 505, 505, 505, 505, 505, 505, 505,
871
+ 505, 505, 505, 505, 505, 505, 505, 522
872
+ ]
873
+
874
+ class << self
875
+ attr_accessor :lexer_start
876
+ end
877
+ self.lexer_start = 112;
878
+ class << self
879
+ attr_accessor :lexer_first_final
880
+ end
881
+ self.lexer_first_final = 112;
882
+ class << self
883
+ attr_accessor :lexer_error
884
+ end
885
+ self.lexer_error = 0;
886
+
887
+ class << self
888
+ attr_accessor :lexer_en_main
889
+ end
890
+ self.lexer_en_main = 112;
891
+ class << self
892
+ attr_accessor :lexer_en_decl_body
893
+ end
894
+ self.lexer_en_decl_body = 139;
895
+ class << self
896
+ attr_accessor :lexer_en_pre_meme
897
+ end
898
+ self.lexer_en_pre_meme = 166;
899
+ class << self
900
+ attr_accessor :lexer_en_dstr_body
901
+ end
902
+ self.lexer_en_dstr_body = 169;
903
+ class << self
904
+ attr_accessor :lexer_en_meme_body
905
+ end
906
+ self.lexer_en_meme_body = 172;
907
+
908
+
909
+ # line 36 "lib/myco/parser/lexer_skeleton.rl"
910
+ ##
911
+ # @param [String] data The data to lex.
912
+ #
913
+ def initialize(data)
914
+ @data = data.unpack('U*') << 0
915
+
916
+ reset
917
+ end
918
+
919
+ ##
920
+ # Resets the internal state of the lexer. Typically you don't need to
921
+ # call this method yourself as its called by #lex after lexing a given
922
+ # String.
923
+ #
924
+ def reset
925
+ @line = 1
926
+ @ts = nil
927
+ @te = nil
928
+ @tokens = []
929
+ @stack = []
930
+ @top = 0
931
+ @cs = self.class.lexer_start
932
+ @act = 0
933
+ @elements = []
934
+ @eof = @data.length
935
+ @p = 0
936
+ @pe = @eof
937
+ reset_common
938
+ end
939
+
940
+ ##
941
+ # Lexes the supplied String and returns an Array of tokens. Each token is
942
+ # an Array in the following format:
943
+ #
944
+ # [TYPE, VALUE]
945
+ #
946
+ # The type is a symbol, the value is either nil or a String.
947
+ #
948
+ # This method resets the internal state of the lexer after consuming the
949
+ # input.
950
+ #
951
+ # @param [String] data The string to consume.
952
+ # @return [Array]
953
+ # @see #advance
954
+ #
955
+ def lex
956
+ tokens = []
957
+
958
+ while token = advance
959
+ tokens << token
960
+ end
961
+
962
+ reset
963
+
964
+ return tokens
965
+ end
966
+
967
+ ##
968
+ # Advances through the input and generates the corresponding tokens.
969
+ #
970
+ # This method does *not* reset the internal state of the lexer.
971
+ #
972
+ # @param [String] data The String to consume.
973
+ # @return [Array]
974
+ #
975
+ def advance
976
+ _lexer_actions = self.class.send :_lexer_actions
977
+ _lexer_range_lengths = self.class.send :_lexer_range_lengths
978
+ _lexer_trans_actions = self.class.send :_lexer_trans_actions
979
+ _lexer_key_offsets = self.class.send :_lexer_key_offsets
980
+ _lexer_index_offsets = self.class.send :_lexer_index_offsets
981
+ _lexer_to_state_actions = self.class.send :_lexer_to_state_actions
982
+ _lexer_trans_keys = self.class.send :_lexer_trans_keys
983
+ _lexer_from_state_actions = self.class.send :_lexer_from_state_actions
984
+ _lexer_single_lengths = self.class.send :_lexer_single_lengths
985
+ _lexer_trans_targs = self.class.send :_lexer_trans_targs
986
+ _lexer_eof_trans = self.class.send :_lexer_eof_trans
987
+ _lexer_indicies = self.class.send :_lexer_indicies
988
+
989
+
990
+ # line 991 "lib/myco/parser/lexer.rb"
991
+ begin
992
+ _klen, _trans, _keys, _acts, _nacts = nil
993
+ _goto_level = 0
994
+ _resume = 10
995
+ _eof_trans = 15
996
+ _again = 20
997
+ _test_eof = 30
998
+ _out = 40
999
+ while true
1000
+ _trigger_goto = false
1001
+ if _goto_level <= 0
1002
+ if @p == @pe
1003
+ _goto_level = _test_eof
1004
+ next
1005
+ end
1006
+ if @cs == 0
1007
+ _goto_level = _out
1008
+ next
1009
+ end
1010
+ end
1011
+ if _goto_level <= _resume
1012
+ _acts = _lexer_from_state_actions[ @cs]
1013
+ _nacts = _lexer_actions[_acts]
1014
+ _acts += 1
1015
+ while _nacts > 0
1016
+ _nacts -= 1
1017
+ _acts += 1
1018
+ case _lexer_actions[_acts - 1]
1019
+ when 48 then
1020
+ # line 1 "NONE"
1021
+ begin
1022
+ @ts = @p
1023
+ end
1024
+ # line 1025 "lib/myco/parser/lexer.rb"
1025
+ end # from state action switch
1026
+ end
1027
+ if _trigger_goto
1028
+ next
1029
+ end
1030
+ _keys = _lexer_key_offsets[ @cs]
1031
+ _trans = _lexer_index_offsets[ @cs]
1032
+ _klen = _lexer_single_lengths[ @cs]
1033
+ _break_match = false
1034
+
1035
+ begin
1036
+ if _klen > 0
1037
+ _lower = _keys
1038
+ _upper = _keys + _klen - 1
1039
+
1040
+ loop do
1041
+ break if _upper < _lower
1042
+ _mid = _lower + ( (_upper - _lower) >> 1 )
1043
+
1044
+ if ( (@data[@p] || 0)) < _lexer_trans_keys[_mid]
1045
+ _upper = _mid - 1
1046
+ elsif ( (@data[@p] || 0)) > _lexer_trans_keys[_mid]
1047
+ _lower = _mid + 1
1048
+ else
1049
+ _trans += (_mid - _keys)
1050
+ _break_match = true
1051
+ break
1052
+ end
1053
+ end # loop
1054
+ break if _break_match
1055
+ _keys += _klen
1056
+ _trans += _klen
1057
+ end
1058
+ _klen = _lexer_range_lengths[ @cs]
1059
+ if _klen > 0
1060
+ _lower = _keys
1061
+ _upper = _keys + (_klen << 1) - 2
1062
+ loop do
1063
+ break if _upper < _lower
1064
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1)
1065
+ if ( (@data[@p] || 0)) < _lexer_trans_keys[_mid]
1066
+ _upper = _mid - 2
1067
+ elsif ( (@data[@p] || 0)) > _lexer_trans_keys[_mid+1]
1068
+ _lower = _mid + 2
1069
+ else
1070
+ _trans += ((_mid - _keys) >> 1)
1071
+ _break_match = true
1072
+ break
1073
+ end
1074
+ end # loop
1075
+ break if _break_match
1076
+ _trans += _klen
1077
+ end
1078
+ end while false
1079
+ _trans = _lexer_indicies[_trans]
1080
+ end
1081
+ if _goto_level <= _eof_trans
1082
+ @cs = _lexer_trans_targs[_trans]
1083
+ if _lexer_trans_actions[_trans] != 0
1084
+ _acts = _lexer_trans_actions[_trans]
1085
+ _nacts = _lexer_actions[_acts]
1086
+ _acts += 1
1087
+ while _nacts > 0
1088
+ _nacts -= 1
1089
+ _acts += 1
1090
+ case _lexer_actions[_acts - 1]
1091
+ when 0 then
1092
+ # line 147 "lib/myco/parser/lexer_skeleton.rl"
1093
+ begin
1094
+ do_nl end
1095
+ when 1 then
1096
+ # line 20 "lib/myco/parser/lexer.rl"
1097
+ begin
1098
+ note_begin :string end
1099
+ when 2 then
1100
+ # line 21 "lib/myco/parser/lexer.rl"
1101
+ begin
1102
+ note :string, :T_STRING_BEGIN; note :string end
1103
+ when 3 then
1104
+ # line 22 "lib/myco/parser/lexer.rl"
1105
+ begin
1106
+ note :string, :T_STRING_BODY; note :string end
1107
+ when 4 then
1108
+ # line 23 "lib/myco/parser/lexer.rl"
1109
+ begin
1110
+ note :string, :T_STRING_END end
1111
+ when 5 then
1112
+ # line 29 "lib/myco/parser/lexer.rl"
1113
+ begin
1114
+ note_begin :declid end
1115
+ when 6 then
1116
+ # line 30 "lib/myco/parser/lexer.rl"
1117
+ begin
1118
+ note :declid, :T_DECLID_TAG end
1119
+ when 7 then
1120
+ # line 33 "lib/myco/parser/lexer.rl"
1121
+ begin
1122
+ note :declid end
1123
+ when 8 then
1124
+ # line 34 "lib/myco/parser/lexer.rl"
1125
+ begin
1126
+ note :declid, :T_DECLID_VALUE end
1127
+ when 9 then
1128
+ # line 40 "lib/myco/parser/lexer.rl"
1129
+ begin
1130
+ note_begin :category end
1131
+ when 10 then
1132
+ # line 41 "lib/myco/parser/lexer.rl"
1133
+ begin
1134
+ note :category, :T_CATEGORY_BEGIN end
1135
+ when 11 then
1136
+ # line 42 "lib/myco/parser/lexer.rl"
1137
+ begin
1138
+ note :category end
1139
+ when 12 then
1140
+ # line 43 "lib/myco/parser/lexer.rl"
1141
+ begin
1142
+ note :category, :T_CATEGORY_BODY end
1143
+ when 13 then
1144
+ # line 44 "lib/myco/parser/lexer.rl"
1145
+ begin
1146
+ note :category end
1147
+ when 14 then
1148
+ # line 45 "lib/myco/parser/lexer.rl"
1149
+ begin
1150
+ note :category, :T_CATEGORY_END end
1151
+ when 15 then
1152
+ # line 52 "lib/myco/parser/lexer.rl"
1153
+ begin
1154
+ note_begin :symbol end
1155
+ when 16 then
1156
+ # line 55 "lib/myco/parser/lexer.rl"
1157
+ begin
1158
+ note :symbol, :T_SYMBOL; end
1159
+ when 17 then
1160
+ # line 58 "lib/myco/parser/lexer.rl"
1161
+ begin
1162
+ note :symbol, :T_SYMSTR_BEGIN; note :symbol end
1163
+ when 18 then
1164
+ # line 59 "lib/myco/parser/lexer.rl"
1165
+ begin
1166
+ note :symbol, :T_SYMSTR_BODY; note :symbol end
1167
+ when 19 then
1168
+ # line 60 "lib/myco/parser/lexer.rl"
1169
+ begin
1170
+ note :symbol, :T_SYMSTR_END; end
1171
+ when 20 then
1172
+ # line 71 "lib/myco/parser/lexer.rl"
1173
+ begin
1174
+ note_begin :sconstant end
1175
+ when 21 then
1176
+ # line 73 "lib/myco/parser/lexer.rl"
1177
+ begin
1178
+ note :sconstant, :T_SCOPE; note :sconstant end
1179
+ when 22 then
1180
+ # line 75 "lib/myco/parser/lexer.rl"
1181
+ begin
1182
+ note :sconstant, :T_CONSTANT; note :sconstant end
1183
+ when 23 then
1184
+ # line 76 "lib/myco/parser/lexer.rl"
1185
+ begin
1186
+ note :sconstant, :T_SCOPE; note :sconstant end
1187
+ when 24 then
1188
+ # line 78 "lib/myco/parser/lexer.rl"
1189
+ begin
1190
+ note :sconstant, :T_CONSTANT end
1191
+ when 25 then
1192
+ # line 84 "lib/myco/parser/lexer.rl"
1193
+ begin
1194
+ note_begin :constant_list, nil end
1195
+ when 26 then
1196
+ # line 85 "lib/myco/parser/lexer.rl"
1197
+ begin
1198
+ xfer_notes :sconstant, :constant_list end
1199
+ when 27 then
1200
+ # line 87 "lib/myco/parser/lexer.rl"
1201
+ begin
1202
+ note :constant_list end
1203
+ when 28 then
1204
+ # line 88 "lib/myco/parser/lexer.rl"
1205
+ begin
1206
+ note :constant_list, :T_CONST_SEP end
1207
+ when 29 then
1208
+ # line 90 "lib/myco/parser/lexer.rl"
1209
+ begin
1210
+ xfer_notes :sconstant, :constant_list end
1211
+ when 30 then
1212
+ # line 97 "lib/myco/parser/lexer.rl"
1213
+ begin
1214
+ note_begin :cdefn_begin end
1215
+ when 31 then
1216
+ # line 98 "lib/myco/parser/lexer.rl"
1217
+ begin
1218
+ note :cdefn_begin, :T_CONSTANT end
1219
+ when 32 then
1220
+ # line 99 "lib/myco/parser/lexer.rl"
1221
+ begin
1222
+ note :cdefn_begin end
1223
+ when 33 then
1224
+ # line 100 "lib/myco/parser/lexer.rl"
1225
+ begin
1226
+ note :cdefn_begin, :T_DEFINE end
1227
+ when 34 then
1228
+ # line 101 "lib/myco/parser/lexer.rl"
1229
+ begin
1230
+
1231
+ emit_notes :cdefn_begin
1232
+ end
1233
+ when 35 then
1234
+ # line 110 "lib/myco/parser/lexer.rl"
1235
+ begin
1236
+ note_begin :decl_begin end
1237
+ when 36 then
1238
+ # line 111 "lib/myco/parser/lexer.rl"
1239
+ begin
1240
+ note :decl_begin, :T_DECLARE_BEGIN end
1241
+ when 37 then
1242
+ # line 112 "lib/myco/parser/lexer.rl"
1243
+ begin
1244
+
1245
+ emit_notes :constant_list
1246
+ emit_notes :decl_begin
1247
+ end
1248
+ when 38 then
1249
+ # line 141 "lib/myco/parser/lexer.rl"
1250
+ begin
1251
+ mark :space end
1252
+ when 39 then
1253
+ # line 142 "lib/myco/parser/lexer.rl"
1254
+ begin
1255
+ grab :delim, kram(:space) end
1256
+ when 40 then
1257
+ # line 143 "lib/myco/parser/lexer.rl"
1258
+ begin
1259
+
1260
+ emit_notes :constant_list
1261
+
1262
+ start, stop = @stored[:delim]
1263
+ emit :T_DECLSTR_BEGIN, start, stop
1264
+
1265
+ # Table of replacement characters to use when calculating
1266
+ # the ending delimiter from the starting delimiter.
1267
+ # Directional characters are replaced with their opposite.
1268
+ @dstr_replace_table ||= %w{
1269
+ < > ( ) { } [ ]
1270
+ }
1271
+
1272
+ # Calculate the ending delimiter to look for and store it
1273
+ @dstr_delim = text(start, stop) \
1274
+ .split(/(?<=[^a-zA-Z])|(?=[^a-zA-Z])/)
1275
+ .map { |str|
1276
+ idx = @dstr_replace_table.find_index(str)
1277
+ idx.nil? ? str :
1278
+ (idx.odd? ? @dstr_replace_table[idx-1] : @dstr_replace_table[idx+1])
1279
+ }
1280
+ .reverse
1281
+ .join ''
1282
+ end
1283
+ when 41 then
1284
+ # line 171 "lib/myco/parser/lexer.rl"
1285
+ begin
1286
+ note_begin :args_begin end
1287
+ when 42 then
1288
+ # line 172 "lib/myco/parser/lexer.rl"
1289
+ begin
1290
+ note :args_begin, :T_IDENTIFIER end
1291
+ when 43 then
1292
+ # line 173 "lib/myco/parser/lexer.rl"
1293
+ begin
1294
+ note :args_begin end
1295
+ when 44 then
1296
+ # line 174 "lib/myco/parser/lexer.rl"
1297
+ begin
1298
+ note :args_begin, :T_ARGS_BEGIN end
1299
+ when 45 then
1300
+ # line 252 "lib/myco/parser/lexer.rl"
1301
+ begin
1302
+ mark :newline end
1303
+ when 46 then
1304
+ # line 253 "lib/myco/parser/lexer.rl"
1305
+ begin
1306
+ grab :line, kram(:newline) end
1307
+ when 49 then
1308
+ # line 1 "NONE"
1309
+ begin
1310
+ @te = @p+1
1311
+ end
1312
+ when 50 then
1313
+ # line 185 "lib/myco/parser/lexer.rl"
1314
+ begin
1315
+ @act = 4; end
1316
+ when 51 then
1317
+ # line 191 "lib/myco/parser/lexer.rl"
1318
+ begin
1319
+ @act = 9; end
1320
+ when 52 then
1321
+ # line 192 "lib/myco/parser/lexer.rl"
1322
+ begin
1323
+ @act = 10; end
1324
+ when 53 then
1325
+ # line 181 "lib/myco/parser/lexer.rl"
1326
+ begin
1327
+ @te = @p+1
1328
+ end
1329
+ when 54 then
1330
+ # line 196 "lib/myco/parser/lexer.rl"
1331
+ begin
1332
+ @te = @p+1
1333
+ begin emit :T_EXPR_SEP end
1334
+ end
1335
+ when 55 then
1336
+ # line 197 "lib/myco/parser/lexer.rl"
1337
+ begin
1338
+ @te = @p+1
1339
+ begin emit :T_EXPR_SEP end
1340
+ end
1341
+ when 56 then
1342
+ # line 199 "lib/myco/parser/lexer.rl"
1343
+ begin
1344
+ @te = @p+1
1345
+ begin emit :T_DECLARE_END end
1346
+ end
1347
+ when 57 then
1348
+ # line 200 "lib/myco/parser/lexer.rl"
1349
+ begin
1350
+ @te = @p+1
1351
+ begin error :main end
1352
+ end
1353
+ when 58 then
1354
+ # line 182 "lib/myco/parser/lexer.rl"
1355
+ begin
1356
+ @te = @p
1357
+ @p = @p - 1; end
1358
+ when 59 then
1359
+ # line 184 "lib/myco/parser/lexer.rl"
1360
+ begin
1361
+ @te = @p
1362
+ @p = @p - 1; begin begin
1363
+ @stack[ @top] = @cs
1364
+ @top+= 1
1365
+ @cs = 139
1366
+ _trigger_goto = true
1367
+ _goto_level = _again
1368
+ break
1369
+ end
1370
+ end
1371
+ end
1372
+ when 60 then
1373
+ # line 185 "lib/myco/parser/lexer.rl"
1374
+ begin
1375
+ @te = @p
1376
+ @p = @p - 1; begin begin
1377
+ @stack[ @top] = @cs
1378
+ @top+= 1
1379
+ @cs = 169
1380
+ _trigger_goto = true
1381
+ _goto_level = _again
1382
+ break
1383
+ end
1384
+ end
1385
+ end
1386
+ when 61 then
1387
+ # line 187 "lib/myco/parser/lexer.rl"
1388
+ begin
1389
+ @te = @p
1390
+ @p = @p - 1; begin emit_notes :string end
1391
+ end
1392
+ when 62 then
1393
+ # line 188 "lib/myco/parser/lexer.rl"
1394
+ begin
1395
+ @te = @p
1396
+ @p = @p - 1; begin emit_notes :declid end
1397
+ end
1398
+ when 63 then
1399
+ # line 189 "lib/myco/parser/lexer.rl"
1400
+ begin
1401
+ @te = @p
1402
+ @p = @p - 1; begin emit_notes :category end
1403
+ end
1404
+ when 64 then
1405
+ # line 190 "lib/myco/parser/lexer.rl"
1406
+ begin
1407
+ @te = @p
1408
+ @p = @p - 1; begin emit :T_IDENTIFIER end
1409
+ end
1410
+ when 65 then
1411
+ # line 191 "lib/myco/parser/lexer.rl"
1412
+ begin
1413
+ @te = @p
1414
+ @p = @p - 1; begin emit :T_CONSTANT end
1415
+ end
1416
+ when 66 then
1417
+ # line 192 "lib/myco/parser/lexer.rl"
1418
+ begin
1419
+ @te = @p
1420
+ @p = @p - 1; begin emit :T_SCOPE end
1421
+ end
1422
+ when 67 then
1423
+ # line 194 "lib/myco/parser/lexer.rl"
1424
+ begin
1425
+ @te = @p
1426
+ @p = @p - 1; begin begin
1427
+ @stack[ @top] = @cs
1428
+ @top+= 1
1429
+ @cs = 166
1430
+ _trigger_goto = true
1431
+ _goto_level = _again
1432
+ break
1433
+ end
1434
+ end
1435
+ end
1436
+ when 68 then
1437
+ # line 200 "lib/myco/parser/lexer.rl"
1438
+ begin
1439
+ @te = @p
1440
+ @p = @p - 1; begin error :main end
1441
+ end
1442
+ when 69 then
1443
+ # line 190 "lib/myco/parser/lexer.rl"
1444
+ begin
1445
+ begin @p = (( @te))-1; end
1446
+ begin emit :T_IDENTIFIER end
1447
+ end
1448
+ when 70 then
1449
+ # line 191 "lib/myco/parser/lexer.rl"
1450
+ begin
1451
+ begin @p = (( @te))-1; end
1452
+ begin emit :T_CONSTANT end
1453
+ end
1454
+ when 71 then
1455
+ # line 200 "lib/myco/parser/lexer.rl"
1456
+ begin
1457
+ begin @p = (( @te))-1; end
1458
+ begin error :main end
1459
+ end
1460
+ when 72 then
1461
+ # line 1 "NONE"
1462
+ begin
1463
+ case @act
1464
+ when 4 then
1465
+ begin begin @p = (( @te))-1; end
1466
+ begin
1467
+ @stack[ @top] = @cs
1468
+ @top+= 1
1469
+ @cs = 169
1470
+ _trigger_goto = true
1471
+ _goto_level = _again
1472
+ break
1473
+ end
1474
+ end
1475
+ when 9 then
1476
+ begin begin @p = (( @te))-1; end
1477
+ emit :T_CONSTANT end
1478
+ when 10 then
1479
+ begin begin @p = (( @te))-1; end
1480
+ emit :T_SCOPE end
1481
+ end
1482
+ end
1483
+ when 73 then
1484
+ # line 213 "lib/myco/parser/lexer.rl"
1485
+ begin
1486
+ @act = 20; end
1487
+ when 74 then
1488
+ # line 219 "lib/myco/parser/lexer.rl"
1489
+ begin
1490
+ @act = 25; end
1491
+ when 75 then
1492
+ # line 220 "lib/myco/parser/lexer.rl"
1493
+ begin
1494
+ @act = 26; end
1495
+ when 76 then
1496
+ # line 207 "lib/myco/parser/lexer.rl"
1497
+ begin
1498
+ @te = @p+1
1499
+ end
1500
+ when 77 then
1501
+ # line 210 "lib/myco/parser/lexer.rl"
1502
+ begin
1503
+ @te = @p+1
1504
+ begin emit :T_EXPR_SEP end
1505
+ end
1506
+ when 78 then
1507
+ # line 224 "lib/myco/parser/lexer.rl"
1508
+ begin
1509
+ @te = @p+1
1510
+ begin emit :T_DECLARE_END; begin
1511
+ @top -= 1
1512
+ @cs = @stack[ @top]
1513
+ _trigger_goto = true
1514
+ _goto_level = _again
1515
+ break
1516
+ end
1517
+ end
1518
+ end
1519
+ when 79 then
1520
+ # line 226 "lib/myco/parser/lexer.rl"
1521
+ begin
1522
+ @te = @p+1
1523
+ begin error :decl_body end
1524
+ end
1525
+ when 80 then
1526
+ # line 208 "lib/myco/parser/lexer.rl"
1527
+ begin
1528
+ @te = @p
1529
+ @p = @p - 1; end
1530
+ when 81 then
1531
+ # line 212 "lib/myco/parser/lexer.rl"
1532
+ begin
1533
+ @te = @p
1534
+ @p = @p - 1; begin begin
1535
+ @stack[ @top] = @cs
1536
+ @top+= 1
1537
+ @cs = 139
1538
+ _trigger_goto = true
1539
+ _goto_level = _again
1540
+ break
1541
+ end
1542
+ end
1543
+ end
1544
+ when 82 then
1545
+ # line 213 "lib/myco/parser/lexer.rl"
1546
+ begin
1547
+ @te = @p
1548
+ @p = @p - 1; begin begin
1549
+ @stack[ @top] = @cs
1550
+ @top+= 1
1551
+ @cs = 169
1552
+ _trigger_goto = true
1553
+ _goto_level = _again
1554
+ break
1555
+ end
1556
+ end
1557
+ end
1558
+ when 83 then
1559
+ # line 215 "lib/myco/parser/lexer.rl"
1560
+ begin
1561
+ @te = @p
1562
+ @p = @p - 1; begin emit_notes :string end
1563
+ end
1564
+ when 84 then
1565
+ # line 216 "lib/myco/parser/lexer.rl"
1566
+ begin
1567
+ @te = @p
1568
+ @p = @p - 1; begin emit_notes :declid end
1569
+ end
1570
+ when 85 then
1571
+ # line 217 "lib/myco/parser/lexer.rl"
1572
+ begin
1573
+ @te = @p
1574
+ @p = @p - 1; begin emit_notes :category end
1575
+ end
1576
+ when 86 then
1577
+ # line 218 "lib/myco/parser/lexer.rl"
1578
+ begin
1579
+ @te = @p
1580
+ @p = @p - 1; begin emit :T_IDENTIFIER end
1581
+ end
1582
+ when 87 then
1583
+ # line 219 "lib/myco/parser/lexer.rl"
1584
+ begin
1585
+ @te = @p
1586
+ @p = @p - 1; begin emit :T_CONSTANT end
1587
+ end
1588
+ when 88 then
1589
+ # line 220 "lib/myco/parser/lexer.rl"
1590
+ begin
1591
+ @te = @p
1592
+ @p = @p - 1; begin emit :T_SCOPE end
1593
+ end
1594
+ when 89 then
1595
+ # line 222 "lib/myco/parser/lexer.rl"
1596
+ begin
1597
+ @te = @p
1598
+ @p = @p - 1; begin begin
1599
+ @stack[ @top] = @cs
1600
+ @top+= 1
1601
+ @cs = 166
1602
+ _trigger_goto = true
1603
+ _goto_level = _again
1604
+ break
1605
+ end
1606
+ end
1607
+ end
1608
+ when 90 then
1609
+ # line 226 "lib/myco/parser/lexer.rl"
1610
+ begin
1611
+ @te = @p
1612
+ @p = @p - 1; begin error :decl_body end
1613
+ end
1614
+ when 91 then
1615
+ # line 218 "lib/myco/parser/lexer.rl"
1616
+ begin
1617
+ begin @p = (( @te))-1; end
1618
+ begin emit :T_IDENTIFIER end
1619
+ end
1620
+ when 92 then
1621
+ # line 219 "lib/myco/parser/lexer.rl"
1622
+ begin
1623
+ begin @p = (( @te))-1; end
1624
+ begin emit :T_CONSTANT end
1625
+ end
1626
+ when 93 then
1627
+ # line 226 "lib/myco/parser/lexer.rl"
1628
+ begin
1629
+ begin @p = (( @te))-1; end
1630
+ begin error :decl_body end
1631
+ end
1632
+ when 94 then
1633
+ # line 1 "NONE"
1634
+ begin
1635
+ case @act
1636
+ when 20 then
1637
+ begin begin @p = (( @te))-1; end
1638
+ begin
1639
+ @stack[ @top] = @cs
1640
+ @top+= 1
1641
+ @cs = 169
1642
+ _trigger_goto = true
1643
+ _goto_level = _again
1644
+ break
1645
+ end
1646
+ end
1647
+ when 25 then
1648
+ begin begin @p = (( @te))-1; end
1649
+ emit :T_CONSTANT end
1650
+ when 26 then
1651
+ begin begin @p = (( @te))-1; end
1652
+ emit :T_SCOPE end
1653
+ end
1654
+ end
1655
+ when 95 then
1656
+ # line 237 "lib/myco/parser/lexer.rl"
1657
+ begin
1658
+ @te = @p+1
1659
+ begin emit :T_PARAMS_BEGIN; bpush :param; begin
1660
+ @stack[ @top] = @cs
1661
+ @top+= 1
1662
+ @cs = 172
1663
+ _trigger_goto = true
1664
+ _goto_level = _again
1665
+ break
1666
+ end
1667
+ end
1668
+ end
1669
+ when 96 then
1670
+ # line 241 "lib/myco/parser/lexer.rl"
1671
+ begin
1672
+ @te = @p+1
1673
+ begin @p = @p - 1; emit :T_MEME_BEGIN, @ts, @ts; bpush :meml; begin
1674
+ @cs = 172
1675
+ _trigger_goto = true
1676
+ _goto_level = _again
1677
+ break
1678
+ end
1679
+ end
1680
+ end
1681
+ when 97 then
1682
+ # line 242 "lib/myco/parser/lexer.rl"
1683
+ begin
1684
+ @te = @p+1
1685
+ begin emit :T_MEME_BEGIN; bpush :meme; begin
1686
+ @cs = 172
1687
+ _trigger_goto = true
1688
+ _goto_level = _again
1689
+ break
1690
+ end
1691
+ end
1692
+ end
1693
+ when 98 then
1694
+ # line 233 "lib/myco/parser/lexer.rl"
1695
+ begin
1696
+ @te = @p
1697
+ @p = @p - 1; end
1698
+ when 99 then
1699
+ # line 234 "lib/myco/parser/lexer.rl"
1700
+ begin
1701
+ @te = @p
1702
+ @p = @p - 1; end
1703
+ when 100 then
1704
+ # line 254 "lib/myco/parser/lexer.rl"
1705
+ begin
1706
+ @te = @p
1707
+ @p = @p - 1; begin
1708
+ start, stop = @stored[:line];
1709
+ line_text = text start, stop
1710
+
1711
+ raise "No known delimiter for string declaration." \
1712
+ if @dstr_delim.nil?
1713
+
1714
+ if (line_text =~ /^(\s*)(\S+)/; $2==@dstr_delim)
1715
+ emit :T_DECLSTR_BODY, *@dstr_body_start, start
1716
+ @dstr_body_start = nil
1717
+ @dstr_delim = nil
1718
+
1719
+ emit :T_DECLSTR_END, start+$1.size, stop
1720
+ begin
1721
+ @top -= 1
1722
+ @cs = @stack[ @top]
1723
+ _trigger_goto = true
1724
+ _goto_level = _again
1725
+ break
1726
+ end
1727
+
1728
+ else
1729
+ @dstr_body_start ||= start
1730
+ end
1731
+ end
1732
+ end
1733
+ when 101 then
1734
+ # line 282 "lib/myco/parser/lexer.rl"
1735
+ begin
1736
+ @act = 40; end
1737
+ when 102 then
1738
+ # line 289 "lib/myco/parser/lexer.rl"
1739
+ begin
1740
+ @act = 45; end
1741
+ when 103 then
1742
+ # line 290 "lib/myco/parser/lexer.rl"
1743
+ begin
1744
+ @act = 46; end
1745
+ when 104 then
1746
+ # line 291 "lib/myco/parser/lexer.rl"
1747
+ begin
1748
+ @act = 47; end
1749
+ when 105 then
1750
+ # line 292 "lib/myco/parser/lexer.rl"
1751
+ begin
1752
+ @act = 48; end
1753
+ when 106 then
1754
+ # line 293 "lib/myco/parser/lexer.rl"
1755
+ begin
1756
+ @act = 49; end
1757
+ when 107 then
1758
+ # line 296 "lib/myco/parser/lexer.rl"
1759
+ begin
1760
+ @act = 52; end
1761
+ when 108 then
1762
+ # line 297 "lib/myco/parser/lexer.rl"
1763
+ begin
1764
+ @act = 53; end
1765
+ when 109 then
1766
+ # line 300 "lib/myco/parser/lexer.rl"
1767
+ begin
1768
+ @act = 56; end
1769
+ when 110 then
1770
+ # line 285 "lib/myco/parser/lexer.rl"
1771
+ begin
1772
+ @te = @p+1
1773
+ begin emit :T_PAREN_BEGIN; bpush :paren; begin
1774
+ @stack[ @top] = @cs
1775
+ @top+= 1
1776
+ @cs = 172
1777
+ _trigger_goto = true
1778
+ _goto_level = _again
1779
+ break
1780
+ end
1781
+ end
1782
+ end
1783
+ when 111 then
1784
+ # line 286 "lib/myco/parser/lexer.rl"
1785
+ begin
1786
+ @te = @p+1
1787
+ begin emit :T_ARRAY_BEGIN; bpush :array; begin
1788
+ @stack[ @top] = @cs
1789
+ @top+= 1
1790
+ @cs = 172
1791
+ _trigger_goto = true
1792
+ _goto_level = _again
1793
+ break
1794
+ end
1795
+ end
1796
+ end
1797
+ when 112 then
1798
+ # line 287 "lib/myco/parser/lexer.rl"
1799
+ begin
1800
+ @te = @p+1
1801
+ begin emit :T_MEME_BEGIN; bpush :meme; begin
1802
+ @stack[ @top] = @cs
1803
+ @top+= 1
1804
+ @cs = 172
1805
+ _trigger_goto = true
1806
+ _goto_level = _again
1807
+ break
1808
+ end
1809
+ end
1810
+ end
1811
+ when 113 then
1812
+ # line 298 "lib/myco/parser/lexer.rl"
1813
+ begin
1814
+ @te = @p+1
1815
+ begin emit :T_DOT end
1816
+ end
1817
+ when 114 then
1818
+ # line 299 "lib/myco/parser/lexer.rl"
1819
+ begin
1820
+ @te = @p+1
1821
+ begin emit :T_QUEST end
1822
+ end
1823
+ when 115 then
1824
+ # line 302 "lib/myco/parser/lexer.rl"
1825
+ begin
1826
+ @te = @p+1
1827
+ begin emit :T_OP_PLUS end
1828
+ end
1829
+ when 116 then
1830
+ # line 303 "lib/myco/parser/lexer.rl"
1831
+ begin
1832
+ @te = @p+1
1833
+ begin emit :T_OP_MINUS end
1834
+ end
1835
+ when 117 then
1836
+ # line 305 "lib/myco/parser/lexer.rl"
1837
+ begin
1838
+ @te = @p+1
1839
+ begin emit :T_OP_DIV end
1840
+ end
1841
+ when 118 then
1842
+ # line 306 "lib/myco/parser/lexer.rl"
1843
+ begin
1844
+ @te = @p+1
1845
+ begin emit :T_OP_MOD end
1846
+ end
1847
+ when 119 then
1848
+ # line 307 "lib/myco/parser/lexer.rl"
1849
+ begin
1850
+ @te = @p+1
1851
+ begin emit :T_OP_EXP end
1852
+ end
1853
+ when 120 then
1854
+ # line 309 "lib/myco/parser/lexer.rl"
1855
+ begin
1856
+ @te = @p+1
1857
+ begin emit :T_OP_COMPARE end
1858
+ end
1859
+ when 121 then
1860
+ # line 310 "lib/myco/parser/lexer.rl"
1861
+ begin
1862
+ @te = @p+1
1863
+ begin emit :T_OP_AND end
1864
+ end
1865
+ when 122 then
1866
+ # line 311 "lib/myco/parser/lexer.rl"
1867
+ begin
1868
+ @te = @p+1
1869
+ begin emit :T_OP_OR end
1870
+ end
1871
+ when 123 then
1872
+ # line 316 "lib/myco/parser/lexer.rl"
1873
+ begin
1874
+ @te = @p+1
1875
+ end
1876
+ when 124 then
1877
+ # line 327 "lib/myco/parser/lexer.rl"
1878
+ begin
1879
+ @te = @p+1
1880
+ begin
1881
+ case bthis
1882
+ when :args; emit :T_ARG_SEP
1883
+ when :param; emit :T_ARG_SEP
1884
+ when :array; emit :T_ARG_SEP
1885
+ else; error :meme_body
1886
+ end
1887
+ end
1888
+ end
1889
+ when 125 then
1890
+ # line 336 "lib/myco/parser/lexer.rl"
1891
+ begin
1892
+ @te = @p+1
1893
+ begin
1894
+ case bthis
1895
+ when :meme; emit :T_EXPR_SEP
1896
+ when :meml; emit :T_EXPR_SEP
1897
+ when :paren; emit :T_EXPR_SEP
1898
+ else; error :meme_body
1899
+ end
1900
+ end
1901
+ end
1902
+ when 126 then
1903
+ # line 345 "lib/myco/parser/lexer.rl"
1904
+ begin
1905
+ @te = @p+1
1906
+ begin
1907
+ case bthis
1908
+ when :meme; emit :T_EXPR_SEP
1909
+ when :meml; emit :T_MEME_END, @ts, @ts; @p = @p - 1; bpop; begin
1910
+ @top -= 1
1911
+ @cs = @stack[ @top]
1912
+ _trigger_goto = true
1913
+ _goto_level = _again
1914
+ break
1915
+ end
1916
+
1917
+ when :paren; emit :T_EXPR_SEP
1918
+ when :args; emit :T_ARG_SEP
1919
+ when :param; emit :T_ARG_SEP
1920
+ when :array; emit :T_ARG_SEP
1921
+ else; error :meme_body
1922
+ end
1923
+ end
1924
+ end
1925
+ when 127 then
1926
+ # line 357 "lib/myco/parser/lexer.rl"
1927
+ begin
1928
+ @te = @p+1
1929
+ begin
1930
+ case bthis
1931
+ when :meme; emit :T_MEME_END; bpop; begin
1932
+ @top -= 1
1933
+ @cs = @stack[ @top]
1934
+ _trigger_goto = true
1935
+ _goto_level = _again
1936
+ break
1937
+ end
1938
+
1939
+ else; error :meme_body
1940
+ end
1941
+ end
1942
+ end
1943
+ when 128 then
1944
+ # line 364 "lib/myco/parser/lexer.rl"
1945
+ begin
1946
+ @te = @p+1
1947
+ begin
1948
+ case bthis
1949
+ when :args; emit :T_ARGS_END; bpop; begin
1950
+ @top -= 1
1951
+ @cs = @stack[ @top]
1952
+ _trigger_goto = true
1953
+ _goto_level = _again
1954
+ break
1955
+ end
1956
+
1957
+ when :paren; emit :T_PAREN_END; bpop; begin
1958
+ @top -= 1
1959
+ @cs = @stack[ @top]
1960
+ _trigger_goto = true
1961
+ _goto_level = _again
1962
+ break
1963
+ end
1964
+
1965
+ else; error :meme_body
1966
+ end
1967
+ end
1968
+ end
1969
+ when 129 then
1970
+ # line 372 "lib/myco/parser/lexer.rl"
1971
+ begin
1972
+ @te = @p+1
1973
+ begin
1974
+ case bthis
1975
+ when :array; emit :T_ARRAY_END; bpop; begin
1976
+ @top -= 1
1977
+ @cs = @stack[ @top]
1978
+ _trigger_goto = true
1979
+ _goto_level = _again
1980
+ break
1981
+ end
1982
+
1983
+ else; error :meme_body
1984
+ end
1985
+ end
1986
+ end
1987
+ when 130 then
1988
+ # line 389 "lib/myco/parser/lexer.rl"
1989
+ begin
1990
+ @te = @p+1
1991
+ begin error :meme_body end
1992
+ end
1993
+ when 131 then
1994
+ # line 278 "lib/myco/parser/lexer.rl"
1995
+ begin
1996
+ @te = @p
1997
+ @p = @p - 1; end
1998
+ when 132 then
1999
+ # line 279 "lib/myco/parser/lexer.rl"
2000
+ begin
2001
+ @te = @p
2002
+ @p = @p - 1; end
2003
+ when 133 then
2004
+ # line 281 "lib/myco/parser/lexer.rl"
2005
+ begin
2006
+ @te = @p
2007
+ @p = @p - 1; begin begin
2008
+ @stack[ @top] = @cs
2009
+ @top+= 1
2010
+ @cs = 139
2011
+ _trigger_goto = true
2012
+ _goto_level = _again
2013
+ break
2014
+ end
2015
+ end
2016
+ end
2017
+ when 134 then
2018
+ # line 282 "lib/myco/parser/lexer.rl"
2019
+ begin
2020
+ @te = @p
2021
+ @p = @p - 1; begin begin
2022
+ @stack[ @top] = @cs
2023
+ @top+= 1
2024
+ @cs = 169
2025
+ _trigger_goto = true
2026
+ _goto_level = _again
2027
+ break
2028
+ end
2029
+ end
2030
+ end
2031
+ when 135 then
2032
+ # line 284 "lib/myco/parser/lexer.rl"
2033
+ begin
2034
+ @te = @p
2035
+ @p = @p - 1; begin emit_notes :args_begin; bpush :args; begin
2036
+ @stack[ @top] = @cs
2037
+ @top+= 1
2038
+ @cs = 172
2039
+ _trigger_goto = true
2040
+ _goto_level = _again
2041
+ break
2042
+ end
2043
+ end
2044
+ end
2045
+ when 136 then
2046
+ # line 294 "lib/myco/parser/lexer.rl"
2047
+ begin
2048
+ @te = @p
2049
+ @p = @p - 1; begin emit :T_INTEGER end
2050
+ end
2051
+ when 137 then
2052
+ # line 295 "lib/myco/parser/lexer.rl"
2053
+ begin
2054
+ @te = @p
2055
+ @p = @p - 1; begin emit :T_FLOAT end
2056
+ end
2057
+ when 138 then
2058
+ # line 296 "lib/myco/parser/lexer.rl"
2059
+ begin
2060
+ @te = @p
2061
+ @p = @p - 1; begin emit :T_CONSTANT end
2062
+ end
2063
+ when 139 then
2064
+ # line 297 "lib/myco/parser/lexer.rl"
2065
+ begin
2066
+ @te = @p
2067
+ @p = @p - 1; begin emit :T_IDENTIFIER end
2068
+ end
2069
+ when 140 then
2070
+ # line 300 "lib/myco/parser/lexer.rl"
2071
+ begin
2072
+ @te = @p
2073
+ @p = @p - 1; begin emit :T_SCOPE end
2074
+ end
2075
+ when 141 then
2076
+ # line 301 "lib/myco/parser/lexer.rl"
2077
+ begin
2078
+ @te = @p
2079
+ @p = @p - 1; begin emit :T_ASSIGN end
2080
+ end
2081
+ when 142 then
2082
+ # line 304 "lib/myco/parser/lexer.rl"
2083
+ begin
2084
+ @te = @p
2085
+ @p = @p - 1; begin emit :T_OP_MULT end
2086
+ end
2087
+ when 143 then
2088
+ # line 309 "lib/myco/parser/lexer.rl"
2089
+ begin
2090
+ @te = @p
2091
+ @p = @p - 1; begin emit :T_OP_COMPARE end
2092
+ end
2093
+ when 144 then
2094
+ # line 313 "lib/myco/parser/lexer.rl"
2095
+ begin
2096
+ @te = @p
2097
+ @p = @p - 1; begin emit_notes :symbol end
2098
+ end
2099
+ when 145 then
2100
+ # line 314 "lib/myco/parser/lexer.rl"
2101
+ begin
2102
+ @te = @p
2103
+ @p = @p - 1; begin emit_notes :string end
2104
+ end
2105
+ when 146 then
2106
+ # line 319 "lib/myco/parser/lexer.rl"
2107
+ begin
2108
+ @te = @p
2109
+ @p = @p - 1; begin
2110
+ case bthis
2111
+ when :param; emit :T_OP_TOPROC
2112
+ when :args; emit :T_OP_TOPROC
2113
+ else; error :meme_body
2114
+ end
2115
+ end
2116
+ end
2117
+ when 147 then
2118
+ # line 379 "lib/myco/parser/lexer.rl"
2119
+ begin
2120
+ @te = @p
2121
+ @p = @p - 1; begin
2122
+ case bthis
2123
+ when :param; emit :T_PARAMS_END; bpop; begin
2124
+ @top -= 1
2125
+ @cs = @stack[ @top]
2126
+ _trigger_goto = true
2127
+ _goto_level = _again
2128
+ break
2129
+ end
2130
+
2131
+ when :meme; emit :T_PARAMS_BEGIN; bpush :param; begin
2132
+ @stack[ @top] = @cs
2133
+ @top+= 1
2134
+ @cs = 172
2135
+ _trigger_goto = true
2136
+ _goto_level = _again
2137
+ break
2138
+ end
2139
+
2140
+ when :meml; emit :T_PARAMS_BEGIN; bpush :param; begin
2141
+ @stack[ @top] = @cs
2142
+ @top+= 1
2143
+ @cs = 172
2144
+ _trigger_goto = true
2145
+ _goto_level = _again
2146
+ break
2147
+ end
2148
+
2149
+ when :paren; emit :T_PARAMS_BEGIN; bpush :param; begin
2150
+ @stack[ @top] = @cs
2151
+ @top+= 1
2152
+ @cs = 172
2153
+ _trigger_goto = true
2154
+ _goto_level = _again
2155
+ break
2156
+ end
2157
+
2158
+ else; error :meme_body
2159
+ end
2160
+ end
2161
+ end
2162
+ when 148 then
2163
+ # line 389 "lib/myco/parser/lexer.rl"
2164
+ begin
2165
+ @te = @p
2166
+ @p = @p - 1; begin error :meme_body end
2167
+ end
2168
+ when 149 then
2169
+ # line 294 "lib/myco/parser/lexer.rl"
2170
+ begin
2171
+ begin @p = (( @te))-1; end
2172
+ begin emit :T_INTEGER end
2173
+ end
2174
+ when 150 then
2175
+ # line 296 "lib/myco/parser/lexer.rl"
2176
+ begin
2177
+ begin @p = (( @te))-1; end
2178
+ begin emit :T_CONSTANT end
2179
+ end
2180
+ when 151 then
2181
+ # line 389 "lib/myco/parser/lexer.rl"
2182
+ begin
2183
+ begin @p = (( @te))-1; end
2184
+ begin error :meme_body end
2185
+ end
2186
+ when 152 then
2187
+ # line 1 "NONE"
2188
+ begin
2189
+ case @act
2190
+ when 40 then
2191
+ begin begin @p = (( @te))-1; end
2192
+ begin
2193
+ @stack[ @top] = @cs
2194
+ @top+= 1
2195
+ @cs = 169
2196
+ _trigger_goto = true
2197
+ _goto_level = _again
2198
+ break
2199
+ end
2200
+ end
2201
+ when 45 then
2202
+ begin begin @p = (( @te))-1; end
2203
+ emit :T_SELF end
2204
+ when 46 then
2205
+ begin begin @p = (( @te))-1; end
2206
+ emit :T_NULL end
2207
+ when 47 then
2208
+ begin begin @p = (( @te))-1; end
2209
+ emit :T_VOID end
2210
+ when 48 then
2211
+ begin begin @p = (( @te))-1; end
2212
+ emit :T_TRUE end
2213
+ when 49 then
2214
+ begin begin @p = (( @te))-1; end
2215
+ emit :T_FALSE end
2216
+ when 52 then
2217
+ begin begin @p = (( @te))-1; end
2218
+ emit :T_CONSTANT end
2219
+ when 53 then
2220
+ begin begin @p = (( @te))-1; end
2221
+ emit :T_IDENTIFIER end
2222
+ when 56 then
2223
+ begin begin @p = (( @te))-1; end
2224
+ emit :T_SCOPE end
2225
+ end
2226
+ end
2227
+ # line 2228 "lib/myco/parser/lexer.rb"
2228
+ end # action switch
2229
+ end
2230
+ end
2231
+ if _trigger_goto
2232
+ next
2233
+ end
2234
+ end
2235
+ if _goto_level <= _again
2236
+ _acts = _lexer_to_state_actions[ @cs]
2237
+ _nacts = _lexer_actions[_acts]
2238
+ _acts += 1
2239
+ while _nacts > 0
2240
+ _nacts -= 1
2241
+ _acts += 1
2242
+ case _lexer_actions[_acts - 1]
2243
+ when 47 then
2244
+ # line 1 "NONE"
2245
+ begin
2246
+ @ts = nil; end
2247
+ # line 2248 "lib/myco/parser/lexer.rb"
2248
+ end # to state action switch
2249
+ end
2250
+ if _trigger_goto
2251
+ next
2252
+ end
2253
+ if @cs == 0
2254
+ _goto_level = _out
2255
+ next
2256
+ end
2257
+ @p += 1
2258
+ if @p != @pe
2259
+ _goto_level = _resume
2260
+ next
2261
+ end
2262
+ end
2263
+ if _goto_level <= _test_eof
2264
+ if @p == @eof
2265
+ if _lexer_eof_trans[ @cs] > 0
2266
+ _trans = _lexer_eof_trans[ @cs] - 1;
2267
+ _goto_level = _eof_trans
2268
+ next;
2269
+ end
2270
+ end
2271
+ end
2272
+ if _goto_level <= _out
2273
+ break
2274
+ end
2275
+ end
2276
+ end
2277
+
2278
+ # line 116 "lib/myco/parser/lexer_skeleton.rl"
2279
+ # %
2280
+
2281
+ return @tokens.shift
2282
+ end
2283
+
2284
+ private
2285
+
2286
+ ##
2287
+ # Returns the text of the current buffer based on the supplied start and
2288
+ # stop position.
2289
+ #
2290
+ # By default `@ts` and `@te` are used as the start/stop position.
2291
+ #
2292
+ # @param [Fixnum] start
2293
+ # @param [Fixnum] stop
2294
+ # @return [String]
2295
+ #
2296
+ def text(start = @ts, stop = @te)
2297
+ return @data[start...stop].pack('U*')
2298
+ end
2299
+
2300
+
2301
+
2302
+ # line 151 "lib/myco/parser/lexer_skeleton.rl"
2303
+
2304
+ # %
2305
+ end
2306
+ end