UNPKG

268 kBJavaScriptView Raw
1module.exports = (function() {
2 "use strict";
3
4 /*
5 * Generated by PEG.js 0.9.0.
6 *
7 * http://pegjs.org/
8 */
9
10 function peg$subclass(child, parent) {
11 function ctor() { this.constructor = child; }
12 ctor.prototype = parent.prototype;
13 child.prototype = new ctor();
14 }
15
16 function peg$SyntaxError(message, expected, found, location) {
17 this.message = message;
18 this.expected = expected;
19 this.found = found;
20 this.location = location;
21 this.name = "SyntaxError";
22
23 if (typeof Error.captureStackTrace === "function") {
24 Error.captureStackTrace(this, peg$SyntaxError);
25 }
26 }
27
28 peg$subclass(peg$SyntaxError, Error);
29
30 function peg$parse(input) {
31 var options = arguments.length > 1 ? arguments[1] : {},
32 parser = this,
33
34 peg$FAILED = {},
35
36 peg$startRuleFunctions = { start: peg$parsestart },
37 peg$startRuleFunction = peg$parsestart,
38
39 peg$c0 = function(body) {
40 return {
41 kind: 'script',
42 body: body.map(function (e) { return e[1]; })
43 };
44 },
45 peg$c1 = { type: "other", description: "whitespace" },
46 peg$c2 = /^[\t\x0B\f \xA0\uFEFF]/,
47 peg$c3 = { type: "class", value: "[\\t\\v\\f \\u00A0\\uFEFF]", description: "[\\t\\v\\f \\u00A0\\uFEFF]" },
48 peg$c4 = { type: "other", description: "end of line" },
49 peg$c5 = "\n",
50 peg$c6 = { type: "literal", value: "\n", description: "\"\\n\"" },
51 peg$c7 = "\r\n",
52 peg$c8 = { type: "literal", value: "\r\n", description: "\"\\r\\n\"" },
53 peg$c9 = "\r",
54 peg$c10 = { type: "literal", value: "\r", description: "\"\\r\"" },
55 peg$c11 = "\u2028",
56 peg$c12 = { type: "literal", value: "\u2028", description: "\"\\u2028\"" },
57 peg$c13 = "\u2029",
58 peg$c14 = { type: "literal", value: "\u2029", description: "\"\\u2029\"" },
59 peg$c15 = /^[\n\r\u2028\u2029]/,
60 peg$c16 = { type: "class", value: "[\\n\\r\\u2028\\u2029]", description: "[\\n\\r\\u2028\\u2029]" },
61 peg$c17 = "(;",
62 peg$c18 = { type: "literal", value: "(;", description: "\"(;\"" },
63 peg$c19 = ";)",
64 peg$c20 = { type: "literal", value: ";)", description: "\";)\"" },
65 peg$c21 = { type: "any", description: "any character" },
66 peg$c22 = function() { return null; },
67 peg$c23 = { type: "other", description: "comment" },
68 peg$c24 = ";;",
69 peg$c25 = { type: "literal", value: ";;", description: "\";;\"" },
70 peg$c26 = /^[a-zA-Z0-9\-_.]/,
71 peg$c27 = { type: "class", value: "[a-zA-Z0-9\\-\\_\\.]", description: "[a-zA-Z0-9\\-\\_\\.]" },
72 peg$c28 = function(name) { return name.join(''); },
73 peg$c29 = "i32",
74 peg$c30 = { type: "literal", value: "i32", description: "\"i32\"" },
75 peg$c31 = "i64",
76 peg$c32 = { type: "literal", value: "i64", description: "\"i64\"" },
77 peg$c33 = "f32",
78 peg$c34 = { type: "literal", value: "f32", description: "\"f32\"" },
79 peg$c35 = "f64",
80 peg$c36 = { type: "literal", value: "f64", description: "\"f64\"" },
81 peg$c37 = "0x",
82 peg$c38 = { type: "literal", value: "0x", description: "\"0x\"" },
83 peg$c39 = /^[0-9A-Fa-f]/,
84 peg$c40 = { type: "class", value: "[0-9A-Fa-f]", description: "[0-9A-Fa-f]" },
85 peg$c41 = "-",
86 peg$c42 = { type: "literal", value: "-", description: "\"-\"" },
87 peg$c43 = /^[0-9]/,
88 peg$c44 = { type: "class", value: "[0-9]", description: "[0-9]" },
89 peg$c45 = function(node) { return (node[0] || '') + node[1].join(''); },
90 peg$c46 = /^[0-9.]/,
91 peg$c47 = { type: "class", value: "[0-9.]", description: "[0-9.]" },
92 peg$c48 = "add",
93 peg$c49 = { type: "literal", value: "add", description: "\"add\"" },
94 peg$c50 = "sub",
95 peg$c51 = { type: "literal", value: "sub", description: "\"sub\"" },
96 peg$c52 = "mul",
97 peg$c53 = { type: "literal", value: "mul", description: "\"mul\"" },
98 peg$c54 = "div_s",
99 peg$c55 = { type: "literal", value: "div_s", description: "\"div_s\"" },
100 peg$c56 = "div_u",
101 peg$c57 = { type: "literal", value: "div_u", description: "\"div_u\"" },
102 peg$c58 = "rem_s",
103 peg$c59 = { type: "literal", value: "rem_s", description: "\"rem_s\"" },
104 peg$c60 = "rem_u",
105 peg$c61 = { type: "literal", value: "rem_u", description: "\"rem_u\"" },
106 peg$c62 = "and",
107 peg$c63 = { type: "literal", value: "and", description: "\"and\"" },
108 peg$c64 = "or",
109 peg$c65 = { type: "literal", value: "or", description: "\"or\"" },
110 peg$c66 = "xor",
111 peg$c67 = { type: "literal", value: "xor", description: "\"xor\"" },
112 peg$c68 = "shl",
113 peg$c69 = { type: "literal", value: "shl", description: "\"shl\"" },
114 peg$c70 = "shr_u",
115 peg$c71 = { type: "literal", value: "shr_u", description: "\"shr_u\"" },
116 peg$c72 = "shr_s",
117 peg$c73 = { type: "literal", value: "shr_s", description: "\"shr_s\"" },
118 peg$c74 = "rotl",
119 peg$c75 = { type: "literal", value: "rotl", description: "\"rotl\"" },
120 peg$c76 = "rotr",
121 peg$c77 = { type: "literal", value: "rotr", description: "\"rotr\"" },
122 peg$c78 = "div",
123 peg$c79 = { type: "literal", value: "div", description: "\"div\"" },
124 peg$c80 = "copysign",
125 peg$c81 = { type: "literal", value: "copysign", description: "\"copysign\"" },
126 peg$c82 = "min",
127 peg$c83 = { type: "literal", value: "min", description: "\"min\"" },
128 peg$c84 = "max",
129 peg$c85 = { type: "literal", value: "max", description: "\"max\"" },
130 peg$c86 = "clz",
131 peg$c87 = { type: "literal", value: "clz", description: "\"clz\"" },
132 peg$c88 = "ctz",
133 peg$c89 = { type: "literal", value: "ctz", description: "\"ctz\"" },
134 peg$c90 = "popcnt",
135 peg$c91 = { type: "literal", value: "popcnt", description: "\"popcnt\"" },
136 peg$c92 = "eqz",
137 peg$c93 = { type: "literal", value: "eqz", description: "\"eqz\"" },
138 peg$c94 = "neg",
139 peg$c95 = { type: "literal", value: "neg", description: "\"neg\"" },
140 peg$c96 = "abs",
141 peg$c97 = { type: "literal", value: "abs", description: "\"abs\"" },
142 peg$c98 = "ceil",
143 peg$c99 = { type: "literal", value: "ceil", description: "\"ceil\"" },
144 peg$c100 = "floor",
145 peg$c101 = { type: "literal", value: "floor", description: "\"floor\"" },
146 peg$c102 = "trunc",
147 peg$c103 = { type: "literal", value: "trunc", description: "\"trunc\"" },
148 peg$c104 = "nearest",
149 peg$c105 = { type: "literal", value: "nearest", description: "\"nearest\"" },
150 peg$c106 = "sqrt",
151 peg$c107 = { type: "literal", value: "sqrt", description: "\"sqrt\"" },
152 peg$c108 = /^[a-z_]/,
153 peg$c109 = { type: "class", value: "[a-z\\_]", description: "[a-z\\_]" },
154 peg$c110 = function(res) { return res.join(''); },
155 peg$c111 = "eq",
156 peg$c112 = { type: "literal", value: "eq", description: "\"eq\"" },
157 peg$c113 = "ne",
158 peg$c114 = { type: "literal", value: "ne", description: "\"ne\"" },
159 peg$c115 = "lt_s",
160 peg$c116 = { type: "literal", value: "lt_s", description: "\"lt_s\"" },
161 peg$c117 = "lt_u",
162 peg$c118 = { type: "literal", value: "lt_u", description: "\"lt_u\"" },
163 peg$c119 = "le_s",
164 peg$c120 = { type: "literal", value: "le_s", description: "\"le_s\"" },
165 peg$c121 = "le_u",
166 peg$c122 = { type: "literal", value: "le_u", description: "\"le_u\"" },
167 peg$c123 = "gt_s",
168 peg$c124 = { type: "literal", value: "gt_s", description: "\"gt_s\"" },
169 peg$c125 = "gt_u",
170 peg$c126 = { type: "literal", value: "gt_u", description: "\"gt_u\"" },
171 peg$c127 = "ge_s",
172 peg$c128 = { type: "literal", value: "ge_s", description: "\"ge_s\"" },
173 peg$c129 = "ge_u",
174 peg$c130 = { type: "literal", value: "ge_u", description: "\"ge_u\"" },
175 peg$c131 = "lt",
176 peg$c132 = { type: "literal", value: "lt", description: "\"lt\"" },
177 peg$c133 = "le",
178 peg$c134 = { type: "literal", value: "le", description: "\"le\"" },
179 peg$c135 = "gt",
180 peg$c136 = { type: "literal", value: "gt", description: "\"gt\"" },
181 peg$c137 = "ge",
182 peg$c138 = { type: "literal", value: "ge", description: "\"ge\"" },
183 peg$c139 = "nan:",
184 peg$c140 = { type: "literal", value: "nan:", description: "\"nan:\"" },
185 peg$c141 = "+nan:",
186 peg$c142 = { type: "literal", value: "+nan:", description: "\"+nan:\"" },
187 peg$c143 = "-nan:",
188 peg$c144 = { type: "literal", value: "-nan:", description: "\"-nan:\"" },
189 peg$c145 = /^[0-9A-Fa-f.\-+ep]/,
190 peg$c146 = { type: "class", value: "[0-9A-Fa-f\\.\\-\\+ep]", description: "[0-9A-Fa-f\\.\\-\\+ep]" },
191 peg$c147 = function(pre, sign, hex, digits) {
192 return pre[0] + (sign || '') + hex + digits.join('')
193 },
194 peg$c148 = "nan",
195 peg$c149 = { type: "literal", value: "nan", description: "\"nan\"" },
196 peg$c150 = "+nan",
197 peg$c151 = { type: "literal", value: "+nan", description: "\"+nan\"" },
198 peg$c152 = "-nan",
199 peg$c153 = { type: "literal", value: "-nan", description: "\"-nan\"" },
200 peg$c154 = "infinity",
201 peg$c155 = { type: "literal", value: "infinity", description: "\"infinity\"" },
202 peg$c156 = "+infinity",
203 peg$c157 = { type: "literal", value: "+infinity", description: "\"+infinity\"" },
204 peg$c158 = "-infinity",
205 peg$c159 = { type: "literal", value: "-infinity", description: "\"-infinity\"" },
206 peg$c160 = "+",
207 peg$c161 = { type: "literal", value: "+", description: "\"+\"" },
208 peg$c162 = /^[0-9A-Fa-f.\-+p]/,
209 peg$c163 = { type: "class", value: "[0-9A-Fa-f\\.\\-\\+p]", description: "[0-9A-Fa-f\\.\\-\\+p]" },
210 peg$c164 = function(sign, hex, digits) {
211 return (sign || '') + hex + digits.join('');
212 },
213 peg$c165 = /^[0-9.\-+e]/,
214 peg$c166 = { type: "class", value: "[0-9\\.\\-\\+e]", description: "[0-9\\.\\-\\+e]" },
215 peg$c167 = function(sign, digits) {
216 return (sign || '') + digits.join('');
217 },
218 peg$c168 = "s",
219 peg$c169 = { type: "literal", value: "s", description: "\"s\"" },
220 peg$c170 = "u",
221 peg$c171 = { type: "literal", value: "u", description: "\"u\"" },
222 peg$c172 = function(digit) { return digit.join(''); },
223 peg$c173 = function(int) {
224 return {
225 kind: 'literal',
226 value: Number(int),
227 raw: int
228 };
229 },
230 peg$c174 = "$",
231 peg$c175 = { type: "literal", value: "$", description: "\"$\"" },
232 peg$c176 = function(id) {
233 return {
234 kind: 'identifier',
235 name: id
236 };
237 },
238 peg$c177 = "(",
239 peg$c178 = { type: "literal", value: "(", description: "\"(\"" },
240 peg$c179 = "case",
241 peg$c180 = { type: "literal", value: "case", description: "\"case\"" },
242 peg$c181 = "fallthrough",
243 peg$c182 = { type: "literal", value: "fallthrough", description: "\"fallthrough\"" },
244 peg$c183 = ")",
245 peg$c184 = { type: "literal", value: ")", description: "\")\"" },
246 peg$c185 = function(kind, test, body, fallthrough) {
247 return {
248 kind: kind,
249 test: test,
250 body: body.map(function (e) { return e[1]; }),
251 fallthrough: fallthrough ? true : false
252 };
253 },
254 peg$c186 = function(kind, test) {
255 return {
256 kind: kind,
257 test: test ? value[1] : null
258 };
259 },
260 peg$c187 = ".",
261 peg$c188 = { type: "literal", value: ".", description: "\".\"" },
262 peg$c189 = "const",
263 peg$c190 = { type: "literal", value: "const", description: "\"const\"" },
264 peg$c191 = function(type, kind, init) {
265 return {
266 kind: kind,
267 type: type,
268 init: init
269 };
270 },
271 peg$c192 = "block",
272 peg$c193 = { type: "literal", value: "block", description: "\"block\"" },
273 peg$c194 = function(kind, id, body) {
274 return {
275 kind: kind,
276 id: id ? id[1] : id,
277 body: body.map(function (e) { return e[1]; })
278 };
279 },
280 peg$c195 = "if",
281 peg$c196 = { type: "literal", value: "if", description: "\"if\"" },
282 peg$c197 = function(kind, test, thene, elsee) {
283 return {
284 kind: kind,
285 test: test,
286 then: thene,
287 else: elsee ? elsee[1] : null
288 };
289 },
290 peg$c198 = "then",
291 peg$c199 = { type: "literal", value: "then", description: "\"then\"" },
292 peg$c200 = "else",
293 peg$c201 = { type: "literal", value: "else", description: "\"else\"" },
294 peg$c202 = "loop",
295 peg$c203 = { type: "literal", value: "loop", description: "\"loop\"" },
296 peg$c204 = function(kind, id, extra, body) {
297 return {
298 kind: kind,
299 id: id,
300 extra: extra ? extra[1] : extra,
301 body: body.map(function (e) { return e[1]; })
302 };
303 },
304 peg$c205 = function(kind, body) {
305 return {
306 kind: kind,
307 body: body.map(function (e) { return e[1]; })
308 };
309 },
310 peg$c206 = "label",
311 peg$c207 = { type: "literal", value: "label", description: "\"label\"" },
312 peg$c208 = function(kind, id, body) {
313 return {
314 kind: kind,
315 id: id ? id[1] : id,
316 body: body
317 };
318 },
319 peg$c209 = "br",
320 peg$c210 = { type: "literal", value: "br", description: "\"br\"" },
321 peg$c211 = function(kind, id, expr) {
322 return {
323 kind: kind,
324 id: id,
325 expr: expr ? expr[1] : expr
326 };
327 },
328 peg$c212 = "br_if",
329 peg$c213 = { type: "literal", value: "br_if", description: "\"br_if\"" },
330 peg$c214 = function(kind, id, test, expr) {
331 return {
332 kind: kind,
333 id: id,
334 test: test,
335 expr: expr ? expr[1] : expr
336 };
337 },
338 peg$c215 = "has_feature",
339 peg$c216 = { type: "literal", value: "has_feature", description: "\"has_feature\"" },
340 peg$c217 = function(kind, name) {
341 return {
342 kind: kind,
343 name: literal
344 };
345 },
346 peg$c218 = "switch",
347 peg$c219 = { type: "literal", value: "switch", description: "\"switch\"" },
348 peg$c220 = function(type, kind, before, body, after) {
349 return {
350 kind: kind,
351 type: type,
352 before: before,
353 body: body.map(function (e) { return e[1]; }),
354 after: after
355 };
356 },
357 peg$c221 = "br_table",
358 peg$c222 = { type: "literal", value: "br_table", description: "\"br_table\"" },
359 peg$c223 = function(kind, body, expr) {
360 return {
361 kind: kind,
362 exprs: expr.map(function (e) { return e[1]; }),
363 body: body.map(function (e) { return e[1]; })
364 };
365 },
366 peg$c224 = function(type, kind, id, before, body, after) {
367 return {
368 kind: kind,
369 id: id,
370 type: type,
371 before: before,
372 body: body.map(function (e) { return e[1]; }),
373 after: after
374 };
375 },
376 peg$c225 = "call_import",
377 peg$c226 = { type: "literal", value: "call_import", description: "\"call_import\"" },
378 peg$c227 = "call",
379 peg$c228 = { type: "literal", value: "call", description: "\"call\"" },
380 peg$c229 = function(kind, id, expr) {
381 return {
382 kind: kind,
383 id: id,
384 exprs: expr.map(function (e) { return e[1]; })
385 };
386 },
387 peg$c230 = "call_indirect",
388 peg$c231 = { type: "literal", value: "call_indirect", description: "\"call_indirect\"" },
389 peg$c232 = function(kind, id, expr) {
390 return {
391 kind: kind,
392 id: id,
393 exprs: expr.map(function (e) { return e[1]; })
394 }
395 },
396 peg$c233 = "return",
397 peg$c234 = { type: "literal", value: "return", description: "\"return\"" },
398 peg$c235 = function(kind, expr) {
399 return {
400 kind: kind,
401 expr: expr ? expr[1] : expr
402 }
403 },
404 peg$c236 = "get_local",
405 peg$c237 = { type: "literal", value: "get_local", description: "\"get_local\"" },
406 peg$c238 = function(kind, id) {
407 return {
408 kind: kind,
409 id: id
410 };
411 },
412 peg$c239 = "set_local",
413 peg$c240 = { type: "literal", value: "set_local", description: "\"set_local\"" },
414 peg$c241 = function(kind, id, expr) {
415 return {
416 kind: kind,
417 id: id,
418 init: expr
419 };
420 },
421 peg$c242 = "load",
422 peg$c243 = { type: "literal", value: "load", description: "\"load\"" },
423 peg$c244 = "8",
424 peg$c245 = { type: "literal", value: "8", description: "\"8\"" },
425 peg$c246 = "16",
426 peg$c247 = { type: "literal", value: "16", description: "\"16\"" },
427 peg$c248 = "32",
428 peg$c249 = { type: "literal", value: "32", description: "\"32\"" },
429 peg$c250 = "_",
430 peg$c251 = { type: "literal", value: "_", description: "\"_\"" },
431 peg$c252 = "offset=",
432 peg$c253 = { type: "literal", value: "offset=", description: "\"offset=\"" },
433 peg$c254 = "align=",
434 peg$c255 = { type: "literal", value: "align=", description: "\"align=\"" },
435 peg$c256 = function(type, kind, sufix, offset, align, expr) {
436 return {
437 kind: kind,
438 type: type,
439 size: sufix ? parseInt(sufix[0], 10) : null,
440 sign: (sufix && sufix[1]) ? (sufix[1][1] === 's') : null,
441 offset: offset ? parseInt(offset[2], 10) : 0,
442 align: align ? parseInt(align[2], 10) : 0,
443 expr: expr
444 };
445 },
446 peg$c257 = "store",
447 peg$c258 = { type: "literal", value: "store", description: "\"store\"" },
448 peg$c259 = function(type, kind, sufix, offset, align, addr, data) {
449 return {
450 kind: kind,
451 type: type,
452 size: sufix ? parseInt(sufix[0], 10) : null,
453 offset: offset ? parseInt(offset[2], 10) : 0,
454 align: align ? parseInt(align[2], 10) : 0,
455 addr: addr,
456 data: data
457 };
458 },
459 peg$c260 = "select",
460 peg$c261 = { type: "literal", value: "select", description: "\"select\"" },
461 peg$c262 = function(kind, thene, elsee, test) {
462 return {
463 kind: kind,
464 then: thene,
465 else: elsee,
466 test: test
467 };
468 },
469 peg$c263 = function(type, operator, left, right) {
470 return {
471 kind: 'binop',
472 type: type,
473 operator: operator,
474 left: left,
475 right: right
476 };
477 },
478 peg$c264 = function(type, operator, left, right) {
479 return {
480 kind: 'relop',
481 type: type,
482 operator: operator,
483 left: left,
484 right: right
485 };
486 },
487 peg$c265 = "/",
488 peg$c266 = { type: "literal", value: "/", description: "\"/\"" },
489 peg$c267 = function(type, operator, type1, expr) {
490 return {
491 kind: 'cvtop',
492 type: type,
493 type1: type1,
494 operator: operator,
495 expr: expr
496 };
497 },
498 peg$c268 = function(type, operator, expr) {
499 return {
500 kind: 'unop',
501 type: type,
502 operator: operator,
503 expr: expr
504 };
505 },
506 peg$c269 = "nop",
507 peg$c270 = { type: "literal", value: "nop", description: "\"nop\"" },
508 peg$c271 = "page_size",
509 peg$c272 = { type: "literal", value: "page_size", description: "\"page_size\"" },
510 peg$c273 = "unreachable",
511 peg$c274 = { type: "literal", value: "unreachable", description: "\"unreachable\"" },
512 peg$c275 = "current_memory",
513 peg$c276 = { type: "literal", value: "current_memory", description: "\"current_memory\"" },
514 peg$c277 = function(kind) {
515 return {
516 kind: kind
517 };
518 },
519 peg$c278 = "resize_memory",
520 peg$c279 = { type: "literal", value: "resize_memory", description: "\"resize_memory\"" },
521 peg$c280 = "grow_memory",
522 peg$c281 = { type: "literal", value: "grow_memory", description: "\"grow_memory\"" },
523 peg$c282 = function(kind, expr) {
524 return {
525 kind: kind,
526 expr: expr
527 };
528 },
529 peg$c283 = function(body) {
530 return body;
531 },
532 peg$c284 = /^["]/,
533 peg$c285 = { type: "class", value: "[\"]", description: "[\"]" },
534 peg$c286 = function(value) {
535 return {
536 kind: 'literal',
537 value: value.map(function (e) { return e[1]; }).join('').replace(/\\/g, '\\\\')
538 };
539 },
540 peg$c287 = "param",
541 peg$c288 = { type: "literal", value: "param", description: "\"param\"" },
542 peg$c289 = function(kind, items) {
543 return {
544 kind: kind,
545 items: items.map(function (e) { return { kind: 'item', type: e[1] }; })
546 };
547 },
548 peg$c290 = function(kind, name, type) {
549 return {
550 kind: kind,
551 items: [{ kind: 'item', name: name, type: type }]
552 };
553 },
554 peg$c291 = "local",
555 peg$c292 = { type: "literal", value: "local", description: "\"local\"" },
556 peg$c293 = "result",
557 peg$c294 = { type: "literal", value: "result", description: "\"result\"" },
558 peg$c295 = function(kind, type) {
559 return {
560 kind: kind,
561 type: type
562 };
563 },
564 peg$c296 = "segment",
565 peg$c297 = { type: "literal", value: "segment", description: "\"segment\"" },
566 peg$c298 = function(kind, int, name) {
567 return {
568 kind: kind,
569 int: int,
570 name: name
571 }
572 },
573 peg$c299 = "type",
574 peg$c300 = { type: "literal", value: "type", description: "\"type\"" },
575 peg$c301 = function(kind, id) {
576 return {
577 kind: kind,
578 id: id
579 };
580 },
581 peg$c302 = "func",
582 peg$c303 = { type: "literal", value: "func", description: "\"func\"" },
583 peg$c304 = function(kind, id, type, param, result, local, body) {
584 return {
585 kind: kind,
586 id: id ? id[1] : id,
587 type: type ? type[1] : type,
588 params: param.map(function (e) { return e[1]; }),
589 result: result ? result[1] : result,
590 local: local.map(function (e) { return e[1]; }),
591 body: body.map(function (e) { return e[1]; })
592 };
593 },
594 peg$c305 = "start",
595 peg$c306 = { type: "literal", value: "start", description: "\"start\"" },
596 peg$c307 = function(kind, items) {
597 return {
598 kind: kind,
599 items: items.map(function (e) { return { kind: 'item', type: e[1] }; })
600 }
601 },
602 peg$c308 = function(kind, type) {
603 return {
604 kind: kind,
605 type: type
606 }
607 },
608 peg$c309 = function(kind, param, result) {
609 return {
610 kind: kind,
611 params: param.map(function (e) { return e[1]; }),
612 result: result ? result[1] : result,
613 local: [],
614 body: []
615 };
616 },
617 peg$c310 = function(kind, id) {
618 return {
619 kind: kind,
620 id: id ? id[1] : id
621 };
622 },
623 peg$c311 = "import",
624 peg$c312 = { type: "literal", value: "import", description: "\"import\"" },
625 peg$c313 = function(kind, id, modName, funcName, type, params, result) {
626 return {
627 kind: kind,
628 id: id ? id[1] : id,
629 modName: modName,
630 funcName: funcName,
631 type: type ? type[1] : type,
632 params: params.map(function (e) { return e[1]; }),
633 result: result ? result[1] : result
634 };
635 },
636 peg$c314 = "export",
637 peg$c315 = { type: "literal", value: "export", description: "\"export\"" },
638 peg$c316 = "\\",
639 peg$c317 = { type: "literal", value: "\\", description: "\"\\\\\"" },
640 peg$c318 = "\"",
641 peg$c319 = { type: "literal", value: "\"", description: "\"\\\"\"" },
642 peg$c320 = "memory",
643 peg$c321 = { type: "literal", value: "memory", description: "\"memory\"" },
644 peg$c322 = function(kind, name, id) {
645 return {
646 kind: kind,
647 name: {
648 kind: 'literal',
649 value: name.map(function (e) { return e[1]; }).join('')
650 },
651 id: (id === 'memory') ? {
652 kind: 'literal',
653 value: id
654 } : id
655 };
656 },
657 peg$c323 = "table",
658 peg$c324 = { type: "literal", value: "table", description: "\"table\"" },
659 peg$c325 = function(kind, items) {
660 return {
661 kind: kind,
662 items: items.map(function (e) { return e[1]; })
663 };
664 },
665 peg$c326 = function(kind, int, int1, segment) {
666 return {
667 kind: kind,
668 int: int,
669 int1: int1 ? int1[1] : int1,
670 segment: segment.map(function (e) { return e[1]; })
671 };
672 },
673 peg$c327 = "invoke",
674 peg$c328 = { type: "literal", value: "invoke", description: "\"invoke\"" },
675 peg$c329 = "\\\"",
676 peg$c330 = { type: "literal", value: "\\\"", description: "\"\\\\\\\"\"" },
677 peg$c331 = function(kind, name, body) {
678 return {
679 kind: kind,
680 name: name.map(function (e) {
681 return e[1];
682 }).join(''),
683 body: body.map(function (e) { return e[1]; })
684 };
685 },
686 peg$c332 = "module",
687 peg$c333 = { type: "literal", value: "module", description: "\"module\"" },
688 peg$c334 = function(kind, body) {
689 var result = [];
690 return {
691 kind: kind,
692 body: body.map(function (e) { return e[1]; })
693 };
694 },
695 peg$c335 = "assert_return",
696 peg$c336 = { type: "literal", value: "assert_return", description: "\"assert_return\"" },
697 peg$c337 = function(kind, invoke, expr) {
698 return {
699 kind: kind,
700 invoke: invoke,
701 expr: expr
702 };
703 },
704 peg$c338 = "assert_return_nan",
705 peg$c339 = { type: "literal", value: "assert_return_nan", description: "\"assert_return_nan\"" },
706 peg$c340 = function(kind, invoke) {
707 return {
708 kind: kind,
709 invoke: invoke
710 };
711 },
712 peg$c341 = "assert_trap",
713 peg$c342 = { type: "literal", value: "assert_trap", description: "\"assert_trap\"" },
714 peg$c343 = function(kind, invoke, failure) {
715 return {
716 kind: kind,
717 invoke: invoke,
718 failure: failure
719 };
720 },
721 peg$c344 = "assert_invalid",
722 peg$c345 = { type: "literal", value: "assert_invalid", description: "\"assert_invalid\"" },
723 peg$c346 = function(kind, module, failure) {
724 return {
725 kind: kind,
726 module: module,
727 failure: failure
728 };
729 },
730 peg$c347 = function(node) { return node; },
731
732 peg$currPos = 0,
733 peg$savedPos = 0,
734 peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }],
735 peg$maxFailPos = 0,
736 peg$maxFailExpected = [],
737 peg$silentFails = 0,
738
739 peg$result;
740
741 if ("startRule" in options) {
742 if (!(options.startRule in peg$startRuleFunctions)) {
743 throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
744 }
745
746 peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
747 }
748
749 function text() {
750 return input.substring(peg$savedPos, peg$currPos);
751 }
752
753 function location() {
754 return peg$computeLocation(peg$savedPos, peg$currPos);
755 }
756
757 function expected(description) {
758 throw peg$buildException(
759 null,
760 [{ type: "other", description: description }],
761 input.substring(peg$savedPos, peg$currPos),
762 peg$computeLocation(peg$savedPos, peg$currPos)
763 );
764 }
765
766 function error(message) {
767 throw peg$buildException(
768 message,
769 null,
770 input.substring(peg$savedPos, peg$currPos),
771 peg$computeLocation(peg$savedPos, peg$currPos)
772 );
773 }
774
775 function peg$computePosDetails(pos) {
776 var details = peg$posDetailsCache[pos],
777 p, ch;
778
779 if (details) {
780 return details;
781 } else {
782 p = pos - 1;
783 while (!peg$posDetailsCache[p]) {
784 p--;
785 }
786
787 details = peg$posDetailsCache[p];
788 details = {
789 line: details.line,
790 column: details.column,
791 seenCR: details.seenCR
792 };
793
794 while (p < pos) {
795 ch = input.charAt(p);
796 if (ch === "\n") {
797 if (!details.seenCR) { details.line++; }
798 details.column = 1;
799 details.seenCR = false;
800 } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") {
801 details.line++;
802 details.column = 1;
803 details.seenCR = true;
804 } else {
805 details.column++;
806 details.seenCR = false;
807 }
808
809 p++;
810 }
811
812 peg$posDetailsCache[pos] = details;
813 return details;
814 }
815 }
816
817 function peg$computeLocation(startPos, endPos) {
818 var startPosDetails = peg$computePosDetails(startPos),
819 endPosDetails = peg$computePosDetails(endPos);
820
821 return {
822 start: {
823 offset: startPos,
824 line: startPosDetails.line,
825 column: startPosDetails.column
826 },
827 end: {
828 offset: endPos,
829 line: endPosDetails.line,
830 column: endPosDetails.column
831 }
832 };
833 }
834
835 function peg$fail(expected) {
836 if (peg$currPos < peg$maxFailPos) { return; }
837
838 if (peg$currPos > peg$maxFailPos) {
839 peg$maxFailPos = peg$currPos;
840 peg$maxFailExpected = [];
841 }
842
843 peg$maxFailExpected.push(expected);
844 }
845
846 function peg$buildException(message, expected, found, location) {
847 function cleanupExpected(expected) {
848 var i = 1;
849
850 expected.sort(function(a, b) {
851 if (a.description < b.description) {
852 return -1;
853 } else if (a.description > b.description) {
854 return 1;
855 } else {
856 return 0;
857 }
858 });
859
860 while (i < expected.length) {
861 if (expected[i - 1] === expected[i]) {
862 expected.splice(i, 1);
863 } else {
864 i++;
865 }
866 }
867 }
868
869 function buildMessage(expected, found) {
870 function stringEscape(s) {
871 function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }
872
873 return s
874 .replace(/\\/g, '\\\\')
875 .replace(/"/g, '\\"')
876 .replace(/\x08/g, '\\b')
877 .replace(/\t/g, '\\t')
878 .replace(/\n/g, '\\n')
879 .replace(/\f/g, '\\f')
880 .replace(/\r/g, '\\r')
881 .replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return '\\x0' + hex(ch); })
882 .replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return '\\x' + hex(ch); })
883 .replace(/[\u0100-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); })
884 .replace(/[\u1000-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); });
885 }
886
887 var expectedDescs = new Array(expected.length),
888 expectedDesc, foundDesc, i;
889
890 for (i = 0; i < expected.length; i++) {
891 expectedDescs[i] = expected[i].description;
892 }
893
894 expectedDesc = expected.length > 1
895 ? expectedDescs.slice(0, -1).join(", ")
896 + " or "
897 + expectedDescs[expected.length - 1]
898 : expectedDescs[0];
899
900 foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input";
901
902 return "Expected " + expectedDesc + " but " + foundDesc + " found.";
903 }
904
905 if (expected !== null) {
906 cleanupExpected(expected);
907 }
908
909 return new peg$SyntaxError(
910 message !== null ? message : buildMessage(expected, found),
911 expected,
912 found,
913 location
914 );
915 }
916
917 function peg$parsestart() {
918 var s0, s1, s2, s3, s4;
919
920 s0 = peg$currPos;
921 s1 = [];
922 s2 = peg$currPos;
923 s3 = peg$parse__();
924 if (s3 !== peg$FAILED) {
925 s4 = peg$parsecmd();
926 if (s4 !== peg$FAILED) {
927 s3 = [s3, s4];
928 s2 = s3;
929 } else {
930 peg$currPos = s2;
931 s2 = peg$FAILED;
932 }
933 } else {
934 peg$currPos = s2;
935 s2 = peg$FAILED;
936 }
937 while (s2 !== peg$FAILED) {
938 s1.push(s2);
939 s2 = peg$currPos;
940 s3 = peg$parse__();
941 if (s3 !== peg$FAILED) {
942 s4 = peg$parsecmd();
943 if (s4 !== peg$FAILED) {
944 s3 = [s3, s4];
945 s2 = s3;
946 } else {
947 peg$currPos = s2;
948 s2 = peg$FAILED;
949 }
950 } else {
951 peg$currPos = s2;
952 s2 = peg$FAILED;
953 }
954 }
955 if (s1 !== peg$FAILED) {
956 s2 = peg$parse__();
957 if (s2 !== peg$FAILED) {
958 peg$savedPos = s0;
959 s1 = peg$c0(s1);
960 s0 = s1;
961 } else {
962 peg$currPos = s0;
963 s0 = peg$FAILED;
964 }
965 } else {
966 peg$currPos = s0;
967 s0 = peg$FAILED;
968 }
969
970 return s0;
971 }
972
973 function peg$parsewhite_space() {
974 var s0, s1;
975
976 peg$silentFails++;
977 if (peg$c2.test(input.charAt(peg$currPos))) {
978 s0 = input.charAt(peg$currPos);
979 peg$currPos++;
980 } else {
981 s0 = peg$FAILED;
982 if (peg$silentFails === 0) { peg$fail(peg$c3); }
983 }
984 peg$silentFails--;
985 if (s0 === peg$FAILED) {
986 s1 = peg$FAILED;
987 if (peg$silentFails === 0) { peg$fail(peg$c1); }
988 }
989
990 return s0;
991 }
992
993 function peg$parseLineTerminatorSequence() {
994 var s0, s1;
995
996 peg$silentFails++;
997 if (input.charCodeAt(peg$currPos) === 10) {
998 s0 = peg$c5;
999 peg$currPos++;
1000 } else {
1001 s0 = peg$FAILED;
1002 if (peg$silentFails === 0) { peg$fail(peg$c6); }
1003 }
1004 if (s0 === peg$FAILED) {
1005 if (input.substr(peg$currPos, 2) === peg$c7) {
1006 s0 = peg$c7;
1007 peg$currPos += 2;
1008 } else {
1009 s0 = peg$FAILED;
1010 if (peg$silentFails === 0) { peg$fail(peg$c8); }
1011 }
1012 if (s0 === peg$FAILED) {
1013 if (input.charCodeAt(peg$currPos) === 13) {
1014 s0 = peg$c9;
1015 peg$currPos++;
1016 } else {
1017 s0 = peg$FAILED;
1018 if (peg$silentFails === 0) { peg$fail(peg$c10); }
1019 }
1020 if (s0 === peg$FAILED) {
1021 if (input.charCodeAt(peg$currPos) === 8232) {
1022 s0 = peg$c11;
1023 peg$currPos++;
1024 } else {
1025 s0 = peg$FAILED;
1026 if (peg$silentFails === 0) { peg$fail(peg$c12); }
1027 }
1028 if (s0 === peg$FAILED) {
1029 if (input.charCodeAt(peg$currPos) === 8233) {
1030 s0 = peg$c13;
1031 peg$currPos++;
1032 } else {
1033 s0 = peg$FAILED;
1034 if (peg$silentFails === 0) { peg$fail(peg$c14); }
1035 }
1036 }
1037 }
1038 }
1039 }
1040 peg$silentFails--;
1041 if (s0 === peg$FAILED) {
1042 s1 = peg$FAILED;
1043 if (peg$silentFails === 0) { peg$fail(peg$c4); }
1044 }
1045
1046 return s0;
1047 }
1048
1049 function peg$parseLineTerminator() {
1050 var s0;
1051
1052 if (peg$c15.test(input.charAt(peg$currPos))) {
1053 s0 = input.charAt(peg$currPos);
1054 peg$currPos++;
1055 } else {
1056 s0 = peg$FAILED;
1057 if (peg$silentFails === 0) { peg$fail(peg$c16); }
1058 }
1059
1060 return s0;
1061 }
1062
1063 function peg$parsemultiLineComment() {
1064 var s0, s1, s2, s3, s4, s5;
1065
1066 s0 = peg$currPos;
1067 if (input.substr(peg$currPos, 2) === peg$c17) {
1068 s1 = peg$c17;
1069 peg$currPos += 2;
1070 } else {
1071 s1 = peg$FAILED;
1072 if (peg$silentFails === 0) { peg$fail(peg$c18); }
1073 }
1074 if (s1 !== peg$FAILED) {
1075 s2 = [];
1076 s3 = peg$parsemultiLineComment();
1077 if (s3 === peg$FAILED) {
1078 s3 = peg$currPos;
1079 s4 = peg$currPos;
1080 peg$silentFails++;
1081 if (input.substr(peg$currPos, 2) === peg$c19) {
1082 s5 = peg$c19;
1083 peg$currPos += 2;
1084 } else {
1085 s5 = peg$FAILED;
1086 if (peg$silentFails === 0) { peg$fail(peg$c20); }
1087 }
1088 peg$silentFails--;
1089 if (s5 === peg$FAILED) {
1090 s4 = void 0;
1091 } else {
1092 peg$currPos = s4;
1093 s4 = peg$FAILED;
1094 }
1095 if (s4 !== peg$FAILED) {
1096 if (input.length > peg$currPos) {
1097 s5 = input.charAt(peg$currPos);
1098 peg$currPos++;
1099 } else {
1100 s5 = peg$FAILED;
1101 if (peg$silentFails === 0) { peg$fail(peg$c21); }
1102 }
1103 if (s5 !== peg$FAILED) {
1104 s4 = [s4, s5];
1105 s3 = s4;
1106 } else {
1107 peg$currPos = s3;
1108 s3 = peg$FAILED;
1109 }
1110 } else {
1111 peg$currPos = s3;
1112 s3 = peg$FAILED;
1113 }
1114 }
1115 while (s3 !== peg$FAILED) {
1116 s2.push(s3);
1117 s3 = peg$parsemultiLineComment();
1118 if (s3 === peg$FAILED) {
1119 s3 = peg$currPos;
1120 s4 = peg$currPos;
1121 peg$silentFails++;
1122 if (input.substr(peg$currPos, 2) === peg$c19) {
1123 s5 = peg$c19;
1124 peg$currPos += 2;
1125 } else {
1126 s5 = peg$FAILED;
1127 if (peg$silentFails === 0) { peg$fail(peg$c20); }
1128 }
1129 peg$silentFails--;
1130 if (s5 === peg$FAILED) {
1131 s4 = void 0;
1132 } else {
1133 peg$currPos = s4;
1134 s4 = peg$FAILED;
1135 }
1136 if (s4 !== peg$FAILED) {
1137 if (input.length > peg$currPos) {
1138 s5 = input.charAt(peg$currPos);
1139 peg$currPos++;
1140 } else {
1141 s5 = peg$FAILED;
1142 if (peg$silentFails === 0) { peg$fail(peg$c21); }
1143 }
1144 if (s5 !== peg$FAILED) {
1145 s4 = [s4, s5];
1146 s3 = s4;
1147 } else {
1148 peg$currPos = s3;
1149 s3 = peg$FAILED;
1150 }
1151 } else {
1152 peg$currPos = s3;
1153 s3 = peg$FAILED;
1154 }
1155 }
1156 }
1157 if (s2 !== peg$FAILED) {
1158 if (input.substr(peg$currPos, 2) === peg$c19) {
1159 s3 = peg$c19;
1160 peg$currPos += 2;
1161 } else {
1162 s3 = peg$FAILED;
1163 if (peg$silentFails === 0) { peg$fail(peg$c20); }
1164 }
1165 if (s3 !== peg$FAILED) {
1166 peg$savedPos = s0;
1167 s1 = peg$c22();
1168 s0 = s1;
1169 } else {
1170 peg$currPos = s0;
1171 s0 = peg$FAILED;
1172 }
1173 } else {
1174 peg$currPos = s0;
1175 s0 = peg$FAILED;
1176 }
1177 } else {
1178 peg$currPos = s0;
1179 s0 = peg$FAILED;
1180 }
1181
1182 return s0;
1183 }
1184
1185 function peg$parsecomment() {
1186 var s0, s1, s2, s3, s4, s5;
1187
1188 peg$silentFails++;
1189 s0 = peg$currPos;
1190 if (input.substr(peg$currPos, 2) === peg$c24) {
1191 s1 = peg$c24;
1192 peg$currPos += 2;
1193 } else {
1194 s1 = peg$FAILED;
1195 if (peg$silentFails === 0) { peg$fail(peg$c25); }
1196 }
1197 if (s1 !== peg$FAILED) {
1198 s2 = [];
1199 s3 = peg$currPos;
1200 s4 = peg$currPos;
1201 peg$silentFails++;
1202 s5 = peg$parseLineTerminator();
1203 peg$silentFails--;
1204 if (s5 === peg$FAILED) {
1205 s4 = void 0;
1206 } else {
1207 peg$currPos = s4;
1208 s4 = peg$FAILED;
1209 }
1210 if (s4 !== peg$FAILED) {
1211 if (input.length > peg$currPos) {
1212 s5 = input.charAt(peg$currPos);
1213 peg$currPos++;
1214 } else {
1215 s5 = peg$FAILED;
1216 if (peg$silentFails === 0) { peg$fail(peg$c21); }
1217 }
1218 if (s5 !== peg$FAILED) {
1219 s4 = [s4, s5];
1220 s3 = s4;
1221 } else {
1222 peg$currPos = s3;
1223 s3 = peg$FAILED;
1224 }
1225 } else {
1226 peg$currPos = s3;
1227 s3 = peg$FAILED;
1228 }
1229 while (s3 !== peg$FAILED) {
1230 s2.push(s3);
1231 s3 = peg$currPos;
1232 s4 = peg$currPos;
1233 peg$silentFails++;
1234 s5 = peg$parseLineTerminator();
1235 peg$silentFails--;
1236 if (s5 === peg$FAILED) {
1237 s4 = void 0;
1238 } else {
1239 peg$currPos = s4;
1240 s4 = peg$FAILED;
1241 }
1242 if (s4 !== peg$FAILED) {
1243 if (input.length > peg$currPos) {
1244 s5 = input.charAt(peg$currPos);
1245 peg$currPos++;
1246 } else {
1247 s5 = peg$FAILED;
1248 if (peg$silentFails === 0) { peg$fail(peg$c21); }
1249 }
1250 if (s5 !== peg$FAILED) {
1251 s4 = [s4, s5];
1252 s3 = s4;
1253 } else {
1254 peg$currPos = s3;
1255 s3 = peg$FAILED;
1256 }
1257 } else {
1258 peg$currPos = s3;
1259 s3 = peg$FAILED;
1260 }
1261 }
1262 if (s2 !== peg$FAILED) {
1263 peg$savedPos = s0;
1264 s1 = peg$c22();
1265 s0 = s1;
1266 } else {
1267 peg$currPos = s0;
1268 s0 = peg$FAILED;
1269 }
1270 } else {
1271 peg$currPos = s0;
1272 s0 = peg$FAILED;
1273 }
1274 if (s0 === peg$FAILED) {
1275 s0 = peg$parsemultiLineComment();
1276 }
1277 peg$silentFails--;
1278 if (s0 === peg$FAILED) {
1279 s1 = peg$FAILED;
1280 if (peg$silentFails === 0) { peg$fail(peg$c23); }
1281 }
1282
1283 return s0;
1284 }
1285
1286 function peg$parse__() {
1287 var s0, s1;
1288
1289 s0 = [];
1290 s1 = peg$parsewhite_space();
1291 if (s1 === peg$FAILED) {
1292 s1 = peg$parseLineTerminatorSequence();
1293 if (s1 === peg$FAILED) {
1294 s1 = peg$parsecomment();
1295 }
1296 }
1297 while (s1 !== peg$FAILED) {
1298 s0.push(s1);
1299 s1 = peg$parsewhite_space();
1300 if (s1 === peg$FAILED) {
1301 s1 = peg$parseLineTerminatorSequence();
1302 if (s1 === peg$FAILED) {
1303 s1 = peg$parsecomment();
1304 }
1305 }
1306 }
1307
1308 return s0;
1309 }
1310
1311 function peg$parsename() {
1312 var s0, s1, s2;
1313
1314 s0 = peg$currPos;
1315 s1 = [];
1316 if (peg$c26.test(input.charAt(peg$currPos))) {
1317 s2 = input.charAt(peg$currPos);
1318 peg$currPos++;
1319 } else {
1320 s2 = peg$FAILED;
1321 if (peg$silentFails === 0) { peg$fail(peg$c27); }
1322 }
1323 if (s2 !== peg$FAILED) {
1324 while (s2 !== peg$FAILED) {
1325 s1.push(s2);
1326 if (peg$c26.test(input.charAt(peg$currPos))) {
1327 s2 = input.charAt(peg$currPos);
1328 peg$currPos++;
1329 } else {
1330 s2 = peg$FAILED;
1331 if (peg$silentFails === 0) { peg$fail(peg$c27); }
1332 }
1333 }
1334 } else {
1335 s1 = peg$FAILED;
1336 }
1337 if (s1 !== peg$FAILED) {
1338 peg$savedPos = s0;
1339 s1 = peg$c28(s1);
1340 }
1341 s0 = s1;
1342
1343 return s0;
1344 }
1345
1346 function peg$parselocal_type() {
1347 var s0;
1348
1349 if (input.substr(peg$currPos, 3) === peg$c29) {
1350 s0 = peg$c29;
1351 peg$currPos += 3;
1352 } else {
1353 s0 = peg$FAILED;
1354 if (peg$silentFails === 0) { peg$fail(peg$c30); }
1355 }
1356 if (s0 === peg$FAILED) {
1357 if (input.substr(peg$currPos, 3) === peg$c31) {
1358 s0 = peg$c31;
1359 peg$currPos += 3;
1360 } else {
1361 s0 = peg$FAILED;
1362 if (peg$silentFails === 0) { peg$fail(peg$c32); }
1363 }
1364 if (s0 === peg$FAILED) {
1365 if (input.substr(peg$currPos, 3) === peg$c33) {
1366 s0 = peg$c33;
1367 peg$currPos += 3;
1368 } else {
1369 s0 = peg$FAILED;
1370 if (peg$silentFails === 0) { peg$fail(peg$c34); }
1371 }
1372 if (s0 === peg$FAILED) {
1373 if (input.substr(peg$currPos, 3) === peg$c35) {
1374 s0 = peg$c35;
1375 peg$currPos += 3;
1376 } else {
1377 s0 = peg$FAILED;
1378 if (peg$silentFails === 0) { peg$fail(peg$c36); }
1379 }
1380 }
1381 }
1382 }
1383
1384 return s0;
1385 }
1386
1387 function peg$parseint() {
1388 var s0, s1, s2, s3, s4;
1389
1390 s0 = peg$currPos;
1391 s1 = peg$currPos;
1392 if (input.substr(peg$currPos, 2) === peg$c37) {
1393 s2 = peg$c37;
1394 peg$currPos += 2;
1395 } else {
1396 s2 = peg$FAILED;
1397 if (peg$silentFails === 0) { peg$fail(peg$c38); }
1398 }
1399 if (s2 !== peg$FAILED) {
1400 s3 = [];
1401 if (peg$c39.test(input.charAt(peg$currPos))) {
1402 s4 = input.charAt(peg$currPos);
1403 peg$currPos++;
1404 } else {
1405 s4 = peg$FAILED;
1406 if (peg$silentFails === 0) { peg$fail(peg$c40); }
1407 }
1408 if (s4 !== peg$FAILED) {
1409 while (s4 !== peg$FAILED) {
1410 s3.push(s4);
1411 if (peg$c39.test(input.charAt(peg$currPos))) {
1412 s4 = input.charAt(peg$currPos);
1413 peg$currPos++;
1414 } else {
1415 s4 = peg$FAILED;
1416 if (peg$silentFails === 0) { peg$fail(peg$c40); }
1417 }
1418 }
1419 } else {
1420 s3 = peg$FAILED;
1421 }
1422 if (s3 !== peg$FAILED) {
1423 s2 = [s2, s3];
1424 s1 = s2;
1425 } else {
1426 peg$currPos = s1;
1427 s1 = peg$FAILED;
1428 }
1429 } else {
1430 peg$currPos = s1;
1431 s1 = peg$FAILED;
1432 }
1433 if (s1 === peg$FAILED) {
1434 s1 = peg$currPos;
1435 if (input.charCodeAt(peg$currPos) === 45) {
1436 s2 = peg$c41;
1437 peg$currPos++;
1438 } else {
1439 s2 = peg$FAILED;
1440 if (peg$silentFails === 0) { peg$fail(peg$c42); }
1441 }
1442 if (s2 === peg$FAILED) {
1443 s2 = null;
1444 }
1445 if (s2 !== peg$FAILED) {
1446 s3 = [];
1447 if (peg$c43.test(input.charAt(peg$currPos))) {
1448 s4 = input.charAt(peg$currPos);
1449 peg$currPos++;
1450 } else {
1451 s4 = peg$FAILED;
1452 if (peg$silentFails === 0) { peg$fail(peg$c44); }
1453 }
1454 if (s4 !== peg$FAILED) {
1455 while (s4 !== peg$FAILED) {
1456 s3.push(s4);
1457 if (peg$c43.test(input.charAt(peg$currPos))) {
1458 s4 = input.charAt(peg$currPos);
1459 peg$currPos++;
1460 } else {
1461 s4 = peg$FAILED;
1462 if (peg$silentFails === 0) { peg$fail(peg$c44); }
1463 }
1464 }
1465 } else {
1466 s3 = peg$FAILED;
1467 }
1468 if (s3 !== peg$FAILED) {
1469 s2 = [s2, s3];
1470 s1 = s2;
1471 } else {
1472 peg$currPos = s1;
1473 s1 = peg$FAILED;
1474 }
1475 } else {
1476 peg$currPos = s1;
1477 s1 = peg$FAILED;
1478 }
1479 }
1480 if (s1 !== peg$FAILED) {
1481 peg$savedPos = s0;
1482 s1 = peg$c45(s1);
1483 }
1484 s0 = s1;
1485
1486 return s0;
1487 }
1488
1489 function peg$parsefloat() {
1490 var s0, s1, s2, s3;
1491
1492 s0 = peg$currPos;
1493 if (input.charCodeAt(peg$currPos) === 45) {
1494 s1 = peg$c41;
1495 peg$currPos++;
1496 } else {
1497 s1 = peg$FAILED;
1498 if (peg$silentFails === 0) { peg$fail(peg$c42); }
1499 }
1500 if (s1 === peg$FAILED) {
1501 s1 = null;
1502 }
1503 if (s1 !== peg$FAILED) {
1504 s2 = [];
1505 if (peg$c46.test(input.charAt(peg$currPos))) {
1506 s3 = input.charAt(peg$currPos);
1507 peg$currPos++;
1508 } else {
1509 s3 = peg$FAILED;
1510 if (peg$silentFails === 0) { peg$fail(peg$c47); }
1511 }
1512 if (s3 !== peg$FAILED) {
1513 while (s3 !== peg$FAILED) {
1514 s2.push(s3);
1515 if (peg$c46.test(input.charAt(peg$currPos))) {
1516 s3 = input.charAt(peg$currPos);
1517 peg$currPos++;
1518 } else {
1519 s3 = peg$FAILED;
1520 if (peg$silentFails === 0) { peg$fail(peg$c47); }
1521 }
1522 }
1523 } else {
1524 s2 = peg$FAILED;
1525 }
1526 if (s2 !== peg$FAILED) {
1527 s1 = [s1, s2];
1528 s0 = s1;
1529 } else {
1530 peg$currPos = s0;
1531 s0 = peg$FAILED;
1532 }
1533 } else {
1534 peg$currPos = s0;
1535 s0 = peg$FAILED;
1536 }
1537
1538 return s0;
1539 }
1540
1541 function peg$parsebinop() {
1542 var s0;
1543
1544 if (input.substr(peg$currPos, 3) === peg$c48) {
1545 s0 = peg$c48;
1546 peg$currPos += 3;
1547 } else {
1548 s0 = peg$FAILED;
1549 if (peg$silentFails === 0) { peg$fail(peg$c49); }
1550 }
1551 if (s0 === peg$FAILED) {
1552 if (input.substr(peg$currPos, 3) === peg$c50) {
1553 s0 = peg$c50;
1554 peg$currPos += 3;
1555 } else {
1556 s0 = peg$FAILED;
1557 if (peg$silentFails === 0) { peg$fail(peg$c51); }
1558 }
1559 if (s0 === peg$FAILED) {
1560 if (input.substr(peg$currPos, 3) === peg$c52) {
1561 s0 = peg$c52;
1562 peg$currPos += 3;
1563 } else {
1564 s0 = peg$FAILED;
1565 if (peg$silentFails === 0) { peg$fail(peg$c53); }
1566 }
1567 if (s0 === peg$FAILED) {
1568 if (input.substr(peg$currPos, 5) === peg$c54) {
1569 s0 = peg$c54;
1570 peg$currPos += 5;
1571 } else {
1572 s0 = peg$FAILED;
1573 if (peg$silentFails === 0) { peg$fail(peg$c55); }
1574 }
1575 if (s0 === peg$FAILED) {
1576 if (input.substr(peg$currPos, 5) === peg$c56) {
1577 s0 = peg$c56;
1578 peg$currPos += 5;
1579 } else {
1580 s0 = peg$FAILED;
1581 if (peg$silentFails === 0) { peg$fail(peg$c57); }
1582 }
1583 if (s0 === peg$FAILED) {
1584 if (input.substr(peg$currPos, 5) === peg$c58) {
1585 s0 = peg$c58;
1586 peg$currPos += 5;
1587 } else {
1588 s0 = peg$FAILED;
1589 if (peg$silentFails === 0) { peg$fail(peg$c59); }
1590 }
1591 if (s0 === peg$FAILED) {
1592 if (input.substr(peg$currPos, 5) === peg$c60) {
1593 s0 = peg$c60;
1594 peg$currPos += 5;
1595 } else {
1596 s0 = peg$FAILED;
1597 if (peg$silentFails === 0) { peg$fail(peg$c61); }
1598 }
1599 if (s0 === peg$FAILED) {
1600 if (input.substr(peg$currPos, 3) === peg$c62) {
1601 s0 = peg$c62;
1602 peg$currPos += 3;
1603 } else {
1604 s0 = peg$FAILED;
1605 if (peg$silentFails === 0) { peg$fail(peg$c63); }
1606 }
1607 if (s0 === peg$FAILED) {
1608 if (input.substr(peg$currPos, 2) === peg$c64) {
1609 s0 = peg$c64;
1610 peg$currPos += 2;
1611 } else {
1612 s0 = peg$FAILED;
1613 if (peg$silentFails === 0) { peg$fail(peg$c65); }
1614 }
1615 if (s0 === peg$FAILED) {
1616 if (input.substr(peg$currPos, 3) === peg$c66) {
1617 s0 = peg$c66;
1618 peg$currPos += 3;
1619 } else {
1620 s0 = peg$FAILED;
1621 if (peg$silentFails === 0) { peg$fail(peg$c67); }
1622 }
1623 if (s0 === peg$FAILED) {
1624 if (input.substr(peg$currPos, 3) === peg$c68) {
1625 s0 = peg$c68;
1626 peg$currPos += 3;
1627 } else {
1628 s0 = peg$FAILED;
1629 if (peg$silentFails === 0) { peg$fail(peg$c69); }
1630 }
1631 if (s0 === peg$FAILED) {
1632 if (input.substr(peg$currPos, 5) === peg$c70) {
1633 s0 = peg$c70;
1634 peg$currPos += 5;
1635 } else {
1636 s0 = peg$FAILED;
1637 if (peg$silentFails === 0) { peg$fail(peg$c71); }
1638 }
1639 if (s0 === peg$FAILED) {
1640 if (input.substr(peg$currPos, 5) === peg$c72) {
1641 s0 = peg$c72;
1642 peg$currPos += 5;
1643 } else {
1644 s0 = peg$FAILED;
1645 if (peg$silentFails === 0) { peg$fail(peg$c73); }
1646 }
1647 if (s0 === peg$FAILED) {
1648 if (input.substr(peg$currPos, 4) === peg$c74) {
1649 s0 = peg$c74;
1650 peg$currPos += 4;
1651 } else {
1652 s0 = peg$FAILED;
1653 if (peg$silentFails === 0) { peg$fail(peg$c75); }
1654 }
1655 if (s0 === peg$FAILED) {
1656 if (input.substr(peg$currPos, 4) === peg$c76) {
1657 s0 = peg$c76;
1658 peg$currPos += 4;
1659 } else {
1660 s0 = peg$FAILED;
1661 if (peg$silentFails === 0) { peg$fail(peg$c77); }
1662 }
1663 if (s0 === peg$FAILED) {
1664 if (input.substr(peg$currPos, 3) === peg$c48) {
1665 s0 = peg$c48;
1666 peg$currPos += 3;
1667 } else {
1668 s0 = peg$FAILED;
1669 if (peg$silentFails === 0) { peg$fail(peg$c49); }
1670 }
1671 if (s0 === peg$FAILED) {
1672 if (input.substr(peg$currPos, 3) === peg$c50) {
1673 s0 = peg$c50;
1674 peg$currPos += 3;
1675 } else {
1676 s0 = peg$FAILED;
1677 if (peg$silentFails === 0) { peg$fail(peg$c51); }
1678 }
1679 if (s0 === peg$FAILED) {
1680 if (input.substr(peg$currPos, 3) === peg$c52) {
1681 s0 = peg$c52;
1682 peg$currPos += 3;
1683 } else {
1684 s0 = peg$FAILED;
1685 if (peg$silentFails === 0) { peg$fail(peg$c53); }
1686 }
1687 if (s0 === peg$FAILED) {
1688 if (input.substr(peg$currPos, 3) === peg$c78) {
1689 s0 = peg$c78;
1690 peg$currPos += 3;
1691 } else {
1692 s0 = peg$FAILED;
1693 if (peg$silentFails === 0) { peg$fail(peg$c79); }
1694 }
1695 if (s0 === peg$FAILED) {
1696 if (input.substr(peg$currPos, 8) === peg$c80) {
1697 s0 = peg$c80;
1698 peg$currPos += 8;
1699 } else {
1700 s0 = peg$FAILED;
1701 if (peg$silentFails === 0) { peg$fail(peg$c81); }
1702 }
1703 if (s0 === peg$FAILED) {
1704 if (input.substr(peg$currPos, 3) === peg$c82) {
1705 s0 = peg$c82;
1706 peg$currPos += 3;
1707 } else {
1708 s0 = peg$FAILED;
1709 if (peg$silentFails === 0) { peg$fail(peg$c83); }
1710 }
1711 if (s0 === peg$FAILED) {
1712 if (input.substr(peg$currPos, 3) === peg$c84) {
1713 s0 = peg$c84;
1714 peg$currPos += 3;
1715 } else {
1716 s0 = peg$FAILED;
1717 if (peg$silentFails === 0) { peg$fail(peg$c85); }
1718 }
1719 }
1720 }
1721 }
1722 }
1723 }
1724 }
1725 }
1726 }
1727 }
1728 }
1729 }
1730 }
1731 }
1732 }
1733 }
1734 }
1735 }
1736 }
1737 }
1738 }
1739 }
1740
1741 return s0;
1742 }
1743
1744 function peg$parseunop() {
1745 var s0;
1746
1747 if (input.substr(peg$currPos, 3) === peg$c86) {
1748 s0 = peg$c86;
1749 peg$currPos += 3;
1750 } else {
1751 s0 = peg$FAILED;
1752 if (peg$silentFails === 0) { peg$fail(peg$c87); }
1753 }
1754 if (s0 === peg$FAILED) {
1755 if (input.substr(peg$currPos, 3) === peg$c88) {
1756 s0 = peg$c88;
1757 peg$currPos += 3;
1758 } else {
1759 s0 = peg$FAILED;
1760 if (peg$silentFails === 0) { peg$fail(peg$c89); }
1761 }
1762 if (s0 === peg$FAILED) {
1763 if (input.substr(peg$currPos, 6) === peg$c90) {
1764 s0 = peg$c90;
1765 peg$currPos += 6;
1766 } else {
1767 s0 = peg$FAILED;
1768 if (peg$silentFails === 0) { peg$fail(peg$c91); }
1769 }
1770 if (s0 === peg$FAILED) {
1771 if (input.substr(peg$currPos, 3) === peg$c92) {
1772 s0 = peg$c92;
1773 peg$currPos += 3;
1774 } else {
1775 s0 = peg$FAILED;
1776 if (peg$silentFails === 0) { peg$fail(peg$c93); }
1777 }
1778 if (s0 === peg$FAILED) {
1779 if (input.substr(peg$currPos, 3) === peg$c94) {
1780 s0 = peg$c94;
1781 peg$currPos += 3;
1782 } else {
1783 s0 = peg$FAILED;
1784 if (peg$silentFails === 0) { peg$fail(peg$c95); }
1785 }
1786 if (s0 === peg$FAILED) {
1787 if (input.substr(peg$currPos, 3) === peg$c96) {
1788 s0 = peg$c96;
1789 peg$currPos += 3;
1790 } else {
1791 s0 = peg$FAILED;
1792 if (peg$silentFails === 0) { peg$fail(peg$c97); }
1793 }
1794 if (s0 === peg$FAILED) {
1795 if (input.substr(peg$currPos, 4) === peg$c98) {
1796 s0 = peg$c98;
1797 peg$currPos += 4;
1798 } else {
1799 s0 = peg$FAILED;
1800 if (peg$silentFails === 0) { peg$fail(peg$c99); }
1801 }
1802 if (s0 === peg$FAILED) {
1803 if (input.substr(peg$currPos, 5) === peg$c100) {
1804 s0 = peg$c100;
1805 peg$currPos += 5;
1806 } else {
1807 s0 = peg$FAILED;
1808 if (peg$silentFails === 0) { peg$fail(peg$c101); }
1809 }
1810 if (s0 === peg$FAILED) {
1811 if (input.substr(peg$currPos, 5) === peg$c102) {
1812 s0 = peg$c102;
1813 peg$currPos += 5;
1814 } else {
1815 s0 = peg$FAILED;
1816 if (peg$silentFails === 0) { peg$fail(peg$c103); }
1817 }
1818 if (s0 === peg$FAILED) {
1819 if (input.substr(peg$currPos, 7) === peg$c104) {
1820 s0 = peg$c104;
1821 peg$currPos += 7;
1822 } else {
1823 s0 = peg$FAILED;
1824 if (peg$silentFails === 0) { peg$fail(peg$c105); }
1825 }
1826 if (s0 === peg$FAILED) {
1827 if (input.substr(peg$currPos, 4) === peg$c106) {
1828 s0 = peg$c106;
1829 peg$currPos += 4;
1830 } else {
1831 s0 = peg$FAILED;
1832 if (peg$silentFails === 0) { peg$fail(peg$c107); }
1833 }
1834 }
1835 }
1836 }
1837 }
1838 }
1839 }
1840 }
1841 }
1842 }
1843 }
1844
1845 return s0;
1846 }
1847
1848 function peg$parsecvtop() {
1849 var s0, s1, s2;
1850
1851 s0 = peg$currPos;
1852 s1 = [];
1853 if (peg$c108.test(input.charAt(peg$currPos))) {
1854 s2 = input.charAt(peg$currPos);
1855 peg$currPos++;
1856 } else {
1857 s2 = peg$FAILED;
1858 if (peg$silentFails === 0) { peg$fail(peg$c109); }
1859 }
1860 if (s2 !== peg$FAILED) {
1861 while (s2 !== peg$FAILED) {
1862 s1.push(s2);
1863 if (peg$c108.test(input.charAt(peg$currPos))) {
1864 s2 = input.charAt(peg$currPos);
1865 peg$currPos++;
1866 } else {
1867 s2 = peg$FAILED;
1868 if (peg$silentFails === 0) { peg$fail(peg$c109); }
1869 }
1870 }
1871 } else {
1872 s1 = peg$FAILED;
1873 }
1874 if (s1 !== peg$FAILED) {
1875 peg$savedPos = s0;
1876 s1 = peg$c110(s1);
1877 }
1878 s0 = s1;
1879
1880 return s0;
1881 }
1882
1883 function peg$parserelop() {
1884 var s0;
1885
1886 if (input.substr(peg$currPos, 2) === peg$c111) {
1887 s0 = peg$c111;
1888 peg$currPos += 2;
1889 } else {
1890 s0 = peg$FAILED;
1891 if (peg$silentFails === 0) { peg$fail(peg$c112); }
1892 }
1893 if (s0 === peg$FAILED) {
1894 if (input.substr(peg$currPos, 2) === peg$c113) {
1895 s0 = peg$c113;
1896 peg$currPos += 2;
1897 } else {
1898 s0 = peg$FAILED;
1899 if (peg$silentFails === 0) { peg$fail(peg$c114); }
1900 }
1901 if (s0 === peg$FAILED) {
1902 if (input.substr(peg$currPos, 4) === peg$c115) {
1903 s0 = peg$c115;
1904 peg$currPos += 4;
1905 } else {
1906 s0 = peg$FAILED;
1907 if (peg$silentFails === 0) { peg$fail(peg$c116); }
1908 }
1909 if (s0 === peg$FAILED) {
1910 if (input.substr(peg$currPos, 4) === peg$c117) {
1911 s0 = peg$c117;
1912 peg$currPos += 4;
1913 } else {
1914 s0 = peg$FAILED;
1915 if (peg$silentFails === 0) { peg$fail(peg$c118); }
1916 }
1917 if (s0 === peg$FAILED) {
1918 if (input.substr(peg$currPos, 4) === peg$c119) {
1919 s0 = peg$c119;
1920 peg$currPos += 4;
1921 } else {
1922 s0 = peg$FAILED;
1923 if (peg$silentFails === 0) { peg$fail(peg$c120); }
1924 }
1925 if (s0 === peg$FAILED) {
1926 if (input.substr(peg$currPos, 4) === peg$c121) {
1927 s0 = peg$c121;
1928 peg$currPos += 4;
1929 } else {
1930 s0 = peg$FAILED;
1931 if (peg$silentFails === 0) { peg$fail(peg$c122); }
1932 }
1933 if (s0 === peg$FAILED) {
1934 if (input.substr(peg$currPos, 4) === peg$c123) {
1935 s0 = peg$c123;
1936 peg$currPos += 4;
1937 } else {
1938 s0 = peg$FAILED;
1939 if (peg$silentFails === 0) { peg$fail(peg$c124); }
1940 }
1941 if (s0 === peg$FAILED) {
1942 if (input.substr(peg$currPos, 4) === peg$c125) {
1943 s0 = peg$c125;
1944 peg$currPos += 4;
1945 } else {
1946 s0 = peg$FAILED;
1947 if (peg$silentFails === 0) { peg$fail(peg$c126); }
1948 }
1949 if (s0 === peg$FAILED) {
1950 if (input.substr(peg$currPos, 4) === peg$c127) {
1951 s0 = peg$c127;
1952 peg$currPos += 4;
1953 } else {
1954 s0 = peg$FAILED;
1955 if (peg$silentFails === 0) { peg$fail(peg$c128); }
1956 }
1957 if (s0 === peg$FAILED) {
1958 if (input.substr(peg$currPos, 4) === peg$c129) {
1959 s0 = peg$c129;
1960 peg$currPos += 4;
1961 } else {
1962 s0 = peg$FAILED;
1963 if (peg$silentFails === 0) { peg$fail(peg$c130); }
1964 }
1965 if (s0 === peg$FAILED) {
1966 if (input.substr(peg$currPos, 2) === peg$c111) {
1967 s0 = peg$c111;
1968 peg$currPos += 2;
1969 } else {
1970 s0 = peg$FAILED;
1971 if (peg$silentFails === 0) { peg$fail(peg$c112); }
1972 }
1973 if (s0 === peg$FAILED) {
1974 if (input.substr(peg$currPos, 2) === peg$c113) {
1975 s0 = peg$c113;
1976 peg$currPos += 2;
1977 } else {
1978 s0 = peg$FAILED;
1979 if (peg$silentFails === 0) { peg$fail(peg$c114); }
1980 }
1981 if (s0 === peg$FAILED) {
1982 if (input.substr(peg$currPos, 2) === peg$c131) {
1983 s0 = peg$c131;
1984 peg$currPos += 2;
1985 } else {
1986 s0 = peg$FAILED;
1987 if (peg$silentFails === 0) { peg$fail(peg$c132); }
1988 }
1989 if (s0 === peg$FAILED) {
1990 if (input.substr(peg$currPos, 2) === peg$c133) {
1991 s0 = peg$c133;
1992 peg$currPos += 2;
1993 } else {
1994 s0 = peg$FAILED;
1995 if (peg$silentFails === 0) { peg$fail(peg$c134); }
1996 }
1997 if (s0 === peg$FAILED) {
1998 if (input.substr(peg$currPos, 2) === peg$c135) {
1999 s0 = peg$c135;
2000 peg$currPos += 2;
2001 } else {
2002 s0 = peg$FAILED;
2003 if (peg$silentFails === 0) { peg$fail(peg$c136); }
2004 }
2005 if (s0 === peg$FAILED) {
2006 if (input.substr(peg$currPos, 2) === peg$c137) {
2007 s0 = peg$c137;
2008 peg$currPos += 2;
2009 } else {
2010 s0 = peg$FAILED;
2011 if (peg$silentFails === 0) { peg$fail(peg$c138); }
2012 }
2013 }
2014 }
2015 }
2016 }
2017 }
2018 }
2019 }
2020 }
2021 }
2022 }
2023 }
2024 }
2025 }
2026 }
2027 }
2028
2029 return s0;
2030 }
2031
2032 function peg$parsevalue() {
2033 var s0, s1, s2, s3, s4, s5;
2034
2035 s0 = peg$currPos;
2036 if (input.substr(peg$currPos, 4) === peg$c139) {
2037 s1 = peg$c139;
2038 peg$currPos += 4;
2039 } else {
2040 s1 = peg$FAILED;
2041 if (peg$silentFails === 0) { peg$fail(peg$c140); }
2042 }
2043 if (s1 === peg$FAILED) {
2044 if (input.substr(peg$currPos, 5) === peg$c141) {
2045 s1 = peg$c141;
2046 peg$currPos += 5;
2047 } else {
2048 s1 = peg$FAILED;
2049 if (peg$silentFails === 0) { peg$fail(peg$c142); }
2050 }
2051 if (s1 === peg$FAILED) {
2052 if (input.substr(peg$currPos, 5) === peg$c143) {
2053 s1 = peg$c143;
2054 peg$currPos += 5;
2055 } else {
2056 s1 = peg$FAILED;
2057 if (peg$silentFails === 0) { peg$fail(peg$c144); }
2058 }
2059 }
2060 }
2061 if (s1 !== peg$FAILED) {
2062 if (input.charCodeAt(peg$currPos) === 45) {
2063 s2 = peg$c41;
2064 peg$currPos++;
2065 } else {
2066 s2 = peg$FAILED;
2067 if (peg$silentFails === 0) { peg$fail(peg$c42); }
2068 }
2069 if (s2 === peg$FAILED) {
2070 s2 = null;
2071 }
2072 if (s2 !== peg$FAILED) {
2073 if (input.substr(peg$currPos, 2) === peg$c37) {
2074 s3 = peg$c37;
2075 peg$currPos += 2;
2076 } else {
2077 s3 = peg$FAILED;
2078 if (peg$silentFails === 0) { peg$fail(peg$c38); }
2079 }
2080 if (s3 !== peg$FAILED) {
2081 s4 = [];
2082 if (peg$c145.test(input.charAt(peg$currPos))) {
2083 s5 = input.charAt(peg$currPos);
2084 peg$currPos++;
2085 } else {
2086 s5 = peg$FAILED;
2087 if (peg$silentFails === 0) { peg$fail(peg$c146); }
2088 }
2089 if (s5 !== peg$FAILED) {
2090 while (s5 !== peg$FAILED) {
2091 s4.push(s5);
2092 if (peg$c145.test(input.charAt(peg$currPos))) {
2093 s5 = input.charAt(peg$currPos);
2094 peg$currPos++;
2095 } else {
2096 s5 = peg$FAILED;
2097 if (peg$silentFails === 0) { peg$fail(peg$c146); }
2098 }
2099 }
2100 } else {
2101 s4 = peg$FAILED;
2102 }
2103 if (s4 !== peg$FAILED) {
2104 peg$savedPos = s0;
2105 s1 = peg$c147(s1, s2, s3, s4);
2106 s0 = s1;
2107 } else {
2108 peg$currPos = s0;
2109 s0 = peg$FAILED;
2110 }
2111 } else {
2112 peg$currPos = s0;
2113 s0 = peg$FAILED;
2114 }
2115 } else {
2116 peg$currPos = s0;
2117 s0 = peg$FAILED;
2118 }
2119 } else {
2120 peg$currPos = s0;
2121 s0 = peg$FAILED;
2122 }
2123 if (s0 === peg$FAILED) {
2124 if (input.substr(peg$currPos, 3) === peg$c148) {
2125 s0 = peg$c148;
2126 peg$currPos += 3;
2127 } else {
2128 s0 = peg$FAILED;
2129 if (peg$silentFails === 0) { peg$fail(peg$c149); }
2130 }
2131 if (s0 === peg$FAILED) {
2132 if (input.substr(peg$currPos, 4) === peg$c150) {
2133 s0 = peg$c150;
2134 peg$currPos += 4;
2135 } else {
2136 s0 = peg$FAILED;
2137 if (peg$silentFails === 0) { peg$fail(peg$c151); }
2138 }
2139 if (s0 === peg$FAILED) {
2140 if (input.substr(peg$currPos, 4) === peg$c152) {
2141 s0 = peg$c152;
2142 peg$currPos += 4;
2143 } else {
2144 s0 = peg$FAILED;
2145 if (peg$silentFails === 0) { peg$fail(peg$c153); }
2146 }
2147 if (s0 === peg$FAILED) {
2148 if (input.substr(peg$currPos, 8) === peg$c154) {
2149 s0 = peg$c154;
2150 peg$currPos += 8;
2151 } else {
2152 s0 = peg$FAILED;
2153 if (peg$silentFails === 0) { peg$fail(peg$c155); }
2154 }
2155 if (s0 === peg$FAILED) {
2156 if (input.substr(peg$currPos, 9) === peg$c156) {
2157 s0 = peg$c156;
2158 peg$currPos += 9;
2159 } else {
2160 s0 = peg$FAILED;
2161 if (peg$silentFails === 0) { peg$fail(peg$c157); }
2162 }
2163 if (s0 === peg$FAILED) {
2164 if (input.substr(peg$currPos, 9) === peg$c158) {
2165 s0 = peg$c158;
2166 peg$currPos += 9;
2167 } else {
2168 s0 = peg$FAILED;
2169 if (peg$silentFails === 0) { peg$fail(peg$c159); }
2170 }
2171 if (s0 === peg$FAILED) {
2172 s0 = peg$currPos;
2173 if (input.charCodeAt(peg$currPos) === 45) {
2174 s1 = peg$c41;
2175 peg$currPos++;
2176 } else {
2177 s1 = peg$FAILED;
2178 if (peg$silentFails === 0) { peg$fail(peg$c42); }
2179 }
2180 if (s1 === peg$FAILED) {
2181 if (input.charCodeAt(peg$currPos) === 43) {
2182 s1 = peg$c160;
2183 peg$currPos++;
2184 } else {
2185 s1 = peg$FAILED;
2186 if (peg$silentFails === 0) { peg$fail(peg$c161); }
2187 }
2188 }
2189 if (s1 === peg$FAILED) {
2190 s1 = null;
2191 }
2192 if (s1 !== peg$FAILED) {
2193 if (input.substr(peg$currPos, 2) === peg$c37) {
2194 s2 = peg$c37;
2195 peg$currPos += 2;
2196 } else {
2197 s2 = peg$FAILED;
2198 if (peg$silentFails === 0) { peg$fail(peg$c38); }
2199 }
2200 if (s2 !== peg$FAILED) {
2201 s3 = [];
2202 if (peg$c162.test(input.charAt(peg$currPos))) {
2203 s4 = input.charAt(peg$currPos);
2204 peg$currPos++;
2205 } else {
2206 s4 = peg$FAILED;
2207 if (peg$silentFails === 0) { peg$fail(peg$c163); }
2208 }
2209 if (s4 !== peg$FAILED) {
2210 while (s4 !== peg$FAILED) {
2211 s3.push(s4);
2212 if (peg$c162.test(input.charAt(peg$currPos))) {
2213 s4 = input.charAt(peg$currPos);
2214 peg$currPos++;
2215 } else {
2216 s4 = peg$FAILED;
2217 if (peg$silentFails === 0) { peg$fail(peg$c163); }
2218 }
2219 }
2220 } else {
2221 s3 = peg$FAILED;
2222 }
2223 if (s3 !== peg$FAILED) {
2224 peg$savedPos = s0;
2225 s1 = peg$c164(s1, s2, s3);
2226 s0 = s1;
2227 } else {
2228 peg$currPos = s0;
2229 s0 = peg$FAILED;
2230 }
2231 } else {
2232 peg$currPos = s0;
2233 s0 = peg$FAILED;
2234 }
2235 } else {
2236 peg$currPos = s0;
2237 s0 = peg$FAILED;
2238 }
2239 if (s0 === peg$FAILED) {
2240 s0 = peg$currPos;
2241 if (input.charCodeAt(peg$currPos) === 45) {
2242 s1 = peg$c41;
2243 peg$currPos++;
2244 } else {
2245 s1 = peg$FAILED;
2246 if (peg$silentFails === 0) { peg$fail(peg$c42); }
2247 }
2248 if (s1 === peg$FAILED) {
2249 s1 = null;
2250 }
2251 if (s1 !== peg$FAILED) {
2252 s2 = [];
2253 if (peg$c165.test(input.charAt(peg$currPos))) {
2254 s3 = input.charAt(peg$currPos);
2255 peg$currPos++;
2256 } else {
2257 s3 = peg$FAILED;
2258 if (peg$silentFails === 0) { peg$fail(peg$c166); }
2259 }
2260 if (s3 !== peg$FAILED) {
2261 while (s3 !== peg$FAILED) {
2262 s2.push(s3);
2263 if (peg$c165.test(input.charAt(peg$currPos))) {
2264 s3 = input.charAt(peg$currPos);
2265 peg$currPos++;
2266 } else {
2267 s3 = peg$FAILED;
2268 if (peg$silentFails === 0) { peg$fail(peg$c166); }
2269 }
2270 }
2271 } else {
2272 s2 = peg$FAILED;
2273 }
2274 if (s2 !== peg$FAILED) {
2275 peg$savedPos = s0;
2276 s1 = peg$c167(s1, s2);
2277 s0 = s1;
2278 } else {
2279 peg$currPos = s0;
2280 s0 = peg$FAILED;
2281 }
2282 } else {
2283 peg$currPos = s0;
2284 s0 = peg$FAILED;
2285 }
2286 }
2287 }
2288 }
2289 }
2290 }
2291 }
2292 }
2293 }
2294
2295 return s0;
2296 }
2297
2298 function peg$parsesign() {
2299 var s0;
2300
2301 if (input.charCodeAt(peg$currPos) === 115) {
2302 s0 = peg$c168;
2303 peg$currPos++;
2304 } else {
2305 s0 = peg$FAILED;
2306 if (peg$silentFails === 0) { peg$fail(peg$c169); }
2307 }
2308 if (s0 === peg$FAILED) {
2309 if (input.charCodeAt(peg$currPos) === 117) {
2310 s0 = peg$c170;
2311 peg$currPos++;
2312 } else {
2313 s0 = peg$FAILED;
2314 if (peg$silentFails === 0) { peg$fail(peg$c171); }
2315 }
2316 }
2317
2318 return s0;
2319 }
2320
2321 function peg$parsealign() {
2322 var s0, s1, s2;
2323
2324 s0 = peg$currPos;
2325 s1 = [];
2326 if (peg$c43.test(input.charAt(peg$currPos))) {
2327 s2 = input.charAt(peg$currPos);
2328 peg$currPos++;
2329 } else {
2330 s2 = peg$FAILED;
2331 if (peg$silentFails === 0) { peg$fail(peg$c44); }
2332 }
2333 while (s2 !== peg$FAILED) {
2334 s1.push(s2);
2335 if (peg$c43.test(input.charAt(peg$currPos))) {
2336 s2 = input.charAt(peg$currPos);
2337 peg$currPos++;
2338 } else {
2339 s2 = peg$FAILED;
2340 if (peg$silentFails === 0) { peg$fail(peg$c44); }
2341 }
2342 }
2343 if (s1 !== peg$FAILED) {
2344 peg$savedPos = s0;
2345 s1 = peg$c172(s1);
2346 }
2347 s0 = s1;
2348
2349 return s0;
2350 }
2351
2352 function peg$parseoffset() {
2353 var s0, s1, s2;
2354
2355 s0 = peg$currPos;
2356 s1 = [];
2357 if (peg$c43.test(input.charAt(peg$currPos))) {
2358 s2 = input.charAt(peg$currPos);
2359 peg$currPos++;
2360 } else {
2361 s2 = peg$FAILED;
2362 if (peg$silentFails === 0) { peg$fail(peg$c44); }
2363 }
2364 while (s2 !== peg$FAILED) {
2365 s1.push(s2);
2366 if (peg$c43.test(input.charAt(peg$currPos))) {
2367 s2 = input.charAt(peg$currPos);
2368 peg$currPos++;
2369 } else {
2370 s2 = peg$FAILED;
2371 if (peg$silentFails === 0) { peg$fail(peg$c44); }
2372 }
2373 }
2374 if (s1 !== peg$FAILED) {
2375 peg$savedPos = s0;
2376 s1 = peg$c172(s1);
2377 }
2378 s0 = s1;
2379
2380 return s0;
2381 }
2382
2383 function peg$parsevar() {
2384 var s0, s1, s2;
2385
2386 s0 = peg$currPos;
2387 s1 = peg$parseint();
2388 if (s1 !== peg$FAILED) {
2389 peg$savedPos = s0;
2390 s1 = peg$c173(s1);
2391 }
2392 s0 = s1;
2393 if (s0 === peg$FAILED) {
2394 s0 = peg$currPos;
2395 if (input.charCodeAt(peg$currPos) === 36) {
2396 s1 = peg$c174;
2397 peg$currPos++;
2398 } else {
2399 s1 = peg$FAILED;
2400 if (peg$silentFails === 0) { peg$fail(peg$c175); }
2401 }
2402 if (s1 !== peg$FAILED) {
2403 s2 = peg$parsename();
2404 if (s2 !== peg$FAILED) {
2405 peg$savedPos = s0;
2406 s1 = peg$c176(s2);
2407 s0 = s1;
2408 } else {
2409 peg$currPos = s0;
2410 s0 = peg$FAILED;
2411 }
2412 } else {
2413 peg$currPos = s0;
2414 s0 = peg$FAILED;
2415 }
2416 }
2417
2418 return s0;
2419 }
2420
2421 function peg$parsecase() {
2422 var s0, s1, s2, s3, s4, s5, s6, s7, s8;
2423
2424 s0 = peg$currPos;
2425 if (input.charCodeAt(peg$currPos) === 40) {
2426 s1 = peg$c177;
2427 peg$currPos++;
2428 } else {
2429 s1 = peg$FAILED;
2430 if (peg$silentFails === 0) { peg$fail(peg$c178); }
2431 }
2432 if (s1 !== peg$FAILED) {
2433 if (input.substr(peg$currPos, 4) === peg$c179) {
2434 s2 = peg$c179;
2435 peg$currPos += 4;
2436 } else {
2437 s2 = peg$FAILED;
2438 if (peg$silentFails === 0) { peg$fail(peg$c180); }
2439 }
2440 if (s2 !== peg$FAILED) {
2441 s3 = peg$parse__();
2442 if (s3 !== peg$FAILED) {
2443 s4 = peg$currPos;
2444 if (input.charCodeAt(peg$currPos) === 36) {
2445 s5 = peg$c174;
2446 peg$currPos++;
2447 } else {
2448 s5 = peg$FAILED;
2449 if (peg$silentFails === 0) { peg$fail(peg$c175); }
2450 }
2451 if (s5 !== peg$FAILED) {
2452 s6 = peg$parsename();
2453 if (s6 !== peg$FAILED) {
2454 s5 = [s5, s6];
2455 s4 = s5;
2456 } else {
2457 peg$currPos = s4;
2458 s4 = peg$FAILED;
2459 }
2460 } else {
2461 peg$currPos = s4;
2462 s4 = peg$FAILED;
2463 }
2464 if (s4 === peg$FAILED) {
2465 s4 = peg$parsevalue();
2466 }
2467 if (s4 !== peg$FAILED) {
2468 s5 = [];
2469 s6 = peg$currPos;
2470 s7 = peg$parse__();
2471 if (s7 !== peg$FAILED) {
2472 s8 = peg$parseexpr();
2473 if (s8 !== peg$FAILED) {
2474 s7 = [s7, s8];
2475 s6 = s7;
2476 } else {
2477 peg$currPos = s6;
2478 s6 = peg$FAILED;
2479 }
2480 } else {
2481 peg$currPos = s6;
2482 s6 = peg$FAILED;
2483 }
2484 while (s6 !== peg$FAILED) {
2485 s5.push(s6);
2486 s6 = peg$currPos;
2487 s7 = peg$parse__();
2488 if (s7 !== peg$FAILED) {
2489 s8 = peg$parseexpr();
2490 if (s8 !== peg$FAILED) {
2491 s7 = [s7, s8];
2492 s6 = s7;
2493 } else {
2494 peg$currPos = s6;
2495 s6 = peg$FAILED;
2496 }
2497 } else {
2498 peg$currPos = s6;
2499 s6 = peg$FAILED;
2500 }
2501 }
2502 if (s5 !== peg$FAILED) {
2503 s6 = peg$currPos;
2504 s7 = peg$parse__();
2505 if (s7 !== peg$FAILED) {
2506 if (input.substr(peg$currPos, 11) === peg$c181) {
2507 s8 = peg$c181;
2508 peg$currPos += 11;
2509 } else {
2510 s8 = peg$FAILED;
2511 if (peg$silentFails === 0) { peg$fail(peg$c182); }
2512 }
2513 if (s8 !== peg$FAILED) {
2514 s7 = [s7, s8];
2515 s6 = s7;
2516 } else {
2517 peg$currPos = s6;
2518 s6 = peg$FAILED;
2519 }
2520 } else {
2521 peg$currPos = s6;
2522 s6 = peg$FAILED;
2523 }
2524 if (s6 === peg$FAILED) {
2525 s6 = null;
2526 }
2527 if (s6 !== peg$FAILED) {
2528 s7 = peg$parse__();
2529 if (s7 !== peg$FAILED) {
2530 if (input.charCodeAt(peg$currPos) === 41) {
2531 s8 = peg$c183;
2532 peg$currPos++;
2533 } else {
2534 s8 = peg$FAILED;
2535 if (peg$silentFails === 0) { peg$fail(peg$c184); }
2536 }
2537 if (s8 !== peg$FAILED) {
2538 peg$savedPos = s0;
2539 s1 = peg$c185(s2, s4, s5, s6);
2540 s0 = s1;
2541 } else {
2542 peg$currPos = s0;
2543 s0 = peg$FAILED;
2544 }
2545 } else {
2546 peg$currPos = s0;
2547 s0 = peg$FAILED;
2548 }
2549 } else {
2550 peg$currPos = s0;
2551 s0 = peg$FAILED;
2552 }
2553 } else {
2554 peg$currPos = s0;
2555 s0 = peg$FAILED;
2556 }
2557 } else {
2558 peg$currPos = s0;
2559 s0 = peg$FAILED;
2560 }
2561 } else {
2562 peg$currPos = s0;
2563 s0 = peg$FAILED;
2564 }
2565 } else {
2566 peg$currPos = s0;
2567 s0 = peg$FAILED;
2568 }
2569 } else {
2570 peg$currPos = s0;
2571 s0 = peg$FAILED;
2572 }
2573 if (s0 === peg$FAILED) {
2574 s0 = peg$currPos;
2575 if (input.charCodeAt(peg$currPos) === 40) {
2576 s1 = peg$c177;
2577 peg$currPos++;
2578 } else {
2579 s1 = peg$FAILED;
2580 if (peg$silentFails === 0) { peg$fail(peg$c178); }
2581 }
2582 if (s1 !== peg$FAILED) {
2583 if (input.substr(peg$currPos, 4) === peg$c179) {
2584 s2 = peg$c179;
2585 peg$currPos += 4;
2586 } else {
2587 s2 = peg$FAILED;
2588 if (peg$silentFails === 0) { peg$fail(peg$c180); }
2589 }
2590 if (s2 !== peg$FAILED) {
2591 s3 = peg$currPos;
2592 s4 = peg$parse__();
2593 if (s4 !== peg$FAILED) {
2594 s5 = peg$parsevalue();
2595 if (s5 !== peg$FAILED) {
2596 s4 = [s4, s5];
2597 s3 = s4;
2598 } else {
2599 peg$currPos = s3;
2600 s3 = peg$FAILED;
2601 }
2602 } else {
2603 peg$currPos = s3;
2604 s3 = peg$FAILED;
2605 }
2606 if (s3 === peg$FAILED) {
2607 s3 = null;
2608 }
2609 if (s3 !== peg$FAILED) {
2610 s4 = peg$parse__();
2611 if (s4 !== peg$FAILED) {
2612 if (input.charCodeAt(peg$currPos) === 41) {
2613 s5 = peg$c183;
2614 peg$currPos++;
2615 } else {
2616 s5 = peg$FAILED;
2617 if (peg$silentFails === 0) { peg$fail(peg$c184); }
2618 }
2619 if (s5 !== peg$FAILED) {
2620 peg$savedPos = s0;
2621 s1 = peg$c186(s2, s3);
2622 s0 = s1;
2623 } else {
2624 peg$currPos = s0;
2625 s0 = peg$FAILED;
2626 }
2627 } else {
2628 peg$currPos = s0;
2629 s0 = peg$FAILED;
2630 }
2631 } else {
2632 peg$currPos = s0;
2633 s0 = peg$FAILED;
2634 }
2635 } else {
2636 peg$currPos = s0;
2637 s0 = peg$FAILED;
2638 }
2639 } else {
2640 peg$currPos = s0;
2641 s0 = peg$FAILED;
2642 }
2643 if (s0 === peg$FAILED) {
2644 s0 = peg$parseexpr();
2645 }
2646 }
2647
2648 return s0;
2649 }
2650
2651 function peg$parseexpr() {
2652 var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;
2653
2654 s0 = peg$currPos;
2655 if (input.charCodeAt(peg$currPos) === 40) {
2656 s1 = peg$c177;
2657 peg$currPos++;
2658 } else {
2659 s1 = peg$FAILED;
2660 if (peg$silentFails === 0) { peg$fail(peg$c178); }
2661 }
2662 if (s1 !== peg$FAILED) {
2663 s2 = peg$currPos;
2664 s3 = peg$parselocal_type();
2665 if (s3 !== peg$FAILED) {
2666 if (input.charCodeAt(peg$currPos) === 46) {
2667 s4 = peg$c187;
2668 peg$currPos++;
2669 } else {
2670 s4 = peg$FAILED;
2671 if (peg$silentFails === 0) { peg$fail(peg$c188); }
2672 }
2673 if (s4 !== peg$FAILED) {
2674 if (input.substr(peg$currPos, 5) === peg$c189) {
2675 s5 = peg$c189;
2676 peg$currPos += 5;
2677 } else {
2678 s5 = peg$FAILED;
2679 if (peg$silentFails === 0) { peg$fail(peg$c190); }
2680 }
2681 if (s5 !== peg$FAILED) {
2682 s6 = peg$parse__();
2683 if (s6 !== peg$FAILED) {
2684 s7 = peg$parsevalue();
2685 if (s7 !== peg$FAILED) {
2686 peg$savedPos = s2;
2687 s3 = peg$c191(s3, s5, s7);
2688 s2 = s3;
2689 } else {
2690 peg$currPos = s2;
2691 s2 = peg$FAILED;
2692 }
2693 } else {
2694 peg$currPos = s2;
2695 s2 = peg$FAILED;
2696 }
2697 } else {
2698 peg$currPos = s2;
2699 s2 = peg$FAILED;
2700 }
2701 } else {
2702 peg$currPos = s2;
2703 s2 = peg$FAILED;
2704 }
2705 } else {
2706 peg$currPos = s2;
2707 s2 = peg$FAILED;
2708 }
2709 if (s2 === peg$FAILED) {
2710 s2 = peg$currPos;
2711 if (input.substr(peg$currPos, 5) === peg$c192) {
2712 s3 = peg$c192;
2713 peg$currPos += 5;
2714 } else {
2715 s3 = peg$FAILED;
2716 if (peg$silentFails === 0) { peg$fail(peg$c193); }
2717 }
2718 if (s3 !== peg$FAILED) {
2719 s4 = peg$currPos;
2720 s5 = peg$parse__();
2721 if (s5 !== peg$FAILED) {
2722 s6 = peg$parsevar();
2723 if (s6 !== peg$FAILED) {
2724 s5 = [s5, s6];
2725 s4 = s5;
2726 } else {
2727 peg$currPos = s4;
2728 s4 = peg$FAILED;
2729 }
2730 } else {
2731 peg$currPos = s4;
2732 s4 = peg$FAILED;
2733 }
2734 if (s4 === peg$FAILED) {
2735 s4 = null;
2736 }
2737 if (s4 !== peg$FAILED) {
2738 s5 = [];
2739 s6 = peg$currPos;
2740 s7 = peg$parse__();
2741 if (s7 !== peg$FAILED) {
2742 s8 = peg$parseexpr();
2743 if (s8 !== peg$FAILED) {
2744 s7 = [s7, s8];
2745 s6 = s7;
2746 } else {
2747 peg$currPos = s6;
2748 s6 = peg$FAILED;
2749 }
2750 } else {
2751 peg$currPos = s6;
2752 s6 = peg$FAILED;
2753 }
2754 while (s6 !== peg$FAILED) {
2755 s5.push(s6);
2756 s6 = peg$currPos;
2757 s7 = peg$parse__();
2758 if (s7 !== peg$FAILED) {
2759 s8 = peg$parseexpr();
2760 if (s8 !== peg$FAILED) {
2761 s7 = [s7, s8];
2762 s6 = s7;
2763 } else {
2764 peg$currPos = s6;
2765 s6 = peg$FAILED;
2766 }
2767 } else {
2768 peg$currPos = s6;
2769 s6 = peg$FAILED;
2770 }
2771 }
2772 if (s5 !== peg$FAILED) {
2773 peg$savedPos = s2;
2774 s3 = peg$c194(s3, s4, s5);
2775 s2 = s3;
2776 } else {
2777 peg$currPos = s2;
2778 s2 = peg$FAILED;
2779 }
2780 } else {
2781 peg$currPos = s2;
2782 s2 = peg$FAILED;
2783 }
2784 } else {
2785 peg$currPos = s2;
2786 s2 = peg$FAILED;
2787 }
2788 if (s2 === peg$FAILED) {
2789 s2 = peg$currPos;
2790 if (input.substr(peg$currPos, 2) === peg$c195) {
2791 s3 = peg$c195;
2792 peg$currPos += 2;
2793 } else {
2794 s3 = peg$FAILED;
2795 if (peg$silentFails === 0) { peg$fail(peg$c196); }
2796 }
2797 if (s3 !== peg$FAILED) {
2798 s4 = peg$parse__();
2799 if (s4 !== peg$FAILED) {
2800 s5 = peg$parseexpr();
2801 if (s5 !== peg$FAILED) {
2802 s6 = peg$parse__();
2803 if (s6 !== peg$FAILED) {
2804 s7 = peg$parseexpr();
2805 if (s7 !== peg$FAILED) {
2806 s8 = peg$currPos;
2807 s9 = peg$parse__();
2808 if (s9 !== peg$FAILED) {
2809 s10 = peg$parseexpr();
2810 if (s10 !== peg$FAILED) {
2811 s9 = [s9, s10];
2812 s8 = s9;
2813 } else {
2814 peg$currPos = s8;
2815 s8 = peg$FAILED;
2816 }
2817 } else {
2818 peg$currPos = s8;
2819 s8 = peg$FAILED;
2820 }
2821 if (s8 === peg$FAILED) {
2822 s8 = null;
2823 }
2824 if (s8 !== peg$FAILED) {
2825 peg$savedPos = s2;
2826 s3 = peg$c197(s3, s5, s7, s8);
2827 s2 = s3;
2828 } else {
2829 peg$currPos = s2;
2830 s2 = peg$FAILED;
2831 }
2832 } else {
2833 peg$currPos = s2;
2834 s2 = peg$FAILED;
2835 }
2836 } else {
2837 peg$currPos = s2;
2838 s2 = peg$FAILED;
2839 }
2840 } else {
2841 peg$currPos = s2;
2842 s2 = peg$FAILED;
2843 }
2844 } else {
2845 peg$currPos = s2;
2846 s2 = peg$FAILED;
2847 }
2848 } else {
2849 peg$currPos = s2;
2850 s2 = peg$FAILED;
2851 }
2852 if (s2 === peg$FAILED) {
2853 s2 = peg$currPos;
2854 if (input.substr(peg$currPos, 4) === peg$c198) {
2855 s3 = peg$c198;
2856 peg$currPos += 4;
2857 } else {
2858 s3 = peg$FAILED;
2859 if (peg$silentFails === 0) { peg$fail(peg$c199); }
2860 }
2861 if (s3 === peg$FAILED) {
2862 if (input.substr(peg$currPos, 4) === peg$c200) {
2863 s3 = peg$c200;
2864 peg$currPos += 4;
2865 } else {
2866 s3 = peg$FAILED;
2867 if (peg$silentFails === 0) { peg$fail(peg$c201); }
2868 }
2869 }
2870 if (s3 !== peg$FAILED) {
2871 s4 = peg$currPos;
2872 s5 = peg$parse__();
2873 if (s5 !== peg$FAILED) {
2874 s6 = peg$parsevar();
2875 if (s6 !== peg$FAILED) {
2876 s5 = [s5, s6];
2877 s4 = s5;
2878 } else {
2879 peg$currPos = s4;
2880 s4 = peg$FAILED;
2881 }
2882 } else {
2883 peg$currPos = s4;
2884 s4 = peg$FAILED;
2885 }
2886 if (s4 === peg$FAILED) {
2887 s4 = null;
2888 }
2889 if (s4 !== peg$FAILED) {
2890 s5 = [];
2891 s6 = peg$currPos;
2892 s7 = peg$parse__();
2893 if (s7 !== peg$FAILED) {
2894 s8 = peg$parseexpr();
2895 if (s8 !== peg$FAILED) {
2896 s7 = [s7, s8];
2897 s6 = s7;
2898 } else {
2899 peg$currPos = s6;
2900 s6 = peg$FAILED;
2901 }
2902 } else {
2903 peg$currPos = s6;
2904 s6 = peg$FAILED;
2905 }
2906 while (s6 !== peg$FAILED) {
2907 s5.push(s6);
2908 s6 = peg$currPos;
2909 s7 = peg$parse__();
2910 if (s7 !== peg$FAILED) {
2911 s8 = peg$parseexpr();
2912 if (s8 !== peg$FAILED) {
2913 s7 = [s7, s8];
2914 s6 = s7;
2915 } else {
2916 peg$currPos = s6;
2917 s6 = peg$FAILED;
2918 }
2919 } else {
2920 peg$currPos = s6;
2921 s6 = peg$FAILED;
2922 }
2923 }
2924 if (s5 !== peg$FAILED) {
2925 peg$savedPos = s2;
2926 s3 = peg$c194(s3, s4, s5);
2927 s2 = s3;
2928 } else {
2929 peg$currPos = s2;
2930 s2 = peg$FAILED;
2931 }
2932 } else {
2933 peg$currPos = s2;
2934 s2 = peg$FAILED;
2935 }
2936 } else {
2937 peg$currPos = s2;
2938 s2 = peg$FAILED;
2939 }
2940 if (s2 === peg$FAILED) {
2941 s2 = peg$currPos;
2942 if (input.substr(peg$currPos, 4) === peg$c202) {
2943 s3 = peg$c202;
2944 peg$currPos += 4;
2945 } else {
2946 s3 = peg$FAILED;
2947 if (peg$silentFails === 0) { peg$fail(peg$c203); }
2948 }
2949 if (s3 !== peg$FAILED) {
2950 s4 = peg$parse__();
2951 if (s4 !== peg$FAILED) {
2952 s5 = peg$parsevar();
2953 if (s5 !== peg$FAILED) {
2954 s6 = peg$currPos;
2955 s7 = peg$parse__();
2956 if (s7 !== peg$FAILED) {
2957 s8 = peg$parsevar();
2958 if (s8 !== peg$FAILED) {
2959 s7 = [s7, s8];
2960 s6 = s7;
2961 } else {
2962 peg$currPos = s6;
2963 s6 = peg$FAILED;
2964 }
2965 } else {
2966 peg$currPos = s6;
2967 s6 = peg$FAILED;
2968 }
2969 if (s6 === peg$FAILED) {
2970 s6 = null;
2971 }
2972 if (s6 !== peg$FAILED) {
2973 s7 = [];
2974 s8 = peg$currPos;
2975 s9 = peg$parse__();
2976 if (s9 !== peg$FAILED) {
2977 s10 = peg$parseexpr();
2978 if (s10 !== peg$FAILED) {
2979 s9 = [s9, s10];
2980 s8 = s9;
2981 } else {
2982 peg$currPos = s8;
2983 s8 = peg$FAILED;
2984 }
2985 } else {
2986 peg$currPos = s8;
2987 s8 = peg$FAILED;
2988 }
2989 while (s8 !== peg$FAILED) {
2990 s7.push(s8);
2991 s8 = peg$currPos;
2992 s9 = peg$parse__();
2993 if (s9 !== peg$FAILED) {
2994 s10 = peg$parseexpr();
2995 if (s10 !== peg$FAILED) {
2996 s9 = [s9, s10];
2997 s8 = s9;
2998 } else {
2999 peg$currPos = s8;
3000 s8 = peg$FAILED;
3001 }
3002 } else {
3003 peg$currPos = s8;
3004 s8 = peg$FAILED;
3005 }
3006 }
3007 if (s7 !== peg$FAILED) {
3008 peg$savedPos = s2;
3009 s3 = peg$c204(s3, s5, s6, s7);
3010 s2 = s3;
3011 } else {
3012 peg$currPos = s2;
3013 s2 = peg$FAILED;
3014 }
3015 } else {
3016 peg$currPos = s2;
3017 s2 = peg$FAILED;
3018 }
3019 } else {
3020 peg$currPos = s2;
3021 s2 = peg$FAILED;
3022 }
3023 } else {
3024 peg$currPos = s2;
3025 s2 = peg$FAILED;
3026 }
3027 } else {
3028 peg$currPos = s2;
3029 s2 = peg$FAILED;
3030 }
3031 if (s2 === peg$FAILED) {
3032 s2 = peg$currPos;
3033 if (input.substr(peg$currPos, 4) === peg$c202) {
3034 s3 = peg$c202;
3035 peg$currPos += 4;
3036 } else {
3037 s3 = peg$FAILED;
3038 if (peg$silentFails === 0) { peg$fail(peg$c203); }
3039 }
3040 if (s3 !== peg$FAILED) {
3041 s4 = [];
3042 s5 = peg$currPos;
3043 s6 = peg$parse__();
3044 if (s6 !== peg$FAILED) {
3045 s7 = peg$parseexpr();
3046 if (s7 !== peg$FAILED) {
3047 s6 = [s6, s7];
3048 s5 = s6;
3049 } else {
3050 peg$currPos = s5;
3051 s5 = peg$FAILED;
3052 }
3053 } else {
3054 peg$currPos = s5;
3055 s5 = peg$FAILED;
3056 }
3057 while (s5 !== peg$FAILED) {
3058 s4.push(s5);
3059 s5 = peg$currPos;
3060 s6 = peg$parse__();
3061 if (s6 !== peg$FAILED) {
3062 s7 = peg$parseexpr();
3063 if (s7 !== peg$FAILED) {
3064 s6 = [s6, s7];
3065 s5 = s6;
3066 } else {
3067 peg$currPos = s5;
3068 s5 = peg$FAILED;
3069 }
3070 } else {
3071 peg$currPos = s5;
3072 s5 = peg$FAILED;
3073 }
3074 }
3075 if (s4 !== peg$FAILED) {
3076 peg$savedPos = s2;
3077 s3 = peg$c205(s3, s4);
3078 s2 = s3;
3079 } else {
3080 peg$currPos = s2;
3081 s2 = peg$FAILED;
3082 }
3083 } else {
3084 peg$currPos = s2;
3085 s2 = peg$FAILED;
3086 }
3087 if (s2 === peg$FAILED) {
3088 s2 = peg$currPos;
3089 if (input.substr(peg$currPos, 5) === peg$c206) {
3090 s3 = peg$c206;
3091 peg$currPos += 5;
3092 } else {
3093 s3 = peg$FAILED;
3094 if (peg$silentFails === 0) { peg$fail(peg$c207); }
3095 }
3096 if (s3 !== peg$FAILED) {
3097 s4 = peg$currPos;
3098 s5 = peg$parse__();
3099 if (s5 !== peg$FAILED) {
3100 s6 = peg$parsevar();
3101 if (s6 !== peg$FAILED) {
3102 s5 = [s5, s6];
3103 s4 = s5;
3104 } else {
3105 peg$currPos = s4;
3106 s4 = peg$FAILED;
3107 }
3108 } else {
3109 peg$currPos = s4;
3110 s4 = peg$FAILED;
3111 }
3112 if (s4 === peg$FAILED) {
3113 s4 = null;
3114 }
3115 if (s4 !== peg$FAILED) {
3116 s5 = peg$parse__();
3117 if (s5 !== peg$FAILED) {
3118 s6 = peg$parseexpr();
3119 if (s6 !== peg$FAILED) {
3120 peg$savedPos = s2;
3121 s3 = peg$c208(s3, s4, s6);
3122 s2 = s3;
3123 } else {
3124 peg$currPos = s2;
3125 s2 = peg$FAILED;
3126 }
3127 } else {
3128 peg$currPos = s2;
3129 s2 = peg$FAILED;
3130 }
3131 } else {
3132 peg$currPos = s2;
3133 s2 = peg$FAILED;
3134 }
3135 } else {
3136 peg$currPos = s2;
3137 s2 = peg$FAILED;
3138 }
3139 if (s2 === peg$FAILED) {
3140 s2 = peg$currPos;
3141 if (input.substr(peg$currPos, 2) === peg$c209) {
3142 s3 = peg$c209;
3143 peg$currPos += 2;
3144 } else {
3145 s3 = peg$FAILED;
3146 if (peg$silentFails === 0) { peg$fail(peg$c210); }
3147 }
3148 if (s3 !== peg$FAILED) {
3149 s4 = peg$parse__();
3150 if (s4 !== peg$FAILED) {
3151 s5 = peg$parsevar();
3152 if (s5 !== peg$FAILED) {
3153 s6 = peg$currPos;
3154 s7 = peg$parse__();
3155 if (s7 !== peg$FAILED) {
3156 s8 = peg$parseexpr();
3157 if (s8 !== peg$FAILED) {
3158 s7 = [s7, s8];
3159 s6 = s7;
3160 } else {
3161 peg$currPos = s6;
3162 s6 = peg$FAILED;
3163 }
3164 } else {
3165 peg$currPos = s6;
3166 s6 = peg$FAILED;
3167 }
3168 if (s6 === peg$FAILED) {
3169 s6 = null;
3170 }
3171 if (s6 !== peg$FAILED) {
3172 peg$savedPos = s2;
3173 s3 = peg$c211(s3, s5, s6);
3174 s2 = s3;
3175 } else {
3176 peg$currPos = s2;
3177 s2 = peg$FAILED;
3178 }
3179 } else {
3180 peg$currPos = s2;
3181 s2 = peg$FAILED;
3182 }
3183 } else {
3184 peg$currPos = s2;
3185 s2 = peg$FAILED;
3186 }
3187 } else {
3188 peg$currPos = s2;
3189 s2 = peg$FAILED;
3190 }
3191 if (s2 === peg$FAILED) {
3192 s2 = peg$currPos;
3193 if (input.substr(peg$currPos, 5) === peg$c212) {
3194 s3 = peg$c212;
3195 peg$currPos += 5;
3196 } else {
3197 s3 = peg$FAILED;
3198 if (peg$silentFails === 0) { peg$fail(peg$c213); }
3199 }
3200 if (s3 !== peg$FAILED) {
3201 s4 = peg$parse__();
3202 if (s4 !== peg$FAILED) {
3203 s5 = peg$parsevar();
3204 if (s5 !== peg$FAILED) {
3205 s6 = peg$parse__();
3206 if (s6 !== peg$FAILED) {
3207 s7 = peg$parseexpr();
3208 if (s7 !== peg$FAILED) {
3209 s8 = peg$parse__();
3210 if (s8 !== peg$FAILED) {
3211 s9 = peg$currPos;
3212 s10 = peg$parse__();
3213 if (s10 !== peg$FAILED) {
3214 s11 = peg$parseexpr();
3215 if (s11 !== peg$FAILED) {
3216 s10 = [s10, s11];
3217 s9 = s10;
3218 } else {
3219 peg$currPos = s9;
3220 s9 = peg$FAILED;
3221 }
3222 } else {
3223 peg$currPos = s9;
3224 s9 = peg$FAILED;
3225 }
3226 if (s9 === peg$FAILED) {
3227 s9 = null;
3228 }
3229 if (s9 !== peg$FAILED) {
3230 peg$savedPos = s2;
3231 s3 = peg$c214(s3, s5, s7, s9);
3232 s2 = s3;
3233 } else {
3234 peg$currPos = s2;
3235 s2 = peg$FAILED;
3236 }
3237 } else {
3238 peg$currPos = s2;
3239 s2 = peg$FAILED;
3240 }
3241 } else {
3242 peg$currPos = s2;
3243 s2 = peg$FAILED;
3244 }
3245 } else {
3246 peg$currPos = s2;
3247 s2 = peg$FAILED;
3248 }
3249 } else {
3250 peg$currPos = s2;
3251 s2 = peg$FAILED;
3252 }
3253 } else {
3254 peg$currPos = s2;
3255 s2 = peg$FAILED;
3256 }
3257 } else {
3258 peg$currPos = s2;
3259 s2 = peg$FAILED;
3260 }
3261 if (s2 === peg$FAILED) {
3262 s2 = peg$currPos;
3263 if (input.substr(peg$currPos, 11) === peg$c215) {
3264 s3 = peg$c215;
3265 peg$currPos += 11;
3266 } else {
3267 s3 = peg$FAILED;
3268 if (peg$silentFails === 0) { peg$fail(peg$c216); }
3269 }
3270 if (s3 !== peg$FAILED) {
3271 s4 = peg$parse__();
3272 if (s4 !== peg$FAILED) {
3273 s5 = peg$parseliteral();
3274 if (s5 !== peg$FAILED) {
3275 peg$savedPos = s2;
3276 s3 = peg$c217(s3, s5);
3277 s2 = s3;
3278 } else {
3279 peg$currPos = s2;
3280 s2 = peg$FAILED;
3281 }
3282 } else {
3283 peg$currPos = s2;
3284 s2 = peg$FAILED;
3285 }
3286 } else {
3287 peg$currPos = s2;
3288 s2 = peg$FAILED;
3289 }
3290 if (s2 === peg$FAILED) {
3291 s2 = peg$currPos;
3292 s3 = peg$parselocal_type();
3293 if (s3 !== peg$FAILED) {
3294 if (input.charCodeAt(peg$currPos) === 46) {
3295 s4 = peg$c187;
3296 peg$currPos++;
3297 } else {
3298 s4 = peg$FAILED;
3299 if (peg$silentFails === 0) { peg$fail(peg$c188); }
3300 }
3301 if (s4 !== peg$FAILED) {
3302 if (input.substr(peg$currPos, 6) === peg$c218) {
3303 s5 = peg$c218;
3304 peg$currPos += 6;
3305 } else {
3306 s5 = peg$FAILED;
3307 if (peg$silentFails === 0) { peg$fail(peg$c219); }
3308 }
3309 if (s5 !== peg$FAILED) {
3310 s6 = peg$parse__();
3311 if (s6 !== peg$FAILED) {
3312 s7 = peg$parseexpr();
3313 if (s7 !== peg$FAILED) {
3314 s8 = [];
3315 s9 = peg$currPos;
3316 s10 = peg$parse__();
3317 if (s10 !== peg$FAILED) {
3318 s11 = peg$parsecase();
3319 if (s11 !== peg$FAILED) {
3320 s10 = [s10, s11];
3321 s9 = s10;
3322 } else {
3323 peg$currPos = s9;
3324 s9 = peg$FAILED;
3325 }
3326 } else {
3327 peg$currPos = s9;
3328 s9 = peg$FAILED;
3329 }
3330 while (s9 !== peg$FAILED) {
3331 s8.push(s9);
3332 s9 = peg$currPos;
3333 s10 = peg$parse__();
3334 if (s10 !== peg$FAILED) {
3335 s11 = peg$parsecase();
3336 if (s11 !== peg$FAILED) {
3337 s10 = [s10, s11];
3338 s9 = s10;
3339 } else {
3340 peg$currPos = s9;
3341 s9 = peg$FAILED;
3342 }
3343 } else {
3344 peg$currPos = s9;
3345 s9 = peg$FAILED;
3346 }
3347 }
3348 if (s8 !== peg$FAILED) {
3349 s9 = peg$parse__();
3350 if (s9 !== peg$FAILED) {
3351 s10 = peg$parseexpr();
3352 if (s10 !== peg$FAILED) {
3353 peg$savedPos = s2;
3354 s3 = peg$c220(s3, s5, s7, s8, s10);
3355 s2 = s3;
3356 } else {
3357 peg$currPos = s2;
3358 s2 = peg$FAILED;
3359 }
3360 } else {
3361 peg$currPos = s2;
3362 s2 = peg$FAILED;
3363 }
3364 } else {
3365 peg$currPos = s2;
3366 s2 = peg$FAILED;
3367 }
3368 } else {
3369 peg$currPos = s2;
3370 s2 = peg$FAILED;
3371 }
3372 } else {
3373 peg$currPos = s2;
3374 s2 = peg$FAILED;
3375 }
3376 } else {
3377 peg$currPos = s2;
3378 s2 = peg$FAILED;
3379 }
3380 } else {
3381 peg$currPos = s2;
3382 s2 = peg$FAILED;
3383 }
3384 } else {
3385 peg$currPos = s2;
3386 s2 = peg$FAILED;
3387 }
3388 if (s2 === peg$FAILED) {
3389 s2 = peg$currPos;
3390 if (input.substr(peg$currPos, 8) === peg$c221) {
3391 s3 = peg$c221;
3392 peg$currPos += 8;
3393 } else {
3394 s3 = peg$FAILED;
3395 if (peg$silentFails === 0) { peg$fail(peg$c222); }
3396 }
3397 if (s3 !== peg$FAILED) {
3398 s4 = [];
3399 s5 = peg$currPos;
3400 s6 = peg$parse__();
3401 if (s6 !== peg$FAILED) {
3402 s7 = peg$parsevar();
3403 if (s7 !== peg$FAILED) {
3404 s6 = [s6, s7];
3405 s5 = s6;
3406 } else {
3407 peg$currPos = s5;
3408 s5 = peg$FAILED;
3409 }
3410 } else {
3411 peg$currPos = s5;
3412 s5 = peg$FAILED;
3413 }
3414 while (s5 !== peg$FAILED) {
3415 s4.push(s5);
3416 s5 = peg$currPos;
3417 s6 = peg$parse__();
3418 if (s6 !== peg$FAILED) {
3419 s7 = peg$parsevar();
3420 if (s7 !== peg$FAILED) {
3421 s6 = [s6, s7];
3422 s5 = s6;
3423 } else {
3424 peg$currPos = s5;
3425 s5 = peg$FAILED;
3426 }
3427 } else {
3428 peg$currPos = s5;
3429 s5 = peg$FAILED;
3430 }
3431 }
3432 if (s4 !== peg$FAILED) {
3433 s5 = [];
3434 s6 = peg$currPos;
3435 s7 = peg$parse__();
3436 if (s7 !== peg$FAILED) {
3437 s8 = peg$parseexpr();
3438 if (s8 !== peg$FAILED) {
3439 s7 = [s7, s8];
3440 s6 = s7;
3441 } else {
3442 peg$currPos = s6;
3443 s6 = peg$FAILED;
3444 }
3445 } else {
3446 peg$currPos = s6;
3447 s6 = peg$FAILED;
3448 }
3449 while (s6 !== peg$FAILED) {
3450 s5.push(s6);
3451 s6 = peg$currPos;
3452 s7 = peg$parse__();
3453 if (s7 !== peg$FAILED) {
3454 s8 = peg$parseexpr();
3455 if (s8 !== peg$FAILED) {
3456 s7 = [s7, s8];
3457 s6 = s7;
3458 } else {
3459 peg$currPos = s6;
3460 s6 = peg$FAILED;
3461 }
3462 } else {
3463 peg$currPos = s6;
3464 s6 = peg$FAILED;
3465 }
3466 }
3467 if (s5 !== peg$FAILED) {
3468 peg$savedPos = s2;
3469 s3 = peg$c223(s3, s4, s5);
3470 s2 = s3;
3471 } else {
3472 peg$currPos = s2;
3473 s2 = peg$FAILED;
3474 }
3475 } else {
3476 peg$currPos = s2;
3477 s2 = peg$FAILED;
3478 }
3479 } else {
3480 peg$currPos = s2;
3481 s2 = peg$FAILED;
3482 }
3483 if (s2 === peg$FAILED) {
3484 s2 = peg$currPos;
3485 s3 = peg$parselocal_type();
3486 if (s3 !== peg$FAILED) {
3487 if (input.charCodeAt(peg$currPos) === 46) {
3488 s4 = peg$c187;
3489 peg$currPos++;
3490 } else {
3491 s4 = peg$FAILED;
3492 if (peg$silentFails === 0) { peg$fail(peg$c188); }
3493 }
3494 if (s4 !== peg$FAILED) {
3495 if (input.substr(peg$currPos, 6) === peg$c218) {
3496 s5 = peg$c218;
3497 peg$currPos += 6;
3498 } else {
3499 s5 = peg$FAILED;
3500 if (peg$silentFails === 0) { peg$fail(peg$c219); }
3501 }
3502 if (s5 !== peg$FAILED) {
3503 s6 = peg$parse__();
3504 if (s6 !== peg$FAILED) {
3505 s7 = peg$parsevar();
3506 if (s7 !== peg$FAILED) {
3507 s8 = peg$parse__();
3508 if (s8 !== peg$FAILED) {
3509 s9 = peg$parseexpr();
3510 if (s9 !== peg$FAILED) {
3511 s10 = [];
3512 s11 = peg$currPos;
3513 s12 = peg$parse__();
3514 if (s12 !== peg$FAILED) {
3515 s13 = peg$parsecase();
3516 if (s13 !== peg$FAILED) {
3517 s12 = [s12, s13];
3518 s11 = s12;
3519 } else {
3520 peg$currPos = s11;
3521 s11 = peg$FAILED;
3522 }
3523 } else {
3524 peg$currPos = s11;
3525 s11 = peg$FAILED;
3526 }
3527 while (s11 !== peg$FAILED) {
3528 s10.push(s11);
3529 s11 = peg$currPos;
3530 s12 = peg$parse__();
3531 if (s12 !== peg$FAILED) {
3532 s13 = peg$parsecase();
3533 if (s13 !== peg$FAILED) {
3534 s12 = [s12, s13];
3535 s11 = s12;
3536 } else {
3537 peg$currPos = s11;
3538 s11 = peg$FAILED;
3539 }
3540 } else {
3541 peg$currPos = s11;
3542 s11 = peg$FAILED;
3543 }
3544 }
3545 if (s10 !== peg$FAILED) {
3546 s11 = peg$parse__();
3547 if (s11 !== peg$FAILED) {
3548 s12 = peg$parseexpr();
3549 if (s12 !== peg$FAILED) {
3550 peg$savedPos = s2;
3551 s3 = peg$c224(s3, s5, s7, s9, s10, s12);
3552 s2 = s3;
3553 } else {
3554 peg$currPos = s2;
3555 s2 = peg$FAILED;
3556 }
3557 } else {
3558 peg$currPos = s2;
3559 s2 = peg$FAILED;
3560 }
3561 } else {
3562 peg$currPos = s2;
3563 s2 = peg$FAILED;
3564 }
3565 } else {
3566 peg$currPos = s2;
3567 s2 = peg$FAILED;
3568 }
3569 } else {
3570 peg$currPos = s2;
3571 s2 = peg$FAILED;
3572 }
3573 } else {
3574 peg$currPos = s2;
3575 s2 = peg$FAILED;
3576 }
3577 } else {
3578 peg$currPos = s2;
3579 s2 = peg$FAILED;
3580 }
3581 } else {
3582 peg$currPos = s2;
3583 s2 = peg$FAILED;
3584 }
3585 } else {
3586 peg$currPos = s2;
3587 s2 = peg$FAILED;
3588 }
3589 } else {
3590 peg$currPos = s2;
3591 s2 = peg$FAILED;
3592 }
3593 if (s2 === peg$FAILED) {
3594 s2 = peg$currPos;
3595 if (input.substr(peg$currPos, 11) === peg$c225) {
3596 s3 = peg$c225;
3597 peg$currPos += 11;
3598 } else {
3599 s3 = peg$FAILED;
3600 if (peg$silentFails === 0) { peg$fail(peg$c226); }
3601 }
3602 if (s3 === peg$FAILED) {
3603 if (input.substr(peg$currPos, 4) === peg$c227) {
3604 s3 = peg$c227;
3605 peg$currPos += 4;
3606 } else {
3607 s3 = peg$FAILED;
3608 if (peg$silentFails === 0) { peg$fail(peg$c228); }
3609 }
3610 }
3611 if (s3 !== peg$FAILED) {
3612 s4 = peg$parse__();
3613 if (s4 !== peg$FAILED) {
3614 s5 = peg$parsevar();
3615 if (s5 !== peg$FAILED) {
3616 s6 = [];
3617 s7 = peg$currPos;
3618 s8 = peg$parse__();
3619 if (s8 !== peg$FAILED) {
3620 s9 = peg$parseexpr();
3621 if (s9 !== peg$FAILED) {
3622 s8 = [s8, s9];
3623 s7 = s8;
3624 } else {
3625 peg$currPos = s7;
3626 s7 = peg$FAILED;
3627 }
3628 } else {
3629 peg$currPos = s7;
3630 s7 = peg$FAILED;
3631 }
3632 while (s7 !== peg$FAILED) {
3633 s6.push(s7);
3634 s7 = peg$currPos;
3635 s8 = peg$parse__();
3636 if (s8 !== peg$FAILED) {
3637 s9 = peg$parseexpr();
3638 if (s9 !== peg$FAILED) {
3639 s8 = [s8, s9];
3640 s7 = s8;
3641 } else {
3642 peg$currPos = s7;
3643 s7 = peg$FAILED;
3644 }
3645 } else {
3646 peg$currPos = s7;
3647 s7 = peg$FAILED;
3648 }
3649 }
3650 if (s6 !== peg$FAILED) {
3651 peg$savedPos = s2;
3652 s3 = peg$c229(s3, s5, s6);
3653 s2 = s3;
3654 } else {
3655 peg$currPos = s2;
3656 s2 = peg$FAILED;
3657 }
3658 } else {
3659 peg$currPos = s2;
3660 s2 = peg$FAILED;
3661 }
3662 } else {
3663 peg$currPos = s2;
3664 s2 = peg$FAILED;
3665 }
3666 } else {
3667 peg$currPos = s2;
3668 s2 = peg$FAILED;
3669 }
3670 if (s2 === peg$FAILED) {
3671 s2 = peg$currPos;
3672 if (input.substr(peg$currPos, 13) === peg$c230) {
3673 s3 = peg$c230;
3674 peg$currPos += 13;
3675 } else {
3676 s3 = peg$FAILED;
3677 if (peg$silentFails === 0) { peg$fail(peg$c231); }
3678 }
3679 if (s3 !== peg$FAILED) {
3680 s4 = peg$parse__();
3681 if (s4 !== peg$FAILED) {
3682 s5 = peg$parsevar();
3683 if (s5 !== peg$FAILED) {
3684 s6 = peg$parse__();
3685 if (s6 !== peg$FAILED) {
3686 s7 = [];
3687 s8 = peg$currPos;
3688 s9 = peg$parse__();
3689 if (s9 !== peg$FAILED) {
3690 s10 = peg$parseexpr();
3691 if (s10 !== peg$FAILED) {
3692 s9 = [s9, s10];
3693 s8 = s9;
3694 } else {
3695 peg$currPos = s8;
3696 s8 = peg$FAILED;
3697 }
3698 } else {
3699 peg$currPos = s8;
3700 s8 = peg$FAILED;
3701 }
3702 if (s8 !== peg$FAILED) {
3703 while (s8 !== peg$FAILED) {
3704 s7.push(s8);
3705 s8 = peg$currPos;
3706 s9 = peg$parse__();
3707 if (s9 !== peg$FAILED) {
3708 s10 = peg$parseexpr();
3709 if (s10 !== peg$FAILED) {
3710 s9 = [s9, s10];
3711 s8 = s9;
3712 } else {
3713 peg$currPos = s8;
3714 s8 = peg$FAILED;
3715 }
3716 } else {
3717 peg$currPos = s8;
3718 s8 = peg$FAILED;
3719 }
3720 }
3721 } else {
3722 s7 = peg$FAILED;
3723 }
3724 if (s7 !== peg$FAILED) {
3725 peg$savedPos = s2;
3726 s3 = peg$c232(s3, s5, s7);
3727 s2 = s3;
3728 } else {
3729 peg$currPos = s2;
3730 s2 = peg$FAILED;
3731 }
3732 } else {
3733 peg$currPos = s2;
3734 s2 = peg$FAILED;
3735 }
3736 } else {
3737 peg$currPos = s2;
3738 s2 = peg$FAILED;
3739 }
3740 } else {
3741 peg$currPos = s2;
3742 s2 = peg$FAILED;
3743 }
3744 } else {
3745 peg$currPos = s2;
3746 s2 = peg$FAILED;
3747 }
3748 if (s2 === peg$FAILED) {
3749 s2 = peg$currPos;
3750 if (input.substr(peg$currPos, 6) === peg$c233) {
3751 s3 = peg$c233;
3752 peg$currPos += 6;
3753 } else {
3754 s3 = peg$FAILED;
3755 if (peg$silentFails === 0) { peg$fail(peg$c234); }
3756 }
3757 if (s3 !== peg$FAILED) {
3758 s4 = peg$currPos;
3759 s5 = peg$parse__();
3760 if (s5 !== peg$FAILED) {
3761 s6 = peg$parseexpr();
3762 if (s6 !== peg$FAILED) {
3763 s5 = [s5, s6];
3764 s4 = s5;
3765 } else {
3766 peg$currPos = s4;
3767 s4 = peg$FAILED;
3768 }
3769 } else {
3770 peg$currPos = s4;
3771 s4 = peg$FAILED;
3772 }
3773 if (s4 === peg$FAILED) {
3774 s4 = null;
3775 }
3776 if (s4 !== peg$FAILED) {
3777 peg$savedPos = s2;
3778 s3 = peg$c235(s3, s4);
3779 s2 = s3;
3780 } else {
3781 peg$currPos = s2;
3782 s2 = peg$FAILED;
3783 }
3784 } else {
3785 peg$currPos = s2;
3786 s2 = peg$FAILED;
3787 }
3788 if (s2 === peg$FAILED) {
3789 s2 = peg$currPos;
3790 if (input.substr(peg$currPos, 9) === peg$c236) {
3791 s3 = peg$c236;
3792 peg$currPos += 9;
3793 } else {
3794 s3 = peg$FAILED;
3795 if (peg$silentFails === 0) { peg$fail(peg$c237); }
3796 }
3797 if (s3 !== peg$FAILED) {
3798 s4 = peg$parse__();
3799 if (s4 !== peg$FAILED) {
3800 s5 = peg$parsevar();
3801 if (s5 !== peg$FAILED) {
3802 peg$savedPos = s2;
3803 s3 = peg$c238(s3, s5);
3804 s2 = s3;
3805 } else {
3806 peg$currPos = s2;
3807 s2 = peg$FAILED;
3808 }
3809 } else {
3810 peg$currPos = s2;
3811 s2 = peg$FAILED;
3812 }
3813 } else {
3814 peg$currPos = s2;
3815 s2 = peg$FAILED;
3816 }
3817 if (s2 === peg$FAILED) {
3818 s2 = peg$currPos;
3819 if (input.substr(peg$currPos, 9) === peg$c239) {
3820 s3 = peg$c239;
3821 peg$currPos += 9;
3822 } else {
3823 s3 = peg$FAILED;
3824 if (peg$silentFails === 0) { peg$fail(peg$c240); }
3825 }
3826 if (s3 !== peg$FAILED) {
3827 s4 = peg$parse__();
3828 if (s4 !== peg$FAILED) {
3829 s5 = peg$parsevar();
3830 if (s5 !== peg$FAILED) {
3831 s6 = peg$parse__();
3832 if (s6 !== peg$FAILED) {
3833 s7 = peg$parseexpr();
3834 if (s7 !== peg$FAILED) {
3835 peg$savedPos = s2;
3836 s3 = peg$c241(s3, s5, s7);
3837 s2 = s3;
3838 } else {
3839 peg$currPos = s2;
3840 s2 = peg$FAILED;
3841 }
3842 } else {
3843 peg$currPos = s2;
3844 s2 = peg$FAILED;
3845 }
3846 } else {
3847 peg$currPos = s2;
3848 s2 = peg$FAILED;
3849 }
3850 } else {
3851 peg$currPos = s2;
3852 s2 = peg$FAILED;
3853 }
3854 } else {
3855 peg$currPos = s2;
3856 s2 = peg$FAILED;
3857 }
3858 if (s2 === peg$FAILED) {
3859 s2 = peg$currPos;
3860 s3 = peg$parselocal_type();
3861 if (s3 !== peg$FAILED) {
3862 if (input.charCodeAt(peg$currPos) === 46) {
3863 s4 = peg$c187;
3864 peg$currPos++;
3865 } else {
3866 s4 = peg$FAILED;
3867 if (peg$silentFails === 0) { peg$fail(peg$c188); }
3868 }
3869 if (s4 !== peg$FAILED) {
3870 if (input.substr(peg$currPos, 4) === peg$c242) {
3871 s5 = peg$c242;
3872 peg$currPos += 4;
3873 } else {
3874 s5 = peg$FAILED;
3875 if (peg$silentFails === 0) { peg$fail(peg$c243); }
3876 }
3877 if (s5 !== peg$FAILED) {
3878 s6 = peg$currPos;
3879 if (input.charCodeAt(peg$currPos) === 56) {
3880 s7 = peg$c244;
3881 peg$currPos++;
3882 } else {
3883 s7 = peg$FAILED;
3884 if (peg$silentFails === 0) { peg$fail(peg$c245); }
3885 }
3886 if (s7 === peg$FAILED) {
3887 if (input.substr(peg$currPos, 2) === peg$c246) {
3888 s7 = peg$c246;
3889 peg$currPos += 2;
3890 } else {
3891 s7 = peg$FAILED;
3892 if (peg$silentFails === 0) { peg$fail(peg$c247); }
3893 }
3894 if (s7 === peg$FAILED) {
3895 if (input.substr(peg$currPos, 2) === peg$c248) {
3896 s7 = peg$c248;
3897 peg$currPos += 2;
3898 } else {
3899 s7 = peg$FAILED;
3900 if (peg$silentFails === 0) { peg$fail(peg$c249); }
3901 }
3902 }
3903 }
3904 if (s7 !== peg$FAILED) {
3905 s8 = peg$currPos;
3906 if (input.charCodeAt(peg$currPos) === 95) {
3907 s9 = peg$c250;
3908 peg$currPos++;
3909 } else {
3910 s9 = peg$FAILED;
3911 if (peg$silentFails === 0) { peg$fail(peg$c251); }
3912 }
3913 if (s9 !== peg$FAILED) {
3914 s10 = peg$parsesign();
3915 if (s10 !== peg$FAILED) {
3916 s9 = [s9, s10];
3917 s8 = s9;
3918 } else {
3919 peg$currPos = s8;
3920 s8 = peg$FAILED;
3921 }
3922 } else {
3923 peg$currPos = s8;
3924 s8 = peg$FAILED;
3925 }
3926 if (s8 === peg$FAILED) {
3927 s8 = null;
3928 }
3929 if (s8 !== peg$FAILED) {
3930 s7 = [s7, s8];
3931 s6 = s7;
3932 } else {
3933 peg$currPos = s6;
3934 s6 = peg$FAILED;
3935 }
3936 } else {
3937 peg$currPos = s6;
3938 s6 = peg$FAILED;
3939 }
3940 if (s6 === peg$FAILED) {
3941 s6 = null;
3942 }
3943 if (s6 !== peg$FAILED) {
3944 s7 = peg$currPos;
3945 s8 = peg$parse__();
3946 if (s8 !== peg$FAILED) {
3947 if (input.substr(peg$currPos, 7) === peg$c252) {
3948 s9 = peg$c252;
3949 peg$currPos += 7;
3950 } else {
3951 s9 = peg$FAILED;
3952 if (peg$silentFails === 0) { peg$fail(peg$c253); }
3953 }
3954 if (s9 !== peg$FAILED) {
3955 s10 = peg$parseoffset();
3956 if (s10 !== peg$FAILED) {
3957 s8 = [s8, s9, s10];
3958 s7 = s8;
3959 } else {
3960 peg$currPos = s7;
3961 s7 = peg$FAILED;
3962 }
3963 } else {
3964 peg$currPos = s7;
3965 s7 = peg$FAILED;
3966 }
3967 } else {
3968 peg$currPos = s7;
3969 s7 = peg$FAILED;
3970 }
3971 if (s7 === peg$FAILED) {
3972 s7 = null;
3973 }
3974 if (s7 !== peg$FAILED) {
3975 s8 = peg$currPos;
3976 s9 = peg$parse__();
3977 if (s9 !== peg$FAILED) {
3978 if (input.substr(peg$currPos, 6) === peg$c254) {
3979 s10 = peg$c254;
3980 peg$currPos += 6;
3981 } else {
3982 s10 = peg$FAILED;
3983 if (peg$silentFails === 0) { peg$fail(peg$c255); }
3984 }
3985 if (s10 !== peg$FAILED) {
3986 s11 = peg$parsealign();
3987 if (s11 !== peg$FAILED) {
3988 s9 = [s9, s10, s11];
3989 s8 = s9;
3990 } else {
3991 peg$currPos = s8;
3992 s8 = peg$FAILED;
3993 }
3994 } else {
3995 peg$currPos = s8;
3996 s8 = peg$FAILED;
3997 }
3998 } else {
3999 peg$currPos = s8;
4000 s8 = peg$FAILED;
4001 }
4002 if (s8 === peg$FAILED) {
4003 s8 = null;
4004 }
4005 if (s8 !== peg$FAILED) {
4006 s9 = peg$parse__();
4007 if (s9 !== peg$FAILED) {
4008 s10 = peg$parseexpr();
4009 if (s10 !== peg$FAILED) {
4010 peg$savedPos = s2;
4011 s3 = peg$c256(s3, s5, s6, s7, s8, s10);
4012 s2 = s3;
4013 } else {
4014 peg$currPos = s2;
4015 s2 = peg$FAILED;
4016 }
4017 } else {
4018 peg$currPos = s2;
4019 s2 = peg$FAILED;
4020 }
4021 } else {
4022 peg$currPos = s2;
4023 s2 = peg$FAILED;
4024 }
4025 } else {
4026 peg$currPos = s2;
4027 s2 = peg$FAILED;
4028 }
4029 } else {
4030 peg$currPos = s2;
4031 s2 = peg$FAILED;
4032 }
4033 } else {
4034 peg$currPos = s2;
4035 s2 = peg$FAILED;
4036 }
4037 } else {
4038 peg$currPos = s2;
4039 s2 = peg$FAILED;
4040 }
4041 } else {
4042 peg$currPos = s2;
4043 s2 = peg$FAILED;
4044 }
4045 if (s2 === peg$FAILED) {
4046 s2 = peg$currPos;
4047 s3 = peg$parselocal_type();
4048 if (s3 !== peg$FAILED) {
4049 if (input.charCodeAt(peg$currPos) === 46) {
4050 s4 = peg$c187;
4051 peg$currPos++;
4052 } else {
4053 s4 = peg$FAILED;
4054 if (peg$silentFails === 0) { peg$fail(peg$c188); }
4055 }
4056 if (s4 !== peg$FAILED) {
4057 if (input.substr(peg$currPos, 5) === peg$c257) {
4058 s5 = peg$c257;
4059 peg$currPos += 5;
4060 } else {
4061 s5 = peg$FAILED;
4062 if (peg$silentFails === 0) { peg$fail(peg$c258); }
4063 }
4064 if (s5 !== peg$FAILED) {
4065 if (input.charCodeAt(peg$currPos) === 56) {
4066 s6 = peg$c244;
4067 peg$currPos++;
4068 } else {
4069 s6 = peg$FAILED;
4070 if (peg$silentFails === 0) { peg$fail(peg$c245); }
4071 }
4072 if (s6 === peg$FAILED) {
4073 if (input.substr(peg$currPos, 2) === peg$c246) {
4074 s6 = peg$c246;
4075 peg$currPos += 2;
4076 } else {
4077 s6 = peg$FAILED;
4078 if (peg$silentFails === 0) { peg$fail(peg$c247); }
4079 }
4080 if (s6 === peg$FAILED) {
4081 if (input.substr(peg$currPos, 2) === peg$c248) {
4082 s6 = peg$c248;
4083 peg$currPos += 2;
4084 } else {
4085 s6 = peg$FAILED;
4086 if (peg$silentFails === 0) { peg$fail(peg$c249); }
4087 }
4088 }
4089 }
4090 if (s6 === peg$FAILED) {
4091 s6 = null;
4092 }
4093 if (s6 !== peg$FAILED) {
4094 s7 = peg$currPos;
4095 s8 = peg$parse__();
4096 if (s8 !== peg$FAILED) {
4097 if (input.substr(peg$currPos, 7) === peg$c252) {
4098 s9 = peg$c252;
4099 peg$currPos += 7;
4100 } else {
4101 s9 = peg$FAILED;
4102 if (peg$silentFails === 0) { peg$fail(peg$c253); }
4103 }
4104 if (s9 !== peg$FAILED) {
4105 s10 = peg$parseoffset();
4106 if (s10 !== peg$FAILED) {
4107 s8 = [s8, s9, s10];
4108 s7 = s8;
4109 } else {
4110 peg$currPos = s7;
4111 s7 = peg$FAILED;
4112 }
4113 } else {
4114 peg$currPos = s7;
4115 s7 = peg$FAILED;
4116 }
4117 } else {
4118 peg$currPos = s7;
4119 s7 = peg$FAILED;
4120 }
4121 if (s7 === peg$FAILED) {
4122 s7 = null;
4123 }
4124 if (s7 !== peg$FAILED) {
4125 s8 = peg$currPos;
4126 s9 = peg$parse__();
4127 if (s9 !== peg$FAILED) {
4128 if (input.substr(peg$currPos, 6) === peg$c254) {
4129 s10 = peg$c254;
4130 peg$currPos += 6;
4131 } else {
4132 s10 = peg$FAILED;
4133 if (peg$silentFails === 0) { peg$fail(peg$c255); }
4134 }
4135 if (s10 !== peg$FAILED) {
4136 s11 = peg$parsealign();
4137 if (s11 !== peg$FAILED) {
4138 s9 = [s9, s10, s11];
4139 s8 = s9;
4140 } else {
4141 peg$currPos = s8;
4142 s8 = peg$FAILED;
4143 }
4144 } else {
4145 peg$currPos = s8;
4146 s8 = peg$FAILED;
4147 }
4148 } else {
4149 peg$currPos = s8;
4150 s8 = peg$FAILED;
4151 }
4152 if (s8 === peg$FAILED) {
4153 s8 = null;
4154 }
4155 if (s8 !== peg$FAILED) {
4156 s9 = peg$parse__();
4157 if (s9 !== peg$FAILED) {
4158 s10 = peg$parseexpr();
4159 if (s10 !== peg$FAILED) {
4160 s11 = peg$parse__();
4161 if (s11 !== peg$FAILED) {
4162 s12 = peg$parseexpr();
4163 if (s12 !== peg$FAILED) {
4164 peg$savedPos = s2;
4165 s3 = peg$c259(s3, s5, s6, s7, s8, s10, s12);
4166 s2 = s3;
4167 } else {
4168 peg$currPos = s2;
4169 s2 = peg$FAILED;
4170 }
4171 } else {
4172 peg$currPos = s2;
4173 s2 = peg$FAILED;
4174 }
4175 } else {
4176 peg$currPos = s2;
4177 s2 = peg$FAILED;
4178 }
4179 } else {
4180 peg$currPos = s2;
4181 s2 = peg$FAILED;
4182 }
4183 } else {
4184 peg$currPos = s2;
4185 s2 = peg$FAILED;
4186 }
4187 } else {
4188 peg$currPos = s2;
4189 s2 = peg$FAILED;
4190 }
4191 } else {
4192 peg$currPos = s2;
4193 s2 = peg$FAILED;
4194 }
4195 } else {
4196 peg$currPos = s2;
4197 s2 = peg$FAILED;
4198 }
4199 } else {
4200 peg$currPos = s2;
4201 s2 = peg$FAILED;
4202 }
4203 } else {
4204 peg$currPos = s2;
4205 s2 = peg$FAILED;
4206 }
4207 if (s2 === peg$FAILED) {
4208 s2 = peg$currPos;
4209 if (input.substr(peg$currPos, 6) === peg$c260) {
4210 s3 = peg$c260;
4211 peg$currPos += 6;
4212 } else {
4213 s3 = peg$FAILED;
4214 if (peg$silentFails === 0) { peg$fail(peg$c261); }
4215 }
4216 if (s3 !== peg$FAILED) {
4217 s4 = peg$parse__();
4218 if (s4 !== peg$FAILED) {
4219 s5 = peg$parseexpr();
4220 if (s5 !== peg$FAILED) {
4221 s6 = peg$parse__();
4222 if (s6 !== peg$FAILED) {
4223 s7 = peg$parseexpr();
4224 if (s7 !== peg$FAILED) {
4225 s8 = peg$parse__();
4226 if (s8 !== peg$FAILED) {
4227 s9 = peg$parseexpr();
4228 if (s9 !== peg$FAILED) {
4229 peg$savedPos = s2;
4230 s3 = peg$c262(s3, s5, s7, s9);
4231 s2 = s3;
4232 } else {
4233 peg$currPos = s2;
4234 s2 = peg$FAILED;
4235 }
4236 } else {
4237 peg$currPos = s2;
4238 s2 = peg$FAILED;
4239 }
4240 } else {
4241 peg$currPos = s2;
4242 s2 = peg$FAILED;
4243 }
4244 } else {
4245 peg$currPos = s2;
4246 s2 = peg$FAILED;
4247 }
4248 } else {
4249 peg$currPos = s2;
4250 s2 = peg$FAILED;
4251 }
4252 } else {
4253 peg$currPos = s2;
4254 s2 = peg$FAILED;
4255 }
4256 } else {
4257 peg$currPos = s2;
4258 s2 = peg$FAILED;
4259 }
4260 if (s2 === peg$FAILED) {
4261 s2 = peg$currPos;
4262 s3 = peg$parselocal_type();
4263 if (s3 !== peg$FAILED) {
4264 if (input.charCodeAt(peg$currPos) === 46) {
4265 s4 = peg$c187;
4266 peg$currPos++;
4267 } else {
4268 s4 = peg$FAILED;
4269 if (peg$silentFails === 0) { peg$fail(peg$c188); }
4270 }
4271 if (s4 !== peg$FAILED) {
4272 s5 = peg$parsebinop();
4273 if (s5 !== peg$FAILED) {
4274 s6 = peg$parse__();
4275 if (s6 !== peg$FAILED) {
4276 s7 = peg$parseexpr();
4277 if (s7 !== peg$FAILED) {
4278 s8 = peg$parse__();
4279 if (s8 !== peg$FAILED) {
4280 s9 = peg$parseexpr();
4281 if (s9 !== peg$FAILED) {
4282 peg$savedPos = s2;
4283 s3 = peg$c263(s3, s5, s7, s9);
4284 s2 = s3;
4285 } else {
4286 peg$currPos = s2;
4287 s2 = peg$FAILED;
4288 }
4289 } else {
4290 peg$currPos = s2;
4291 s2 = peg$FAILED;
4292 }
4293 } else {
4294 peg$currPos = s2;
4295 s2 = peg$FAILED;
4296 }
4297 } else {
4298 peg$currPos = s2;
4299 s2 = peg$FAILED;
4300 }
4301 } else {
4302 peg$currPos = s2;
4303 s2 = peg$FAILED;
4304 }
4305 } else {
4306 peg$currPos = s2;
4307 s2 = peg$FAILED;
4308 }
4309 } else {
4310 peg$currPos = s2;
4311 s2 = peg$FAILED;
4312 }
4313 if (s2 === peg$FAILED) {
4314 s2 = peg$currPos;
4315 s3 = peg$parselocal_type();
4316 if (s3 !== peg$FAILED) {
4317 if (input.charCodeAt(peg$currPos) === 46) {
4318 s4 = peg$c187;
4319 peg$currPos++;
4320 } else {
4321 s4 = peg$FAILED;
4322 if (peg$silentFails === 0) { peg$fail(peg$c188); }
4323 }
4324 if (s4 !== peg$FAILED) {
4325 s5 = peg$parserelop();
4326 if (s5 !== peg$FAILED) {
4327 s6 = peg$parse__();
4328 if (s6 !== peg$FAILED) {
4329 s7 = peg$parseexpr();
4330 if (s7 !== peg$FAILED) {
4331 s8 = peg$parse__();
4332 if (s8 !== peg$FAILED) {
4333 s9 = peg$parseexpr();
4334 if (s9 !== peg$FAILED) {
4335 peg$savedPos = s2;
4336 s3 = peg$c264(s3, s5, s7, s9);
4337 s2 = s3;
4338 } else {
4339 peg$currPos = s2;
4340 s2 = peg$FAILED;
4341 }
4342 } else {
4343 peg$currPos = s2;
4344 s2 = peg$FAILED;
4345 }
4346 } else {
4347 peg$currPos = s2;
4348 s2 = peg$FAILED;
4349 }
4350 } else {
4351 peg$currPos = s2;
4352 s2 = peg$FAILED;
4353 }
4354 } else {
4355 peg$currPos = s2;
4356 s2 = peg$FAILED;
4357 }
4358 } else {
4359 peg$currPos = s2;
4360 s2 = peg$FAILED;
4361 }
4362 } else {
4363 peg$currPos = s2;
4364 s2 = peg$FAILED;
4365 }
4366 if (s2 === peg$FAILED) {
4367 s2 = peg$currPos;
4368 s3 = peg$parselocal_type();
4369 if (s3 !== peg$FAILED) {
4370 if (input.charCodeAt(peg$currPos) === 46) {
4371 s4 = peg$c187;
4372 peg$currPos++;
4373 } else {
4374 s4 = peg$FAILED;
4375 if (peg$silentFails === 0) { peg$fail(peg$c188); }
4376 }
4377 if (s4 !== peg$FAILED) {
4378 s5 = peg$parsecvtop();
4379 if (s5 !== peg$FAILED) {
4380 if (input.charCodeAt(peg$currPos) === 47) {
4381 s6 = peg$c265;
4382 peg$currPos++;
4383 } else {
4384 s6 = peg$FAILED;
4385 if (peg$silentFails === 0) { peg$fail(peg$c266); }
4386 }
4387 if (s6 !== peg$FAILED) {
4388 s7 = peg$parselocal_type();
4389 if (s7 !== peg$FAILED) {
4390 s8 = peg$parse__();
4391 if (s8 !== peg$FAILED) {
4392 s9 = peg$parseexpr();
4393 if (s9 !== peg$FAILED) {
4394 peg$savedPos = s2;
4395 s3 = peg$c267(s3, s5, s7, s9);
4396 s2 = s3;
4397 } else {
4398 peg$currPos = s2;
4399 s2 = peg$FAILED;
4400 }
4401 } else {
4402 peg$currPos = s2;
4403 s2 = peg$FAILED;
4404 }
4405 } else {
4406 peg$currPos = s2;
4407 s2 = peg$FAILED;
4408 }
4409 } else {
4410 peg$currPos = s2;
4411 s2 = peg$FAILED;
4412 }
4413 } else {
4414 peg$currPos = s2;
4415 s2 = peg$FAILED;
4416 }
4417 } else {
4418 peg$currPos = s2;
4419 s2 = peg$FAILED;
4420 }
4421 } else {
4422 peg$currPos = s2;
4423 s2 = peg$FAILED;
4424 }
4425 if (s2 === peg$FAILED) {
4426 s2 = peg$currPos;
4427 s3 = peg$parselocal_type();
4428 if (s3 !== peg$FAILED) {
4429 if (input.charCodeAt(peg$currPos) === 46) {
4430 s4 = peg$c187;
4431 peg$currPos++;
4432 } else {
4433 s4 = peg$FAILED;
4434 if (peg$silentFails === 0) { peg$fail(peg$c188); }
4435 }
4436 if (s4 !== peg$FAILED) {
4437 s5 = peg$parseunop();
4438 if (s5 !== peg$FAILED) {
4439 s6 = peg$parse__();
4440 if (s6 !== peg$FAILED) {
4441 s7 = peg$parseexpr();
4442 if (s7 !== peg$FAILED) {
4443 peg$savedPos = s2;
4444 s3 = peg$c268(s3, s5, s7);
4445 s2 = s3;
4446 } else {
4447 peg$currPos = s2;
4448 s2 = peg$FAILED;
4449 }
4450 } else {
4451 peg$currPos = s2;
4452 s2 = peg$FAILED;
4453 }
4454 } else {
4455 peg$currPos = s2;
4456 s2 = peg$FAILED;
4457 }
4458 } else {
4459 peg$currPos = s2;
4460 s2 = peg$FAILED;
4461 }
4462 } else {
4463 peg$currPos = s2;
4464 s2 = peg$FAILED;
4465 }
4466 if (s2 === peg$FAILED) {
4467 s2 = peg$currPos;
4468 if (input.substr(peg$currPos, 3) === peg$c269) {
4469 s3 = peg$c269;
4470 peg$currPos += 3;
4471 } else {
4472 s3 = peg$FAILED;
4473 if (peg$silentFails === 0) { peg$fail(peg$c270); }
4474 }
4475 if (s3 === peg$FAILED) {
4476 if (input.substr(peg$currPos, 9) === peg$c271) {
4477 s3 = peg$c271;
4478 peg$currPos += 9;
4479 } else {
4480 s3 = peg$FAILED;
4481 if (peg$silentFails === 0) { peg$fail(peg$c272); }
4482 }
4483 if (s3 === peg$FAILED) {
4484 if (input.substr(peg$currPos, 11) === peg$c273) {
4485 s3 = peg$c273;
4486 peg$currPos += 11;
4487 } else {
4488 s3 = peg$FAILED;
4489 if (peg$silentFails === 0) { peg$fail(peg$c274); }
4490 }
4491 if (s3 === peg$FAILED) {
4492 if (input.substr(peg$currPos, 14) === peg$c275) {
4493 s3 = peg$c275;
4494 peg$currPos += 14;
4495 } else {
4496 s3 = peg$FAILED;
4497 if (peg$silentFails === 0) { peg$fail(peg$c276); }
4498 }
4499 }
4500 }
4501 }
4502 if (s3 !== peg$FAILED) {
4503 peg$savedPos = s2;
4504 s3 = peg$c277(s3);
4505 }
4506 s2 = s3;
4507 if (s2 === peg$FAILED) {
4508 s2 = peg$currPos;
4509 if (input.substr(peg$currPos, 13) === peg$c278) {
4510 s3 = peg$c278;
4511 peg$currPos += 13;
4512 } else {
4513 s3 = peg$FAILED;
4514 if (peg$silentFails === 0) { peg$fail(peg$c279); }
4515 }
4516 if (s3 === peg$FAILED) {
4517 if (input.substr(peg$currPos, 11) === peg$c280) {
4518 s3 = peg$c280;
4519 peg$currPos += 11;
4520 } else {
4521 s3 = peg$FAILED;
4522 if (peg$silentFails === 0) { peg$fail(peg$c281); }
4523 }
4524 }
4525 if (s3 !== peg$FAILED) {
4526 s4 = peg$parse__();
4527 if (s4 !== peg$FAILED) {
4528 s5 = peg$parseexpr();
4529 if (s5 !== peg$FAILED) {
4530 peg$savedPos = s2;
4531 s3 = peg$c282(s3, s5);
4532 s2 = s3;
4533 } else {
4534 peg$currPos = s2;
4535 s2 = peg$FAILED;
4536 }
4537 } else {
4538 peg$currPos = s2;
4539 s2 = peg$FAILED;
4540 }
4541 } else {
4542 peg$currPos = s2;
4543 s2 = peg$FAILED;
4544 }
4545 }
4546 }
4547 }
4548 }
4549 }
4550 }
4551 }
4552 }
4553 }
4554 }
4555 }
4556 }
4557 }
4558 }
4559 }
4560 }
4561 }
4562 }
4563 }
4564 }
4565 }
4566 }
4567 }
4568 }
4569 }
4570 }
4571 if (s2 !== peg$FAILED) {
4572 s3 = peg$parse__();
4573 if (s3 !== peg$FAILED) {
4574 if (input.charCodeAt(peg$currPos) === 41) {
4575 s4 = peg$c183;
4576 peg$currPos++;
4577 } else {
4578 s4 = peg$FAILED;
4579 if (peg$silentFails === 0) { peg$fail(peg$c184); }
4580 }
4581 if (s4 !== peg$FAILED) {
4582 peg$savedPos = s0;
4583 s1 = peg$c283(s2);
4584 s0 = s1;
4585 } else {
4586 peg$currPos = s0;
4587 s0 = peg$FAILED;
4588 }
4589 } else {
4590 peg$currPos = s0;
4591 s0 = peg$FAILED;
4592 }
4593 } else {
4594 peg$currPos = s0;
4595 s0 = peg$FAILED;
4596 }
4597 } else {
4598 peg$currPos = s0;
4599 s0 = peg$FAILED;
4600 }
4601
4602 return s0;
4603 }
4604
4605 function peg$parseliteral() {
4606 var s0, s1, s2, s3, s4, s5;
4607
4608 s0 = peg$currPos;
4609 if (peg$c284.test(input.charAt(peg$currPos))) {
4610 s1 = input.charAt(peg$currPos);
4611 peg$currPos++;
4612 } else {
4613 s1 = peg$FAILED;
4614 if (peg$silentFails === 0) { peg$fail(peg$c285); }
4615 }
4616 if (s1 !== peg$FAILED) {
4617 s2 = [];
4618 s3 = peg$currPos;
4619 s4 = peg$currPos;
4620 peg$silentFails++;
4621 if (peg$c284.test(input.charAt(peg$currPos))) {
4622 s5 = input.charAt(peg$currPos);
4623 peg$currPos++;
4624 } else {
4625 s5 = peg$FAILED;
4626 if (peg$silentFails === 0) { peg$fail(peg$c285); }
4627 }
4628 peg$silentFails--;
4629 if (s5 === peg$FAILED) {
4630 s4 = void 0;
4631 } else {
4632 peg$currPos = s4;
4633 s4 = peg$FAILED;
4634 }
4635 if (s4 !== peg$FAILED) {
4636 if (input.length > peg$currPos) {
4637 s5 = input.charAt(peg$currPos);
4638 peg$currPos++;
4639 } else {
4640 s5 = peg$FAILED;
4641 if (peg$silentFails === 0) { peg$fail(peg$c21); }
4642 }
4643 if (s5 !== peg$FAILED) {
4644 s4 = [s4, s5];
4645 s3 = s4;
4646 } else {
4647 peg$currPos = s3;
4648 s3 = peg$FAILED;
4649 }
4650 } else {
4651 peg$currPos = s3;
4652 s3 = peg$FAILED;
4653 }
4654 while (s3 !== peg$FAILED) {
4655 s2.push(s3);
4656 s3 = peg$currPos;
4657 s4 = peg$currPos;
4658 peg$silentFails++;
4659 if (peg$c284.test(input.charAt(peg$currPos))) {
4660 s5 = input.charAt(peg$currPos);
4661 peg$currPos++;
4662 } else {
4663 s5 = peg$FAILED;
4664 if (peg$silentFails === 0) { peg$fail(peg$c285); }
4665 }
4666 peg$silentFails--;
4667 if (s5 === peg$FAILED) {
4668 s4 = void 0;
4669 } else {
4670 peg$currPos = s4;
4671 s4 = peg$FAILED;
4672 }
4673 if (s4 !== peg$FAILED) {
4674 if (input.length > peg$currPos) {
4675 s5 = input.charAt(peg$currPos);
4676 peg$currPos++;
4677 } else {
4678 s5 = peg$FAILED;
4679 if (peg$silentFails === 0) { peg$fail(peg$c21); }
4680 }
4681 if (s5 !== peg$FAILED) {
4682 s4 = [s4, s5];
4683 s3 = s4;
4684 } else {
4685 peg$currPos = s3;
4686 s3 = peg$FAILED;
4687 }
4688 } else {
4689 peg$currPos = s3;
4690 s3 = peg$FAILED;
4691 }
4692 }
4693 if (s2 !== peg$FAILED) {
4694 if (peg$c284.test(input.charAt(peg$currPos))) {
4695 s3 = input.charAt(peg$currPos);
4696 peg$currPos++;
4697 } else {
4698 s3 = peg$FAILED;
4699 if (peg$silentFails === 0) { peg$fail(peg$c285); }
4700 }
4701 if (s3 !== peg$FAILED) {
4702 peg$savedPos = s0;
4703 s1 = peg$c286(s2);
4704 s0 = s1;
4705 } else {
4706 peg$currPos = s0;
4707 s0 = peg$FAILED;
4708 }
4709 } else {
4710 peg$currPos = s0;
4711 s0 = peg$FAILED;
4712 }
4713 } else {
4714 peg$currPos = s0;
4715 s0 = peg$FAILED;
4716 }
4717
4718 return s0;
4719 }
4720
4721 function peg$parseparam() {
4722 var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
4723
4724 s0 = peg$currPos;
4725 if (input.charCodeAt(peg$currPos) === 40) {
4726 s1 = peg$c177;
4727 peg$currPos++;
4728 } else {
4729 s1 = peg$FAILED;
4730 if (peg$silentFails === 0) { peg$fail(peg$c178); }
4731 }
4732 if (s1 !== peg$FAILED) {
4733 if (input.substr(peg$currPos, 5) === peg$c287) {
4734 s2 = peg$c287;
4735 peg$currPos += 5;
4736 } else {
4737 s2 = peg$FAILED;
4738 if (peg$silentFails === 0) { peg$fail(peg$c288); }
4739 }
4740 if (s2 !== peg$FAILED) {
4741 s3 = [];
4742 s4 = peg$currPos;
4743 s5 = peg$parse__();
4744 if (s5 !== peg$FAILED) {
4745 s6 = peg$parselocal_type();
4746 if (s6 !== peg$FAILED) {
4747 s5 = [s5, s6];
4748 s4 = s5;
4749 } else {
4750 peg$currPos = s4;
4751 s4 = peg$FAILED;
4752 }
4753 } else {
4754 peg$currPos = s4;
4755 s4 = peg$FAILED;
4756 }
4757 while (s4 !== peg$FAILED) {
4758 s3.push(s4);
4759 s4 = peg$currPos;
4760 s5 = peg$parse__();
4761 if (s5 !== peg$FAILED) {
4762 s6 = peg$parselocal_type();
4763 if (s6 !== peg$FAILED) {
4764 s5 = [s5, s6];
4765 s4 = s5;
4766 } else {
4767 peg$currPos = s4;
4768 s4 = peg$FAILED;
4769 }
4770 } else {
4771 peg$currPos = s4;
4772 s4 = peg$FAILED;
4773 }
4774 }
4775 if (s3 !== peg$FAILED) {
4776 s4 = peg$parse__();
4777 if (s4 !== peg$FAILED) {
4778 if (input.charCodeAt(peg$currPos) === 41) {
4779 s5 = peg$c183;
4780 peg$currPos++;
4781 } else {
4782 s5 = peg$FAILED;
4783 if (peg$silentFails === 0) { peg$fail(peg$c184); }
4784 }
4785 if (s5 !== peg$FAILED) {
4786 peg$savedPos = s0;
4787 s1 = peg$c289(s2, s3);
4788 s0 = s1;
4789 } else {
4790 peg$currPos = s0;
4791 s0 = peg$FAILED;
4792 }
4793 } else {
4794 peg$currPos = s0;
4795 s0 = peg$FAILED;
4796 }
4797 } else {
4798 peg$currPos = s0;
4799 s0 = peg$FAILED;
4800 }
4801 } else {
4802 peg$currPos = s0;
4803 s0 = peg$FAILED;
4804 }
4805 } else {
4806 peg$currPos = s0;
4807 s0 = peg$FAILED;
4808 }
4809 if (s0 === peg$FAILED) {
4810 s0 = peg$currPos;
4811 if (input.charCodeAt(peg$currPos) === 40) {
4812 s1 = peg$c177;
4813 peg$currPos++;
4814 } else {
4815 s1 = peg$FAILED;
4816 if (peg$silentFails === 0) { peg$fail(peg$c178); }
4817 }
4818 if (s1 !== peg$FAILED) {
4819 if (input.substr(peg$currPos, 5) === peg$c287) {
4820 s2 = peg$c287;
4821 peg$currPos += 5;
4822 } else {
4823 s2 = peg$FAILED;
4824 if (peg$silentFails === 0) { peg$fail(peg$c288); }
4825 }
4826 if (s2 !== peg$FAILED) {
4827 s3 = peg$parse__();
4828 if (s3 !== peg$FAILED) {
4829 if (input.charCodeAt(peg$currPos) === 36) {
4830 s4 = peg$c174;
4831 peg$currPos++;
4832 } else {
4833 s4 = peg$FAILED;
4834 if (peg$silentFails === 0) { peg$fail(peg$c175); }
4835 }
4836 if (s4 !== peg$FAILED) {
4837 s5 = peg$parsename();
4838 if (s5 !== peg$FAILED) {
4839 s6 = peg$parse__();
4840 if (s6 !== peg$FAILED) {
4841 s7 = peg$parselocal_type();
4842 if (s7 !== peg$FAILED) {
4843 s8 = peg$parse__();
4844 if (s8 !== peg$FAILED) {
4845 if (input.charCodeAt(peg$currPos) === 41) {
4846 s9 = peg$c183;
4847 peg$currPos++;
4848 } else {
4849 s9 = peg$FAILED;
4850 if (peg$silentFails === 0) { peg$fail(peg$c184); }
4851 }
4852 if (s9 !== peg$FAILED) {
4853 peg$savedPos = s0;
4854 s1 = peg$c290(s2, s5, s7);
4855 s0 = s1;
4856 } else {
4857 peg$currPos = s0;
4858 s0 = peg$FAILED;
4859 }
4860 } else {
4861 peg$currPos = s0;
4862 s0 = peg$FAILED;
4863 }
4864 } else {
4865 peg$currPos = s0;
4866 s0 = peg$FAILED;
4867 }
4868 } else {
4869 peg$currPos = s0;
4870 s0 = peg$FAILED;
4871 }
4872 } else {
4873 peg$currPos = s0;
4874 s0 = peg$FAILED;
4875 }
4876 } else {
4877 peg$currPos = s0;
4878 s0 = peg$FAILED;
4879 }
4880 } else {
4881 peg$currPos = s0;
4882 s0 = peg$FAILED;
4883 }
4884 } else {
4885 peg$currPos = s0;
4886 s0 = peg$FAILED;
4887 }
4888 } else {
4889 peg$currPos = s0;
4890 s0 = peg$FAILED;
4891 }
4892 }
4893
4894 return s0;
4895 }
4896
4897 function peg$parselocal() {
4898 var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
4899
4900 s0 = peg$currPos;
4901 if (input.charCodeAt(peg$currPos) === 40) {
4902 s1 = peg$c177;
4903 peg$currPos++;
4904 } else {
4905 s1 = peg$FAILED;
4906 if (peg$silentFails === 0) { peg$fail(peg$c178); }
4907 }
4908 if (s1 !== peg$FAILED) {
4909 if (input.substr(peg$currPos, 5) === peg$c291) {
4910 s2 = peg$c291;
4911 peg$currPos += 5;
4912 } else {
4913 s2 = peg$FAILED;
4914 if (peg$silentFails === 0) { peg$fail(peg$c292); }
4915 }
4916 if (s2 !== peg$FAILED) {
4917 s3 = [];
4918 s4 = peg$currPos;
4919 s5 = peg$parse__();
4920 if (s5 !== peg$FAILED) {
4921 s6 = peg$parselocal_type();
4922 if (s6 !== peg$FAILED) {
4923 s5 = [s5, s6];
4924 s4 = s5;
4925 } else {
4926 peg$currPos = s4;
4927 s4 = peg$FAILED;
4928 }
4929 } else {
4930 peg$currPos = s4;
4931 s4 = peg$FAILED;
4932 }
4933 while (s4 !== peg$FAILED) {
4934 s3.push(s4);
4935 s4 = peg$currPos;
4936 s5 = peg$parse__();
4937 if (s5 !== peg$FAILED) {
4938 s6 = peg$parselocal_type();
4939 if (s6 !== peg$FAILED) {
4940 s5 = [s5, s6];
4941 s4 = s5;
4942 } else {
4943 peg$currPos = s4;
4944 s4 = peg$FAILED;
4945 }
4946 } else {
4947 peg$currPos = s4;
4948 s4 = peg$FAILED;
4949 }
4950 }
4951 if (s3 !== peg$FAILED) {
4952 s4 = peg$parse__();
4953 if (s4 !== peg$FAILED) {
4954 if (input.charCodeAt(peg$currPos) === 41) {
4955 s5 = peg$c183;
4956 peg$currPos++;
4957 } else {
4958 s5 = peg$FAILED;
4959 if (peg$silentFails === 0) { peg$fail(peg$c184); }
4960 }
4961 if (s5 !== peg$FAILED) {
4962 peg$savedPos = s0;
4963 s1 = peg$c289(s2, s3);
4964 s0 = s1;
4965 } else {
4966 peg$currPos = s0;
4967 s0 = peg$FAILED;
4968 }
4969 } else {
4970 peg$currPos = s0;
4971 s0 = peg$FAILED;
4972 }
4973 } else {
4974 peg$currPos = s0;
4975 s0 = peg$FAILED;
4976 }
4977 } else {
4978 peg$currPos = s0;
4979 s0 = peg$FAILED;
4980 }
4981 } else {
4982 peg$currPos = s0;
4983 s0 = peg$FAILED;
4984 }
4985 if (s0 === peg$FAILED) {
4986 s0 = peg$currPos;
4987 if (input.charCodeAt(peg$currPos) === 40) {
4988 s1 = peg$c177;
4989 peg$currPos++;
4990 } else {
4991 s1 = peg$FAILED;
4992 if (peg$silentFails === 0) { peg$fail(peg$c178); }
4993 }
4994 if (s1 !== peg$FAILED) {
4995 if (input.substr(peg$currPos, 5) === peg$c291) {
4996 s2 = peg$c291;
4997 peg$currPos += 5;
4998 } else {
4999 s2 = peg$FAILED;
5000 if (peg$silentFails === 0) { peg$fail(peg$c292); }
5001 }
5002 if (s2 !== peg$FAILED) {
5003 s3 = peg$parse__();
5004 if (s3 !== peg$FAILED) {
5005 if (input.charCodeAt(peg$currPos) === 36) {
5006 s4 = peg$c174;
5007 peg$currPos++;
5008 } else {
5009 s4 = peg$FAILED;
5010 if (peg$silentFails === 0) { peg$fail(peg$c175); }
5011 }
5012 if (s4 !== peg$FAILED) {
5013 s5 = peg$parsename();
5014 if (s5 !== peg$FAILED) {
5015 s6 = peg$parse__();
5016 if (s6 !== peg$FAILED) {
5017 s7 = peg$parselocal_type();
5018 if (s7 !== peg$FAILED) {
5019 s8 = peg$parse__();
5020 if (s8 !== peg$FAILED) {
5021 if (input.charCodeAt(peg$currPos) === 41) {
5022 s9 = peg$c183;
5023 peg$currPos++;
5024 } else {
5025 s9 = peg$FAILED;
5026 if (peg$silentFails === 0) { peg$fail(peg$c184); }
5027 }
5028 if (s9 !== peg$FAILED) {
5029 peg$savedPos = s0;
5030 s1 = peg$c290(s2, s5, s7);
5031 s0 = s1;
5032 } else {
5033 peg$currPos = s0;
5034 s0 = peg$FAILED;
5035 }
5036 } else {
5037 peg$currPos = s0;
5038 s0 = peg$FAILED;
5039 }
5040 } else {
5041 peg$currPos = s0;
5042 s0 = peg$FAILED;
5043 }
5044 } else {
5045 peg$currPos = s0;
5046 s0 = peg$FAILED;
5047 }
5048 } else {
5049 peg$currPos = s0;
5050 s0 = peg$FAILED;
5051 }
5052 } else {
5053 peg$currPos = s0;
5054 s0 = peg$FAILED;
5055 }
5056 } else {
5057 peg$currPos = s0;
5058 s0 = peg$FAILED;
5059 }
5060 } else {
5061 peg$currPos = s0;
5062 s0 = peg$FAILED;
5063 }
5064 } else {
5065 peg$currPos = s0;
5066 s0 = peg$FAILED;
5067 }
5068 }
5069
5070 return s0;
5071 }
5072
5073 function peg$parseresult() {
5074 var s0, s1, s2, s3, s4, s5, s6;
5075
5076 s0 = peg$currPos;
5077 if (input.charCodeAt(peg$currPos) === 40) {
5078 s1 = peg$c177;
5079 peg$currPos++;
5080 } else {
5081 s1 = peg$FAILED;
5082 if (peg$silentFails === 0) { peg$fail(peg$c178); }
5083 }
5084 if (s1 !== peg$FAILED) {
5085 if (input.substr(peg$currPos, 6) === peg$c293) {
5086 s2 = peg$c293;
5087 peg$currPos += 6;
5088 } else {
5089 s2 = peg$FAILED;
5090 if (peg$silentFails === 0) { peg$fail(peg$c294); }
5091 }
5092 if (s2 !== peg$FAILED) {
5093 s3 = peg$parse__();
5094 if (s3 !== peg$FAILED) {
5095 s4 = peg$parselocal_type();
5096 if (s4 !== peg$FAILED) {
5097 s5 = peg$parse__();
5098 if (s5 !== peg$FAILED) {
5099 if (input.charCodeAt(peg$currPos) === 41) {
5100 s6 = peg$c183;
5101 peg$currPos++;
5102 } else {
5103 s6 = peg$FAILED;
5104 if (peg$silentFails === 0) { peg$fail(peg$c184); }
5105 }
5106 if (s6 !== peg$FAILED) {
5107 peg$savedPos = s0;
5108 s1 = peg$c295(s2, s4);
5109 s0 = s1;
5110 } else {
5111 peg$currPos = s0;
5112 s0 = peg$FAILED;
5113 }
5114 } else {
5115 peg$currPos = s0;
5116 s0 = peg$FAILED;
5117 }
5118 } else {
5119 peg$currPos = s0;
5120 s0 = peg$FAILED;
5121 }
5122 } else {
5123 peg$currPos = s0;
5124 s0 = peg$FAILED;
5125 }
5126 } else {
5127 peg$currPos = s0;
5128 s0 = peg$FAILED;
5129 }
5130 } else {
5131 peg$currPos = s0;
5132 s0 = peg$FAILED;
5133 }
5134
5135 return s0;
5136 }
5137
5138 function peg$parsesegment() {
5139 var s0, s1, s2, s3, s4, s5;
5140
5141 s0 = peg$currPos;
5142 if (input.substr(peg$currPos, 7) === peg$c296) {
5143 s1 = peg$c296;
5144 peg$currPos += 7;
5145 } else {
5146 s1 = peg$FAILED;
5147 if (peg$silentFails === 0) { peg$fail(peg$c297); }
5148 }
5149 if (s1 !== peg$FAILED) {
5150 s2 = peg$parse__();
5151 if (s2 !== peg$FAILED) {
5152 s3 = peg$parseint();
5153 if (s3 !== peg$FAILED) {
5154 s4 = peg$parse__();
5155 if (s4 !== peg$FAILED) {
5156 s5 = peg$parseliteral();
5157 if (s5 !== peg$FAILED) {
5158 peg$savedPos = s0;
5159 s1 = peg$c298(s1, s3, s5);
5160 s0 = s1;
5161 } else {
5162 peg$currPos = s0;
5163 s0 = peg$FAILED;
5164 }
5165 } else {
5166 peg$currPos = s0;
5167 s0 = peg$FAILED;
5168 }
5169 } else {
5170 peg$currPos = s0;
5171 s0 = peg$FAILED;
5172 }
5173 } else {
5174 peg$currPos = s0;
5175 s0 = peg$FAILED;
5176 }
5177 } else {
5178 peg$currPos = s0;
5179 s0 = peg$FAILED;
5180 }
5181
5182 return s0;
5183 }
5184
5185 function peg$parsefunc_type() {
5186 var s0, s1, s2, s3, s4, s5, s6;
5187
5188 s0 = peg$currPos;
5189 if (input.charCodeAt(peg$currPos) === 40) {
5190 s1 = peg$c177;
5191 peg$currPos++;
5192 } else {
5193 s1 = peg$FAILED;
5194 if (peg$silentFails === 0) { peg$fail(peg$c178); }
5195 }
5196 if (s1 !== peg$FAILED) {
5197 if (input.substr(peg$currPos, 4) === peg$c299) {
5198 s2 = peg$c299;
5199 peg$currPos += 4;
5200 } else {
5201 s2 = peg$FAILED;
5202 if (peg$silentFails === 0) { peg$fail(peg$c300); }
5203 }
5204 if (s2 !== peg$FAILED) {
5205 s3 = peg$parse__();
5206 if (s3 !== peg$FAILED) {
5207 s4 = peg$parsevar();
5208 if (s4 !== peg$FAILED) {
5209 s5 = peg$parse__();
5210 if (s5 !== peg$FAILED) {
5211 if (input.charCodeAt(peg$currPos) === 41) {
5212 s6 = peg$c183;
5213 peg$currPos++;
5214 } else {
5215 s6 = peg$FAILED;
5216 if (peg$silentFails === 0) { peg$fail(peg$c184); }
5217 }
5218 if (s6 !== peg$FAILED) {
5219 peg$savedPos = s0;
5220 s1 = peg$c301(s2, s4);
5221 s0 = s1;
5222 } else {
5223 peg$currPos = s0;
5224 s0 = peg$FAILED;
5225 }
5226 } else {
5227 peg$currPos = s0;
5228 s0 = peg$FAILED;
5229 }
5230 } else {
5231 peg$currPos = s0;
5232 s0 = peg$FAILED;
5233 }
5234 } else {
5235 peg$currPos = s0;
5236 s0 = peg$FAILED;
5237 }
5238 } else {
5239 peg$currPos = s0;
5240 s0 = peg$FAILED;
5241 }
5242 } else {
5243 peg$currPos = s0;
5244 s0 = peg$FAILED;
5245 }
5246
5247 return s0;
5248 }
5249
5250 function peg$parsefunc() {
5251 var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;
5252
5253 s0 = peg$currPos;
5254 if (input.substr(peg$currPos, 4) === peg$c302) {
5255 s1 = peg$c302;
5256 peg$currPos += 4;
5257 } else {
5258 s1 = peg$FAILED;
5259 if (peg$silentFails === 0) { peg$fail(peg$c303); }
5260 }
5261 if (s1 !== peg$FAILED) {
5262 s2 = peg$currPos;
5263 s3 = peg$parse__();
5264 if (s3 !== peg$FAILED) {
5265 s4 = peg$parsevar();
5266 if (s4 !== peg$FAILED) {
5267 s3 = [s3, s4];
5268 s2 = s3;
5269 } else {
5270 peg$currPos = s2;
5271 s2 = peg$FAILED;
5272 }
5273 } else {
5274 peg$currPos = s2;
5275 s2 = peg$FAILED;
5276 }
5277 if (s2 === peg$FAILED) {
5278 s2 = null;
5279 }
5280 if (s2 !== peg$FAILED) {
5281 s3 = peg$currPos;
5282 s4 = peg$parse__();
5283 if (s4 !== peg$FAILED) {
5284 s5 = peg$parsefunc_type();
5285 if (s5 !== peg$FAILED) {
5286 s4 = [s4, s5];
5287 s3 = s4;
5288 } else {
5289 peg$currPos = s3;
5290 s3 = peg$FAILED;
5291 }
5292 } else {
5293 peg$currPos = s3;
5294 s3 = peg$FAILED;
5295 }
5296 if (s3 === peg$FAILED) {
5297 s3 = null;
5298 }
5299 if (s3 !== peg$FAILED) {
5300 s4 = [];
5301 s5 = peg$currPos;
5302 s6 = peg$parse__();
5303 if (s6 !== peg$FAILED) {
5304 s7 = peg$parseparam();
5305 if (s7 !== peg$FAILED) {
5306 s6 = [s6, s7];
5307 s5 = s6;
5308 } else {
5309 peg$currPos = s5;
5310 s5 = peg$FAILED;
5311 }
5312 } else {
5313 peg$currPos = s5;
5314 s5 = peg$FAILED;
5315 }
5316 while (s5 !== peg$FAILED) {
5317 s4.push(s5);
5318 s5 = peg$currPos;
5319 s6 = peg$parse__();
5320 if (s6 !== peg$FAILED) {
5321 s7 = peg$parseparam();
5322 if (s7 !== peg$FAILED) {
5323 s6 = [s6, s7];
5324 s5 = s6;
5325 } else {
5326 peg$currPos = s5;
5327 s5 = peg$FAILED;
5328 }
5329 } else {
5330 peg$currPos = s5;
5331 s5 = peg$FAILED;
5332 }
5333 }
5334 if (s4 !== peg$FAILED) {
5335 s5 = peg$currPos;
5336 s6 = peg$parse__();
5337 if (s6 !== peg$FAILED) {
5338 s7 = peg$parseresult();
5339 if (s7 !== peg$FAILED) {
5340 s6 = [s6, s7];
5341 s5 = s6;
5342 } else {
5343 peg$currPos = s5;
5344 s5 = peg$FAILED;
5345 }
5346 } else {
5347 peg$currPos = s5;
5348 s5 = peg$FAILED;
5349 }
5350 if (s5 === peg$FAILED) {
5351 s5 = null;
5352 }
5353 if (s5 !== peg$FAILED) {
5354 s6 = [];
5355 s7 = peg$currPos;
5356 s8 = peg$parse__();
5357 if (s8 !== peg$FAILED) {
5358 s9 = peg$parselocal();
5359 if (s9 !== peg$FAILED) {
5360 s8 = [s8, s9];
5361 s7 = s8;
5362 } else {
5363 peg$currPos = s7;
5364 s7 = peg$FAILED;
5365 }
5366 } else {
5367 peg$currPos = s7;
5368 s7 = peg$FAILED;
5369 }
5370 while (s7 !== peg$FAILED) {
5371 s6.push(s7);
5372 s7 = peg$currPos;
5373 s8 = peg$parse__();
5374 if (s8 !== peg$FAILED) {
5375 s9 = peg$parselocal();
5376 if (s9 !== peg$FAILED) {
5377 s8 = [s8, s9];
5378 s7 = s8;
5379 } else {
5380 peg$currPos = s7;
5381 s7 = peg$FAILED;
5382 }
5383 } else {
5384 peg$currPos = s7;
5385 s7 = peg$FAILED;
5386 }
5387 }
5388 if (s6 !== peg$FAILED) {
5389 s7 = [];
5390 s8 = peg$currPos;
5391 s9 = peg$parse__();
5392 if (s9 !== peg$FAILED) {
5393 s10 = peg$parseexpr();
5394 if (s10 !== peg$FAILED) {
5395 s9 = [s9, s10];
5396 s8 = s9;
5397 } else {
5398 peg$currPos = s8;
5399 s8 = peg$FAILED;
5400 }
5401 } else {
5402 peg$currPos = s8;
5403 s8 = peg$FAILED;
5404 }
5405 while (s8 !== peg$FAILED) {
5406 s7.push(s8);
5407 s8 = peg$currPos;
5408 s9 = peg$parse__();
5409 if (s9 !== peg$FAILED) {
5410 s10 = peg$parseexpr();
5411 if (s10 !== peg$FAILED) {
5412 s9 = [s9, s10];
5413 s8 = s9;
5414 } else {
5415 peg$currPos = s8;
5416 s8 = peg$FAILED;
5417 }
5418 } else {
5419 peg$currPos = s8;
5420 s8 = peg$FAILED;
5421 }
5422 }
5423 if (s7 !== peg$FAILED) {
5424 peg$savedPos = s0;
5425 s1 = peg$c304(s1, s2, s3, s4, s5, s6, s7);
5426 s0 = s1;
5427 } else {
5428 peg$currPos = s0;
5429 s0 = peg$FAILED;
5430 }
5431 } else {
5432 peg$currPos = s0;
5433 s0 = peg$FAILED;
5434 }
5435 } else {
5436 peg$currPos = s0;
5437 s0 = peg$FAILED;
5438 }
5439 } else {
5440 peg$currPos = s0;
5441 s0 = peg$FAILED;
5442 }
5443 } else {
5444 peg$currPos = s0;
5445 s0 = peg$FAILED;
5446 }
5447 } else {
5448 peg$currPos = s0;
5449 s0 = peg$FAILED;
5450 }
5451 } else {
5452 peg$currPos = s0;
5453 s0 = peg$FAILED;
5454 }
5455
5456 return s0;
5457 }
5458
5459 function peg$parse_start() {
5460 var s0, s1, s2, s3;
5461
5462 s0 = peg$currPos;
5463 if (input.substr(peg$currPos, 5) === peg$c305) {
5464 s1 = peg$c305;
5465 peg$currPos += 5;
5466 } else {
5467 s1 = peg$FAILED;
5468 if (peg$silentFails === 0) { peg$fail(peg$c306); }
5469 }
5470 if (s1 !== peg$FAILED) {
5471 s2 = peg$parse__();
5472 if (s2 !== peg$FAILED) {
5473 s3 = peg$parsevar();
5474 if (s3 !== peg$FAILED) {
5475 peg$savedPos = s0;
5476 s1 = peg$c301(s1, s3);
5477 s0 = s1;
5478 } else {
5479 peg$currPos = s0;
5480 s0 = peg$FAILED;
5481 }
5482 } else {
5483 peg$currPos = s0;
5484 s0 = peg$FAILED;
5485 }
5486 } else {
5487 peg$currPos = s0;
5488 s0 = peg$FAILED;
5489 }
5490
5491 return s0;
5492 }
5493
5494 function peg$parseparam_def() {
5495 var s0, s1, s2, s3, s4, s5, s6;
5496
5497 s0 = peg$currPos;
5498 if (input.charCodeAt(peg$currPos) === 40) {
5499 s1 = peg$c177;
5500 peg$currPos++;
5501 } else {
5502 s1 = peg$FAILED;
5503 if (peg$silentFails === 0) { peg$fail(peg$c178); }
5504 }
5505 if (s1 !== peg$FAILED) {
5506 if (input.substr(peg$currPos, 5) === peg$c287) {
5507 s2 = peg$c287;
5508 peg$currPos += 5;
5509 } else {
5510 s2 = peg$FAILED;
5511 if (peg$silentFails === 0) { peg$fail(peg$c288); }
5512 }
5513 if (s2 !== peg$FAILED) {
5514 s3 = [];
5515 s4 = peg$currPos;
5516 s5 = peg$parse__();
5517 if (s5 !== peg$FAILED) {
5518 s6 = peg$parselocal_type();
5519 if (s6 !== peg$FAILED) {
5520 s5 = [s5, s6];
5521 s4 = s5;
5522 } else {
5523 peg$currPos = s4;
5524 s4 = peg$FAILED;
5525 }
5526 } else {
5527 peg$currPos = s4;
5528 s4 = peg$FAILED;
5529 }
5530 while (s4 !== peg$FAILED) {
5531 s3.push(s4);
5532 s4 = peg$currPos;
5533 s5 = peg$parse__();
5534 if (s5 !== peg$FAILED) {
5535 s6 = peg$parselocal_type();
5536 if (s6 !== peg$FAILED) {
5537 s5 = [s5, s6];
5538 s4 = s5;
5539 } else {
5540 peg$currPos = s4;
5541 s4 = peg$FAILED;
5542 }
5543 } else {
5544 peg$currPos = s4;
5545 s4 = peg$FAILED;
5546 }
5547 }
5548 if (s3 !== peg$FAILED) {
5549 s4 = peg$parse__();
5550 if (s4 !== peg$FAILED) {
5551 if (input.charCodeAt(peg$currPos) === 41) {
5552 s5 = peg$c183;
5553 peg$currPos++;
5554 } else {
5555 s5 = peg$FAILED;
5556 if (peg$silentFails === 0) { peg$fail(peg$c184); }
5557 }
5558 if (s5 !== peg$FAILED) {
5559 peg$savedPos = s0;
5560 s1 = peg$c307(s2, s3);
5561 s0 = s1;
5562 } else {
5563 peg$currPos = s0;
5564 s0 = peg$FAILED;
5565 }
5566 } else {
5567 peg$currPos = s0;
5568 s0 = peg$FAILED;
5569 }
5570 } else {
5571 peg$currPos = s0;
5572 s0 = peg$FAILED;
5573 }
5574 } else {
5575 peg$currPos = s0;
5576 s0 = peg$FAILED;
5577 }
5578 } else {
5579 peg$currPos = s0;
5580 s0 = peg$FAILED;
5581 }
5582
5583 return s0;
5584 }
5585
5586 function peg$parseresult_def() {
5587 var s0, s1, s2, s3, s4, s5, s6;
5588
5589 s0 = peg$currPos;
5590 if (input.charCodeAt(peg$currPos) === 40) {
5591 s1 = peg$c177;
5592 peg$currPos++;
5593 } else {
5594 s1 = peg$FAILED;
5595 if (peg$silentFails === 0) { peg$fail(peg$c178); }
5596 }
5597 if (s1 !== peg$FAILED) {
5598 if (input.substr(peg$currPos, 6) === peg$c293) {
5599 s2 = peg$c293;
5600 peg$currPos += 6;
5601 } else {
5602 s2 = peg$FAILED;
5603 if (peg$silentFails === 0) { peg$fail(peg$c294); }
5604 }
5605 if (s2 !== peg$FAILED) {
5606 s3 = peg$parse__();
5607 if (s3 !== peg$FAILED) {
5608 s4 = peg$parselocal_type();
5609 if (s4 !== peg$FAILED) {
5610 s5 = peg$parse__();
5611 if (s5 !== peg$FAILED) {
5612 if (input.charCodeAt(peg$currPos) === 41) {
5613 s6 = peg$c183;
5614 peg$currPos++;
5615 } else {
5616 s6 = peg$FAILED;
5617 if (peg$silentFails === 0) { peg$fail(peg$c184); }
5618 }
5619 if (s6 !== peg$FAILED) {
5620 peg$savedPos = s0;
5621 s1 = peg$c308(s2, s4);
5622 s0 = s1;
5623 } else {
5624 peg$currPos = s0;
5625 s0 = peg$FAILED;
5626 }
5627 } else {
5628 peg$currPos = s0;
5629 s0 = peg$FAILED;
5630 }
5631 } else {
5632 peg$currPos = s0;
5633 s0 = peg$FAILED;
5634 }
5635 } else {
5636 peg$currPos = s0;
5637 s0 = peg$FAILED;
5638 }
5639 } else {
5640 peg$currPos = s0;
5641 s0 = peg$FAILED;
5642 }
5643 } else {
5644 peg$currPos = s0;
5645 s0 = peg$FAILED;
5646 }
5647
5648 return s0;
5649 }
5650
5651 function peg$parsefunc_def() {
5652 var s0, s1, s2, s3, s4, s5, s6;
5653
5654 s0 = peg$currPos;
5655 if (input.charCodeAt(peg$currPos) === 40) {
5656 s1 = peg$c177;
5657 peg$currPos++;
5658 } else {
5659 s1 = peg$FAILED;
5660 if (peg$silentFails === 0) { peg$fail(peg$c178); }
5661 }
5662 if (s1 !== peg$FAILED) {
5663 if (input.substr(peg$currPos, 4) === peg$c302) {
5664 s2 = peg$c302;
5665 peg$currPos += 4;
5666 } else {
5667 s2 = peg$FAILED;
5668 if (peg$silentFails === 0) { peg$fail(peg$c303); }
5669 }
5670 if (s2 !== peg$FAILED) {
5671 s3 = [];
5672 s4 = peg$currPos;
5673 s5 = peg$parse__();
5674 if (s5 !== peg$FAILED) {
5675 s6 = peg$parseparam_def();
5676 if (s6 !== peg$FAILED) {
5677 s5 = [s5, s6];
5678 s4 = s5;
5679 } else {
5680 peg$currPos = s4;
5681 s4 = peg$FAILED;
5682 }
5683 } else {
5684 peg$currPos = s4;
5685 s4 = peg$FAILED;
5686 }
5687 while (s4 !== peg$FAILED) {
5688 s3.push(s4);
5689 s4 = peg$currPos;
5690 s5 = peg$parse__();
5691 if (s5 !== peg$FAILED) {
5692 s6 = peg$parseparam_def();
5693 if (s6 !== peg$FAILED) {
5694 s5 = [s5, s6];
5695 s4 = s5;
5696 } else {
5697 peg$currPos = s4;
5698 s4 = peg$FAILED;
5699 }
5700 } else {
5701 peg$currPos = s4;
5702 s4 = peg$FAILED;
5703 }
5704 }
5705 if (s3 !== peg$FAILED) {
5706 s4 = peg$currPos;
5707 s5 = peg$parse__();
5708 if (s5 !== peg$FAILED) {
5709 s6 = peg$parseresult_def();
5710 if (s6 !== peg$FAILED) {
5711 s5 = [s5, s6];
5712 s4 = s5;
5713 } else {
5714 peg$currPos = s4;
5715 s4 = peg$FAILED;
5716 }
5717 } else {
5718 peg$currPos = s4;
5719 s4 = peg$FAILED;
5720 }
5721 if (s4 === peg$FAILED) {
5722 s4 = null;
5723 }
5724 if (s4 !== peg$FAILED) {
5725 s5 = peg$parse__();
5726 if (s5 !== peg$FAILED) {
5727 if (input.charCodeAt(peg$currPos) === 41) {
5728 s6 = peg$c183;
5729 peg$currPos++;
5730 } else {
5731 s6 = peg$FAILED;
5732 if (peg$silentFails === 0) { peg$fail(peg$c184); }
5733 }
5734 if (s6 !== peg$FAILED) {
5735 peg$savedPos = s0;
5736 s1 = peg$c309(s2, s3, s4);
5737 s0 = s1;
5738 } else {
5739 peg$currPos = s0;
5740 s0 = peg$FAILED;
5741 }
5742 } else {
5743 peg$currPos = s0;
5744 s0 = peg$FAILED;
5745 }
5746 } else {
5747 peg$currPos = s0;
5748 s0 = peg$FAILED;
5749 }
5750 } else {
5751 peg$currPos = s0;
5752 s0 = peg$FAILED;
5753 }
5754 } else {
5755 peg$currPos = s0;
5756 s0 = peg$FAILED;
5757 }
5758 } else {
5759 peg$currPos = s0;
5760 s0 = peg$FAILED;
5761 }
5762
5763 return s0;
5764 }
5765
5766 function peg$parsetype_def() {
5767 var s0, s1, s2, s3, s4;
5768
5769 s0 = peg$currPos;
5770 if (input.substr(peg$currPos, 4) === peg$c299) {
5771 s1 = peg$c299;
5772 peg$currPos += 4;
5773 } else {
5774 s1 = peg$FAILED;
5775 if (peg$silentFails === 0) { peg$fail(peg$c300); }
5776 }
5777 if (s1 !== peg$FAILED) {
5778 s2 = peg$currPos;
5779 s3 = peg$parse__();
5780 if (s3 !== peg$FAILED) {
5781 s4 = peg$parsevar();
5782 if (s4 !== peg$FAILED) {
5783 s3 = [s3, s4];
5784 s2 = s3;
5785 } else {
5786 peg$currPos = s2;
5787 s2 = peg$FAILED;
5788 }
5789 } else {
5790 peg$currPos = s2;
5791 s2 = peg$FAILED;
5792 }
5793 if (s2 === peg$FAILED) {
5794 s2 = null;
5795 }
5796 if (s2 !== peg$FAILED) {
5797 s3 = peg$parse__();
5798 if (s3 !== peg$FAILED) {
5799 s4 = peg$parsefunc_def();
5800 if (s4 !== peg$FAILED) {
5801 peg$savedPos = s0;
5802 s1 = peg$c310(s1, s2);
5803 s0 = s1;
5804 } else {
5805 peg$currPos = s0;
5806 s0 = peg$FAILED;
5807 }
5808 } else {
5809 peg$currPos = s0;
5810 s0 = peg$FAILED;
5811 }
5812 } else {
5813 peg$currPos = s0;
5814 s0 = peg$FAILED;
5815 }
5816 } else {
5817 peg$currPos = s0;
5818 s0 = peg$FAILED;
5819 }
5820
5821 return s0;
5822 }
5823
5824 function peg$parseimport() {
5825 var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;
5826
5827 s0 = peg$currPos;
5828 if (input.substr(peg$currPos, 6) === peg$c311) {
5829 s1 = peg$c311;
5830 peg$currPos += 6;
5831 } else {
5832 s1 = peg$FAILED;
5833 if (peg$silentFails === 0) { peg$fail(peg$c312); }
5834 }
5835 if (s1 !== peg$FAILED) {
5836 s2 = peg$currPos;
5837 s3 = peg$parse__();
5838 if (s3 !== peg$FAILED) {
5839 s4 = peg$parsevar();
5840 if (s4 !== peg$FAILED) {
5841 s3 = [s3, s4];
5842 s2 = s3;
5843 } else {
5844 peg$currPos = s2;
5845 s2 = peg$FAILED;
5846 }
5847 } else {
5848 peg$currPos = s2;
5849 s2 = peg$FAILED;
5850 }
5851 if (s2 === peg$FAILED) {
5852 s2 = null;
5853 }
5854 if (s2 !== peg$FAILED) {
5855 s3 = peg$parse__();
5856 if (s3 !== peg$FAILED) {
5857 s4 = peg$parseliteral();
5858 if (s4 !== peg$FAILED) {
5859 s5 = peg$parse__();
5860 if (s5 !== peg$FAILED) {
5861 s6 = peg$parseliteral();
5862 if (s6 !== peg$FAILED) {
5863 s7 = peg$currPos;
5864 s8 = peg$parse__();
5865 if (s8 !== peg$FAILED) {
5866 s9 = peg$parsefunc_type();
5867 if (s9 !== peg$FAILED) {
5868 s8 = [s8, s9];
5869 s7 = s8;
5870 } else {
5871 peg$currPos = s7;
5872 s7 = peg$FAILED;
5873 }
5874 } else {
5875 peg$currPos = s7;
5876 s7 = peg$FAILED;
5877 }
5878 if (s7 === peg$FAILED) {
5879 s7 = null;
5880 }
5881 if (s7 !== peg$FAILED) {
5882 s8 = [];
5883 s9 = peg$currPos;
5884 s10 = peg$parse__();
5885 if (s10 !== peg$FAILED) {
5886 s11 = peg$parseparam();
5887 if (s11 !== peg$FAILED) {
5888 s10 = [s10, s11];
5889 s9 = s10;
5890 } else {
5891 peg$currPos = s9;
5892 s9 = peg$FAILED;
5893 }
5894 } else {
5895 peg$currPos = s9;
5896 s9 = peg$FAILED;
5897 }
5898 while (s9 !== peg$FAILED) {
5899 s8.push(s9);
5900 s9 = peg$currPos;
5901 s10 = peg$parse__();
5902 if (s10 !== peg$FAILED) {
5903 s11 = peg$parseparam();
5904 if (s11 !== peg$FAILED) {
5905 s10 = [s10, s11];
5906 s9 = s10;
5907 } else {
5908 peg$currPos = s9;
5909 s9 = peg$FAILED;
5910 }
5911 } else {
5912 peg$currPos = s9;
5913 s9 = peg$FAILED;
5914 }
5915 }
5916 if (s8 !== peg$FAILED) {
5917 s9 = peg$currPos;
5918 s10 = peg$parse__();
5919 if (s10 !== peg$FAILED) {
5920 s11 = peg$parseresult();
5921 if (s11 !== peg$FAILED) {
5922 s10 = [s10, s11];
5923 s9 = s10;
5924 } else {
5925 peg$currPos = s9;
5926 s9 = peg$FAILED;
5927 }
5928 } else {
5929 peg$currPos = s9;
5930 s9 = peg$FAILED;
5931 }
5932 if (s9 === peg$FAILED) {
5933 s9 = null;
5934 }
5935 if (s9 !== peg$FAILED) {
5936 peg$savedPos = s0;
5937 s1 = peg$c313(s1, s2, s4, s6, s7, s8, s9);
5938 s0 = s1;
5939 } else {
5940 peg$currPos = s0;
5941 s0 = peg$FAILED;
5942 }
5943 } else {
5944 peg$currPos = s0;
5945 s0 = peg$FAILED;
5946 }
5947 } else {
5948 peg$currPos = s0;
5949 s0 = peg$FAILED;
5950 }
5951 } else {
5952 peg$currPos = s0;
5953 s0 = peg$FAILED;
5954 }
5955 } else {
5956 peg$currPos = s0;
5957 s0 = peg$FAILED;
5958 }
5959 } else {
5960 peg$currPos = s0;
5961 s0 = peg$FAILED;
5962 }
5963 } else {
5964 peg$currPos = s0;
5965 s0 = peg$FAILED;
5966 }
5967 } else {
5968 peg$currPos = s0;
5969 s0 = peg$FAILED;
5970 }
5971 } else {
5972 peg$currPos = s0;
5973 s0 = peg$FAILED;
5974 }
5975
5976 return s0;
5977 }
5978
5979 function peg$parseexport() {
5980 var s0, s1, s2, s3, s4, s5, s6, s7;
5981
5982 s0 = peg$currPos;
5983 if (input.substr(peg$currPos, 6) === peg$c314) {
5984 s1 = peg$c314;
5985 peg$currPos += 6;
5986 } else {
5987 s1 = peg$FAILED;
5988 if (peg$silentFails === 0) { peg$fail(peg$c315); }
5989 }
5990 if (s1 !== peg$FAILED) {
5991 s2 = peg$parse__();
5992 if (s2 !== peg$FAILED) {
5993 if (peg$c284.test(input.charAt(peg$currPos))) {
5994 s3 = input.charAt(peg$currPos);
5995 peg$currPos++;
5996 } else {
5997 s3 = peg$FAILED;
5998 if (peg$silentFails === 0) { peg$fail(peg$c285); }
5999 }
6000 if (s3 !== peg$FAILED) {
6001 s4 = [];
6002 s5 = peg$currPos;
6003 if (input.charCodeAt(peg$currPos) === 92) {
6004 s6 = peg$c316;
6005 peg$currPos++;
6006 } else {
6007 s6 = peg$FAILED;
6008 if (peg$silentFails === 0) { peg$fail(peg$c317); }
6009 }
6010 if (s6 !== peg$FAILED) {
6011 if (input.charCodeAt(peg$currPos) === 34) {
6012 s7 = peg$c318;
6013 peg$currPos++;
6014 } else {
6015 s7 = peg$FAILED;
6016 if (peg$silentFails === 0) { peg$fail(peg$c319); }
6017 }
6018 if (s7 !== peg$FAILED) {
6019 s6 = [s6, s7];
6020 s5 = s6;
6021 } else {
6022 peg$currPos = s5;
6023 s5 = peg$FAILED;
6024 }
6025 } else {
6026 peg$currPos = s5;
6027 s5 = peg$FAILED;
6028 }
6029 if (s5 === peg$FAILED) {
6030 s5 = peg$currPos;
6031 s6 = peg$currPos;
6032 peg$silentFails++;
6033 if (peg$c284.test(input.charAt(peg$currPos))) {
6034 s7 = input.charAt(peg$currPos);
6035 peg$currPos++;
6036 } else {
6037 s7 = peg$FAILED;
6038 if (peg$silentFails === 0) { peg$fail(peg$c285); }
6039 }
6040 peg$silentFails--;
6041 if (s7 === peg$FAILED) {
6042 s6 = void 0;
6043 } else {
6044 peg$currPos = s6;
6045 s6 = peg$FAILED;
6046 }
6047 if (s6 !== peg$FAILED) {
6048 if (input.length > peg$currPos) {
6049 s7 = input.charAt(peg$currPos);
6050 peg$currPos++;
6051 } else {
6052 s7 = peg$FAILED;
6053 if (peg$silentFails === 0) { peg$fail(peg$c21); }
6054 }
6055 if (s7 !== peg$FAILED) {
6056 s6 = [s6, s7];
6057 s5 = s6;
6058 } else {
6059 peg$currPos = s5;
6060 s5 = peg$FAILED;
6061 }
6062 } else {
6063 peg$currPos = s5;
6064 s5 = peg$FAILED;
6065 }
6066 }
6067 while (s5 !== peg$FAILED) {
6068 s4.push(s5);
6069 s5 = peg$currPos;
6070 if (input.charCodeAt(peg$currPos) === 92) {
6071 s6 = peg$c316;
6072 peg$currPos++;
6073 } else {
6074 s6 = peg$FAILED;
6075 if (peg$silentFails === 0) { peg$fail(peg$c317); }
6076 }
6077 if (s6 !== peg$FAILED) {
6078 if (input.charCodeAt(peg$currPos) === 34) {
6079 s7 = peg$c318;
6080 peg$currPos++;
6081 } else {
6082 s7 = peg$FAILED;
6083 if (peg$silentFails === 0) { peg$fail(peg$c319); }
6084 }
6085 if (s7 !== peg$FAILED) {
6086 s6 = [s6, s7];
6087 s5 = s6;
6088 } else {
6089 peg$currPos = s5;
6090 s5 = peg$FAILED;
6091 }
6092 } else {
6093 peg$currPos = s5;
6094 s5 = peg$FAILED;
6095 }
6096 if (s5 === peg$FAILED) {
6097 s5 = peg$currPos;
6098 s6 = peg$currPos;
6099 peg$silentFails++;
6100 if (peg$c284.test(input.charAt(peg$currPos))) {
6101 s7 = input.charAt(peg$currPos);
6102 peg$currPos++;
6103 } else {
6104 s7 = peg$FAILED;
6105 if (peg$silentFails === 0) { peg$fail(peg$c285); }
6106 }
6107 peg$silentFails--;
6108 if (s7 === peg$FAILED) {
6109 s6 = void 0;
6110 } else {
6111 peg$currPos = s6;
6112 s6 = peg$FAILED;
6113 }
6114 if (s6 !== peg$FAILED) {
6115 if (input.length > peg$currPos) {
6116 s7 = input.charAt(peg$currPos);
6117 peg$currPos++;
6118 } else {
6119 s7 = peg$FAILED;
6120 if (peg$silentFails === 0) { peg$fail(peg$c21); }
6121 }
6122 if (s7 !== peg$FAILED) {
6123 s6 = [s6, s7];
6124 s5 = s6;
6125 } else {
6126 peg$currPos = s5;
6127 s5 = peg$FAILED;
6128 }
6129 } else {
6130 peg$currPos = s5;
6131 s5 = peg$FAILED;
6132 }
6133 }
6134 }
6135 if (s4 !== peg$FAILED) {
6136 if (peg$c284.test(input.charAt(peg$currPos))) {
6137 s5 = input.charAt(peg$currPos);
6138 peg$currPos++;
6139 } else {
6140 s5 = peg$FAILED;
6141 if (peg$silentFails === 0) { peg$fail(peg$c285); }
6142 }
6143 if (s5 !== peg$FAILED) {
6144 s6 = peg$parse__();
6145 if (s6 !== peg$FAILED) {
6146 s7 = peg$parsevar();
6147 if (s7 === peg$FAILED) {
6148 if (input.substr(peg$currPos, 6) === peg$c320) {
6149 s7 = peg$c320;
6150 peg$currPos += 6;
6151 } else {
6152 s7 = peg$FAILED;
6153 if (peg$silentFails === 0) { peg$fail(peg$c321); }
6154 }
6155 }
6156 if (s7 !== peg$FAILED) {
6157 peg$savedPos = s0;
6158 s1 = peg$c322(s1, s4, s7);
6159 s0 = s1;
6160 } else {
6161 peg$currPos = s0;
6162 s0 = peg$FAILED;
6163 }
6164 } else {
6165 peg$currPos = s0;
6166 s0 = peg$FAILED;
6167 }
6168 } else {
6169 peg$currPos = s0;
6170 s0 = peg$FAILED;
6171 }
6172 } else {
6173 peg$currPos = s0;
6174 s0 = peg$FAILED;
6175 }
6176 } else {
6177 peg$currPos = s0;
6178 s0 = peg$FAILED;
6179 }
6180 } else {
6181 peg$currPos = s0;
6182 s0 = peg$FAILED;
6183 }
6184 } else {
6185 peg$currPos = s0;
6186 s0 = peg$FAILED;
6187 }
6188
6189 return s0;
6190 }
6191
6192 function peg$parsetable() {
6193 var s0, s1, s2, s3, s4, s5;
6194
6195 s0 = peg$currPos;
6196 if (input.substr(peg$currPos, 5) === peg$c323) {
6197 s1 = peg$c323;
6198 peg$currPos += 5;
6199 } else {
6200 s1 = peg$FAILED;
6201 if (peg$silentFails === 0) { peg$fail(peg$c324); }
6202 }
6203 if (s1 !== peg$FAILED) {
6204 s2 = [];
6205 s3 = peg$currPos;
6206 s4 = peg$parse__();
6207 if (s4 !== peg$FAILED) {
6208 s5 = peg$parsevar();
6209 if (s5 !== peg$FAILED) {
6210 s4 = [s4, s5];
6211 s3 = s4;
6212 } else {
6213 peg$currPos = s3;
6214 s3 = peg$FAILED;
6215 }
6216 } else {
6217 peg$currPos = s3;
6218 s3 = peg$FAILED;
6219 }
6220 while (s3 !== peg$FAILED) {
6221 s2.push(s3);
6222 s3 = peg$currPos;
6223 s4 = peg$parse__();
6224 if (s4 !== peg$FAILED) {
6225 s5 = peg$parsevar();
6226 if (s5 !== peg$FAILED) {
6227 s4 = [s4, s5];
6228 s3 = s4;
6229 } else {
6230 peg$currPos = s3;
6231 s3 = peg$FAILED;
6232 }
6233 } else {
6234 peg$currPos = s3;
6235 s3 = peg$FAILED;
6236 }
6237 }
6238 if (s2 !== peg$FAILED) {
6239 peg$savedPos = s0;
6240 s1 = peg$c325(s1, s2);
6241 s0 = s1;
6242 } else {
6243 peg$currPos = s0;
6244 s0 = peg$FAILED;
6245 }
6246 } else {
6247 peg$currPos = s0;
6248 s0 = peg$FAILED;
6249 }
6250
6251 return s0;
6252 }
6253
6254 function peg$parsememory() {
6255 var s0, s1, s2, s3, s4, s5, s6, s7, s8;
6256
6257 s0 = peg$currPos;
6258 if (input.substr(peg$currPos, 6) === peg$c320) {
6259 s1 = peg$c320;
6260 peg$currPos += 6;
6261 } else {
6262 s1 = peg$FAILED;
6263 if (peg$silentFails === 0) { peg$fail(peg$c321); }
6264 }
6265 if (s1 !== peg$FAILED) {
6266 s2 = peg$parse__();
6267 if (s2 !== peg$FAILED) {
6268 s3 = peg$parseint();
6269 if (s3 !== peg$FAILED) {
6270 s4 = peg$currPos;
6271 s5 = peg$parse__();
6272 if (s5 !== peg$FAILED) {
6273 s6 = peg$parseint();
6274 if (s6 !== peg$FAILED) {
6275 s5 = [s5, s6];
6276 s4 = s5;
6277 } else {
6278 peg$currPos = s4;
6279 s4 = peg$FAILED;
6280 }
6281 } else {
6282 peg$currPos = s4;
6283 s4 = peg$FAILED;
6284 }
6285 if (s4 === peg$FAILED) {
6286 s4 = null;
6287 }
6288 if (s4 !== peg$FAILED) {
6289 s5 = [];
6290 s6 = peg$currPos;
6291 s7 = peg$parse__();
6292 if (s7 !== peg$FAILED) {
6293 s8 = peg$parsecmd();
6294 if (s8 !== peg$FAILED) {
6295 s7 = [s7, s8];
6296 s6 = s7;
6297 } else {
6298 peg$currPos = s6;
6299 s6 = peg$FAILED;
6300 }
6301 } else {
6302 peg$currPos = s6;
6303 s6 = peg$FAILED;
6304 }
6305 while (s6 !== peg$FAILED) {
6306 s5.push(s6);
6307 s6 = peg$currPos;
6308 s7 = peg$parse__();
6309 if (s7 !== peg$FAILED) {
6310 s8 = peg$parsecmd();
6311 if (s8 !== peg$FAILED) {
6312 s7 = [s7, s8];
6313 s6 = s7;
6314 } else {
6315 peg$currPos = s6;
6316 s6 = peg$FAILED;
6317 }
6318 } else {
6319 peg$currPos = s6;
6320 s6 = peg$FAILED;
6321 }
6322 }
6323 if (s5 !== peg$FAILED) {
6324 peg$savedPos = s0;
6325 s1 = peg$c326(s1, s3, s4, s5);
6326 s0 = s1;
6327 } else {
6328 peg$currPos = s0;
6329 s0 = peg$FAILED;
6330 }
6331 } else {
6332 peg$currPos = s0;
6333 s0 = peg$FAILED;
6334 }
6335 } else {
6336 peg$currPos = s0;
6337 s0 = peg$FAILED;
6338 }
6339 } else {
6340 peg$currPos = s0;
6341 s0 = peg$FAILED;
6342 }
6343 } else {
6344 peg$currPos = s0;
6345 s0 = peg$FAILED;
6346 }
6347
6348 return s0;
6349 }
6350
6351 function peg$parseinvoke() {
6352 var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
6353
6354 s0 = peg$currPos;
6355 if (input.substr(peg$currPos, 6) === peg$c327) {
6356 s1 = peg$c327;
6357 peg$currPos += 6;
6358 } else {
6359 s1 = peg$FAILED;
6360 if (peg$silentFails === 0) { peg$fail(peg$c328); }
6361 }
6362 if (s1 !== peg$FAILED) {
6363 s2 = peg$parse__();
6364 if (s2 !== peg$FAILED) {
6365 if (peg$c284.test(input.charAt(peg$currPos))) {
6366 s3 = input.charAt(peg$currPos);
6367 peg$currPos++;
6368 } else {
6369 s3 = peg$FAILED;
6370 if (peg$silentFails === 0) { peg$fail(peg$c285); }
6371 }
6372 if (s3 !== peg$FAILED) {
6373 s4 = [];
6374 if (input.substr(peg$currPos, 2) === peg$c329) {
6375 s5 = peg$c329;
6376 peg$currPos += 2;
6377 } else {
6378 s5 = peg$FAILED;
6379 if (peg$silentFails === 0) { peg$fail(peg$c330); }
6380 }
6381 if (s5 === peg$FAILED) {
6382 s5 = peg$currPos;
6383 s6 = peg$currPos;
6384 peg$silentFails++;
6385 if (peg$c284.test(input.charAt(peg$currPos))) {
6386 s7 = input.charAt(peg$currPos);
6387 peg$currPos++;
6388 } else {
6389 s7 = peg$FAILED;
6390 if (peg$silentFails === 0) { peg$fail(peg$c285); }
6391 }
6392 peg$silentFails--;
6393 if (s7 === peg$FAILED) {
6394 s6 = void 0;
6395 } else {
6396 peg$currPos = s6;
6397 s6 = peg$FAILED;
6398 }
6399 if (s6 !== peg$FAILED) {
6400 if (input.length > peg$currPos) {
6401 s7 = input.charAt(peg$currPos);
6402 peg$currPos++;
6403 } else {
6404 s7 = peg$FAILED;
6405 if (peg$silentFails === 0) { peg$fail(peg$c21); }
6406 }
6407 if (s7 !== peg$FAILED) {
6408 s6 = [s6, s7];
6409 s5 = s6;
6410 } else {
6411 peg$currPos = s5;
6412 s5 = peg$FAILED;
6413 }
6414 } else {
6415 peg$currPos = s5;
6416 s5 = peg$FAILED;
6417 }
6418 }
6419 while (s5 !== peg$FAILED) {
6420 s4.push(s5);
6421 if (input.substr(peg$currPos, 2) === peg$c329) {
6422 s5 = peg$c329;
6423 peg$currPos += 2;
6424 } else {
6425 s5 = peg$FAILED;
6426 if (peg$silentFails === 0) { peg$fail(peg$c330); }
6427 }
6428 if (s5 === peg$FAILED) {
6429 s5 = peg$currPos;
6430 s6 = peg$currPos;
6431 peg$silentFails++;
6432 if (peg$c284.test(input.charAt(peg$currPos))) {
6433 s7 = input.charAt(peg$currPos);
6434 peg$currPos++;
6435 } else {
6436 s7 = peg$FAILED;
6437 if (peg$silentFails === 0) { peg$fail(peg$c285); }
6438 }
6439 peg$silentFails--;
6440 if (s7 === peg$FAILED) {
6441 s6 = void 0;
6442 } else {
6443 peg$currPos = s6;
6444 s6 = peg$FAILED;
6445 }
6446 if (s6 !== peg$FAILED) {
6447 if (input.length > peg$currPos) {
6448 s7 = input.charAt(peg$currPos);
6449 peg$currPos++;
6450 } else {
6451 s7 = peg$FAILED;
6452 if (peg$silentFails === 0) { peg$fail(peg$c21); }
6453 }
6454 if (s7 !== peg$FAILED) {
6455 s6 = [s6, s7];
6456 s5 = s6;
6457 } else {
6458 peg$currPos = s5;
6459 s5 = peg$FAILED;
6460 }
6461 } else {
6462 peg$currPos = s5;
6463 s5 = peg$FAILED;
6464 }
6465 }
6466 }
6467 if (s4 !== peg$FAILED) {
6468 if (peg$c284.test(input.charAt(peg$currPos))) {
6469 s5 = input.charAt(peg$currPos);
6470 peg$currPos++;
6471 } else {
6472 s5 = peg$FAILED;
6473 if (peg$silentFails === 0) { peg$fail(peg$c285); }
6474 }
6475 if (s5 !== peg$FAILED) {
6476 s6 = [];
6477 s7 = peg$currPos;
6478 s8 = peg$parse__();
6479 if (s8 !== peg$FAILED) {
6480 s9 = peg$parseexpr();
6481 if (s9 !== peg$FAILED) {
6482 s8 = [s8, s9];
6483 s7 = s8;
6484 } else {
6485 peg$currPos = s7;
6486 s7 = peg$FAILED;
6487 }
6488 } else {
6489 peg$currPos = s7;
6490 s7 = peg$FAILED;
6491 }
6492 while (s7 !== peg$FAILED) {
6493 s6.push(s7);
6494 s7 = peg$currPos;
6495 s8 = peg$parse__();
6496 if (s8 !== peg$FAILED) {
6497 s9 = peg$parseexpr();
6498 if (s9 !== peg$FAILED) {
6499 s8 = [s8, s9];
6500 s7 = s8;
6501 } else {
6502 peg$currPos = s7;
6503 s7 = peg$FAILED;
6504 }
6505 } else {
6506 peg$currPos = s7;
6507 s7 = peg$FAILED;
6508 }
6509 }
6510 if (s6 !== peg$FAILED) {
6511 peg$savedPos = s0;
6512 s1 = peg$c331(s1, s4, s6);
6513 s0 = s1;
6514 } else {
6515 peg$currPos = s0;
6516 s0 = peg$FAILED;
6517 }
6518 } else {
6519 peg$currPos = s0;
6520 s0 = peg$FAILED;
6521 }
6522 } else {
6523 peg$currPos = s0;
6524 s0 = peg$FAILED;
6525 }
6526 } else {
6527 peg$currPos = s0;
6528 s0 = peg$FAILED;
6529 }
6530 } else {
6531 peg$currPos = s0;
6532 s0 = peg$FAILED;
6533 }
6534 } else {
6535 peg$currPos = s0;
6536 s0 = peg$FAILED;
6537 }
6538
6539 return s0;
6540 }
6541
6542 function peg$parsemodule() {
6543 var s0, s1, s2, s3, s4, s5;
6544
6545 s0 = peg$currPos;
6546 if (input.substr(peg$currPos, 6) === peg$c332) {
6547 s1 = peg$c332;
6548 peg$currPos += 6;
6549 } else {
6550 s1 = peg$FAILED;
6551 if (peg$silentFails === 0) { peg$fail(peg$c333); }
6552 }
6553 if (s1 !== peg$FAILED) {
6554 s2 = [];
6555 s3 = peg$currPos;
6556 s4 = peg$parse__();
6557 if (s4 !== peg$FAILED) {
6558 s5 = peg$parsecmd();
6559 if (s5 === peg$FAILED) {
6560 s5 = peg$parseliteral();
6561 }
6562 if (s5 !== peg$FAILED) {
6563 s4 = [s4, s5];
6564 s3 = s4;
6565 } else {
6566 peg$currPos = s3;
6567 s3 = peg$FAILED;
6568 }
6569 } else {
6570 peg$currPos = s3;
6571 s3 = peg$FAILED;
6572 }
6573 while (s3 !== peg$FAILED) {
6574 s2.push(s3);
6575 s3 = peg$currPos;
6576 s4 = peg$parse__();
6577 if (s4 !== peg$FAILED) {
6578 s5 = peg$parsecmd();
6579 if (s5 === peg$FAILED) {
6580 s5 = peg$parseliteral();
6581 }
6582 if (s5 !== peg$FAILED) {
6583 s4 = [s4, s5];
6584 s3 = s4;
6585 } else {
6586 peg$currPos = s3;
6587 s3 = peg$FAILED;
6588 }
6589 } else {
6590 peg$currPos = s3;
6591 s3 = peg$FAILED;
6592 }
6593 }
6594 if (s2 !== peg$FAILED) {
6595 peg$savedPos = s0;
6596 s1 = peg$c334(s1, s2);
6597 s0 = s1;
6598 } else {
6599 peg$currPos = s0;
6600 s0 = peg$FAILED;
6601 }
6602 } else {
6603 peg$currPos = s0;
6604 s0 = peg$FAILED;
6605 }
6606
6607 return s0;
6608 }
6609
6610 function peg$parseassert_return() {
6611 var s0, s1, s2, s3, s4, s5;
6612
6613 s0 = peg$currPos;
6614 if (input.substr(peg$currPos, 13) === peg$c335) {
6615 s1 = peg$c335;
6616 peg$currPos += 13;
6617 } else {
6618 s1 = peg$FAILED;
6619 if (peg$silentFails === 0) { peg$fail(peg$c336); }
6620 }
6621 if (s1 !== peg$FAILED) {
6622 s2 = peg$parse__();
6623 if (s2 !== peg$FAILED) {
6624 s3 = peg$parsecmd();
6625 if (s3 !== peg$FAILED) {
6626 s4 = peg$parse__();
6627 if (s4 !== peg$FAILED) {
6628 s5 = peg$parseexpr();
6629 if (s5 === peg$FAILED) {
6630 s5 = null;
6631 }
6632 if (s5 !== peg$FAILED) {
6633 peg$savedPos = s0;
6634 s1 = peg$c337(s1, s3, s5);
6635 s0 = s1;
6636 } else {
6637 peg$currPos = s0;
6638 s0 = peg$FAILED;
6639 }
6640 } else {
6641 peg$currPos = s0;
6642 s0 = peg$FAILED;
6643 }
6644 } else {
6645 peg$currPos = s0;
6646 s0 = peg$FAILED;
6647 }
6648 } else {
6649 peg$currPos = s0;
6650 s0 = peg$FAILED;
6651 }
6652 } else {
6653 peg$currPos = s0;
6654 s0 = peg$FAILED;
6655 }
6656
6657 return s0;
6658 }
6659
6660 function peg$parseassert_return_nan() {
6661 var s0, s1, s2, s3;
6662
6663 s0 = peg$currPos;
6664 if (input.substr(peg$currPos, 17) === peg$c338) {
6665 s1 = peg$c338;
6666 peg$currPos += 17;
6667 } else {
6668 s1 = peg$FAILED;
6669 if (peg$silentFails === 0) { peg$fail(peg$c339); }
6670 }
6671 if (s1 !== peg$FAILED) {
6672 s2 = peg$parse__();
6673 if (s2 !== peg$FAILED) {
6674 s3 = peg$parsecmd();
6675 if (s3 !== peg$FAILED) {
6676 peg$savedPos = s0;
6677 s1 = peg$c340(s1, s3);
6678 s0 = s1;
6679 } else {
6680 peg$currPos = s0;
6681 s0 = peg$FAILED;
6682 }
6683 } else {
6684 peg$currPos = s0;
6685 s0 = peg$FAILED;
6686 }
6687 } else {
6688 peg$currPos = s0;
6689 s0 = peg$FAILED;
6690 }
6691
6692 return s0;
6693 }
6694
6695 function peg$parseassert_trap() {
6696 var s0, s1, s2, s3, s4, s5;
6697
6698 s0 = peg$currPos;
6699 if (input.substr(peg$currPos, 11) === peg$c341) {
6700 s1 = peg$c341;
6701 peg$currPos += 11;
6702 } else {
6703 s1 = peg$FAILED;
6704 if (peg$silentFails === 0) { peg$fail(peg$c342); }
6705 }
6706 if (s1 !== peg$FAILED) {
6707 s2 = peg$parse__();
6708 if (s2 !== peg$FAILED) {
6709 s3 = peg$parsecmd();
6710 if (s3 !== peg$FAILED) {
6711 s4 = peg$parse__();
6712 if (s4 !== peg$FAILED) {
6713 s5 = peg$parseliteral();
6714 if (s5 !== peg$FAILED) {
6715 peg$savedPos = s0;
6716 s1 = peg$c343(s1, s3, s5);
6717 s0 = s1;
6718 } else {
6719 peg$currPos = s0;
6720 s0 = peg$FAILED;
6721 }
6722 } else {
6723 peg$currPos = s0;
6724 s0 = peg$FAILED;
6725 }
6726 } else {
6727 peg$currPos = s0;
6728 s0 = peg$FAILED;
6729 }
6730 } else {
6731 peg$currPos = s0;
6732 s0 = peg$FAILED;
6733 }
6734 } else {
6735 peg$currPos = s0;
6736 s0 = peg$FAILED;
6737 }
6738
6739 return s0;
6740 }
6741
6742 function peg$parseassert_invalid() {
6743 var s0, s1, s2, s3, s4, s5;
6744
6745 s0 = peg$currPos;
6746 if (input.substr(peg$currPos, 14) === peg$c344) {
6747 s1 = peg$c344;
6748 peg$currPos += 14;
6749 } else {
6750 s1 = peg$FAILED;
6751 if (peg$silentFails === 0) { peg$fail(peg$c345); }
6752 }
6753 if (s1 !== peg$FAILED) {
6754 s2 = peg$parse__();
6755 if (s2 !== peg$FAILED) {
6756 s3 = peg$parsecmd();
6757 if (s3 !== peg$FAILED) {
6758 s4 = peg$parse__();
6759 if (s4 !== peg$FAILED) {
6760 s5 = peg$parseliteral();
6761 if (s5 !== peg$FAILED) {
6762 peg$savedPos = s0;
6763 s1 = peg$c346(s1, s3, s5);
6764 s0 = s1;
6765 } else {
6766 peg$currPos = s0;
6767 s0 = peg$FAILED;
6768 }
6769 } else {
6770 peg$currPos = s0;
6771 s0 = peg$FAILED;
6772 }
6773 } else {
6774 peg$currPos = s0;
6775 s0 = peg$FAILED;
6776 }
6777 } else {
6778 peg$currPos = s0;
6779 s0 = peg$FAILED;
6780 }
6781 } else {
6782 peg$currPos = s0;
6783 s0 = peg$FAILED;
6784 }
6785
6786 return s0;
6787 }
6788
6789 function peg$parsecmd() {
6790 var s0, s1, s2, s3, s4;
6791
6792 s0 = peg$currPos;
6793 if (input.charCodeAt(peg$currPos) === 40) {
6794 s1 = peg$c177;
6795 peg$currPos++;
6796 } else {
6797 s1 = peg$FAILED;
6798 if (peg$silentFails === 0) { peg$fail(peg$c178); }
6799 }
6800 if (s1 !== peg$FAILED) {
6801 s2 = peg$parsemodule();
6802 if (s2 === peg$FAILED) {
6803 s2 = peg$parseinvoke();
6804 if (s2 === peg$FAILED) {
6805 s2 = peg$parseassert_return();
6806 if (s2 === peg$FAILED) {
6807 s2 = peg$parseassert_return_nan();
6808 if (s2 === peg$FAILED) {
6809 s2 = peg$parseassert_trap();
6810 if (s2 === peg$FAILED) {
6811 s2 = peg$parseassert_invalid();
6812 if (s2 === peg$FAILED) {
6813 s2 = peg$parsesegment();
6814 if (s2 === peg$FAILED) {
6815 s2 = peg$parsefunc();
6816 if (s2 === peg$FAILED) {
6817 s2 = peg$parseimport();
6818 if (s2 === peg$FAILED) {
6819 s2 = peg$parseexport();
6820 if (s2 === peg$FAILED) {
6821 s2 = peg$parsetable();
6822 if (s2 === peg$FAILED) {
6823 s2 = peg$parsememory();
6824 if (s2 === peg$FAILED) {
6825 s2 = peg$parsetype_def();
6826 if (s2 === peg$FAILED) {
6827 s2 = peg$parse_start();
6828 }
6829 }
6830 }
6831 }
6832 }
6833 }
6834 }
6835 }
6836 }
6837 }
6838 }
6839 }
6840 }
6841 if (s2 !== peg$FAILED) {
6842 s3 = peg$parse__();
6843 if (s3 !== peg$FAILED) {
6844 if (input.charCodeAt(peg$currPos) === 41) {
6845 s4 = peg$c183;
6846 peg$currPos++;
6847 } else {
6848 s4 = peg$FAILED;
6849 if (peg$silentFails === 0) { peg$fail(peg$c184); }
6850 }
6851 if (s4 !== peg$FAILED) {
6852 peg$savedPos = s0;
6853 s1 = peg$c347(s2);
6854 s0 = s1;
6855 } else {
6856 peg$currPos = s0;
6857 s0 = peg$FAILED;
6858 }
6859 } else {
6860 peg$currPos = s0;
6861 s0 = peg$FAILED;
6862 }
6863 } else {
6864 peg$currPos = s0;
6865 s0 = peg$FAILED;
6866 }
6867 } else {
6868 peg$currPos = s0;
6869 s0 = peg$FAILED;
6870 }
6871 if (s0 === peg$FAILED) {
6872 s0 = peg$currPos;
6873 s1 = peg$parseexpr();
6874 if (s1 !== peg$FAILED) {
6875 peg$savedPos = s0;
6876 s1 = peg$c347(s1);
6877 }
6878 s0 = s1;
6879 }
6880
6881 return s0;
6882 }
6883
6884 peg$result = peg$startRuleFunction();
6885
6886 if (peg$result !== peg$FAILED && peg$currPos === input.length) {
6887 return peg$result;
6888 } else {
6889 if (peg$result !== peg$FAILED && peg$currPos < input.length) {
6890 peg$fail({ type: "end", description: "end of input" });
6891 }
6892
6893 throw peg$buildException(
6894 null,
6895 peg$maxFailExpected,
6896 peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,
6897 peg$maxFailPos < input.length
6898 ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)
6899 : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
6900 );
6901 }
6902 }
6903
6904 return {
6905 SyntaxError: peg$SyntaxError,
6906 parse: peg$parse
6907 };
6908})();