@fraczak/k 5.1.2 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/Code-derivation-tests/blowup.mjs +3 -3
  2. package/Code-derivation-tests/bnat.mjs +2 -2
  3. package/Code-derivation-tests/codec-witness-pattern.mjs +50 -0
  4. package/Code-derivation-tests/convergence-strategy.mjs +24 -0
  5. package/Code-derivation-tests/dot.mjs +12 -9
  6. package/Code-derivation-tests/filter-syntax.mjs +21 -0
  7. package/Code-derivation-tests/loop.mjs +8 -2
  8. package/Code-derivation-tests/nat.mjs +1 -1
  9. package/Code-derivation-tests/not-not.mjs +3 -3
  10. package/Code-derivation-tests/pattern-envelope.mjs +68 -0
  11. package/Code-derivation-tests/rlz.mjs +2 -2
  12. package/{BIG_PICTURE.md → DOCS/BIG_PICTURE.md} +103 -50
  13. package/DOCS/REPL.md +191 -0
  14. package/DOCS/book/01-introduction.md +51 -0
  15. package/DOCS/book/02-syntax-and-values.md +111 -0
  16. package/DOCS/book/03-types-as-finite-automata.md +156 -0
  17. package/DOCS/book/04-partial-functions-and-composition.md +146 -0
  18. package/DOCS/book/05-typing-filters-and-normalization.md +111 -0
  19. package/DOCS/book.md +54 -0
  20. package/README.md +204 -508
  21. package/TypeGraph.mjs +43 -0
  22. package/TypePatternGraph.mjs +251 -0
  23. package/Value.mjs +192 -0
  24. package/augmentation.mjs +198 -0
  25. package/codecs/BINARY_FORMAT.md +53 -0
  26. package/codecs/POLYMORPHIC_BINARY_FORMAT.md +303 -0
  27. package/codecs/README.md +215 -0
  28. package/codecs/example-pipeline.mjs +149 -0
  29. package/codecs/ieee.mjs +140 -0
  30. package/codecs/int.mjs +104 -0
  31. package/codecs/json-codec.mjs +215 -0
  32. package/codecs/json.mjs +40 -0
  33. package/codecs/k-parse.mjs +90 -0
  34. package/codecs/k-pattern.mjs +75 -0
  35. package/codecs/k-print.mjs +46 -0
  36. package/codecs/runtime/codec.mjs +768 -0
  37. package/codecs/runtime/ieee-pattern.mjs +30 -0
  38. package/codecs/runtime/pattern-json.mjs +96 -0
  39. package/codecs/runtime/prefix-codec.mjs +425 -0
  40. package/codecs/runtime/show-value.mjs +68 -0
  41. package/codecs/runtime/typeFromValue.mjs +34 -0
  42. package/codecs/runtime/unicode-string.mjs +220 -0
  43. package/codecs/show.mjs +41 -0
  44. package/codecs/string-codec.mjs +80 -0
  45. package/codecs/unit.mjs +51 -0
  46. package/codecs/utf16.mjs +66 -0
  47. package/codecs/utf8.mjs +37 -0
  48. package/codes.mjs +146 -44
  49. package/compiler.mjs +111 -0
  50. package/convergence.mjs +197 -0
  51. package/core.k +197 -0
  52. package/export.mjs +22 -32
  53. package/hash.mjs +29 -31
  54. package/index.mjs +41 -15
  55. package/k-vscode/.vscode/launch.json +14 -0
  56. package/k-vscode/README.md +65 -0
  57. package/k-vscode/language-configuration.json +42 -0
  58. package/k-vscode/package.json +57 -0
  59. package/k-vscode/snippets/k.json +92 -0
  60. package/k-vscode/syntaxes/k.tmLanguage.json +243 -0
  61. package/k.mjs +56 -54
  62. package/object.mjs +517 -0
  63. package/objects/README.md +38 -0
  64. package/objects/compile-lib.mjs +42 -0
  65. package/objects/compile.mjs +42 -0
  66. package/objects/decompile.mjs +32 -0
  67. package/package.json +18 -8
  68. package/parser.jison +27 -46
  69. package/parser.mjs +68 -100
  70. package/pretty.mjs +21 -40
  71. package/repl2.mjs +652 -0
  72. package/run.mjs +264 -231
  73. package/symbol-table.mjs +3 -17
  74. package/test-fingerprint.mjs +7 -7
  75. package/test-hash-fuzz.mjs +107 -0
  76. package/test-hash-normalization.mjs +134 -0
  77. package/test-k-object.mjs +74 -0
  78. package/test-repl2.mjs +95 -0
  79. package/test.mjs +45 -70
  80. package/tests.sh +10 -1
  81. package/typing.mjs +129 -676
  82. package/unification.mjs +157 -0
  83. package/valueIO.mjs +54 -0
  84. package/valueParser.jison +143 -0
  85. package/valueParser.mjs +713 -0
  86. package/Code-derivation-tests/built-in.mjs +0 -19
  87. package/Code-derivation-tests/vector.mjs +0 -19
  88. package/Filters/bug.k +0 -3
  89. package/Filters/composing.k +0 -15
  90. package/Filters/filter.k +0 -9
  91. package/TODO.md +0 -53
  92. package/TYPING.md +0 -365
  93. package/k-repl.cast +0 -1913
  94. package/k.cast +0 -618
  95. package/my-objects.json +0 -6
  96. package/patterns.mjs +0 -543
  97. package/repl.mjs +0 -213
  98. package/test-filters.mjs +0 -45
  99. package/typing-test.mjs +0 -40
package/package.json CHANGED
@@ -1,23 +1,33 @@
1
1
  {
2
2
  "name": "@fraczak/k",
3
- "version": "5.1.2",
4
- "description": "k-language for JSON-like data transformation",
3
+ "version": "6.0.0",
4
+ "description": "k — a language for composing first-order partial functions over algebraic data types (products and tagged unions); includes runtime, type derivation, REPL, and codec toolchain",
5
5
  "main": "index.mjs",
6
6
  "scripts": {
7
- "prepare": "jiwson -m es6 parser.jison -o parser.mjs",
8
- "test": "node test.mjs; for f in Code-derivation-tests/*.mjs; do echo $f; node $f; done; node test-fingerprint.mjs; ./tests.sh"
7
+ "prepare": "jiwson -m es6 parser.jison -o parser.mjs; jiwson -m es6 valueParser.jison -o valueParser.mjs; ",
8
+ "test": "node test.mjs; for f in Code-derivation-tests/*.mjs; do echo $f; node $f; done; node test-fingerprint.mjs; node test-hash-fuzz.mjs; node test-hash-normalization.mjs; node test-k-object.mjs; node test-repl2.mjs; ./tests.sh",
9
+ "deps:graph": "node scripts/generate-dependency-graph.mjs"
9
10
  },
10
11
  "repository": {
11
12
  "type": "git",
12
- "url": "https://github.com/fraczak/k.git"
13
+ "url": "git+https://github.com/fraczak/k.git"
14
+ },
15
+ "publishConfig": {
16
+ "access": "public"
13
17
  },
14
18
  "author": "Wojciech Fraczak",
15
19
  "license": "ISC",
16
20
  "bin": {
17
- "k": "./k.mjs",
18
- "k-repl": "./repl.mjs"
21
+ "k": "k.mjs",
22
+ "k-compile-object": "objects/compile.mjs",
23
+ "k-decompile-object": "objects/decompile.mjs",
24
+ "k-parse": "codecs/k-parse.mjs",
25
+ "k-pattern": "codecs/k-pattern.mjs",
26
+ "k-print": "codecs/k-print.mjs",
27
+ "k-repl": "repl2.mjs",
28
+ "k-repl2": "repl2.mjs"
19
29
  },
20
30
  "devDependencies": {
21
- "jiwson": "^0.1.1"
31
+ "jiwson": "^0.1.2"
22
32
  }
23
33
  }
package/parser.jison CHANGED
@@ -37,63 +37,63 @@ function fromEscString(escString) {
37
37
  return str;
38
38
  }
39
39
 
40
+
40
41
  %}
41
42
 
42
43
  %lex
43
44
 
44
45
  %%
