myco 0.1.0.dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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