add emitv2/emitpv2 to the BNF

This commit is contained in:
John Kerl 2022-05-15 22:18:19 -04:00
parent e91d19de25
commit a50b292199
10 changed files with 598016 additions and 576231 deletions

View file

@ -64,11 +64,15 @@ const (
NodeTypeBareBoolean TNodeType = "bare boolean"
NodeTypeFilterStatement TNodeType = "filter statement"
NodeTypeTeeStatement TNodeType = "tee statement"
NodeTypeEmit1Statement TNodeType = "emit1 statement"
NodeTypeEmitStatement TNodeType = "emit statement"
NodeTypeEmitPStatement TNodeType = "emitp statement"
NodeTypeEmitFStatement TNodeType = "emitf statement"
NodeTypeTeeStatement TNodeType = "tee statement"
NodeTypeEmit1Statement TNodeType = "emit1 statement"
NodeTypeEmitStatement TNodeType = "emit statement"
NodeTypeEmitPStatement TNodeType = "emitp statement"
NodeTypeEmitFStatement TNodeType = "emitf statement"
NodeTypeEmitV2Statement TNodeType = "emitv2 statement"
NodeTypeEmitPV2Statement TNodeType = "emitpv2 statement"
NodeTypeEmittableList TNodeType = "emittable list"
NodeTypeEmitKeys TNodeType = "emit keys"
NodeTypeDumpStatement TNodeType = "dump statement"

File diff suppressed because it is too large Load diff

View file

@ -11,8 +11,8 @@ import (
const (
NoState = -1
NumStates = 336
NumSymbols = 639
NumStates = 340
NumSymbols = 652
)
type Lexer struct {
@ -354,418 +354,431 @@ Lexer symbols:
222: 't'
223: 'f'
224: 'e'
225: 'p'
226: 'r'
227: 'i'
228: 'n'
229: 't'
225: 'm'
226: 'i'
227: 't'
228: 'v'
229: '2'
230: 'e'
231: 'p'
232: 'r'
233: 'i'
234: 'n'
235: 't'
236: 'n'
237: 'p'
238: 'r'
239: 'i'
240: 'n'
241: 't'
242: 'p'
243: 'r'
244: 'i'
245: 'n'
246: 't'
231: 'm'
232: 'i'
233: 't'
234: 'p'
235: 'v'
236: '2'
237: 'e'
238: 'p'
239: 'r'
240: 'i'
241: 'n'
242: 't'
243: 'e'
244: 'p'
245: 'r'
246: 'i'
247: 'n'
248: 't'
249: 'e'
250: 'e'
251: 's'
252: 't'
253: 'd'
254: 'o'
255: 'u'
256: 't'
257: 's'
258: 't'
259: 'd'
260: 'e'
261: 'r'
262: 'r'
263: '$'
264: '$'
265: '{'
266: '}'
267: '$'
268: '*'
269: '@'
270: '@'
271: '{'
272: '}'
273: '@'
274: '*'
275: 'a'
276: 'l'
277: 'l'
278: '%'
279: '%'
280: '%'
281: 'p'
282: 'a'
283: 'n'
284: 'i'
285: 'c'
286: '%'
287: '%'
288: '%'
289: ';'
290: '{'
291: '}'
292: '='
293: '>'
294: '>'
295: '>'
296: '|'
297: ','
298: '('
299: ')'
300: '$'
301: '['
302: ']'
303: '$'
304: '['
305: '['
306: '$'
307: '['
308: '['
309: '['
310: '@'
311: '['
312: '|'
313: '|'
314: '='
315: '^'
316: '^'
317: '='
318: '&'
319: '&'
320: '='
321: '?'
322: '?'
323: '='
324: '?'
325: '?'
326: '?'
249: 'n'
250: 'p'
251: 'r'
252: 'i'
253: 'n'
254: 't'
255: 'p'
256: 'r'
257: 'i'
258: 'n'
259: 't'
260: 'n'
261: 't'
262: 'e'
263: 'e'
264: 's'
265: 't'
266: 'd'
267: 'o'
268: 'u'
269: 't'
270: 's'
271: 't'
272: 'd'
273: 'e'
274: 'r'
275: 'r'
276: '$'
277: '$'
278: '{'
279: '}'
280: '$'
281: '*'
282: '@'
283: '@'
284: '{'
285: '}'
286: '@'
287: '*'
288: 'a'
289: 'l'
290: 'l'
291: '%'
292: '%'
293: '%'
294: 'p'
295: 'a'
296: 'n'
297: 'i'
298: 'c'
299: '%'
300: '%'
301: '%'
302: ';'
303: '{'
304: '}'
305: '='
306: '>'
307: '>'
308: '>'
309: '|'
310: ','
311: '('
312: ')'
313: '$'
314: '['
315: ']'
316: '$'
317: '['
318: '['
319: '$'
320: '['
321: '['
322: '['
323: '@'
324: '['
325: '|'
326: '|'
327: '='
328: '|'
329: '='
330: '&'
331: '='
332: '^'
328: '^'
329: '^'
330: '='
331: '&'
332: '&'
333: '='
334: '<'
335: '<'
334: '?'
335: '?'
336: '='
337: '>'
338: '>'
339: '='
340: '>'
341: '>'
342: '>'
343: '='
344: '+'
345: '='
346: '.'
347: '='
348: '-'
337: '?'
338: '?'
339: '?'
340: '='
341: '|'
342: '='
343: '&'
344: '='
345: '^'
346: '='
347: '<'
348: '<'
349: '='
350: '*'
351: '='
352: '/'
353: '='
354: '/'
355: '/'
350: '>'
351: '>'
352: '='
353: '>'
354: '>'
355: '>'
356: '='
357: '%'
357: '+'
358: '='
359: '*'
360: '*'
361: '='
362: '?'
363: ':'
364: '|'
365: '|'
366: '^'
367: '^'
368: '&'
369: '&'
370: '?'
371: '?'
372: '?'
373: '?'
374: '?'
375: '='
376: '~'
377: '!'
378: '='
379: '~'
380: '='
381: '='
382: '!'
383: '='
384: '<'
385: '='
386: '>'
387: '>'
359: '.'
360: '='
361: '-'
362: '='
363: '*'
364: '='
365: '/'
366: '='
367: '/'
368: '/'
369: '='
370: '%'
371: '='
372: '*'
373: '*'
374: '='
375: '?'
376: ':'
377: '|'
378: '|'
379: '^'
380: '^'
381: '&'
382: '&'
383: '?'
384: '?'
385: '?'
386: '?'
387: '?'
388: '='
389: '<'
390: '<'
389: '~'
390: '!'
391: '='
392: '^'
393: '&'
394: '<'
395: '<'
396: '>'
397: '>'
398: '>'
399: '+'
400: '-'
401: '.'
402: '+'
403: '.'
404: '-'
405: '*'
406: '/'
407: '/'
408: '/'
409: '%'
410: '.'
411: '*'
412: '.'
413: '/'
392: '~'
393: '='
394: '='
395: '!'
396: '='
397: '<'
398: '='
399: '>'
400: '>'
401: '='
402: '<'
403: '<'
404: '='
405: '^'
406: '&'
407: '<'
408: '<'
409: '>'
410: '>'
411: '>'
412: '+'
413: '-'
414: '.'
415: '/'
416: '/'
417: '.'
418: '!'
419: '~'
420: '*'
421: '*'
422: '['
423: '['
424: '['
425: '['
426: '['
427: '['
428: '_'
429: '_'
430: ' '
415: '+'
416: '.'
417: '-'
418: '*'
419: '/'
420: '/'
421: '/'
422: '%'
423: '.'
424: '*'
425: '.'
426: '/'
427: '.'
428: '/'
429: '/'
430: '.'
431: '!'
432: '#'
433: '$'
434: '%'
435: '&'
436: '''
437: '\'
438: '('
439: ')'
440: '*'
441: '+'
442: ','
443: '-'
444: '.'
445: '/'
446: ':'
447: ';'
448: '<'
449: '='
450: '>'
451: '?'
452: '@'
453: '['
454: ']'
455: '^'
456: '_'
457: '`'
458: '{'
459: '|'
460: '}'
461: '~'
462: '\'
463: '\'
464: '\'
465: '"'
466: '\'
467: '['
468: '\'
469: ']'
470: '\'
471: '.'
472: '\'
473: '*'
474: '\'
475: '%'
432: '~'
433: '*'
434: '*'
435: '['
436: '['
437: '['
438: '['
439: '['
440: '['
441: '_'
442: '_'
443: ' '
444: '!'
445: '#'
446: '$'
447: '%'
448: '&'
449: '''
450: '\'
451: '('
452: ')'
453: '*'
454: '+'
455: ','
456: '-'
457: '.'
458: '/'
459: ':'
460: ';'
461: '<'
462: '='
463: '>'
464: '?'
465: '@'
466: '['
467: ']'
468: '^'
469: '_'
470: '`'
471: '{'
472: '|'
473: '}'
474: '~'
475: '\'
476: '\'
477: 'A'
478: '\'
479: 'B'
480: '\'
481: 'C'
482: '\'
483: 'D'
484: '\'
485: 'G'
486: '\'
487: 'H'
488: '\'
489: 'K'
490: '\'
491: 'L'
492: '\'
493: 'N'
494: '\'
495: 'P'
496: '\'
497: 'R'
498: '\'
499: 'S'
500: '\'
501: 'U'
502: '\'
503: 'V'
504: '\'
505: 'W'
506: '\'
507: 'X'
508: '\'
509: 'Z'
510: '\'
511: 'a'
512: '\'
513: 'b'
514: '\'
515: 'c'
516: '\'
517: 'd'
518: '\'
519: 'f'
520: '\'
521: 'g'
522: '\'
523: 'h'
524: '\'
525: 'k'
526: '\'
527: 'l'
528: '\'
529: 'n'
530: '\'
531: 'p'
532: '\'
533: 'r'
534: '\'
535: 's'
536: '\'
537: 't'
538: '\'
539: 'u'
540: '\'
541: 'v'
542: '\'
543: 'w'
544: '\'
545: 'x'
546: '\'
547: 'z'
548: '\'
549: '0'
550: '\'
551: '1'
552: '\'
553: '2'
554: '\'
555: '3'
556: '\'
557: '4'
558: '\'
559: '5'
560: '\'
561: '6'
562: '\'
563: '7'
564: '\'
565: '8'
566: '\'
567: '9'
568: 'e'
569: 'E'
570: 't'
571: 'r'
572: 'u'
573: 'e'
574: 'f'
575: 'a'
576: 'l'
577: 's'
578: 'e'
579: ' '
580: '!'
581: '#'
582: '$'
583: '%'
584: '&'
585: '''
586: '\'
587: '('
588: ')'
589: '*'
590: '+'
591: ','
592: '-'
593: '.'
594: '/'
595: ':'
596: ';'
597: '<'
598: '='
599: '>'
600: '?'
601: '@'
602: '['
603: ']'
604: '^'
605: '_'
606: '`'
607: '|'
608: '~'
609: '\'
610: '{'
611: '\'
612: '}'
613: ' '
614: '\t'
615: '\n'
616: '\r'
617: '#'
618: '\n'
619: 'a'-'z'
620: 'A'-'Z'
621: \u00a0-\u00ff
622: \u0100-\U0010ffff
623: '0'-'9'
624: '0'-'9'
625: 'a'-'f'
626: 'A'-'F'
627: '0'-'7'
628: '0'-'1'
629: 'A'-'Z'
630: 'a'-'z'
631: '0'-'9'
632: \u00a0-\u00ff
633: \u0100-\U0010ffff
634: 'A'-'Z'
635: 'a'-'z'
477: '\'
478: '"'
479: '\'
480: '['
481: '\'
482: ']'
483: '\'
484: '.'
485: '\'
486: '*'
487: '\'
488: '%'
489: '\'
490: 'A'
491: '\'
492: 'B'
493: '\'
494: 'C'
495: '\'
496: 'D'
497: '\'
498: 'G'
499: '\'
500: 'H'
501: '\'
502: 'K'
503: '\'
504: 'L'
505: '\'
506: 'N'
507: '\'
508: 'P'
509: '\'
510: 'R'
511: '\'
512: 'S'
513: '\'
514: 'U'
515: '\'
516: 'V'
517: '\'
518: 'W'
519: '\'
520: 'X'
521: '\'
522: 'Z'
523: '\'
524: 'a'
525: '\'
526: 'b'
527: '\'
528: 'c'
529: '\'
530: 'd'
531: '\'
532: 'f'
533: '\'
534: 'g'
535: '\'
536: 'h'
537: '\'
538: 'k'
539: '\'
540: 'l'
541: '\'
542: 'n'
543: '\'
544: 'p'
545: '\'
546: 'r'
547: '\'
548: 's'
549: '\'
550: 't'
551: '\'
552: 'u'
553: '\'
554: 'v'
555: '\'
556: 'w'
557: '\'
558: 'x'
559: '\'
560: 'z'
561: '\'
562: '0'
563: '\'
564: '1'
565: '\'
566: '2'
567: '\'
568: '3'
569: '\'
570: '4'
571: '\'
572: '5'
573: '\'
574: '6'
575: '\'
576: '7'
577: '\'
578: '8'
579: '\'
580: '9'
581: 'e'
582: 'E'
583: 't'
584: 'r'
585: 'u'
586: 'e'
587: 'f'
588: 'a'
589: 'l'
590: 's'
591: 'e'
592: ' '
593: '!'
594: '#'
595: '$'
596: '%'
597: '&'
598: '''
599: '\'
600: '('
601: ')'
602: '*'
603: '+'
604: ','
605: '-'
606: '.'
607: '/'
608: ':'
609: ';'
610: '<'
611: '='
612: '>'
613: '?'
614: '@'
615: '['
616: ']'
617: '^'
618: '_'
619: '`'
620: '|'
621: '~'
622: '\'
623: '{'
624: '\'
625: '}'
626: ' '
627: '\t'
628: '\n'
629: '\r'
630: '#'
631: '\n'
632: 'a'-'z'
633: 'A'-'Z'
634: \u00a0-\u00ff
635: \u0100-\U0010ffff
636: '0'-'9'
637: \u0100-\U0010ffff
638: .
637: '0'-'9'
638: 'a'-'f'
639: 'A'-'F'
640: '0'-'7'
641: '0'-'1'
642: 'A'-'Z'
643: 'a'-'z'
644: '0'-'9'
645: \u00a0-\u00ff
646: \u0100-\U0010ffff
647: 'A'-'Z'
648: 'a'-'z'
649: '0'-'9'
650: \u0100-\U0010ffff
651: .
*/

View file

@ -5038,7 +5038,11 @@ var TransTab = TransitionTable{
return 101
case r == 112: // ['p','p']
return 299
case 113 <= r && r <= 122: // ['q','z']
case 113 <= r && r <= 117: // ['q','u']
return 101
case r == 118: // ['v','v']
return 300
case 119 <= r && r <= 122: // ['w','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -5059,7 +5063,7 @@ var TransTab = TransitionTable{
case 97 <= r && r <= 109: // ['a','m']
return 101
case r == 110: // ['n','n']
return 300
return 301
case 111 <= r && r <= 122: // ['o','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
@ -5081,7 +5085,7 @@ var TransTab = TransitionTable{
case 97 <= r && r <= 100: // ['a','d']
return 101
case r == 101: // ['e','e']
return 301
return 302
case 102 <= r && r <= 122: // ['f','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
@ -5103,7 +5107,7 @@ var TransTab = TransitionTable{
case 97 <= r && r <= 100: // ['a','d']
return 101
case r == 101: // ['e','e']
return 302
return 303
case 102 <= r && r <= 122: // ['f','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
@ -5125,7 +5129,7 @@ var TransTab = TransitionTable{
case 97 <= r && r <= 115: // ['a','s']
return 101
case r == 116: // ['t','t']
return 303
return 304
case 117 <= r && r <= 122: // ['u','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
@ -5147,7 +5151,7 @@ var TransTab = TransitionTable{
case 97 <= r && r <= 115: // ['a','s']
return 101
case r == 116: // ['t','t']
return 304
return 305
case 117 <= r && r <= 122: // ['u','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
@ -5187,7 +5191,7 @@ var TransTab = TransitionTable{
case 97 <= r && r <= 115: // ['a','s']
return 101
case r == 116: // ['t','t']
return 305
return 306
case 117 <= r && r <= 122: // ['u','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
@ -5209,7 +5213,7 @@ var TransTab = TransitionTable{
case 97 <= r && r <= 113: // ['a','q']
return 101
case r == 114: // ['r','r']
return 306
return 307
case 115 <= r && r <= 122: // ['s','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
@ -5231,7 +5235,7 @@ var TransTab = TransitionTable{
case 97 <= r && r <= 113: // ['a','q']
return 101
case r == 114: // ['r','r']
return 307
return 308
case 115 <= r && r <= 122: // ['s','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
@ -5253,7 +5257,7 @@ var TransTab = TransitionTable{
case 97 <= r && r <= 116: // ['a','t']
return 101
case r == 117: // ['u','u']
return 308
return 309
case 118 <= r && r <= 122: // ['v','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
@ -5311,7 +5315,7 @@ var TransTab = TransitionTable{
case 97 <= r && r <= 115: // ['a','s']
return 101
case r == 116: // ['t','t']
return 309
return 310
case 117 <= r && r <= 122: // ['u','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
@ -5333,7 +5337,7 @@ var TransTab = TransitionTable{
case 97 <= r && r <= 100: // ['a','d']
return 101
case r == 101: // ['e','e']
return 310
return 311
case 102 <= r && r <= 122: // ['f','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
@ -5347,7 +5351,7 @@ var TransTab = TransitionTable{
func(r rune) int {
switch {
case r == 110: // ['n','n']
return 311
return 312
}
return NoState
},
@ -5371,7 +5375,7 @@ var TransTab = TransitionTable{
func(r rune) int {
switch {
case 48 <= r && r <= 57: // ['0','9']
return 312
return 313
}
return NoState
},
@ -5379,7 +5383,7 @@ var TransTab = TransitionTable{
func(r rune) int {
switch {
case 48 <= r && r <= 57: // ['0','9']
return 313
return 314
}
return NoState
},
@ -5413,11 +5417,11 @@ var TransTab = TransitionTable{
case 48 <= r && r <= 57: // ['0','9']
return 100
case r == 65: // ['A','A']
return 314
return 315
case 66 <= r && r <= 84: // ['B','T']
return 101
case r == 85: // ['U','U']
return 315
return 316
case 86 <= r && r <= 90: // ['V','Z']
return 101
case r == 95: // ['_','_']
@ -5439,7 +5443,7 @@ var TransTab = TransitionTable{
case 65 <= r && r <= 68: // ['A','D']
return 101
case r == 69: // ['E','E']
return 316
return 317
case 70 <= r && r <= 90: // ['F','Z']
return 101
case r == 95: // ['_','_']
@ -5501,7 +5505,7 @@ var TransTab = TransitionTable{
case 97 <= r && r <= 109: // ['a','m']
return 101
case r == 110: // ['n','n']
return 317
return 318
case 111 <= r && r <= 122: // ['o','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
@ -5574,7 +5578,11 @@ var TransTab = TransitionTable{
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
case 97 <= r && r <= 117: // ['a','u']
return 101
case r == 118: // ['v','v']
return 319
case 119 <= r && r <= 122: // ['w','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -5586,17 +5594,17 @@ var TransTab = TransitionTable{
// S300
func(r rune) int {
switch {
case 48 <= r && r <= 57: // ['0','9']
case 48 <= r && r <= 49: // ['0','1']
return 100
case r == 50: // ['2','2']
return 320
case 51 <= r && r <= 57: // ['3','9']
return 100
case 65 <= r && r <= 90: // ['A','Z']
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 115: // ['a','s']
return 101
case r == 116: // ['t','t']
return 318
case 117 <= r && r <= 122: // ['u','z']
case 97 <= r && r <= 122: // ['a','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -5614,7 +5622,11 @@ var TransTab = TransitionTable{
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
case 97 <= r && r <= 115: // ['a','s']
return 101
case r == 116: // ['t','t']
return 321
case 117 <= r && r <= 122: // ['u','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -5632,11 +5644,7 @@ var TransTab = TransitionTable{
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 113: // ['a','q']
return 101
case r == 114: // ['r','r']
return 319
case 115 <= r && r <= 122: // ['s','z']
case 97 <= r && r <= 122: // ['a','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -5654,7 +5662,11 @@ var TransTab = TransitionTable{
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
case 97 <= r && r <= 113: // ['a','q']
return 101
case r == 114: // ['r','r']
return 322
case 115 <= r && r <= 122: // ['s','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -5690,11 +5702,7 @@ var TransTab = TransitionTable{
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 109: // ['a','m']
return 101
case r == 110: // ['n','n']
return 320
case 111 <= r && r <= 122: // ['o','z']
case 97 <= r && r <= 122: // ['a','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -5715,7 +5723,7 @@ var TransTab = TransitionTable{
case 97 <= r && r <= 109: // ['a','m']
return 101
case r == 110: // ['n','n']
return 321
return 323
case 111 <= r && r <= 122: // ['o','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
@ -5734,11 +5742,11 @@ var TransTab = TransitionTable{
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 113: // ['a','q']
case 97 <= r && r <= 109: // ['a','m']
return 101
case r == 114: // ['r','r']
return 322
case 115 <= r && r <= 122: // ['s','z']
case r == 110: // ['n','n']
return 324
case 111 <= r && r <= 122: // ['o','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -5756,11 +5764,11 @@ var TransTab = TransitionTable{
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 115: // ['a','s']
case 97 <= r && r <= 113: // ['a','q']
return 101
case r == 116: // ['t','t']
return 323
case 117 <= r && r <= 122: // ['u','z']
case r == 114: // ['r','r']
return 325
case 115 <= r && r <= 122: // ['s','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -5778,7 +5786,11 @@ var TransTab = TransitionTable{
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
case 97 <= r && r <= 115: // ['a','s']
return 101
case r == 116: // ['t','t']
return 326
case 117 <= r && r <= 122: // ['u','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -5808,16 +5820,26 @@ var TransTab = TransitionTable{
// S311
func(r rune) int {
switch {
case r == 105: // ['i','i']
return 324
case 48 <= r && r <= 57: // ['0','9']
return 100
case 65 <= r && r <= 90: // ['A','Z']
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
case 256 <= r && r <= 1114111: // [\u0100,\U0010ffff]
return 101
}
return NoState
},
// S312
func(r rune) int {
switch {
case 48 <= r && r <= 57: // ['0','9']
return 312
case r == 105: // ['i','i']
return 327
}
return NoState
},
@ -5833,21 +5855,7 @@ var TransTab = TransitionTable{
func(r rune) int {
switch {
case 48 <= r && r <= 57: // ['0','9']
return 100
case 65 <= r && r <= 76: // ['A','L']
return 101
case r == 77: // ['M','M']
return 325
case 78 <= r && r <= 90: // ['N','Z']
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
case 256 <= r && r <= 1114111: // [\u0100,\U0010ffff]
return 101
return 314
}
return NoState
},
@ -5859,7 +5867,7 @@ var TransTab = TransitionTable{
case 65 <= r && r <= 76: // ['A','L']
return 101
case r == 77: // ['M','M']
return 326
return 328
case 78 <= r && r <= 90: // ['N','Z']
return 101
case r == 95: // ['_','_']
@ -5878,11 +5886,11 @@ var TransTab = TransitionTable{
switch {
case 48 <= r && r <= 57: // ['0','9']
return 100
case 65 <= r && r <= 79: // ['A','O']
case 65 <= r && r <= 76: // ['A','L']
return 101
case r == 80: // ['P','P']
return 327
case 81 <= r && r <= 90: // ['Q','Z']
case r == 77: // ['M','M']
return 329
case 78 <= r && r <= 90: // ['N','Z']
return 101
case r == 95: // ['_','_']
return 102
@ -5900,15 +5908,15 @@ var TransTab = TransitionTable{
switch {
case 48 <= r && r <= 57: // ['0','9']
return 100
case 65 <= r && r <= 90: // ['A','Z']
case 65 <= r && r <= 79: // ['A','O']
return 101
case r == 80: // ['P','P']
return 330
case 81 <= r && r <= 90: // ['Q','Z']
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 116: // ['a','t']
return 101
case r == 117: // ['u','u']
return 328
case 118 <= r && r <= 122: // ['v','z']
case 97 <= r && r <= 122: // ['a','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -5926,11 +5934,11 @@ var TransTab = TransitionTable{
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 109: // ['a','m']
case 97 <= r && r <= 116: // ['a','t']
return 101
case r == 110: // ['n','n']
return 329
case 111 <= r && r <= 122: // ['o','z']
case r == 117: // ['u','u']
return 331
case 118 <= r && r <= 122: // ['v','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -5942,7 +5950,11 @@ var TransTab = TransitionTable{
// S319
func(r rune) int {
switch {
case 48 <= r && r <= 57: // ['0','9']
case 48 <= r && r <= 49: // ['0','1']
return 100
case r == 50: // ['2','2']
return 332
case 51 <= r && r <= 57: // ['3','9']
return 100
case 65 <= r && r <= 90: // ['A','Z']
return 101
@ -5984,7 +5996,11 @@ var TransTab = TransitionTable{
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
case 97 <= r && r <= 109: // ['a','m']
return 101
case r == 110: // ['n','n']
return 333
case 111 <= r && r <= 122: // ['o','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -6032,8 +6048,18 @@ var TransTab = TransitionTable{
// S324
func(r rune) int {
switch {
case r == 99: // ['c','c']
return 330
case 48 <= r && r <= 57: // ['0','9']
return 100
case 65 <= r && r <= 90: // ['A','Z']
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
case 256 <= r && r <= 1114111: // [\u0100,\U0010ffff]
return 101
}
return NoState
},
@ -6042,11 +6068,7 @@ var TransTab = TransitionTable{
switch {
case 48 <= r && r <= 57: // ['0','9']
return 100
case 65 <= r && r <= 68: // ['A','D']
return 101
case r == 69: // ['E','E']
return 331
case 70 <= r && r <= 90: // ['F','Z']
case 65 <= r && r <= 90: // ['A','Z']
return 101
case r == 95: // ['_','_']
return 102
@ -6080,18 +6102,8 @@ var TransTab = TransitionTable{
// S327
func(r rune) int {
switch {
case 48 <= r && r <= 57: // ['0','9']
return 100
case 65 <= r && r <= 90: // ['A','Z']
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
case 256 <= r && r <= 1114111: // [\u0100,\U0010ffff]
return 101
case r == 99: // ['c','c']
return 334
}
return NoState
},
@ -6100,15 +6112,15 @@ var TransTab = TransitionTable{
switch {
case 48 <= r && r <= 57: // ['0','9']
return 100
case 65 <= r && r <= 90: // ['A','Z']
case 65 <= r && r <= 68: // ['A','D']
return 101
case r == 69: // ['E','E']
return 335
case 70 <= r && r <= 90: // ['F','Z']
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 100: // ['a','d']
return 101
case r == 101: // ['e','e']
return 332
case 102 <= r && r <= 122: // ['f','z']
case 97 <= r && r <= 122: // ['a','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -6138,8 +6150,18 @@ var TransTab = TransitionTable{
// S330
func(r rune) int {
switch {
case r == 37: // ['%','%']
return 333
case 48 <= r && r <= 57: // ['0','9']
return 100
case 65 <= r && r <= 90: // ['A','Z']
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
case 256 <= r && r <= 1114111: // [\u0100,\U0010ffff]
return 101
}
return NoState
},
@ -6152,7 +6174,11 @@ var TransTab = TransitionTable{
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
case 97 <= r && r <= 100: // ['a','d']
return 101
case r == 101: // ['e','e']
return 336
case 102 <= r && r <= 122: // ['f','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
@ -6182,8 +6208,18 @@ var TransTab = TransitionTable{
// S333
func(r rune) int {
switch {
case r == 37: // ['%','%']
return 334
case 48 <= r && r <= 57: // ['0','9']
return 100
case 65 <= r && r <= 90: // ['A','Z']
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
case 256 <= r && r <= 1114111: // [\u0100,\U0010ffff]
return 101
}
return NoState
},
@ -6191,11 +6227,63 @@ var TransTab = TransitionTable{
func(r rune) int {
switch {
case r == 37: // ['%','%']
return 335
return 337
}
return NoState
},
// S335
func(r rune) int {
switch {
case 48 <= r && r <= 57: // ['0','9']
return 100
case 65 <= r && r <= 90: // ['A','Z']
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
case 256 <= r && r <= 1114111: // [\u0100,\U0010ffff]
return 101
}
return NoState
},
// S336
func(r rune) int {
switch {
case 48 <= r && r <= 57: // ['0','9']
return 100
case 65 <= r && r <= 90: // ['A','Z']
return 101
case r == 95: // ['_','_']
return 102
case 97 <= r && r <= 122: // ['a','z']
return 101
case 160 <= r && r <= 255: // [\u00a0,\u00ff]
return 101
case 256 <= r && r <= 1114111: // [\u0100,\U0010ffff]
return 101
}
return NoState
},
// S337
func(r rune) int {
switch {
case r == 37: // ['%','%']
return 338
}
return NoState
},
// S338
func(r rune) int {
switch {
case r == 37: // ['%','%']
return 339
}
return NoState
},
// S339
func(r rune) int {
switch {
}

View file

@ -234,6 +234,8 @@ emit1 : 'e' 'm' 'i' 't' '1' ;
emit : 'e' 'm' 'i' 't' ;
emitp : 'e' 'm' 'i' 't' 'p' ;
emitf : 'e' 'm' 'i' 't' 'f' ;
emitv2 : 'e' 'm' 'i' 't' 'v' '2';
emitpv2 : 'e' 'm' 'i' 't' 'p' 'v' '2';
eprint : 'e' 'p' 'r' 'i' 'n' 't' ;
eprintn : 'e' 'p' 'r' 'i' 'n' 't' 'n' ;
print : 'p' 'r' 'i' 'n' 't' ;
@ -921,6 +923,29 @@ EmitStatement
dsl.NodeTypeEmitStatement,
)
>>
| emitv2 "(" Rvalue "," Rvalue ")"
<<
dsl.NewASTNodeTernary(
$0, // emit
$2, // emittables
$4, // keys
dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
dsl.NodeTypeEmitV2Statement,
)
>>
| emitv2 "(" Rvalue "," Rvalue ")" Redirector
<<
dsl.NewASTNodeTernary(
$0, // emit
$2, // emittables
$4, // keys
$6, // redirect
dsl.NodeTypeEmitV2Statement,
)
>>
;
// ----------------------------------------------------------------
@ -1012,6 +1037,29 @@ EmitPStatement
dsl.NodeTypeEmitPStatement,
)
>>
| emitpv2 "(" Rvalue "," Rvalue ")"
<<
dsl.NewASTNodeTernary(
$0, // emit
$2, // emittables
$4, // keys
dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
dsl.NodeTypeEmitPV2Statement,
)
>>
| emitpv2 "(" Rvalue "," Rvalue ")" Redirector
<<
dsl.NewASTNodeTernary(
$0, // emit
$2, // emittables
$4, // keys
$6, // redirect
dsl.NodeTypeEmitPV2Statement,
)
>>
;
// ----------------------------------------------------------------

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -11,9 +11,9 @@ import (
)
const (
numProductions = 338
numStates = 4675
numSymbols = 256
numProductions = 342
numStates = 4721
numSymbols = 258
)
// Stack

File diff suppressed because it is too large Load diff

View file

@ -163,7 +163,9 @@ var TokMap = TokenMap{
"emit",
"(",
")",
"emitv2",
"emitp",
"emitpv2",
"field_name",
"$[",
"]",
@ -311,123 +313,125 @@ var TokMap = TokenMap{
"emit": 24,
"(": 25,
")": 26,
"emitp": 27,
"field_name": 28,
"$[": 29,
"]": 30,
"braced_field_name": 31,
"$[[": 32,
"$[[[": 33,
"full_srec": 34,
"oosvar_name": 35,
"@[": 36,
"braced_oosvar_name": 37,
"full_oosvar": 38,
"all": 39,
"non_sigil_name": 40,
"arr": 41,
"bool": 42,
"float": 43,
"int": 44,
"map": 45,
"num": 46,
"str": 47,
"var": 48,
"funct": 49,
"||=": 50,
"^^=": 51,
"&&=": 52,
"??=": 53,
"???=": 54,
"|=": 55,
"&=": 56,
"^=": 57,
"<<=": 58,
">>=": 59,
">>>=": 60,
"+=": 61,
".=": 62,
"-=": 63,
"*=": 64,
"/=": 65,
"//=": 66,
"%=": 67,
"**=": 68,
"?": 69,
":": 70,
"||": 71,
"^^": 72,
"&&": 73,
"??": 74,
"???": 75,
"=~": 76,
"!=~": 77,
"==": 78,
"!=": 79,
"<=>": 80,
">=": 81,
"<": 82,
"<=": 83,
"^": 84,
"&": 85,
"<<": 86,
">>>": 87,
"+": 88,
"-": 89,
".+": 90,
".-": 91,
"*": 92,
"/": 93,
"//": 94,
"%": 95,
".*": 96,
"./": 97,
".//": 98,
".": 99,
"!": 100,
"~": 101,
"**": 102,
"string_literal": 103,
"regex_case_insensitive": 104,
"int_literal": 105,
"float_literal": 106,
"boolean_literal": 107,
"null_literal": 108,
"inf_literal": 109,
"nan_literal": 110,
"const_M_PI": 111,
"const_M_E": 112,
"panic": 113,
"[": 114,
"ctx_IPS": 115,
"ctx_IFS": 116,
"ctx_IRS": 117,
"ctx_OPS": 118,
"ctx_OFS": 119,
"ctx_ORS": 120,
"ctx_FLATSEP": 121,
"ctx_NF": 122,
"ctx_NR": 123,
"ctx_FNR": 124,
"ctx_FILENAME": 125,
"ctx_FILENUM": 126,
"env": 127,
"[[": 128,
"[[[": 129,
"call": 130,
"begin": 131,
"end": 132,
"if": 133,
"elif": 134,
"else": 135,
"while": 136,
"do": 137,
"for": 138,
"in": 139,
"break": 140,
"continue": 141,
"func": 142,
"subr": 143,
"return": 144,
"emitv2": 27,
"emitp": 28,
"emitpv2": 29,
"field_name": 30,
"$[": 31,
"]": 32,
"braced_field_name": 33,
"$[[": 34,
"$[[[": 35,
"full_srec": 36,
"oosvar_name": 37,
"@[": 38,
"braced_oosvar_name": 39,
"full_oosvar": 40,
"all": 41,
"non_sigil_name": 42,
"arr": 43,
"bool": 44,
"float": 45,
"int": 46,
"map": 47,
"num": 48,
"str": 49,
"var": 50,
"funct": 51,
"||=": 52,
"^^=": 53,
"&&=": 54,
"??=": 55,
"???=": 56,
"|=": 57,
"&=": 58,
"^=": 59,
"<<=": 60,
">>=": 61,
">>>=": 62,
"+=": 63,
".=": 64,
"-=": 65,
"*=": 66,
"/=": 67,
"//=": 68,
"%=": 69,
"**=": 70,
"?": 71,
":": 72,
"||": 73,
"^^": 74,
"&&": 75,
"??": 76,
"???": 77,
"=~": 78,
"!=~": 79,
"==": 80,
"!=": 81,
"<=>": 82,
">=": 83,
"<": 84,
"<=": 85,
"^": 86,
"&": 87,
"<<": 88,
">>>": 89,
"+": 90,
"-": 91,
".+": 92,
".-": 93,
"*": 94,
"/": 95,
"//": 96,
"%": 97,
".*": 98,
"./": 99,
".//": 100,
".": 101,
"!": 102,
"~": 103,
"**": 104,
"string_literal": 105,
"regex_case_insensitive": 106,
"int_literal": 107,
"float_literal": 108,
"boolean_literal": 109,
"null_literal": 110,
"inf_literal": 111,
"nan_literal": 112,
"const_M_PI": 113,
"const_M_E": 114,
"panic": 115,
"[": 116,
"ctx_IPS": 117,
"ctx_IFS": 118,
"ctx_IRS": 119,
"ctx_OPS": 120,
"ctx_OFS": 121,
"ctx_ORS": 122,
"ctx_FLATSEP": 123,
"ctx_NF": 124,
"ctx_NR": 125,
"ctx_FNR": 126,
"ctx_FILENAME": 127,
"ctx_FILENUM": 128,
"env": 129,
"[[": 130,
"[[[": 131,
"call": 132,
"begin": 133,
"end": 134,
"if": 135,
"elif": 136,
"else": 137,
"while": 138,
"do": 139,
"for": 140,
"in": 141,
"break": 142,
"continue": 143,
"func": 144,
"subr": 145,
"return": 146,
},
}