45
- [/][*]([^*]*[*]+[^*/])*[^*]*[*]+[/] /* c-comment */
46
- ("//"|"#"|"%"|"--"|"\\")[^\n]* /* one line comment */
47
- \s+ /* blanks */
46
+ [/][*]([^*]*[*]+[^*/])*[^*]*[*]+[/] /* c-comment */
47
+ ("//"|"#"|"%"|"--"|"\\\\")[^\n]* /* one line comment */
48
+ \s+ /* blanks */
48
49
  "<" return 'LA';
49
50
  "{" return 'LC';
50
- "[" return 'LB';
51
51
  "(" return 'LP';
52
52
  ">" return 'RA';
53
53
  "}" return 'RC';
54
- "]" return 'RB';
55
54
  ")" return 'RP';
56
55
  "=" return 'EQ';
57
56
  "..." return 'DOTS';
58
57
  "." return 'DOT';
58
+ "/" return 'DIV';
59
+ ("\\"|"|") return 'VID';
59
60
  "," return 'COMMA';
60
61
  ";" return 'SC';
61
62
  ":" return 'COL';
62
63
  "$" return 'DOLLAR';
63
64
  "?" return 'QMARK';
64
- "|" return 'PIPE';
65
- "^" return 'CARET';
66
65
  "@" return 'AT';
67
66
  \"([^"\\]|\\(.|\n))*\"|\'([^'\\]|\\(.|\n))*\' return 'STRING';
68
- [a-zA-Z_][a-zA-Z0-9_?!]* return 'NAME';
69
- 0|[-]?[1-9][0-9]* return 'INT';
70
- "+++" return 'INCREMENTAL';
67
+ [a-zA-Z0-9_+-][a-zA-Z0-9_?!+-]* return 'NAME';
68
+
69
+ "~" return 'INCREMENTAL';
71
70
  <<EOF>> return 'EOF';
72
71
 
73
72
  /lex
74
73
 
75
- %token NAME STRING INT
76
- %token LA LC LB LP RA RP RB RC EQ DOT COMMA SC COL DOLLAR PIPE CARET AT QMARK DOTS
74
+ %token NAME STRING
75
+ %token LA LC LP RA RP RC EQ DOT COMMA SC COL DOLLAR AT QMARK DOTS DIV VID
76
+ %token INCREMENTAL
77
77
  %token EOF
78
78
 
79
79
  %start input_with_eof
80
80
 
81
81
  %%
82
82
 
83
+ str : STRING { $$ = getToken(yytext,yy,_$); $$.value = fromEscString($$.value);};
83
84
  name: NAME { $$ = getToken(yytext,yy,_$); };
84
- str: STRING { $$ = getToken(yytext,yy,_$); $$.value = fromEscString($$.value);};
85
- int: INT { $$ = getToken(yytext,yy,_$); $$.value = parseInt($$.value); };
85
+ at: AT { $$ = getToken(yytext,yy,_$); };
86
86
  la: LA { $$ = getToken(yytext,yy,_$); };
87
87
  lc: LC { $$ = getToken(yytext,yy,_$); };
88
- lb: LB { $$ = getToken(yytext,yy,_$); };
89
88
  lp: LP { $$ = getToken(yytext,yy,_$); };
90
89
  ra: RA { $$ = getToken(yytext,yy,_$); };
91
90
  rc: RC { $$ = getToken(yytext,yy,_$); };
92
- rb: RB { $$ = getToken(yytext,yy,_$); };
93
91
  rp: RP { $$ = getToken(yytext,yy,_$); };
94
92
  eq: EQ { $$ = getToken(yytext,yy,_$); };
95
93
  dots: DOTS { $$ = getToken(yytext,yy,_$); };
96
94
  dot: DOT { $$ = getToken(yytext,yy,_$); };
95
+ div: DIV { $$ = getToken(yytext,yy,_$); };
96
+ vid: VID { $$ = getToken(yytext,yy,_$); };
97
97
  comma: COMMA { $$ = getToken(yytext,yy,_$); };
98
98
  sc: SC { $$ = getToken(yytext,yy,_$); };
99
99
  col: COL { $$ = getToken(yytext,yy,_$); };
@@ -120,17 +120,13 @@ defs: { }
120
120
 
121
121
  code
122
122
  : name { $$ = { code: "ref", ref: $1.value, start: $1.start, end: $1.end}; }
123
- | AT name { $$ = { code: "ref", ref: "@" + $2.value, start: $1.start, end: $2.end}; }
124
123
  | codeDef { $$ = $1; }
125
124
  ;
126
125
 
127
126
  codeDef
128
- : lc labelled_codes rc { if (Object.keys($2).length == 1)
129
- $$ = { code: "union", union: $2, start: $1.start, end: $3.end };
130
- else
131
- $$ = { code: "product", product: $2, start: $1.start, end: $3.end }; }
132
- | lb code rb { $$ = { code: "vector", vector: s.as_ref($2), start: $1.start, end: $3.end }; }
127
+ : lc labelled_codes rc { $$ = { code: "product", product: $2, start: $1.start, end: $3.end }; }
133
128
  | la labelled_codes ra { $$ = { code: "union", union: $2, start: $1.start, end: $3.end }; }
129
+ | at name { $$ = { code: "ref", ref: "@" + $2.value, start: $1.start, end: $2.end}; }
134
130
  ;
135
131
 
136
132
  labelled_codes
@@ -152,24 +148,15 @@ non_empty_labelled_codes
152
148
  code_label
153
149
  : code name { $$ = {label: $2.value, code: $1}; }
154
150
  | code str { $$ = {label: $2.value, code: $1}; }
155
- | code int { $$ = {label: $2.value, code: $1}; }
156
151
  | name col code { $$ = {label: $1.value, code: $3}; }
157
152
  | str col code { $$ = {label: $1.value, code: $3}; }
158
- | int col code { $$ = {label: $1.value, code: $3}; }
159
153
  ;
160
154
 
161
155
  filter_
162
156
  : dollar code { $$ = { type: "code", code: s.as_ref($2), start: $1.start, end: $2.end}; }
163
- | lp labelled_filters rp { if ( !$2.open && (Object.keys($2.fields).length == 1))
164
- $$ = { type: "union", open: $2.open, fields: $2.fields, start: $1.start, end: $3.end};
165
- else
166
- $$ = { type: null, open: $2.open, fields: $2.fields, start: $1.start, end: $3.end}; }
157
+ | lp dots rp { $$ = { type: null, open: true, fields: {}, start: $1.start, end: $3.end}; }
167
158
  | la labelled_filters ra { $$ = { type: "union", open: $2.open, fields: $2.fields, start: $1.start, end: $3.end}; }
168
- | lc labelled_filters rc { if ( !$2.open && (Object.keys($2.fields).length == 1))
169
- $$ = { type: "union", open: $2.open, fields: $2.fields, start: $1.start, end: $3.end};
170
- else
171
- $$ = { type: "product", open: $2.open, fields: $2.fields, start: $1.start, end: $3.end}; }
172
- | lb filter rb { $$ = { type: "vector", vector: $2, start: $1.start, end: $3.end }; }
159
+ | lc labelled_filters rc { $$ = { type: "product", open: $2.open, fields: $2.fields, start: $1.start, end: $3.end}; }
173
160
  ;
174
161
 
175
162
  filter
@@ -201,34 +188,30 @@ filter_label
201
188
  : dots { $$ = {dots: true }; }
202
189
  | filter name { $$ = {label: $2.value, filter: $1}; }
203
190
  | filter str { $$ = {label: $2.value, filter: $1}; }
204
- | filter int { $$ = {label: $2.value, filter: $1}; }
205
191
  | name col filter { $$ = {label: $1.value, filter: $3}; }
206
192
  | str col filter { $$ = {label: $1.value, filter: $3}; }
207
- | int col filter { $$ = {label: $1.value, filter: $3}; }
208
193
  ;
209
194
 
210
195
  comp
211
196
  : exp { $$ = $1; }
212
197
  | comp exp { $$ = {...comp($1, $2), start: $1.start, end:$2.end}; }
213
- | comp CARET { $$ = {op: 'caret', caret: $1, start: $1.start, end:$2.end}; }
214
198
  ;
215
199
 
216
200
  exp
217
201
  : lc labelled rc { $$ = {...$2, start: $1.start, end: $3.end}; }
218
- | lb list rb { $$ = {op: "vector", vector: $2, start: $1.start, end: $3.end}; }
219
202
  | la list ra { $$ = {...union($2), start: $1.start, end: $3.end}; }
