@fraczak/k 7.2.0 → 8.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.
- package/CHANGELOG.md +66 -0
- package/DOCS/BIG_PICTURE.md +54 -7
- package/DOCS/CODECS.md +21 -11
- package/DOCS/CODEC_ARCHITECTURE.md +5 -3
- package/DOCS/DICTIONARY.md +13 -4
- package/DOCS/FILE_FORMATS.md +3 -2
- package/DOCS/JSON_APPROACHES_COMPARISON.md +306 -0
- package/DOCS/NAMED_PATTERNS.md +317 -0
- package/DOCS/PATTERNS.md +59 -11
- package/DOCS/REPL.md +13 -2
- package/DOCS/WEB_REPL_REQUIREMENTS.md +4 -2
- package/Examples/arithmetics.k +22 -17
- package/Examples/bnat.k +21 -11
- package/Examples/buda.k +37 -20
- package/Examples/byte.k +3 -1
- package/Examples/code.k +38 -39
- package/Examples/djson-btrie.k +414 -0
- package/Examples/djson-ptrie.k +663 -0
- package/Examples/djson.k +323 -0
- package/Examples/esc.k +1 -1
- package/Examples/karatsuba-mult.k +16 -13
- package/Examples/list.k +8 -4
- package/Examples/nat.k +17 -11
- package/Examples/poly.k +11 -3
- package/Examples/vhdl_to_k.k +43 -31
- package/README.md +42 -16
- package/browser/repl-browser.mjs +6 -0
- package/browser/tree-view.mjs +35 -16
- package/browser/vfs-data.mjs +15 -7
- package/codecs/README.md +2 -0
- package/codecs/djson-btrie.mjs +560 -0
- package/codecs/djson-ptrie.mjs +587 -0
- package/core.k +79 -115
- package/index.mjs +3 -0
- package/named-patterns.mjs +267 -0
- package/object.mjs +31 -3
- package/package.json +4 -1
- package/parser.jison +68 -5
- package/parser.mjs +111 -60
- package/pretty.mjs +5 -0
- package/repl.mjs +188 -22
- package/scripts/build-repl-html.mjs +68 -4
- package/scripts/perf-djson.mjs +1142 -0
- package/scripts/run-tests.mjs +5 -0
- package/symbol-table.mjs +20 -2
- package/tests/bench-djson-tries.mjs +340 -0
- package/tests/test-codecs.mjs +59 -16
- package/tests/test-named-patterns.mjs +189 -0
- package/tests/test-repl-html.mjs +51 -4
- package/tests/test-repl.mjs +190 -0
package/parser.jison
CHANGED
|
@@ -49,9 +49,11 @@ function fromEscString(escString) {
|
|
|
49
49
|
"<" return 'LA';
|
|
50
50
|
"{" return 'LC';
|
|
51
51
|
"(" return 'LP';
|
|
52
|
+
"[" return 'LB';
|
|
52
53
|
">" return 'RA';
|
|
53
54
|
"}" return 'RC';
|
|
54
55
|
")" return 'RP';
|
|
56
|
+
"]" return 'RB';
|
|
55
57
|
"=" return 'EQ';
|
|
56
58
|
"..." return 'DOTS';
|
|
57
59
|
"." return 'DOT';
|
|
@@ -71,7 +73,7 @@ function fromEscString(escString) {
|
|
|
71
73
|
/lex
|
|
72
74
|
|
|
73
75
|
%token NAME STRING
|
|
74
|
-
%token LA LC LP RA RP
|
|
76
|
+
%token LA LC LP LB RA RC RP RB EQ DOT COMMA SC COL AT QMARK DOTS DIV VID
|
|
75
77
|
%token INCREMENTAL
|
|
76
78
|
%token EOF
|
|
77
79
|
|
|
@@ -85,9 +87,11 @@ at: AT { $$ = getToken(yytext,yy,_$); };
|
|
|
85
87
|
la: LA { $$ = getToken(yytext,yy,_$); };
|
|
86
88
|
lc: LC { $$ = getToken(yytext,yy,_$); };
|
|
87
89
|
lp: LP { $$ = getToken(yytext,yy,_$); };
|
|
90
|
+
lb: LB { $$ = getToken(yytext,yy,_$); };
|
|
88
91
|
ra: RA { $$ = getToken(yytext,yy,_$); };
|
|
89
92
|
rc: RC { $$ = getToken(yytext,yy,_$); };
|
|
90
93
|
rp: RP { $$ = getToken(yytext,yy,_$); };
|
|
94
|
+
rb: RB { $$ = getToken(yytext,yy,_$); };
|
|
91
95
|
eq: EQ { $$ = getToken(yytext,yy,_$); };
|
|
92
96
|
dots: DOTS { $$ = getToken(yytext,yy,_$); };
|
|
93
97
|
dot: DOT { $$ = getToken(yytext,yy,_$); };
|
|
@@ -100,9 +104,14 @@ qmark: QMARK { $$ = getToken(yytext,yy,_$); };
|
|
|
100
104
|
incremental: INCREMENTAL { $$ = getToken(yytext,yy,_$); };
|
|
101
105
|
|
|
102
106
|
input_with_eof: initialize_symbol_table defs comp EOF {
|
|
103
|
-
const result = {
|
|
104
|
-
|
|
105
|
-
|
|
107
|
+
const result = {
|
|
108
|
+
defs: {
|
|
109
|
+
rels: s.rels,
|
|
110
|
+
codes: s.codes,
|
|
111
|
+
patterns: s.patterns
|
|
112
|
+
},
|
|
113
|
+
exp: $3
|
|
114
|
+
};
|
|
106
115
|
return result;
|
|
107
116
|
};
|
|
108
117
|
|
|
@@ -113,17 +122,71 @@ initialize_symbol_table
|
|
|
113
122
|
|
|
114
123
|
defs: { }
|
|
115
124
|
| defs name eq comp sc { s.add_rel($2.value,$4); }
|
|
125
|
+
| defs name lb pattern_params rb eq filter sc
|
|
126
|
+
{
|
|
127
|
+
const seen = new Set();
|
|
128
|
+
for (const p of $4) {
|
|
129
|
+
if (seen.has(p)) {
|
|
130
|
+
const msg =
|
|
131
|
+
`Duplicate parameter '${p}' ` +
|
|
132
|
+
`in pattern '${$2.value}'.`;
|
|
133
|
+
anError(@4, msg);
|
|
134
|
+
}
|
|
135
|
+
seen.add(p);
|
|
136
|
+
}
|
|
137
|
+
s.add_pattern($2.value, $4, $7);
|
|
138
|
+
}
|
|
139
|
+
;
|
|
140
|
+
|
|
141
|
+
pattern_params
|
|
142
|
+
: /* empty */ { $$ = []; }
|
|
143
|
+
| non_empty_pattern_params { $$ = $1; }
|
|
144
|
+
;
|
|
145
|
+
|
|
146
|
+
non_empty_pattern_params
|
|
147
|
+
: name { $$ = [$1.value]; }
|
|
148
|
+
| non_empty_pattern_params comma name
|
|
149
|
+
{ $$ = [].concat($1, $3.value); }
|
|
116
150
|
;
|
|
117
151
|
|
|
118
152
|
filter_
|
|
119
153
|
: lp dots rp { $$ = { type: null, open: true, fields: {}, start: $1.start, end: $3.end}; }
|
|
120
154
|
| la labelled_filters ra { $$ = { type: "union", open: $2.open, fields: $2.fields, start: $1.start, end: $3.end}; }
|
|
121
155
|
| lc labelled_filters rc { $$ = { type: "product", open: $2.open, fields: $2.fields, start: $1.start, end: $3.end}; }
|
|
156
|
+
| name lb pattern_args rb
|
|
157
|
+
{
|
|
158
|
+
$$ = {
|
|
159
|
+
type: "pattern_apply",
|
|
160
|
+
pattern: $1.value,
|
|
161
|
+
args: $3,
|
|
162
|
+
start: $1.start,
|
|
163
|
+
end: $4.end
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
;
|
|
167
|
+
|
|
168
|
+
pattern_args
|
|
169
|
+
: /* empty */ { $$ = []; }
|
|
170
|
+
| non_empty_pattern_args { $$ = $1; }
|
|
171
|
+
;
|
|
172
|
+
|
|
173
|
+
non_empty_pattern_args
|
|
174
|
+
: filter { $$ = [$1]; }
|
|
175
|
+
| non_empty_pattern_args comma filter
|
|
176
|
+
{ $$ = [].concat($1, $3); }
|
|
122
177
|
;
|
|
123
178
|
|
|
124
179
|
filter
|
|
125
180
|
: filter_ { $$ = $1; }
|
|
126
|
-
| filter_ EQ name
|
|
181
|
+
| filter_ EQ name
|
|
182
|
+
{
|
|
183
|
+
$$ = {
|
|
184
|
+
...$1,
|
|
185
|
+
name: $3.value,
|
|
186
|
+
start: $1.start,
|
|
187
|
+
end: $3.end
|
|
188
|
+
};
|
|
189
|
+
}
|
|
127
190
|
| name { $$ = { type: 'name', name: $1.value, open: true, start: $1.start, end: $1.end}; }
|
|
128
191
|
;
|
|
129
192
|
labelled_filters
|
package/parser.mjs
CHANGED
|
@@ -116,12 +116,12 @@ function fromEscString(escString) {
|
|
|
116
116
|
|
|
117
117
|
|
|
118
118
|
var parser = (function(){
|
|
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,
|
|
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,30,32,34,42],$V1=[1,9],$V2=[1,20],$V3=[1,19],$V4=[1,18],$V5=[1,21],$V6=[1,22],$V7=[1,23],$V8=[1,24],$V9=[1,25],$Va=[2,59],$Vb=[1,32],$Vc=[1,31],$Vd=[4,6,8,10,12,14,18,20,22,30,32,34,36,38,42,49],$Ve=[1,39],$Vf=[1,46],$Vg=[4,6],$Vh=[1,64],$Vi=[1,66],$Vj=[20,36],$Vk=[4,6,8,10,12,14,30,32,34,42],$Vl=[1,70],$Vm=[1,73],$Vn=[18,36],$Vo=[4,6,8,10,12,14,18,20,22,24,26,30,32,34,36,38,42,49],$Vp=[4,6,8,10,12,14,18,20,22,24,30,32,34,36,38,42,49],$Vq=[2,42],$Vr=[1,79],$Vs=[2,43],$Vt=[1,89],$Vu=[1,91],$Vv=[24,36],$Vw=[2,71],$Vx=[18,20,36];
|
|
120
120
|
var parser = {trace: function trace () { },
|
|
121
121
|
yy: {},
|
|
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,"
|
|
123
|
-
terminals_: {2:"error",4:"STRING",6:"NAME",8:"AT",10:"LA",12:"LC",14:"LP",16:"
|
|
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,4],[
|
|
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,"lb":15,"LB":16,"ra":17,"RA":18,"rc":19,"RC":20,"rp":21,"RP":22,"rb":23,"RB":24,"eq":25,"EQ":26,"dots":27,"DOTS":28,"dot":29,"DOT":30,"div":31,"DIV":32,"vid":33,"VID":34,"comma":35,"COMMA":36,"sc":37,"SC":38,"col":39,"COL":40,"qmark":41,"QMARK":42,"incremental":43,"INCREMENTAL":44,"input_with_eof":45,"initialize_symbol_table":46,"defs":47,"comp":48,"EOF":49,"pattern_params":50,"filter":51,"non_empty_pattern_params":52,"filter_":53,"labelled_filters":54,"pattern_args":55,"non_empty_pattern_args":56,"non_empty_labelled_filters":57,"filter_label":58,"exp":59,"labelled":60,"list":61,"non_empty_labelled":62,"comp_label":63,"non_empty_list":64,"$accept":0,"$end":1},
|
|
123
|
+
terminals_: {2:"error",4:"STRING",6:"NAME",8:"AT",10:"LA",12:"LC",14:"LP",16:"LB",18:"RA",20:"RC",22:"RP",24:"RB",26:"EQ",28:"DOTS",30:"DOT",32:"DIV",34:"VID",36:"COMMA",38:"SC",40:"COL",42:"QMARK",44:"INCREMENTAL",49:"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,1],[45,4],[46,0],[46,1],[47,0],[47,5],[47,8],[50,0],[50,1],[52,1],[52,3],[53,3],[53,3],[53,3],[53,4],[55,0],[55,1],[56,1],[56,3],[51,1],[51,3],[51,1],[54,0],[54,1],[57,1],[57,3],[58,1],[58,2],[58,2],[58,3],[58,3],[48,1],[48,2],[59,3],[59,3],[59,2],[59,2],[59,3],[59,1],[59,2],[59,2],[59,2],[59,2],[59,2],[59,2],[59,2],[60,0],[60,1],[62,1],[62,3],[63,2],[63,2],[63,3],[63,3],[61,0],[61,1],[64,1],[64,3]],
|
|
125
125
|
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
|
|
126
126
|
/* this == yyval */
|
|
127
127
|
|
|
@@ -130,48 +130,101 @@ switch (yystate) {
|
|
|
130
130
|
case 1:
|
|
131
131
|
this.$ = getToken(yytext,yy,_$); this.$.value = fromEscString(this.$.value);
|
|
132
132
|
break;
|
|
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:
|
|
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: case 21:
|
|
134
134
|
this.$ = getToken(yytext,yy,_$);
|
|
135
135
|
break;
|
|
136
|
-
case
|
|
136
|
+
case 22:
|
|
137
137
|
|
|
138
|
-
const result = {
|
|
139
|
-
|
|
140
|
-
|
|
138
|
+
const result = {
|
|
139
|
+
defs: {
|
|
140
|
+
rels: s.rels,
|
|
141
|
+
codes: s.codes,
|
|
142
|
+
patterns: s.patterns
|
|
143
|
+
},
|
|
144
|
+
exp: $$[$0-1]
|
|
145
|
+
};
|
|
141
146
|
return result;
|
|
142
147
|
|
|
143
148
|
break;
|
|
144
|
-
case
|
|
149
|
+
case 23:
|
|
145
150
|
s = new SymbolTable();
|
|
146
151
|
break;
|
|
147
|
-
case
|
|
152
|
+
case 24: case 25:
|
|
148
153
|
|
|
149
154
|
break;
|
|
150
|
-
case
|
|
155
|
+
case 26:
|
|
151
156
|
s.add_rel($$[$0-3].value,$$[$0-1]);
|
|
152
157
|
break;
|
|
153
|
-
case
|
|
158
|
+
case 27:
|
|
159
|
+
|
|
160
|
+
const seen = new Set();
|
|
161
|
+
for (const p of $$[$0-4]) {
|
|
162
|
+
if (seen.has(p)) {
|
|
163
|
+
const msg =
|
|
164
|
+
`Duplicate parameter '${p}' ` +
|
|
165
|
+
`in pattern '${$$[$0-6].value}'.`;
|
|
166
|
+
anError(_$[$0-4], msg);
|
|
167
|
+
}
|
|
168
|
+
seen.add(p);
|
|
169
|
+
}
|
|
170
|
+
s.add_pattern($$[$0-6].value, $$[$0-4], $$[$0-1]);
|
|
171
|
+
|
|
172
|
+
break;
|
|
173
|
+
case 28: case 36: case 75:
|
|
174
|
+
this.$ = [];
|
|
175
|
+
break;
|
|
176
|
+
case 29: case 37: case 40: case 52: case 76:
|
|
177
|
+
this.$ = $$[$0];
|
|
178
|
+
break;
|
|
179
|
+
case 30:
|
|
180
|
+
this.$ = [$$[$0].value];
|
|
181
|
+
break;
|
|
182
|
+
case 31:
|
|
183
|
+
this.$ = [].concat($$[$0-2], $$[$0].value);
|
|
184
|
+
break;
|
|
185
|
+
case 32:
|
|
154
186
|
this.$ = { type: null, open: true, fields: {}, start: $$[$0-2].start, end: $$[$0].end};
|
|
155
187
|
break;
|
|
156
|
-
case
|
|
188
|
+
case 33:
|
|
157
189
|
this.$ = { type: "union", open: $$[$0-1].open, fields: $$[$0-1].fields, start: $$[$0-2].start, end: $$[$0].end};
|
|
158
190
|
break;
|
|
159
|
-
case
|
|
191
|
+
case 34:
|
|
160
192
|
this.$ = { type: "product", open: $$[$0-1].open, fields: $$[$0-1].fields, start: $$[$0-2].start, end: $$[$0].end};
|
|
161
193
|
break;
|
|
162
|
-
case
|
|
163
|
-
|
|
194
|
+
case 35:
|
|
195
|
+
|
|
196
|
+
this.$ = {
|
|
197
|
+
type: "pattern_apply",
|
|
198
|
+
pattern: $$[$0-3].value,
|
|
199
|
+
args: $$[$0-1],
|
|
200
|
+
start: $$[$0-3].start,
|
|
201
|
+
end: $$[$0].end
|
|
202
|
+
};
|
|
203
|
+
|
|
164
204
|
break;
|
|
165
|
-
case
|
|
166
|
-
this.$ =
|
|
205
|
+
case 38: case 45: case 77:
|
|
206
|
+
this.$ = [$$[$0]];
|
|
167
207
|
break;
|
|
168
|
-
case
|
|
208
|
+
case 39:
|
|
209
|
+
this.$ = [].concat($$[$0-2], $$[$0]);
|
|
210
|
+
break;
|
|
211
|
+
case 41:
|
|
212
|
+
|
|
213
|
+
this.$ = {
|
|
214
|
+
...$$[$0-2],
|
|
215
|
+
name: $$[$0].value,
|
|
216
|
+
start: $$[$0-2].start,
|
|
217
|
+
end: $$[$0].end
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
break;
|
|
221
|
+
case 42:
|
|
169
222
|
this.$ = { type: 'name', name: $$[$0].value, open: true, start: $$[$0].start, end: $$[$0].end};
|
|
170
223
|
break;
|
|
171
|
-
case
|
|
224
|
+
case 43:
|
|
172
225
|
this.$ = { fields: {}};
|
|
173
226
|
break;
|
|
174
|
-
case
|
|
227
|
+
case 44:
|
|
175
228
|
this.$ = $$[$0].reduce((r, lc) => {
|
|
176
229
|
if (lc.dots) {
|
|
177
230
|
r.open = true;
|
|
@@ -183,58 +236,55 @@ case 32:
|
|
|
183
236
|
return r }
|
|
184
237
|
, { fields: {} });
|
|
185
238
|
break;
|
|
186
|
-
case
|
|
187
|
-
this.$ = [$$[$0]];
|
|
188
|
-
break;
|
|
189
|
-
case 34: case 66:
|
|
239
|
+
case 46: case 78:
|
|
190
240
|
this.$ = [].concat($$[$0-2],$$[$0]);
|
|
191
241
|
break;
|
|
192
|
-
case
|
|
242
|
+
case 47:
|
|
193
243
|
this.$ = {dots: true };
|
|
194
244
|
break;
|
|
195
|
-
case
|
|
245
|
+
case 48: case 49:
|
|
196
246
|
this.$ = {label: $$[$0].value, filter: $$[$0-1]};
|
|
197
247
|
break;
|
|
198
|
-
case
|
|
248
|
+
case 50: case 51:
|
|
199
249
|
this.$ = {label: $$[$0-2].value, filter: $$[$0]};
|
|
200
250
|
break;
|
|
201
|
-
case
|
|
251
|
+
case 53:
|
|
202
252
|
this.$ = {...comp($$[$0-1], $$[$0]), start: $$[$0-1].start, end:$$[$0].end};
|
|
203
253
|
break;
|
|
204
|
-
case
|
|
254
|
+
case 54:
|
|
205
255
|
this.$ = {...$$[$0-1], start: $$[$0-2].start, end: $$[$0].end};
|
|
206
256
|
break;
|
|
207
|
-
case
|
|
257
|
+
case 55:
|
|
208
258
|
this.$ = {...union($$[$0-1]), start: $$[$0-2].start, end: $$[$0].end};
|
|
209
259
|
break;
|
|
210
|
-
case
|
|
260
|
+
case 56:
|
|
211
261
|
this.$ = {op: "ref", ref: "@" + $$[$0].value, start: $$[$0-1].start, end: $$[$0].end};
|
|
212
262
|
break;
|
|
213
|
-
case
|
|
263
|
+
case 57:
|
|
214
264
|
this.$ = {...identity, start: $$[$0-1].start, end: $$[$0].end};
|
|
215
265
|
break;
|
|
216
|
-
case
|
|
266
|
+
case 58:
|
|
217
267
|
this.$ = {...$$[$0-1], start: $$[$0-2].start, end: $$[$0].end };
|
|
218
268
|
break;
|
|
219
|
-
case
|
|
269
|
+
case 59:
|
|
220
270
|
this.$ = {op: "ref", ref: $$[$0].value, start: $$[$0].start, end: $$[$0].end};
|
|
221
271
|
break;
|
|
222
|
-
case
|
|
272
|
+
case 60: case 61:
|
|
223
273
|
this.$ = {op: "dot", dot: $$[$0].value, start: $$[$0-1].start, end: $$[$0].end };
|
|
224
274
|
break;
|
|
225
|
-
case
|
|
275
|
+
case 62: case 63:
|
|
226
276
|
this.$ = {op: "div", div: $$[$0].value, start: $$[$0-1].start, end: $$[$0].end };
|
|
227
277
|
break;
|
|
228
|
-
case
|
|
278
|
+
case 64: case 65:
|
|
229
279
|
this.$ = {op: "vid", vid: $$[$0].value, start: $$[$0-1].start, end: $$[$0].end };
|
|
230
280
|
break;
|
|
231
|
-
case
|
|
281
|
+
case 66:
|
|
232
282
|
this.$ = {op: "filter", filter: $$[$0], start: $$[$0-1].start, end:$$[$0].end};
|
|
233
283
|
break;
|
|
234
|
-
case
|
|
284
|
+
case 67:
|
|
235
285
|
this.$ = {op: "product", product: []};
|
|
236
286
|
break;
|
|
237
|
-
case
|
|
287
|
+
case 68:
|
|
238
288
|
$$[$0].product.reduce( (labels, {label}) =>
|
|
239
289
|
{ if (labels[label])
|
|
240
290
|
anError(this._$,`Duplicate label '${label}'.`)
|
|
@@ -242,25 +292,22 @@ case 56:
|
|
|
242
292
|
return labels; }, {});
|
|
243
293
|
this.$ = $$[$0];
|
|
244
294
|
break;
|
|
245
|
-
case
|
|
295
|
+
case 69:
|
|
246
296
|
this.$ = {op: "product", product: [$$[$0]]};
|
|
247
297
|
break;
|
|
248
|
-
case
|
|
298
|
+
case 70:
|
|
249
299
|
$$[$0-2].product = [].concat($$[$0-2].product,$$[$0]); this.$ = $$[$0-2];
|
|
250
300
|
break;
|
|
251
|
-
case
|
|
301
|
+
case 71: case 72:
|
|
252
302
|
this.$ = {label: $$[$0].value, exp: $$[$0-1]};
|
|
253
303
|
break;
|
|
254
|
-
case
|
|
304
|
+
case 73: case 74:
|
|
255
305
|
this.$ = {label: $$[$0-2].value, exp: $$[$0]};
|
|
256
306
|
break;
|
|
257
|
-
case 63:
|
|
258
|
-
this.$ = [];
|
|
259
|
-
break;
|
|
260
307
|
}
|
|
261
308
|
},
|
|
262
|
-
table: [o($V0,[2,
|
|
263
|
-
defaultActions: {20:[2,3],26:[2,
|
|
309
|
+
table: [o($V0,[2,23],{45:1,46:2,43:3,44:[1,4]}),{1:[3]},o($V0,[2,25],{47:5}),o($V0,[2,24]),o($V0,[2,21]),{5:7,6:$V1,7:12,8:$V2,9:11,10:$V3,11:10,12:$V4,13:13,14:$V5,29:14,30:$V6,31:15,32:$V7,33:16,34:$V8,41:17,42:$V9,48:6,59:8},{5:28,6:$V1,7:12,8:$V2,9:11,10:$V3,11:10,12:$V4,13:13,14:$V5,29:14,30:$V6,31:15,32:$V7,33:16,34:$V8,41:17,42:$V9,49:[1,26],59:27},o([6,8,10,12,14,30,32,34,42,49],$Va,{25:29,15:30,16:$Vb,26:$Vc}),o($Vd,[2,52]),o([4,6,8,10,12,14,16,18,20,22,24,26,30,32,34,36,38,40,42,49],[2,2]),{3:38,4:$Ve,5:37,6:$V1,7:12,8:$V2,9:11,10:$V3,11:10,12:$V4,13:13,14:$V5,20:[2,67],29:14,30:$V6,31:15,32:$V7,33:16,34:$V8,41:17,42:$V9,48:36,59:8,60:33,62:34,63:35},{5:28,6:$V1,7:12,8:$V2,9:11,10:$V3,11:10,12:$V4,13:13,14:$V5,18:[2,75],29:14,30:$V6,31:15,32:$V7,33:16,34:$V8,41:17,42:$V9,48:42,59:8,61:40,64:41},{5:43,6:$V1},{5:28,6:$V1,7:12,8:$V2,9:11,10:$V3,11:10,12:$V4,13:13,14:$V5,21:44,22:$Vf,29:14,30:$V6,31:15,32:$V7,33:16,34:$V8,41:17,42:$V9,48:45,59:8},{3:48,4:$Ve,5:47,6:$V1},{3:50,4:$Ve,5:49,6:$V1},{3:52,4:$Ve,5:51,6:$V1},{5:55,6:$V1,9:57,10:$V3,11:58,12:$V4,13:56,14:$V5,51:53,53:54},o([4,6,8,10,12,14,20,28,30,32,34,42],[2,5]),o([4,6,8,10,12,14,18,28,30,32,34,42],[2,4]),{6:[2,3]},o([6,8,10,12,14,22,28,30,32,34,42],[2,6]),o($Vg,[2,14]),o($Vg,[2,15]),o($Vg,[2,16]),o([6,10,12,14],[2,20]),{1:[2,22]},o($Vd,[2,53]),o([6,8,10,12,14,18,20,22,30,32,34,36,38,42,49],$Va),{5:28,6:$V1,7:12,8:$V2,9:11,10:$V3,11:10,12:$V4,13:13,14:$V5,29:14,30:$V6,31:15,32:$V7,33:16,34:$V8,41:17,42:$V9,48:59,59:8},{5:62,6:$V1,24:[2,28],50:60,52:61},o($V0,[2,12]),o([6,10,12,14,24],[2,7]),{19:63,20:$Vh},{20:[2,68],35:65,36:$Vi},o($Vj,[2,69]),{3:68,4:$Ve,5:67,6:$V1,7:12,8:$V2,9:11,10:$V3,11:10,12:$V4,13:13,14:$V5,29:14,30:$V6,31:15,32:$V7,33:16,34:$V8,41:17,42:$V9,59:27},o($Vk,$Va,{39:69,40:$Vl}),{39:71,40:$Vl},o([4,6,8,10,12,14,18,20,22,30,32,34,36,38,40,42,49],[2,1]),{17:72,18:$Vm},{18:[2,76],35:74,36:$Vi},o($Vn,[2,77],{11:10,9:11,7:12,13:13,29:14,31:15,33:16,41:17,59:27,5:28,6:$V1,8:$V2,10:$V3,12:$V4,14:$V5,30:$V6,32:$V7,34:$V8,42:$V9}),o($Vd,[2,56]),o($Vd,[2,57]),{5:28,6:$V1,7:12,8:$V2,9:11,10:$V3,11:10,12:$V4,13:13,14:$V5,21:75,22:$Vf,29:14,30:$V6,31:15,32:$V7,33:16,34:$V8,41:17,42:$V9,59:27},o($Vo,[2,10]),o($Vd,[2,60]),o($Vd,[2,61]),o($Vd,[2,62]),o($Vd,[2,63]),o($Vd,[2,64]),o($Vd,[2,65]),o($Vd,[2,66]),o($Vp,[2,40],{26:[1,76]}),o($Vp,$Vq,{15:77,16:$Vb}),{27:78,28:$Vr},{3:86,4:$Ve,5:85,6:$V1,9:57,10:$V3,11:58,12:$V4,13:56,14:$V5,18:$Vs,27:83,28:$Vr,51:84,53:54,54:80,57:81,58:82},{3:86,4:$Ve,5:85,6:$V1,9:57,10:$V3,11:58,12:$V4,13:56,14:$V5,20:$Vs,27:83,28:$Vr,51:84,53:54,54:87,57:81,58:82},{5:28,6:$V1,7:12,8:$V2,9:11,10:$V3,11:10,12:$V4,13:13,14:$V5,29:14,30:$V6,31:15,32:$V7,33:16,34:$V8,37:88,38:$Vt,41:17,42:$V9,59:27},{23:90,24:$Vu},{24:[2,29],35:92,36:$Vi},o($Vv,[2,30]),o($Vd,[2,54]),o($Vo,[2,9]),{3:38,4:$Ve,5:37,6:$V1,7:12,8:$V2,9:11,10:$V3,11:10,12:$V4,13:13,14:$V5,29:14,30:$V6,31:15,32:$V7,33:16,34:$V8,41:17,42:$V9,48:36,59:8,63:93},o([4,6,8,10,12,14,28,30,32,34,42],[2,17]),o($Vk,$Va,{20:$Vw,36:$Vw}),o($Vj,[2,72]),{5:28,6:$V1,7:12,8:$V2,9:11,10:$V3,11:10,12:$V4,13:13,14:$V5,29:14,30:$V6,31:15,32:$V7,33:16,34:$V8,41:17,42:$V9,48:94,59:8},o($V0,[2,19]),{5:28,6:$V1,7:12,8:$V2,9:11,10:$V3,11:10,12:$V4,13:13,14:$V5,29:14,30:$V6,31:15,32:$V7,33:16,34:$V8,41:17,42:$V9,48:95,59:8},o($Vd,[2,55]),o($Vo,[2,8]),{5:28,6:$V1,7:12,8:$V2,9:11,10:$V3,11:10,12:$V4,13:13,14:$V5,29:14,30:$V6,31:15,32:$V7,33:16,34:$V8,41:17,42:$V9,48:96,59:8},o($Vd,[2,58]),{5:97,6:$V1},{5:55,6:$V1,9:57,10:$V3,11:58,12:$V4,13:56,14:$V5,24:[2,36],51:100,53:54,55:98,56:99},{21:101,22:$Vf},o([18,20,22,36],[2,13]),{17:102,18:$Vm},o([18,20],[2,44],{35:103,36:$Vi}),o($Vx,[2,45]),o($Vx,[2,47]),{3:105,4:$Ve,5:104,6:$V1},o($Vg,$Vq,{15:77,39:106,16:$Vb,40:$Vl}),{39:107,40:$Vl},{19:108,20:$Vh},o($V0,[2,26]),o($V0,[2,18]),{25:109,26:$Vc},o($Vo,[2,11]),{5:110,6:$V1},o($Vj,[2,70]),o($Vj,[2,73],{11:10,9:11,7:12,13:13,29:14,31:15,33:16,41:17,59:27,5:28,6:$V1,8:$V2,10:$V3,12:$V4,14:$V5,30:$V6,32:$V7,34:$V8,42:$V9}),o($Vj,[2,74],{11:10,9:11,7:12,13:13,29:14,31:15,33:16,41:17,59:27,5:28,6:$V1,8:$V2,10:$V3,12:$V4,14:$V5,30:$V6,32:$V7,34:$V8,42:$V9}),o($Vn,[2,78],{11:10,9:11,7:12,13:13,29:14,31:15,33:16,41:17,59:27,5:28,6:$V1,8:$V2,10:$V3,12:$V4,14:$V5,30:$V6,32:$V7,34:$V8,42:$V9}),o($Vp,[2,41]),{23:111,24:$Vu},{24:[2,37],35:112,36:$Vi},o($Vv,[2,38]),o($Vo,[2,32]),o($Vo,[2,33]),{3:86,4:$Ve,5:85,6:$V1,9:57,10:$V3,11:58,12:$V4,13:56,14:$V5,27:83,28:$Vr,51:84,53:54,58:113},o($Vx,[2,48]),o($Vx,[2,49]),{5:55,6:$V1,9:57,10:$V3,11:58,12:$V4,13:56,14:$V5,51:114,53:54},{5:55,6:$V1,9:57,10:$V3,11:58,12:$V4,13:56,14:$V5,51:115,53:54},o($Vo,[2,34]),{5:55,6:$V1,9:57,10:$V3,11:58,12:$V4,13:56,14:$V5,51:116,53:54},o($Vv,[2,31]),o($Vo,[2,35]),{5:55,6:$V1,9:57,10:$V3,11:58,12:$V4,13:56,14:$V5,51:117,53:54},o($Vx,[2,46]),o($Vx,[2,50]),o($Vx,[2,51]),{37:118,38:$Vt},o($Vv,[2,39]),o($V0,[2,27])],
|
|
310
|
+
defaultActions: {20:[2,3],26:[2,22]},
|
|
264
311
|
parseError: function parseError (str, hash) {
|
|
265
312
|
if (hash.recoverable) {
|
|
266
313
|
this.trace(str);
|
|
@@ -752,11 +799,11 @@ case 7:return 18;
|
|
|
752
799
|
break;
|
|
753
800
|
case 8:return 20;
|
|
754
801
|
break;
|
|
755
|
-
case 9:return 22;
|
|
802
|
+
case 9:return 22;
|
|
756
803
|
break;
|
|
757
804
|
case 10:return 24;
|
|
758
805
|
break;
|
|
759
|
-
case 11:return 26;
|
|
806
|
+
case 11:return 26;
|
|
760
807
|
break;
|
|
761
808
|
case 12:return 28;
|
|
762
809
|
break;
|
|
@@ -770,20 +817,24 @@ case 16:return 36;
|
|
|
770
817
|
break;
|
|
771
818
|
case 17:return 38;
|
|
772
819
|
break;
|
|
773
|
-
case 18:return
|
|
820
|
+
case 18:return 40;
|
|
821
|
+
break;
|
|
822
|
+
case 19:return 42;
|
|
823
|
+
break;
|
|
824
|
+
case 20:return 8;
|
|
774
825
|
break;
|
|
775
|
-
case
|
|
826
|
+
case 21:return 4;
|
|
776
827
|
break;
|
|
777
|
-
case
|
|
828
|
+
case 22:return 6;
|
|
778
829
|
break;
|
|
779
|
-
case
|
|
830
|
+
case 23:return 44;
|
|
780
831
|
break;
|
|
781
|
-
case
|
|
832
|
+
case 24:return 49;
|
|
782
833
|
break;
|
|
783
834
|
}
|
|
784
835
|
},
|
|
785
|
-
rules: [/^(?:[/][*]([^*]*[*]+[^*/])*[^*]*[*]+[/])/,/^(?:(\/\/|#|%|--|\\\\)[^\n]*)/,/^(?:\s+)/,/^(?:<)/,/^(?:\{)/,/^(?:\()/,/^(?:>)/,/^(?:\})/,/^(?:\))/,/^(?:=)/,/^(?:\.\.\.)/,/^(?:\.)/,/^(?:\/)/,/^(?:(\\|\|))/,/^(?:,)/,/^(?:;)/,/^(?::)/,/^(?:\?)/,/^(?:@)/,/^(?:"([^"\\]|\\(.|\n))*"|'([^'\\]|\\(.|\n))*')/,/^(?:[a-zA-Z0-9_+-][a-zA-Z0-9_?!+-]*)/,/^(?:~)/,/^(?:$)/],
|
|
786
|
-
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],"inclusive":true}}
|
|
836
|
+
rules: [/^(?:[/][*]([^*]*[*]+[^*/])*[^*]*[*]+[/])/,/^(?:(\/\/|#|%|--|\\\\)[^\n]*)/,/^(?:\s+)/,/^(?:<)/,/^(?:\{)/,/^(?:\()/,/^(?:\[)/,/^(?:>)/,/^(?:\})/,/^(?:\))/,/^(?:\])/,/^(?:=)/,/^(?:\.\.\.)/,/^(?:\.)/,/^(?:\/)/,/^(?:(\\|\|))/,/^(?:,)/,/^(?:;)/,/^(?::)/,/^(?:\?)/,/^(?:@)/,/^(?:"([^"\\]|\\(.|\n))*"|'([^'\\]|\\(.|\n))*')/,/^(?:[a-zA-Z0-9_+-][a-zA-Z0-9_?!+-]*)/,/^(?:~)/,/^(?:$)/],
|
|
837
|
+
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],"inclusive":true}}
|
|
787
838
|
});
|
|
788
839
|
return lexer;
|
|
789
840
|
})();
|
package/pretty.mjs
CHANGED
|
@@ -49,6 +49,11 @@ function prettyFilter ( filter ) {
|
|
|
49
49
|
}
|
|
50
50
|
switch (filter.type) {
|
|
51
51
|
|
|
52
|
+
case "pattern_apply": {
|
|
53
|
+
const argsStr = (filter.args || []).map(prettyFilter).join(", ");
|
|
54
|
+
const knot = filter.name ? `=${filter.name}` : "";
|
|
55
|
+
return `${filter.pattern}[${argsStr}]${knot}`;
|
|
56
|
+
}
|
|
52
57
|
case "code":
|
|
53
58
|
return `$${filter.code}`;
|
|
54
59
|
case "name":
|