220
- | name { $$ = {op: "ref", ref: $1.value, start: $1.start, end: $1.end}; }
221
- | AT name { $$ = {op: "ref", ref: "@" + $2.value, start: $1.start, end: $2.end}; }
203
+ | at name { $$ = {op: "ref", ref: "@" + $2.value, start: $1.start, end: $2.end}; }
222
204
  | lp rp { $$ = {...identity, start: $1.start, end: $2.end}; }
223
205
  | lp comp rp { $$ = {...$2, start: $1.start, end: $3.end }; }
224
- | str { $$ = {op: "str", str: $1.value, start: $1.start, end: $1.end }; }
225
- | int { $$ = {op: "int", int: $1.value, start: $1.start, end: $1.end }; }
226
- | dot int { $$ = {op: "dot", dot: $2.value, start: $1.start, end: $2.end }; }
227
- | dot str { $$ = {op: "dot", dot: $2.value, start: $1.start, end: $2.end }; }
206
+ | name { $$ = {op: "ref", ref: $1.value, start: $1.start, end: $1.end}; }
228
207
  | dot name { $$ = {op: "dot", dot: $2.value, start: $1.start, end: $2.end }; }
208
+ | dot str { $$ = {op: "dot", dot: $2.value, start: $1.start, end: $2.end }; }
209
+ | div name { $$ = {op: "div", div: $2.value, start: $1.start, end: $2.end }; }
210
+ | div str { $$ = {op: "div", div: $2.value, start: $1.start, end: $2.end }; }
211
+ | vid name { $$ = {op: "vid", vid: $2.value, start: $1.start, end: $2.end }; }
212
+ | vid str { $$ = {op: "vid", vid: $2.value, start: $1.start, end: $2.end }; }
229
213
  | dollar code { $$ = {op: "code", code: s.as_ref($2), start: $1.start, end: $2.end}; }
230
214
  | qmark filter { $$ = {op: "filter", filter: $2, start: $1.start, end:$2.end}; }
231
- | PIPE { $$ = {op: "pipe", start: $1.start, end: $1.end}; }
232
215
  ;
233
216
 
234
217
  labelled
@@ -251,10 +234,8 @@ non_empty_labelled
251
234
  comp_label
252
235
  : comp name { $$ = {label: $2.value, exp: $1}; }
253
236
  | comp str { $$ = {label: $2.value, exp: $1}; }
254
- | comp int { $$ = {label: $2.value, exp: $1}; }
255
237
  | name col comp { $$ = {label: $1.value, exp: $3}; }
256
238
  | str col comp { $$ = {label: $1.value, exp: $3}; }
257
- | int col comp { $$ = {label: $1.value, exp: $3}; }
258
239
  ;
259
240
 
260
241
  list
package/parser.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- /* parser generated by jison 0.1.1 */
2
+ /* parser generated by jison 0.1.2 */
3
3
  /*
4
4
  Returns a Parser object of the following structure:
5
5
 
@@ -114,26 +114,24 @@ function fromEscString(escString) {
114
114
 
115
115
 
116
116
 
117
+
117
118
  var parser = (function(){
118
- var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[4,6,8,10,12,14,16,30,38,40,50,63],$V1=[1,10],$V2=[1,26],$V3=[1,27],$V4=[1,24],$V5=[1,22],$V6=[1,23],$V7=[1,25],$V8=[1,28],$V9=[1,11],$Va=[1,29],$Vb=[1,15],$Vc=[1,21],$Vd=[1,32],$Ve=[4,6,8,10,12,14,16,30,38,40,47,50,60,63],$Vf=[2,68],$Vg=[1,36],$Vh=[1,39],$Vi=[4,6,8,10,12,14,16,18,20,22,24,30,32,34,38,40,47,50,60,63],$Vj=[2,90],$Vk=[1,58],$Vl=[2,72],$Vm=[2,73],$Vn=[4,6,8,10,12,14,16,18,20,22,24,30,32,34,36,38,40,47,50,60,63],$Vo=[4,6,8],$Vp=[2,27],$Vq=[4,6,8,10,12,14,16,18,20,22,24,26,30,32,34,38,40,47,50,60,63],$Vr=[2,33],$Vs=[1,84],$Vt=[1,86],$Vu=[20,32],$Vv=[4,6,8,10,12,14,16,30,38,40,50,60,63],$Vw=[1,91],$Vx=[1,95],$Vy=[18,22,32],$Vz=[1,98],$VA=[2,50],$VB=[2,51],$VC=[1,110],$VD=[18,20,32],$VE=[2,84],$VF=[2,85],$VG=[2,86],$VH=[18,20,24,32];
119
+ var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,8,10,12,14,26,28,30,38,40],$V1=[1,10],$V2=[1,22],$V3=[1,21],$V4=[1,20],$V5=[1,23],$V6=[1,24],$V7=[1,25],$V8=[1,26],$V9=[1,11],$Va=[1,27],$Vb=[6,8,10,12,14,26,28,30,38,40,47],$Vc=[2,63],$Vd=[1,33],$Ve=[4,6,8,10,12,14,16,18,20,26,28,30,32,34,38,40,47],$Vf=[1,46],$Vg=[1,53],$Vh=[4,6],$Vi=[2,27],$Vj=[4,6,8,10,12,14,16,18,20,22,26,28,30,32,34,38,40,47],$Vk=[2,32],$Vl=[1,79],$Vm=[1,81],$Vn=[18,32],$Vo=[4,6,8,10,12,14,26,28,30,38,40],$Vp=[1,85],$Vq=[1,88],$Vr=[16,32],$Vs=[2,46],$Vt=[1,94],$Vu=[2,47],$Vv=[16,18],$Vw=[16,18,32],$Vx=[2,76];
119
120
  var parser = {trace: function trace () { },
120
121
  yy: {},
121
- symbols_: {"error":2,"name":3,"NAME":4,"str":5,"STRING":6,"int":7,"INT":8,"la":9,"LA":10,"lc":11,"LC":12,"lb":13,"LB":14,"lp":15,"LP":16,"ra":17,"RA":18,"rc":19,"RC":20,"rb":21,"RB":22,"rp":23,"RP":24,"eq":25,"EQ":26,"dots":27,"DOTS":28,"dot":29,"DOT":30,"comma":31,"COMMA":32,"sc":33,"SC":34,"col":35,"COL":36,"dollar":37,"DOLLAR":38,"qmark":39,"QMARK":40,"incremental":41,"INCREMENTAL":42,"input_with_eof":43,"initialize_symbol_table":44,"defs":45,"comp":46,"EOF":47,"codeDef":48,"code":49,"AT":50,"labelled_codes":51,"non_empty_labelled_codes":52,"code_label":53,"filter_":54,"labelled_filters":55,"filter":56,"non_empty_labelled_filters":57,"filter_label":58,"exp":59,"CARET":60,"labelled":61,"list":62,"PIPE":63,"non_empty_labelled":64,"comp_label":65,"non_empty_list":66,"$accept":0,"$end":1},
122
- terminals_: {2:"error",4:"NAME",6:"STRING",8:"INT",10:"LA",12:"LC",14:"LB",16:"LP",18:"RA",20:"RC",22:"RB",24:"RP",26:"EQ",28:"DOTS",30:"DOT",32:"COMMA",34:"SC",36:"COL",38:"DOLLAR",40:"QMARK",42:"INCREMENTAL",47:"EOF",50:"AT",60:"CARET",63:"PIPE"},
123
- productions_: [0,[3,1],[5,1],[7,1],[9,1],[11,1],[13,1],[15,1],[17,1],[19,1],[21,1],[23,1],[25,1],[27,1],[29,1],[31,1],[33,1],[35,1],[37,1],[39,1],[41,1],[43,4],[44,0],[44,1],[45,0],[45,5],[45,6],[49,1],[49,2],[49,1],[48,3],[48,3],[48,3],[51,0],[51,1],[52,1],[52,3],[53,2],[53,2],[53,2],[53,3],[53,3],[53,3],[54,2],[54,3],[54,3],[54,3],[54,3],[56,1],[56,3],[56,1],[55,0],[55,1],[57,1],[57,3],[58,1],[58,2],[58,2],[58,2],[58,3],[58,3],[58,3],[46,1],[46,2],[46,2],[59,3],[59,3],[59,3],[59,1],[59,2],[59,2],[59,3],[59,1],[59,1],[59,2],[59,2],[59,2],[59,2],[59,2],[59,1],[61,0],[61,1],[64,1],[64,3],[65,2],[65,2],[65,2],[65,3],[65,3],[65,3],[62,0],[62,1],[66,1],[66,3]],
122
+ symbols_: {"error":2,"str":3,"STRING":4,"name":5,"NAME":6,"at":7,"AT":8,"la":9,"LA":10,"lc":11,"LC":12,"lp":13,"LP":14,"ra":15,"RA":16,"rc":17,"RC":18,"rp":19,"RP":20,"eq":21,"EQ":22,"dots":23,"DOTS":24,"dot":25,"DOT":26,"div":27,"DIV":28,"vid":29,"VID":30,"comma":31,"COMMA":32,"sc":33,"SC":34,"col":35,"COL":36,"dollar":37,"DOLLAR":38,"qmark":39,"QMARK":40,"incremental":41,"INCREMENTAL":42,"input_with_eof":43,"initialize_symbol_table":44,"defs":45,"comp":46,"EOF":47,"codeDef":48,"code":49,"labelled_codes":50,"non_empty_labelled_codes":51,"code_label":52,"filter_":53,"labelled_filters":54,"filter":55,"non_empty_labelled_filters":56,"filter_label":57,"exp":58,"labelled":59,"list":60,"non_empty_labelled":61,"comp_label":62,"non_empty_list":63,"$accept":0,"$end":1},
123
+ terminals_: {2:"error",4:"STRING",6:"NAME",8:"AT",10:"LA",12:"LC",14:"LP",16:"RA",18:"RC",20:"RP",22:"EQ",24:"DOTS",26:"DOT",28:"DIV",30:"VID",32:"COMMA",34:"SC",36:"COL",38:"DOLLAR",40:"QMARK",42:"INCREMENTAL",47:"EOF"},
124
+ productions_: [0,[3,1],[5,1],[7,1],[9,1],[11,1],[13,1],[15,1],[17,1],[19,1],[21,1],[23,1],[25,1],[27,1],[29,1],[31,1],[33,1],[35,1],[37,1],[39,1],[41,1],[43,4],[44,0],[44,1],[45,0],[45,5],[45,6],[49,1],[49,1],[48,3],[48,3],[48,2],[50,0],[50,1],[51,1],[51,3],[52,2],[52,2],[52,3],[52,3],[53,2],[53,3],[53,3],[53,3],[55,1],[55,3],[55,1],[54,0],[54,1],[56,1],[56,3],[57,1],[57,2],[57,2],[57,3],[57,3],[46,1],[46,2],[58,3],[58,3],[58,2],[58,2],[58,3],[58,1],[58,2],[58,2],[58,2],[58,2],[58,2],[58,2],[58,2],[58,2],[59,0],[59,1],[61,1],[61,3],[62,2],[62,2],[62,3],[62,3],[60,0],[60,1],[63,1],[63,3]],
124
125
  performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
125
126
  /* this == yyval */
126
127
 
127
128
  var $0 = $$.length - 1;
128
129
  switch (yystate) {
129
- case 1: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20:
130
- this.$ = getToken(yytext,yy,_$);
131
- break;
132
- case 2:
130
+ case 1:
133
131
  this.$ = getToken(yytext,yy,_$); this.$.value = fromEscString(this.$.value);
134
132
  break;
135
- case 3:
136
- this.$ = getToken(yytext,yy,_$); this.$.value = parseInt(this.$.value);
133
+ case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20:
134
+ this.$ = getToken(yytext,yy,_$);
137
135
  break;
138
136
  case 21:
139
137
 
@@ -158,28 +156,22 @@ break;
158
156
  case 27:
159
157
  this.$ = { code: "ref", ref: $$[$0].value, start: $$[$0].start, end: $$[$0].end};
160
158
  break;
161
- case 28:
162
- this.$ = { code: "ref", ref: "@" + $$[$0].value, start: $$[$0-1].start, end: $$[$0].end};
163
- break;
164
- case 29: case 48: case 62: case 91:
159
+ case 28: case 44: case 56: case 81:
165
160
  this.$ = $$[$0];
166
161
  break;
162
+ case 29:
163
+ this.$ = { code: "product", product: $$[$0-1], start: $$[$0-2].start, end: $$[$0].end };
164
+ break;
167
165
  case 30:
168
- if (Object.keys($$[$0-1]).length == 1)
169
- this.$ = { code: "union", union: $$[$0-1], start: $$[$0-2].start, end: $$[$0].end };
170
- else
171
- this.$ = { code: "product", product: $$[$0-1], start: $$[$0-2].start, end: $$[$0].end };
166
+ this.$ = { code: "union", union: $$[$0-1], start: $$[$0-2].start, end: $$[$0].end };
172
167
  break;
173
168
  case 31:
174
- this.$ = { code: "vector", vector: s.as_ref($$[$0-1]), start: $$[$0-2].start, end: $$[$0].end };
169
+ this.$ = { code: "ref", ref: "@" + $$[$0].value, start: $$[$0-1].start, end: $$[$0].end};
175
170
  break;
176
171
  case 32:
177
- this.$ = { code: "union", union: $$[$0-1], start: $$[$0-2].start, end: $$[$0].end };
178
- break;
179
- case 33:
180
172
  this.$ = {};
181
173
  break;
182
- case 34:
174
+ case 33:
183
175
  this.$ = $$[$0].reduce((r, lc) => {
184
176
  if (r[lc.label])
185
177
  anError(this._$,`Duplicate label '${lc.label}'.`);
@@ -187,49 +179,40 @@ case 34:
187
179
  return r }
188
180
  , {});
189
181
  break;
190
- case 35: case 53: case 92:
182
+ case 34: case 49: case 82:
191
183
  this.$ = [$$[$0]];
192
184
  break;
193
- case 36: case 54: case 93:
185
+ case 35: case 50: case 83:
194
186
  this.$ = [].concat($$[$0-2],$$[$0]);
195
187
  break;
196
- case 37: case 38: case 39:
188
+ case 36: case 37:
197
189
  this.$ = {label: $$[$0].value, code: $$[$0-1]};
198
190
  break;
199
- case 40: case 41: case 42:
191
+ case 38: case 39:
200
192
  this.$ = {label: $$[$0-2].value, code: $$[$0]};
201
193
  break;
202
- case 43:
194
+ case 40:
203
195
  this.$ = { type: "code", code: s.as_ref($$[$0]), start: $$[$0-1].start, end: $$[$0].end};
204
196
  break;
205
- case 44:
206
- if ( !$$[$0-1].open && (Object.keys($$[$0-1].fields).length == 1))
207
- this.$ = { type: "union", open: $$[$0-1].open, fields: $$[$0-1].fields, start: $$[$0-2].start, end: $$[$0].end};
208
- else
209
- this.$ = { type: null, open: $$[$0-1].open, fields: $$[$0-1].fields, start: $$[$0-2].start, end: $$[$0].end};
197
+ case 41:
198
+ this.$ = { type: null, open: true, fields: {}, start: $$[$0-2].start, end: $$[$0].end};
210
199
  break;
211
- case 45:
200
+ case 42:
212
201
  this.$ = { type: "union", open: $$[$0-1].open, fields: $$[$0-1].fields, start: $$[$0-2].start, end: $$[$0].end};
213
202
  break;
214
- case 46:
215
- if ( !$$[$0-1].open && (Object.keys($$[$0-1].fields).length == 1))
216
- this.$ = { type: "union", open: $$[$0-1].open, fields: $$[$0-1].fields, start: $$[$0-2].start, end: $$[$0].end};
217
- else
218
- this.$ = { type: "product", open: $$[$0-1].open, fields: $$[$0-1].fields, start: $$[$0-2].start, end: $$[$0].end};
219
- break;
220
- case 47:
221
- this.$ = { type: "vector", vector: $$[$0-1], start: $$[$0-2].start, end: $$[$0].end };
203
+ case 43:
204
+ this.$ = { type: "product", open: $$[$0-1].open, fields: $$[$0-1].fields, start: $$[$0-2].start, end: $$[$0].end};
222
205
  break;
223
- case 49:
206
+ case 45:
224
207
  this.$ = { name: $$[$0].value, ...$$[$0-2], start: $$[$0-2].start, end: $$[$0].end };
225
208
  break;
226
- case 50:
209
+ case 46:
227
210
  this.$ = { type: 'name', name: $$[$0].value, open: true, start: $$[$0].start, end: $$[$0].end};
228
211
  break;
229
- case 51:
212
+ case 47:
230
213
  this.$ = { fields: {}};
231
214
  break;
232
- case 52:
215
+ case 48:
233
216
  this.$ = $$[$0].reduce((r, lc) => {
234
217
  if (lc.dots) {
235
218
  r.open = true;
@@ -241,64 +224,55 @@ case 52:
241
224
  return r }
242
225
  , { fields: {} });
243
226
  break;
244
- case 55:
227
+ case 51:
245
228
  this.$ = {dots: true };
246
229
  break;
247
- case 56: case 57: case 58:
230
+ case 52: case 53:
248
231
  this.$ = {label: $$[$0].value, filter: $$[$0-1]};
249
232
  break;
250
- case 59: case 60: case 61:
233
+ case 54: case 55:
251
234
  this.$ = {label: $$[$0-2].value, filter: $$[$0]};
252
235
  break;
253
- case 63:
236
+ case 57:
254
237
  this.$ = {...comp($$[$0-1], $$[$0]), start: $$[$0-1].start, end:$$[$0].end};
255
238
  break;
256
- case 64:
257
- this.$ = {op: 'caret', caret: $$[$0-1], start: $$[$0-1].start, end:$$[$0].end};
258
- break;
259
- case 65:
239
+ case 58:
260
240
  this.$ = {...$$[$0-1], start: $$[$0-2].start, end: $$[$0].end};
261
241
  break;
262
- case 66:
263
- this.$ = {op: "vector", vector: $$[$0-1], start: $$[$0-2].start, end: $$[$0].end};
264
- break;
265
- case 67:
242
+ case 59:
266
243
  this.$ = {...union($$[$0-1]), start: $$[$0-2].start, end: $$[$0].end};
267
244
  break;
268
- case 68:
269
- this.$ = {op: "ref", ref: $$[$0].value, start: $$[$0].start, end: $$[$0].end};
270
- break;
271
- case 69:
245
+ case 60:
272
246
  this.$ = {op: "ref", ref: "@" + $$[$0].value, start: $$[$0-1].start, end: $$[$0].end};
273
247
  break;
274
- case 70:
248
+ case 61:
275
249
  this.$ = {...identity, start: $$[$0-1].start, end: $$[$0].end};
276
250
  break;
277
- case 71:
251
+ case 62:
278
252
  this.$ = {...$$[$0-1], start: $$[$0-2].start, end: $$[$0].end };
279
253
  break;
280
- case 72:
281
- this.$ = {op: "str", str: $$[$0].value, start: $$[$0].start, end: $$[$0].end };
282
- break;
283
- case 73:
284
- this.$ = {op: "int", int: $$[$0].value, start: $$[$0].start, end: $$[$0].end };
254
+ case 63:
255
+ this.$ = {op: "ref", ref: $$[$0].value, start: $$[$0].start, end: $$[$0].end};
285
256
  break;
286
- case 74: case 75: case 76:
257
+ case 64: case 65:
287
258
  this.$ = {op: "dot", dot: $$[$0].value, start: $$[$0-1].start, end: $$[$0].end };
288
259
  break;
289
- case 77:
260
+ case 66: case 67:
261
+ this.$ = {op: "div", div: $$[$0].value, start: $$[$0-1].start, end: $$[$0].end };
262
+ break;
263
+ case 68: case 69:
264
+ this.$ = {op: "vid", vid: $$[$0].value, start: $$[$0-1].start, end: $$[$0].end };
265
+ break;
266
+ case 70:
290
267
  this.$ = {op: "code", code: s.as_ref($$[$0]), start: $$[$0-1].start, end: $$[$0].end};
291
268
  break;
292
- case 78:
269
+ case 71:
293
270
  this.$ = {op: "filter", filter: $$[$0], start: $$[$0-1].start, end:$$[$0].end};
294
271
  break;
295
- case 79:
296
- this.$ = {op: "pipe", start: $$[$0].start, end: $$[$0].end};
297
- break;
298
- case 80:
272
+ case 72:
299
273
  this.$ = {op: "product", product: []};
300
274
  break;
301
- case 81:
275
+ case 73:
302
276
  $$[$0].product.reduce( (labels, {label}) =>
303
277
  { if (labels[label])
304
278
  anError(this._$,`Duplicate label '${label}'.`)
@@ -306,25 +280,25 @@ case 81:
306
280
  return labels; }, {});
307
281
  this.$ = $$[$0];
308
282
  break;
309
- case 82:
283
+ case 74:
310
284
  this.$ = {op: "product", product: [$$[$0]]};
311
285
  break;
312
- case 83:
286
+ case 75:
313
287
  $$[$0-2].product = [].concat($$[$0-2].product,$$[$0]); this.$ = $$[$0-2];
314
288
  break;
315
- case 84: case 85: case 86:
289
+ case 76: case 77:
316
290
  this.$ = {label: $$[$0].value, exp: $$[$0-1]};
317
291
  break;
318
- case 87: case 88: case 89:
292
+ case 78: case 79:
319
293
  this.$ = {label: $$[$0-2].value, exp: $$[$0]};
320
294
  break;
321
- case 90:
295
+ case 80:
322
296
  this.$ = [];
323
297
  break;
324
298
  }
325
299
  },
326
- table: [o($V0,[2,22],{43:1,44:2,41:3,42:[1,4]}),{1:[3]},o($V0,[2,24],{45:5}),o($V0,[2,23]),o($V0,[2,20]),{3:7,4:$V1,5:17,6:$V2,7:18,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,29:19,30:$V8,37:8,38:$V9,39:20,40:$Va,46:6,50:$Vb,59:9,63:$Vc},{3:33,4:$V1,5:17,6:$V2,7:18,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,29:19,30:$V8,37:34,38:$V9,39:20,40:$Va,47:[1,30],50:$Vb,59:31,60:$Vd,63:$Vc},o($Ve,$Vf,{25:35,26:$Vg}),{3:37,4:$V1,9:43,10:$V4,11:41,12:$V5,13:42,14:$V6,48:40,49:38,50:$Vh},o($Vi,[2,62]),o([4,6,8,10,12,14,16,18,20,22,24,26,30,32,34,36,38,40,47,50,60,63],[2,1]),o([4,10,12,14,50],[2,18]),{3:48,4:$V1,5:49,6:$V2,7:50,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,20:[2,80],29:19,30:$V8,37:34,38:$V9,39:20,40:$Va,46:47,50:$Vb,59:9,61:44,63:$Vc,64:45,65:46},{3:33,4:$V1,5:17,6:$V2,7:18,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,22:$Vj,29:19,30:$V8,37:34,38:$V9,39:20,40:$Va,46:53,50:$Vb,59:9,62:51,63:$Vc,66:52},{3:33,4:$V1,5:17,6:$V2,7:18,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,18:$Vj,29:19,30:$V8,37:34,38:$V9,39:20,40:$Va,46:53,50:$Vb,59:9,62:54,63:$Vc,66:52},{3:55,4:$V1},{3:33,4:$V1,5:17,6:$V2,7:18,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,23:56,24:$Vk,29:19,30:$V8,37:34,38:$V9,39:20,40:$Va,46:57,50:$Vb,59:9,63:$Vc},o($Vi,$Vl),o($Vi,$Vm),{3:61,4:$V1,5:60,6:$V2,7:59,8:$V3},{3:64,4:$V1,9:67,10:$V4,11:68,12:$V5,13:69,14:$V6,15:66,16:$V7,37:65,38:$V9,54:63,56:62},o($Vi,[2,79]),o([4,6,8,10,12,14,16,20,28,30,38,40,50,63],[2,5]),o([4,6,8,10,12,14,16,22,30,38,40,50,63],[2,6]),o([4,6,8,10,12,14,16,18,28,30,38,40,50,63],[2,4]),o([4,6,8,10,12,14,16,24,28,30,38,40,50,63],[2,7]),o($Vn,[2,2]),o($Vn,[2,3]),o($Vo,[2,14]),o([4,10,12,14,16,38],[2,19]),{1:[2,21]},o($Vi,[2,63]),o($Vi,[2,64]),o($Vi,$Vf),{3:70,4:$V1,9:43,10:$V4,11:41,12:$V5,13:42,14:$V6,48:40,49:38,50:$Vh},{3:33,4:$V1,5:17,6:$V2,7:18,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,29:19,30:$V8,37:34,38:$V9,39:20,40:$Va,46:71,50:$Vb,59:9,63:$Vc},o($V0,[2,12]),o($Ve,$Vp,{25:72,26:$Vg}),o($Vi,[2,77]),{3:73,4:$V1},o($Vq,[2,29]),{3:78,4:$V1,5:79,6:$V2,7:80,8:$V3,9:43,10:$V4,11:41,12:$V5,13:42,14:$V6,20:$Vr,48:40,49:77,50:$Vh,51:74,52:75,53:76},{3:70,4:$V1,9:43,10:$V4,11:41,12:$V5,13:42,14:$V6,48:40,49:81,50:$Vh},{3:78,4:$V1,5:79,6:$V2,7:80,8:$V3,9:43,10:$V4,11:41,12:$V5,13:42,14:$V6,18:$Vr,48:40,49:77,50:$Vh,51:82,52:75,53:76},{19:83,20:$Vs},{20:[2,81],31:85,32:$Vt},o($Vu,[2,82]),{3:87,4:$V1,5:88,6:$V2,7:89,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,29:19,30:$V8,37:34,38:$V9,39:20,40:$Va,50:$Vb,59:31,60:$Vd,63:$Vc},o($Vv,$Vf,{35:90,36:$Vw}),o($Vv,$Vl,{35:92,36:$Vw}),o($Vv,$Vm,{35:93,36:$Vw}),{21:94,22:$Vx},o([18,22],[2,91],{31:96,32:$Vt}),o($Vy,[2,92],{11:12,13:13,9:14,15:16,5:17,7:18,29:19,39:20,59:31,3:33,37:34,4:$V1,6:$V2,8:$V3,10:$V4,12:$V5,14:$V6,16:$V7,30:$V8,38:$V9,40:$Va,50:$Vb,60:$Vd,63:$Vc}),{17:97,18:$Vz},o($Vi,[2,69]),o($Vi,[2,70]),{3:33,4:$V1,5:17,6:$V2,7:18,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,23:99,24:$Vk,29:19,30:$V8,37:34,38:$V9,39:20,40:$Va,50:$Vb,59:31,60:$Vd,63:$Vc},o($Vq,[2,11]),o($Vi,[2,74]),o($Vi,[2,75]),o($Vi,[2,76]),o($Vi,[2,78]),o($Vi,[2,48],{26:[1,100]}),o($Vi,$VA),{3:70,4:$V1,9:43,10:$V4,11:41,12:$V5,13:42,14:$V6,48:40,49:101,50:$Vh},{3:107,4:$V1,5:108,6:$V2,7:109,8:$V3,9:67,10:$V4,11:68,12:$V5,13:69,14:$V6,15:66,16:$V7,24:$VB,27:105,28:$VC,37:65,38:$V9,54:63,55:102,56:106,57:103,58:104},{3:107,4:$V1,5:108,6:$V2,7:109,8:$V3,9:67,10:$V4,11:68,12:$V5,13:69,14:$V6,15:66,16:$V7,18:$VB,27:105,28:$VC,37:65,38:$V9,54:63,55:111,56:106,57:103,58:104},{3:107,4:$V1,5:108,6:$V2,7:109,8:$V3,9:67,10:$V4,11:68,12:$V5,13:69,14:$V6,15:66,16:$V7,20:$VB,27:105,28:$VC,37:65,38:$V9,54:63,55:112,56:106,57:103,58:104},{3:64,4:$V1,9:67,10:$V4,11:68,12:$V5,13:69,14:$V6,15:66,16:$V7,37:65,38:$V9,54:63,56:113},o($Vq,$Vp),{3:33,4:$V1,5:17,6:$V2,7:18,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,29:19,30:$V8,33:114,34:[1,115],37:34,38:$V9,39:20,40:$Va,50:$Vb,59:31,60:$Vd,63:$Vc},{9:43,10:$V4,11:41,12:$V5,13:42,14:$V6,48:116},o($Vq,[2,28]),{19:117,20:$Vs},o([18,20],[2,34],{31:118,32:$Vt}),o($VD,[2,35]),{3:119,4:$V1,5:120,6:$V2,7:121,8:$V3},o($Vo,$Vp,{35:122,36:$Vw}),{35:123,36:$Vw},{35:124,36:$Vw},{21:125,22:$Vx},{17:126,18:$Vz},o($Vi,[2,65]),o($Vq,[2,9]),{3:48,4:$V1,5:49,6:$V2,7:50,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,29:19,30:$V8,37:34,38:$V9,39:20,40:$Va,46:47,50:$Vb,59:9,63:$Vc,65:127},o([4,6,8,10,12,14,16,28,30,38,40,50,63],[2,15]),o($Vv,$Vf,{20:$VE,32:$VE}),o($Vv,$Vl,{20:$VF,32:$VF}),o($Vv,$Vm,{20:$VG,32:$VG}),{3:33,4:$V1,5:17,6:$V2,7:18,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,29:19,30:$V8,37:34,38:$V9,39:20,40:$Va,46:128,50:$Vb,59:9,63:$Vc},o($V0,[2,17]),{3:33,4:$V1,5:17,6:$V2,7:18,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,29:19,30:$V8,37:34,38:$V9,39:20,40:$Va,46:129,50:$Vb,59:9,63:$Vc},{3:33,4:$V1,5:17,6:$V2,7:18,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,29:19,30:$V8,37:34,38:$V9,39:20,40:$Va,46:130,50:$Vb,59:9,63:$Vc},o($Vi,[2,66]),o($Vq,[2,10]),{3:33,4:$V1,5:17,6:$V2,7:18,8:$V3,9:14,10:$V4,11:12,12:$V5,13:13,14:$V6,15:16,16:$V7,29:19,30:$V8,37:34,38:$V9,39:20,40:$Va,46:131,50:$Vb,59:9,63:$Vc},o($Vi,[2,67]),o($Vq,[2,8]),o($Vi,[2,71]),{3:132,4:$V1},o($Vq,[2,43]),{23:133,24:$Vk},o([18,20,24],[2,52],{31:134,32:$Vt}),o($VH,[2,53]),o($VH,[2,55]),{3:135,4:$V1,5:136,6:$V2,7:137,8:$V3},o($Vo,$VA,{35:138,36:$Vw}),{35:139,36:$Vw},{35:140,36:$Vw},o($VH,[2,13]),{17:141,18:$Vz},{19:142,20:$Vs},{21:143,22:$Vx},o($V0,[2,25]),o($V0,[2,16]),{34:[1,144]},o($Vq,[2,30]),{3:78,4:$V1,5:79,6:$V2,7:80,8:$V3,9:43,10:$V4,11:41,12:$V5,13:42,14:$V6,48:40,49:77,50:$Vh,53:145},o($VD,[2,37]),o($VD,[2,38]),o($VD,[2,39]),{3:70,4:$V1,9:43,10:$V4,11:41,12:$V5,13:42,14:$V6,48:40,49:146,50:$Vh},{3:70,4:$V1,9:43,10:$V4,11:41,12:$V5,13:42,14:$V6,48:40,49:147,50:$Vh},{3:70,4:$V1,9:43,10:$V4,11:41,12:$V5,13:42,14:$V6,48:40,49:148,50:$Vh},o($Vq,[2,31]),o($Vq,[2,32]),o($Vu,[2,83]),o($Vu,[2,87],{11:12,13:13,9:14,15:16,5:17,7:18,29:19,39:20,59:31,3:33,37:34,4:$V1,6:$V2,8:$V3,10:$V4,12:$V5,14:$V6,16:$V7,30:$V8,38:$V9,40:$Va,50:$Vb,60:$Vd,63:$Vc}),o($Vu,[2,88],{11:12,13:13,9:14,15:16,5:17,7:18,29:19,39:20,59:31,3:33,37:34,4:$V1,6:$V2,8:$V3,10:$V4,12:$V5,14:$V6,16:$V7,30:$V8,38:$V9,40:$Va,50:$Vb,60:$Vd,63:$Vc}),o($Vu,[2,89],{11:12,13:13,9:14,15:16,5:17,7:18,29:19,39:20,59:31,3:33,37:34,4:$V1,6:$V2,8:$V3,10:$V4,12:$V5,14:$V6,16:$V7,30:$V8,38:$V9,40:$Va,50:$Vb,60:$Vd,63:$Vc}),o($Vy,[2,93],{11:12,13:13,9:14,15:16,5:17,7:18,29:19,39:20,59:31,3:33,37:34,4:$V1,6:$V2,8:$V3,10:$V4,12:$V5,14:$V6,16:$V7,30:$V8,38:$V9,40:$Va,50:$Vb,60:$Vd,63:$Vc}),o($Vi,[2,49]),o($Vq,[2,44]),{3:107,4:$V1,5:108,6:$V2,7:109,8:$V3,9:67,10:$V4,11:68,12:$V5,13:69,14:$V6,15:66,16:$V7,27:105,28:$VC,37:65,38:$V9,54:63,56:106,58:149},o($VH,[2,56]),o($VH,[2,57]),o($VH,[2,58]),{3:64,4:$V1,9:67,10:$V4,11:68,12:$V5,13:69,14:$V6,15:66,16:$V7,37:65,38:$V9,54:63,56:150},{3:64,4:$V1,9:67,10:$V4,11:68,12:$V5,13:69,14:$V6,15:66,16:$V7,37:65,38:$V9,54:63,56:151},{3:64,4:$V1,9:67,10:$V4,11:68,12:$V5,13:69,14:$V6,15:66,16:$V7,37:65,38:$V9,54:63,56:152},o($Vq,[2,45]),o($Vq,[2,46]),o($Vq,[2,47]),o($V0,[2,26]),o($VD,[2,36]),o($VD,[2,40]),o($VD,[2,41]),o($VD,[2,42]),o($VH,[2,54]),o($VH,[2,59]),o($VH,[2,60]),o($VH,[2,61])],
327
- defaultActions: {30:[2,21]},
300
+ table: [o($V0,[2,22],{43:1,44:2,41:3,42:[1,4]}),{1:[3]},o($V0,[2,24],{45:5}),o($V0,[2,23]),o($V0,[2,20]),{5:7,6:$V1,7:14,8:$V2,9:13,10:$V3,11:12,12:$V4,13:15,14:$V5,25:16,26:$V6,27:17,28:$V7,29:18,30:$V8,37:8,38:$V9,39:19,40:$Va,46:6,58:9},{5:30,6:$V1,7:14,8:$V2,9:13,10:$V3,11:12,12:$V4,13:15,14:$V5,25:16,26:$V6,27:17,28:$V7,29:18,30:$V8,37:31,38:$V9,39:19,40:$Va,47:[1,28],58:29},o($Vb,$Vc,{21:32,22:$Vd}),{5:34,6:$V1,7:39,8:$V2,9:38,10:$V3,11:37,12:$V4,48:36,49:35},o($Ve,[2,56]),o([4,6,8,10,12,14,16,18,20,22,26,28,30,32,34,36,38,40,47],[2,2]),o([6,8,10,12],[2,18]),{3:45,4:$Vf,5:44,6:$V1,7:14,8:$V2,9:13,10:$V3,11:12,12:$V4,13:15,14:$V5,18:[2,72],25:16,26:$V6,27:17,28:$V7,29:18,30:$V8,37:31,38:$V9,39:19,40:$Va,46:43,58:9,59:40,61:41,62:42},{5:30,6:$V1,7:14,8:$V2,9:13,10:$V3,11:12,12:$V4,13:15,14:$V5,16:[2,80],25:16,26:$V6,27:17,28:$V7,29:18,30:$V8,37:31,38:$V9,39:19,40:$Va,46:49,58:9,60:47,63:48},{5:50,6:$V1},{5:30,6:$V1,7:14,8:$V2,9:13,10:$V3,11:12,12:$V4,13:15,14:$V5,19:51,20:$Vg,25:16,26:$V6,27:17,28:$V7,29:18,30:$V8,37:31,38:$V9,39:19,40:$Va,46:52,58:9},{3:55,4:$Vf,5:54,6:$V1},{3:57,4:$Vf,5:56,6:$V1},{3:59,4:$Vf,5:58,6:$V1},{5:62,6:$V1,9:65,10:$V3,11:66,12:$V4,13:64,14:$V5,37:63,38:$V9,53:61,55:60},o([4,6,8,10,12,14,18,24,26,28,30,38,40],[2,5]),o([4,6,8,10,12,14,16,24,26,28,30,38,40],[2,4]),{6:[2,3]},o([6,8,10,12,14,20,24,26,28,30,38,40],[2,6]),o($Vh,[2,12]),o($Vh,[2,13]),o($Vh,[2,14]),o([6,10,12,14,38],[2,19]),{1:[2,21]},o($Ve,[2,57]),o([6,8,10,12,14,16,18,20,26,28,30,32,34,38,40,47],$Vc),{5:67,6:$V1,7:39,8:$V2,9:38,10:$V3,11:37,12:$V4,48:36,49:35},{5:30,6:$V1,7:14,8:$V2,9:13,10:$V3,11:12,12:$V4,13:15,14:$V5,25:16,26:$V6,27:17,28:$V7,29:18,30:$V8,37:31,38:$V9,39:19,40:$Va,46:68,58:9},o($V0,[2,10]),o($Vb,$Vi,{21:69,22:$Vd}),o($Ve,[2,70]),o($Vj,[2,28]),{3:75,4:$Vf,5:74,6:$V1,7:39,8:$V2,9:38,10:$V3,11:37,12:$V4,18:$Vk,48:36,49:73,50:70,51:71,52:72},{3:75,4:$Vf,5:74,6:$V1,7:39,8:$V2,9:38,10:$V3,11:37,12:$V4,16:$Vk,48:36,49:73,50:76,51:71,52:72},{5:77,6:$V1},{17:78,18:$Vl},{18:[2,73],31:80,32:$Vm},o($Vn,[2,74]),{3:83,4:$Vf,5:82,6:$V1,7:14,8:$V2,9:13,10:$V3,11:12,12:$V4,13:15,14:$V5,25:16,26:$V6,27:17,28:$V7,29:18,30:$V8,37:31,38:$V9,39:19,40:$Va,58:29},o($Vo,$Vc,{35:84,36:$Vp}),{35:86,36:$Vp},o([4,6,8,10,12,14,16,18,20,26,28,30,32,34,36,38,40,47],[2,1]),{15:87,16:$Vq},{16:[2,81],31:89,32:$Vm},o($Vr,[2,82],{11:12,9:13,7:14,13:15,25:16,27:17,29:18,39:19,58:29,5:30,37:31,6:$V1,8:$V2,10:$V3,12:$V4,14:$V5,26:$V6,28:$V7,30:$V8,38:$V9,40:$Va}),o($Ve,[2,60]),o($Ve,[2,61]),{5:30,6:$V1,7:14,8:$V2,9:13,10:$V3,11:12,12:$V4,13:15,14:$V5,19:90,20:$Vg,25:16,26:$V6,27:17,28:$V7,29:18,30:$V8,37:31,38:$V9,39:19,40:$Va,58:29},o($Vj,[2,9]),o($Ve,[2,64]),o($Ve,[2,65]),o($Ve,[2,66]),o($Ve,[2,67]),o($Ve,[2,68]),o($Ve,[2,69]),o($Ve,[2,71]),o($Ve,[2,44],{22:[1,91]}),o($Ve,$Vs),{5:67,6:$V1,7:39,8:$V2,9:38,10:$V3,11:37,12:$V4,48:36,49:92},{23:93,24:$Vt},{3:101,4:$Vf,5:100,6:$V1,9:65,10:$V3,11:66,12:$V4,13:64,14:$V5,16:$Vu,23:98,24:$Vt,37:63,38:$V9,53:61,54:95,55:99,56:96,57:97},{3:101,4:$Vf,5:100,6:$V1,9:65,10:$V3,11:66,12:$V4,13:64,14:$V5,18:$Vu,23:98,24:$Vt,37:63,38:$V9,53:61,54:102,55:99,56:96,57:97},o($Vj,$Vi),{5:30,6:$V1,7:14,8:$V2,9:13,10:$V3,11:12,12:$V4,13:15,14:$V5,25:16,26:$V6,27:17,28:$V7,29:18,30:$V8,33:103,34:[1,104],37:31,38:$V9,39:19,40:$Va,58:29},{7:39,8:$V2,9:38,10:$V3,11:37,12:$V4,48:105},{17:106,18:$Vl},o($Vv,[2,33],{31:107,32:$Vm}),o($Vw,[2,34]),{3:109,4:$Vf,5:108,6:$V1},o($Vh,$Vi,{35:110,36:$Vp}),{35:111,36:$Vp},{15:112,16:$Vq},o($Vj,[2,31]),o($Ve,[2,58]),o($Vj,[2,8]),{3:45,4:$Vf,5:44,6:$V1,7:14,8:$V2,9:13,10:$V3,11:12,12:$V4,13:15,14:$V5,25:16,26:$V6,27:17,28:$V7,29:18,30:$V8,37:31,38:$V9,39:19,40:$Va,46:43,58:9,62:113},o([4,6,8,10,12,14,24,26,28,30,38,40],[2,15]),o($Vo,$Vc,{18:$Vx,32:$Vx}),o($Vn,[2,77]),{5:30,6:$V1,7:14,8:$V2,9:13,10:$V3,11:12,12:$V4,13:15,14:$V5,25:16,26:$V6,27:17,28:$V7,29:18,30:$V8,37:31,38:$V9,39:19,40:$Va,46:114,58:9},o($V0,[2,17]),{5:30,6:$V1,7:14,8:$V2,9:13,10:$V3,11:12,12:$V4,13:15,14:$V5,25:16,26:$V6,27:17,28:$V7,29:18,30:$V8,37:31,38:$V9,39:19,40:$Va,46:115,58:9},o($Ve,[2,59]),o($Vj,[2,7]),{5:30,6:$V1,7:14,8:$V2,9:13,10:$V3,11:12,12:$V4,13:15,14:$V5,25:16,26:$V6,27:17,28:$V7,29:18,30:$V8,37:31,38:$V9,39:19,40:$Va,46:116,58:9},o($Ve,[2,62]),{5:117,6:$V1},o($Vj,[2,40]),{19:118,20:$Vg},o([16,18,20,32],[2,11]),{15:119,16:$Vq},o($Vv,[2,48],{31:120,32:$Vm}),o($Vw,[2,49]),o($Vw,[2,51]),{3:122,4:$Vf,5:121,6:$V1},o($Vh,$Vs,{35:123,36:$Vp}),{35:124,36:$Vp},{17:125,18:$Vl},o($V0,[2,25]),o($V0,[2,16]),{34:[1,126]},o($Vj,[2,29]),{3:75,4:$Vf,5:74,6:$V1,7:39,8:$V2,9:38,10:$V3,11:37,12:$V4,48:36,49:73,52:127},o($Vw,[2,36]),o($Vw,[2,37]),{5:67,6:$V1,7:39,8:$V2,9:38,10:$V3,11:37,12:$V4,48:36,49:128},{5:67,6:$V1,7:39,8:$V2,9:38,10:$V3,11:37,12:$V4,48:36,49:129},o($Vj,[2,30]),o($Vn,[2,75]),o($Vn,[2,78],{11:12,9:13,7:14,13:15,25:16,27:17,29:18,39:19,58:29,5:30,37:31,6:$V1,8:$V2,10:$V3,12:$V4,14:$V5,26:$V6,28:$V7,30:$V8,38:$V9,40:$Va}),o($Vn,[2,79],{11:12,9:13,7:14,13:15,25:16,27:17,29:18,39:19,58:29,5:30,37:31,6:$V1,8:$V2,10:$V3,12:$V4,14:$V5,26:$V6,28:$V7,30:$V8,38:$V9,40:$Va}),o($Vr,[2,83],{11:12,9:13,7:14,13:15,25:16,27:17,29:18,39:19,58:29,5:30,37:31,6:$V1,8:$V2,10:$V3,12:$V4,14:$V5,26:$V6,28:$V7,30:$V8,38:$V9,40:$Va}),o($Ve,[2,45]),o($Vj,[2,41]),o($Vj,[2,42]),{3:101,4:$Vf,5:100,6:$V1,9:65,10:$V3,11:66,12:$V4,13:64,14:$V5,23:98,24:$Vt,37:63,38:$V9,53:61,55:99,57:130},o($Vw,[2,52]),o($Vw,[2,53]),{5:62,6:$V1,9:65,10:$V3,11:66,12:$V4,13:64,14:$V5,37:63,38:$V9,53:61,55:131},{5:62,6:$V1,9:65,10:$V3,11:66,12:$V4,13:64,14:$V5,37:63,38:$V9,53:61,55:132},o($Vj,[2,43]),o($V0,[2,26]),o($Vw,[2,35]),o($Vw,[2,38]),o($Vw,[2,39]),o($Vw,[2,50]),o($Vw,[2,54]),o($Vw,[2,55])],
301
+ defaultActions: {22:[2,3],28:[2,21]},
328
302
  parseError: function parseError (str, hash) {
329
303
  if (hash.recoverable) {
330
304
  this.trace(str);
@@ -816,11 +790,11 @@ case 7:return 18;
816
790
  break;
817
791
  case 8:return 20;
818
792
  break;
819
- case 9:return 22;
793
+ case 9:return 22;
820
794
  break;
821
795
  case 10:return 24;
822
796
  break;
823
- case 11:return 26;
797
+ case 11:return 26;
824
798
  break;
825
799
  case 12:return 28;
826
800
  break;
@@ -836,26 +810,20 @@ case 17:return 38;
836
810
  break;
837
811
  case 18:return 40;
838
812
  break;
839
- case 19:return 63;
840
- break;
841
- case 20:return 60;
842
- break;
843
- case 21:return 50;
844
- break;
845
- case 22:return 6;
813
+ case 19:return 8;
846
814
  break;
847
- case 23:return 4;
815
+ case 20:return 4;
848
816
  break;
849
- case 24:return 8;
817
+ case 21:return 6;
850
818
  break;
851
- case 25:return 42;
819
+ case 22:return 42;
852
820
  break;
853
- case 26:return 47;
821
+ case 23:return 47;
854
822
  break;
855
823
  }
856
824
  },
857
- rules: [/^(?:[/][*]([^*]*[*]+[^*/])*[^*]*[*]+[/])/,/^(?:(\/\/|#|%|--|\\)[^\n]*)/,/^(?:\s+)/,/^(?:<)/,/^(?:\{)/,/^(?:\[)/,/^(?:\()/,/^(?:>)/,/^(?:\})/,/^(?:\])/,/^(?:\))/,/^(?:=)/,/^(?:\.\.\.)/,/^(?:\.)/,/^(?:,)/,/^(?:;)/,/^(?::)/,/^(?:\$)/,/^(?:\?)/,/^(?:\|)/,/^(?:\^)/,/^(?:@)/,/^(?:"([^"\\]|\\(.|\n))*"|'([^'\\]|\\(.|\n))*')/,/^(?:[a-zA-Z_][a-zA-Z0-9_?!]*)/,/^(?:0|[-]?[1-9][0-9]*)/,/^(?:\+\+\+)/,/^(?:$)/],
858
- conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],"inclusive":true}}
825
+ rules: [/^(?:[/][*]([^*]*[*]+[^*/])*[^*]*[*]+[/])/,/^(?:(\/\/|#|%|--|\\\\)[^\n]*)/,/^(?:\s+)/,/^(?:<)/,/^(?:\{)/,/^(?:\()/,/^(?:>)/,/^(?:\})/,/^(?:\))/,/^(?:=)/,/^(?:\.\.\.)/,/^(?:\.)/,/^(?:\/)/,/^(?:(\\|\|))/,/^(?:,)/,/^(?:;)/,/^(?::)/,/^(?:\$)/,/^(?:\?)/,/^(?:@)/,/^(?:"([^"\\]|\\(.|\n))*"|'([^'\\]|\\(.|\n))*')/,/^(?:[a-zA-Z0-9_+-][a-zA-Z0-9_?!+-]*)/,/^(?:~)/,/^(?:$)/],
826
+ conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23],"inclusive":true}}
859
827
  });
860
828
  return lexer;
861
829
  })();