@fraczak/k 1.0.1 → 1.1.1
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/README.md +54 -14
- package/bnat.k +121 -0
- package/code.k +18 -0
- package/codes.coffee +107 -0
- package/codes.js +167 -0
- package/factorial.k +11 -0
- package/fib.k +15 -0
- package/index.coffee +16 -1
- package/index.js +20 -2
- package/k.coffee +34 -20
- package/k.js +51 -30
- package/k.sh +51 -30
- package/package.json +4 -3
- package/parser.jison +54 -8
- package/parser.js +99 -46
- package/pow.k +7 -0
- package/run.coffee +46 -4
- package/run.js +81 -10
- package/symbol-table.coffee +53 -3
- package/symbol-table.js +90 -4
- package/test.coffee +16 -0
- package/test.js +43 -0
- package/{test.t → test.k} +1 -1
package/k.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Generated by CoffeeScript 2.7.0
|
|
2
2
|
(function() {
|
|
3
3
|
//!/usr/bin/env coffee
|
|
4
|
-
var fs, jsonStream, k, kScript, prog,
|
|
4
|
+
var fs, jsonStream, k, kScript, oneJson, prog,
|
|
5
5
|
splice = [].splice;
|
|
6
6
|
|
|
7
7
|
fs = require("fs");
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
prog = process.argv[1];
|
|
12
12
|
|
|
13
|
-
({kScript, jsonStream} = (function(args) {
|
|
13
|
+
({kScript, jsonStream, oneJson} = (function(oneJson, args) {
|
|
14
14
|
var e;
|
|
15
15
|
try {
|
|
16
16
|
kScript = (function(arg) {
|
|
@@ -25,48 +25,69 @@
|
|
|
25
25
|
})(args.shift());
|
|
26
26
|
kScript = k.compile(kScript);
|
|
27
27
|
jsonStream = (function(arg) {
|
|
28
|
+
if (arg === "-1") {
|
|
29
|
+
oneJson = true;
|
|
30
|
+
arg = args.shift();
|
|
31
|
+
}
|
|
28
32
|
if (arg == null) {
|
|
29
33
|
return process.stdin;
|
|
30
34
|
}
|
|
31
35
|
return fs.createReadStream(arg);
|
|
32
36
|
})(args.shift());
|
|
33
|
-
return {kScript, jsonStream};
|
|
37
|
+
return {kScript, jsonStream, oneJson};
|
|
34
38
|
} catch (error) {
|
|
35
39
|
e = error;
|
|
36
40
|
console.error(e);
|
|
37
|
-
console.error(`Usage: ${prog} ( k-expr | -k k-file ) [ json-file ]`);
|
|
41
|
+
console.error(`Usage: ${prog} ( k-expr | -k k-file ) [ -1 ] [ json-file ]`);
|
|
38
42
|
console.error(` E.g., echo '{\"a\": 12}' | ${prog} '[(),()]'`);
|
|
39
43
|
return process.exit(-1);
|
|
40
44
|
}
|
|
41
|
-
})(process.argv.slice(2)));
|
|
45
|
+
})(false, process.argv.slice(2)));
|
|
42
46
|
|
|
43
|
-
(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
47
|
+
if (oneJson) {
|
|
48
|
+
(function(buffer) {
|
|
49
|
+
jsonStream.on('data', function(data) {
|
|
50
|
+
return buffer.push(data);
|
|
51
|
+
});
|
|
52
|
+
return jsonStream.on('end', function() {
|
|
53
|
+
var e;
|
|
54
|
+
try {
|
|
55
|
+
return console.log(JSON.stringify(kScript(JSON.parse(buffer.join('')))));
|
|
56
|
+
} catch (error) {
|
|
57
|
+
e = error;
|
|
58
|
+
return console.error(e);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
})([]);
|
|
62
|
+
} else {
|
|
63
|
+
(function(buffer, line) {
|
|
64
|
+
return jsonStream.on('data', function(data) {
|
|
65
|
+
var e, first, i, json, last, len, ref, rest, results, todo;
|
|
66
|
+
[first, ...rest] = data.toString("utf8").split("\n");
|
|
67
|
+
buffer.push(first);
|
|
68
|
+
if (rest.length > 0) {
|
|
69
|
+
todo = buffer.join("");
|
|
70
|
+
ref = rest, [...rest] = ref, [last] = splice.call(rest, -1);
|
|
71
|
+
buffer = [last];
|
|
72
|
+
todo = [todo, ...rest];
|
|
73
|
+
results = [];
|
|
74
|
+
for (i = 0, len = todo.length; i < len; i++) {
|
|
75
|
+
json = todo[i];
|
|
76
|
+
if (!json.match(/^[ \n\t]*(?:#.*)?$/)) {
|
|
77
|
+
try {
|
|
78
|
+
console.log(JSON.stringify(kScript(JSON.parse(json))));
|
|
79
|
+
} catch (error) {
|
|
80
|
+
e = error;
|
|
81
|
+
console.error(`Problem [line ${line}]: '${json}'`);
|
|
82
|
+
console.error(e);
|
|
83
|
+
}
|
|
63
84
|
}
|
|
85
|
+
results.push(line = line + 1);
|
|
64
86
|
}
|
|
65
|
-
results
|
|
87
|
+
return results;
|
|
66
88
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
})([], 0);
|
|
89
|
+
});
|
|
90
|
+
})([], 0);
|
|
91
|
+
}
|
|
71
92
|
|
|
72
93
|
}).call(this);
|
package/k.sh
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Generated by CoffeeScript 2.7.0
|
|
3
3
|
(function() {
|
|
4
4
|
//!/usr/bin/env coffee
|
|
5
|
-
var fs, jsonStream, k, kScript, prog,
|
|
5
|
+
var fs, jsonStream, k, kScript, oneJson, prog,
|
|
6
6
|
splice = [].splice;
|
|
7
7
|
|
|
8
8
|
fs = require("fs");
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
prog = process.argv[1];
|
|
13
13
|
|
|
14
|
-
({kScript, jsonStream} = (function(args) {
|
|
14
|
+
({kScript, jsonStream, oneJson} = (function(oneJson, args) {
|
|
15
15
|
var e;
|
|
16
16
|
try {
|
|
17
17
|
kScript = (function(arg) {
|
|
@@ -26,48 +26,69 @@
|
|
|
26
26
|
})(args.shift());
|
|
27
27
|
kScript = k.compile(kScript);
|
|
28
28
|
jsonStream = (function(arg) {
|
|
29
|
+
if (arg === "-1") {
|
|
30
|
+
oneJson = true;
|
|
31
|
+
arg = args.shift();
|
|
32
|
+
}
|
|
29
33
|
if (arg == null) {
|
|
30
34
|
return process.stdin;
|
|
31
35
|
}
|
|
32
36
|
return fs.createReadStream(arg);
|
|
33
37
|
})(args.shift());
|
|
34
|
-
return {kScript, jsonStream};
|
|
38
|
+
return {kScript, jsonStream, oneJson};
|
|
35
39
|
} catch (error) {
|
|
36
40
|
e = error;
|
|
37
41
|
console.error(e);
|
|
38
|
-
console.error(`Usage: ${prog} ( k-expr | -k k-file ) [ json-file ]`);
|
|
42
|
+
console.error(`Usage: ${prog} ( k-expr | -k k-file ) [ -1 ] [ json-file ]`);
|
|
39
43
|
console.error(` E.g., echo '{\"a\": 12}' | ${prog} '[(),()]'`);
|
|
40
44
|
return process.exit(-1);
|
|
41
45
|
}
|
|
42
|
-
})(process.argv.slice(2)));
|
|
46
|
+
})(false, process.argv.slice(2)));
|
|
43
47
|
|
|
44
|
-
(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
48
|
+
if (oneJson) {
|
|
49
|
+
(function(buffer) {
|
|
50
|
+
jsonStream.on('data', function(data) {
|
|
51
|
+
return buffer.push(data);
|
|
52
|
+
});
|
|
53
|
+
return jsonStream.on('end', function() {
|
|
54
|
+
var e;
|
|
55
|
+
try {
|
|
56
|
+
return console.log(JSON.stringify(kScript(JSON.parse(buffer.join('')))));
|
|
57
|
+
} catch (error) {
|
|
58
|
+
e = error;
|
|
59
|
+
return console.error(e);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
})([]);
|
|
63
|
+
} else {
|
|
64
|
+
(function(buffer, line) {
|
|
65
|
+
return jsonStream.on('data', function(data) {
|
|
66
|
+
var e, first, i, json, last, len, ref, rest, results, todo;
|
|
67
|
+
[first, ...rest] = data.toString("utf8").split("\n");
|
|
68
|
+
buffer.push(first);
|
|
69
|
+
if (rest.length > 0) {
|
|
70
|
+
todo = buffer.join("");
|
|
71
|
+
ref = rest, [...rest] = ref, [last] = splice.call(rest, -1);
|
|
72
|
+
buffer = [last];
|
|
73
|
+
todo = [todo, ...rest];
|
|
74
|
+
results = [];
|
|
75
|
+
for (i = 0, len = todo.length; i < len; i++) {
|
|
76
|
+
json = todo[i];
|
|
77
|
+
if (!json.match(/^[ \n\t]*(?:#.*)?$/)) {
|
|
78
|
+
try {
|
|
79
|
+
console.log(JSON.stringify(kScript(JSON.parse(json))));
|
|
80
|
+
} catch (error) {
|
|
81
|
+
e = error;
|
|
82
|
+
console.error(`Problem [line ${line}]: '${json}'`);
|
|
83
|
+
console.error(e);
|
|
84
|
+
}
|
|
64
85
|
}
|
|
86
|
+
results.push(line = line + 1);
|
|
65
87
|
}
|
|
66
|
-
results
|
|
88
|
+
return results;
|
|
67
89
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
})([], 0);
|
|
90
|
+
});
|
|
91
|
+
})([], 0);
|
|
92
|
+
}
|
|
72
93
|
|
|
73
94
|
}).call(this);
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fraczak/k",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "k-language for
|
|
3
|
+
"version": "1.1.1",
|
|
4
|
+
"description": "k-language for JSON-like data transformation",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"prepare": "coffee -c symbol-table.coffee; jison parser.jison",
|
|
8
8
|
"prepublishOnly": "coffee -c *.coffee; echo '#!/usr/bin/env node' | cat - k.js > k.sh",
|
|
9
|
-
"
|
|
9
|
+
"all": "npm run prepublishOnly; npm run prepare; npm run prepublishOnly",
|
|
10
|
+
"test": "coffee -c symbol-table.coffee; jison parser.jison; coffee test.coffee"
|
|
10
11
|
},
|
|
11
12
|
"author": "Wojciech Fraczak",
|
|
12
13
|
"license": "ISC",
|
package/parser.jison
CHANGED
|
@@ -18,17 +18,21 @@ var s = require("./symbol-table");
|
|
|
18
18
|
"}" return 'RC';
|
|
19
19
|
"]" return 'RB';
|
|
20
20
|
")" return 'RP';
|
|
21
|
+
"=" return 'EQ';
|
|
21
22
|
"." return 'DOT';
|
|
22
23
|
"," return 'COMMA';
|
|
24
|
+
";" return 'SC';
|
|
25
|
+
":" return 'COL';
|
|
26
|
+
"$" return 'DOLLAR';
|
|
23
27
|
\"[^\"\n]*\"|\'[^\'\n]*\' return 'STRING'
|
|
24
|
-
[a-zA-Z_][a-zA-Z0-9_]*
|
|
28
|
+
[a-zA-Z_][a-zA-Z0-9_?!]* return 'NAME';
|
|
25
29
|
0|[-]?[1-9][0-9]* return 'INT';
|
|
26
30
|
<<EOF>> return 'EOF';
|
|
27
31
|
|
|
28
32
|
/lex
|
|
29
33
|
|
|
30
34
|
%token NAME STRING INT
|
|
31
|
-
%token LA LC LB LP RA RP RB RC COMMA
|
|
35
|
+
%token LA LC LB LP RA RP RB RC EQ DOT COMMA SC COL DOLLAR
|
|
32
36
|
%token EOF
|
|
33
37
|
|
|
34
38
|
%start input_with_eof
|
|
@@ -39,20 +43,59 @@ name: NAME { $$ = String(yytext); };
|
|
|
39
43
|
str: STRING { $$ = String(yytext).slice(1,-1); };
|
|
40
44
|
int: INT { $$ = parseInt(String(yytext)); };
|
|
41
45
|
|
|
42
|
-
input_with_eof: comp EOF {
|
|
43
|
-
|
|
44
|
-
|
|
46
|
+
input_with_eof: defs comp EOF {
|
|
47
|
+
result = {defs: {rels: s.rels, codes: s.codes}, exp: $2};
|
|
48
|
+
// console.log(JSON.stringify(result, "", 2));
|
|
49
|
+
return result;
|
|
45
50
|
};
|
|
46
51
|
|
|
52
|
+
defs: { }
|
|
53
|
+
| defs name EQ comp SC { s.add_rel($2,$4); }
|
|
54
|
+
| defs DOLLAR name EQ code SC { s.add_code($3,$5); }
|
|
55
|
+
;
|
|
56
|
+
|
|
57
|
+
code
|
|
58
|
+
: name { $$ = {code: "ref", ref: $1}; }
|
|
59
|
+
| LC labelled_codes RC { $$ = {code: "product",
|
|
60
|
+
product: $2.reduce((r, lc) => {
|
|
61
|
+
r[lc.label] = s.as_ref(lc.code);
|
|
62
|
+
return r }
|
|
63
|
+
, {})}; }
|
|
64
|
+
| LB code RB { $$ = {code: "vector", vector: s.as_ref($2)}; }
|
|
65
|
+
| LA labelled_codes RA { $$ = {code: "union",
|
|
66
|
+
union: $2.reduce((r, lc) => {
|
|
67
|
+
r[lc.label] = s.as_ref(lc.code);
|
|
68
|
+
return r }
|
|
69
|
+
, {})}; }
|
|
70
|
+
;
|
|
71
|
+
|
|
72
|
+
labelled_codes
|
|
73
|
+
: { $$ = [] }
|
|
74
|
+
| non_empty_labelled_codes { $$ = $1; }
|
|
75
|
+
;
|
|
76
|
+
|
|
77
|
+
non_empty_labelled_codes
|
|
78
|
+
: code_label { $$ = [$1]; }
|
|
79
|
+
| non_empty_labelled_codes COMMA code_label
|
|
80
|
+
{ $$ = [].concat($1,$3); }
|
|
81
|
+
;
|
|
82
|
+
|
|
83
|
+
code_label
|
|
84
|
+
: code name { $$ = {label: $2, code: $1}; }
|
|
85
|
+
| code str { $$ = {label: $2, code: $1}; }
|
|
86
|
+
| name COL code { $$ = {label: $1, code: $3}; }
|
|
87
|
+
| str COL code { $$ = {label: $1, code: $3}; }
|
|
88
|
+
;
|
|
89
|
+
|
|
47
90
|
comp
|
|
48
|
-
: exp
|
|
49
|
-
| comp exp
|
|
91
|
+
: exp { $$ = $1; }
|
|
92
|
+
| comp exp { $$ = s.comp($1, $2); }
|
|
50
93
|
;
|
|
51
94
|
|
|
52
95
|
exp
|
|
53
96
|
: LC labelled RC { $$ = $2; }
|
|
54
97
|
| LB list RB { $$ = {op: "vector", vector: $2}; }
|
|
55
|
-
| LA list RA { $$ =
|
|
98
|
+
| LA list RA { $$ = s.union($2); }
|
|
56
99
|
| name { $$ = {op: "ref", ref: $1}; }
|
|
57
100
|
| LP RP { $$ = s.identity; }
|
|
58
101
|
| LP comp RP { $$ = $2; }
|
|
@@ -61,6 +104,7 @@ exp
|
|
|
61
104
|
| DOT int { $$ = {op: "dot", dot: $2}; }
|
|
62
105
|
| DOT str { $$ = {op: "dot", dot: $2}; }
|
|
63
106
|
| DOT name { $$ = {op: "dot", dot: $2}; }
|
|
107
|
+
| DOLLAR code { $$ = {op: "code", code: s.as_ref($2)}; }
|
|
64
108
|
;
|
|
65
109
|
|
|
66
110
|
labelled
|
|
@@ -78,6 +122,8 @@ non_empty_labelled
|
|
|
78
122
|
comp_label
|
|
79
123
|
: comp name { $$ = {label: $2, exp: $1}; }
|
|
80
124
|
| comp str { $$ = {label: $2, exp: $1}; }
|
|
125
|
+
| name COL comp { $$ = {label: $1, exp: $3}; }
|
|
126
|
+
| str COL comp { $$ = {label: $1, exp: $3}; }
|
|
81
127
|
;
|
|
82
128
|
|
|
83
129
|
list
|
package/parser.js
CHANGED
|
@@ -72,12 +72,12 @@
|
|
|
72
72
|
}
|
|
73
73
|
*/
|
|
74
74
|
var parser = (function(){
|
|
75
|
-
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[
|
|
75
|
+
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[4,6,8,15,17,20,22,31,33],$V1=[1,7],$V2=[1,15],$V3=[1,16],$V4=[1,8],$V5=[1,9],$V6=[1,10],$V7=[1,11],$V8=[1,14],$V9=[1,20],$Va=[4,6,8,12,15,17,20,22,31,33],$Vb=[2,25],$Vc=[1,24],$Vd=[1,25],$Ve=[1,26],$Vf=[4,6,8,12,14,15,17,19,20,21,22,23,26,31,32,33],$Vg=[2,42],$Vh=[2,28],$Vi=[2,8],$Vj=[2,12],$Vk=[19,26],$Vl=[21,23,26],$Vm=[19,23,26],$Vn=[2,38],$Vo=[2,39];
|
|
76
76
|
var parser = {trace: function trace () { },
|
|
77
77
|
yy: {},
|
|
78
|
-
symbols_: {"error":2,"name":3,"NAME":4,"str":5,"STRING":6,"int":7,"INT":8,"input_with_eof":9,"
|
|
79
|
-
terminals_: {2:"error",4:"NAME",6:"STRING",8:"INT",
|
|
80
|
-
productions_: [0,[3,1],[5,1],[7,1],[9,
|
|
78
|
+
symbols_: {"error":2,"name":3,"NAME":4,"str":5,"STRING":6,"int":7,"INT":8,"input_with_eof":9,"defs":10,"comp":11,"EOF":12,"EQ":13,"SC":14,"DOLLAR":15,"code":16,"LC":17,"labelled_codes":18,"RC":19,"LB":20,"RB":21,"LA":22,"RA":23,"non_empty_labelled_codes":24,"code_label":25,"COMMA":26,"COL":27,"exp":28,"labelled":29,"list":30,"LP":31,"RP":32,"DOT":33,"non_empty_labelled":34,"comp_label":35,"non_empty_list":36,"$accept":0,"$end":1},
|
|
79
|
+
terminals_: {2:"error",4:"NAME",6:"STRING",8:"INT",12:"EOF",13:"EQ",14:"SC",15:"DOLLAR",17:"LC",19:"RC",20:"LB",21:"RB",22:"LA",23:"RA",26:"COMMA",27:"COL",31:"LP",32:"RP",33:"DOT"},
|
|
80
|
+
productions_: [0,[3,1],[5,1],[7,1],[9,3],[10,0],[10,5],[10,6],[16,1],[16,3],[16,3],[16,3],[18,0],[18,1],[24,1],[24,3],[25,2],[25,2],[25,3],[25,3],[11,1],[11,2],[28,3],[28,3],[28,3],[28,1],[28,2],[28,3],[28,1],[28,1],[28,2],[28,2],[28,2],[28,2],[29,0],[29,1],[34,1],[34,3],[35,2],[35,2],[35,3],[35,3],[30,0],[30,1],[36,1],[36,3]],
|
|
81
81
|
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
|
|
82
82
|
/* this == yyval */
|
|
83
83
|
|
|
@@ -94,68 +94,113 @@ case 3:
|
|
|
94
94
|
break;
|
|
95
95
|
case 4:
|
|
96
96
|
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
result = {defs: {rels: s.rels, codes: s.codes}, exp: $$[$0-1]};
|
|
98
|
+
// console.log(JSON.stringify(result, "", 2));
|
|
99
|
+
return result;
|
|
99
100
|
|
|
100
101
|
break;
|
|
101
|
-
case 5:
|
|
102
|
-
|
|
102
|
+
case 5:
|
|
103
|
+
|
|
103
104
|
break;
|
|
104
105
|
case 6:
|
|
105
|
-
|
|
106
|
+
s.add_rel($$[$0-3],$$[$0-1]);
|
|
106
107
|
break;
|
|
107
108
|
case 7:
|
|
108
|
-
|
|
109
|
+
s.add_code($$[$0-3],$$[$0-1]);
|
|
109
110
|
break;
|
|
110
111
|
case 8:
|
|
111
|
-
this.$ = {
|
|
112
|
+
this.$ = {code: "ref", ref: $$[$0]};
|
|
112
113
|
break;
|
|
113
114
|
case 9:
|
|
114
|
-
this.$ = {
|
|
115
|
+
this.$ = {code: "product",
|
|
116
|
+
product: $$[$0-1].reduce((r, lc) => {
|
|
117
|
+
r[lc.label] = s.as_ref(lc.code);
|
|
118
|
+
return r }
|
|
119
|
+
, {})};
|
|
115
120
|
break;
|
|
116
121
|
case 10:
|
|
117
|
-
this.$ = {
|
|
122
|
+
this.$ = {code: "vector", vector: s.as_ref($$[$0-1])};
|
|
118
123
|
break;
|
|
119
124
|
case 11:
|
|
120
|
-
this.$ =
|
|
125
|
+
this.$ = {code: "union",
|
|
126
|
+
union: $$[$0-1].reduce((r, lc) => {
|
|
127
|
+
r[lc.label] = s.as_ref(lc.code);
|
|
128
|
+
return r }
|
|
129
|
+
, {})};
|
|
121
130
|
break;
|
|
122
131
|
case 12:
|
|
132
|
+
this.$ = []
|
|
133
|
+
break;
|
|
134
|
+
case 13: case 20: case 35: case 43:
|
|
135
|
+
this.$ = $$[$0];
|
|
136
|
+
break;
|
|
137
|
+
case 14: case 44:
|
|
138
|
+
this.$ = [$$[$0]];
|
|
139
|
+
break;
|
|
140
|
+
case 15: case 45:
|
|
141
|
+
this.$ = [].concat($$[$0-2],$$[$0]);
|
|
142
|
+
break;
|
|
143
|
+
case 16: case 17:
|
|
144
|
+
this.$ = {label: $$[$0], code: $$[$0-1]};
|
|
145
|
+
break;
|
|
146
|
+
case 18: case 19:
|
|
147
|
+
this.$ = {label: $$[$0-2], code: $$[$0]};
|
|
148
|
+
break;
|
|
149
|
+
case 21:
|
|
150
|
+
this.$ = s.comp($$[$0-1], $$[$0]);
|
|
151
|
+
break;
|
|
152
|
+
case 22:
|
|
153
|
+
this.$ = $$[$0-1];
|
|
154
|
+
break;
|
|
155
|
+
case 23:
|
|
156
|
+
this.$ = {op: "vector", vector: $$[$0-1]};
|
|
157
|
+
break;
|
|
158
|
+
case 24:
|
|
159
|
+
this.$ = s.union($$[$0-1]);
|
|
160
|
+
break;
|
|
161
|
+
case 25:
|
|
162
|
+
this.$ = {op: "ref", ref: $$[$0]};
|
|
163
|
+
break;
|
|
164
|
+
case 26:
|
|
165
|
+
this.$ = s.identity;
|
|
166
|
+
break;
|
|
167
|
+
case 27:
|
|
123
168
|
this.$ = $$[$0-1];
|
|
124
169
|
break;
|
|
125
|
-
case
|
|
170
|
+
case 28:
|
|
126
171
|
this.$ = {op: "str", str: $$[$0]};
|
|
127
172
|
break;
|
|
128
|
-
case
|
|
173
|
+
case 29:
|
|
129
174
|
this.$ = {op: "int", int: $$[$0]};
|
|
130
175
|
break;
|
|
131
|
-
case
|
|
176
|
+
case 30: case 31: case 32:
|
|
132
177
|
this.$ = {op: "dot", dot: $$[$0]};
|
|
133
178
|
break;
|
|
134
|
-
case
|
|
179
|
+
case 33:
|
|
180
|
+
this.$ = {op: "code", code: s.as_ref($$[$0])};
|
|
181
|
+
break;
|
|
182
|
+
case 34:
|
|
135
183
|
this.$ = {op: "product", product: []};
|
|
136
184
|
break;
|
|
137
|
-
case
|
|
185
|
+
case 36:
|
|
138
186
|
this.$ = {op: "product", product: [$$[$0]]};
|
|
139
187
|
break;
|
|
140
|
-
case
|
|
188
|
+
case 37:
|
|
141
189
|
$$[$0-2].product = [].concat($$[$0-2].product,$$[$0]); this.$ = $$[$0-2];
|
|
142
190
|
break;
|
|
143
|
-
case
|
|
191
|
+
case 38: case 39:
|
|
144
192
|
this.$ = {label: $$[$0], exp: $$[$0-1]};
|
|
145
193
|
break;
|
|
146
|
-
case
|
|
147
|
-
this.$ = [];
|
|
148
|
-
break;
|
|
149
|
-
case 26:
|
|
150
|
-
this.$ = [$$[$0]];
|
|
194
|
+
case 40: case 41:
|
|
195
|
+
this.$ = {label: $$[$0-2], exp: $$[$0]};
|
|
151
196
|
break;
|
|
152
|
-
case
|
|
153
|
-
this.$ = []
|
|
197
|
+
case 42:
|
|
198
|
+
this.$ = [];
|
|
154
199
|
break;
|
|
155
200
|
}
|
|
156
201
|
},
|
|
157
|
-
table: [{3:
|
|
158
|
-
defaultActions: {
|
|
202
|
+
table: [o($V0,[2,5],{9:1,10:2}),{1:[3]},{3:4,4:$V1,5:12,6:$V2,7:13,8:$V3,11:3,15:[1,5],17:$V4,20:$V5,22:$V6,28:6,31:$V7,33:$V8},{3:19,4:$V1,5:12,6:$V2,7:13,8:$V3,12:[1,17],15:$V9,17:$V4,20:$V5,22:$V6,28:18,31:$V7,33:$V8},o($Va,$Vb,{13:[1,21]}),{3:22,4:$V1,16:23,17:$Vc,20:$Vd,22:$Ve},o($Vf,[2,20]),o([4,6,8,12,13,14,15,17,19,20,21,22,23,26,27,31,32,33],[2,1]),{3:31,4:$V1,5:32,6:$V2,7:13,8:$V3,11:30,15:$V9,17:$V4,19:[2,34],20:$V5,22:$V6,28:6,29:27,31:$V7,33:$V8,34:28,35:29},{3:19,4:$V1,5:12,6:$V2,7:13,8:$V3,11:35,15:$V9,17:$V4,20:$V5,21:$Vg,22:$V6,28:6,30:33,31:$V7,33:$V8,36:34},{3:19,4:$V1,5:12,6:$V2,7:13,8:$V3,11:35,15:$V9,17:$V4,20:$V5,22:$V6,23:$Vg,28:6,30:36,31:$V7,33:$V8,36:34},{3:19,4:$V1,5:12,6:$V2,7:13,8:$V3,11:38,15:$V9,17:$V4,20:$V5,22:$V6,28:6,31:$V7,32:[1,37],33:$V8},o($Vf,$Vh),o($Vf,[2,29]),{3:41,4:$V1,5:40,6:$V2,7:39,8:$V3},o([4,6,8,12,14,15,17,19,20,21,22,23,26,27,31,32,33],[2,2]),o($Vf,[2,3]),{1:[2,4]},o($Vf,[2,21]),o($Vf,$Vb),{3:42,4:$V1,16:23,17:$Vc,20:$Vd,22:$Ve},{3:19,4:$V1,5:12,6:$V2,7:13,8:$V3,11:43,15:$V9,17:$V4,20:$V5,22:$V6,28:6,31:$V7,33:$V8},o($Va,$Vi,{13:[1,44]}),o($Vf,[2,33]),{3:49,4:$V1,5:50,6:$V2,16:48,17:$Vc,18:45,19:$Vj,20:$Vd,22:$Ve,24:46,25:47},{3:42,4:$V1,16:51,17:$Vc,20:$Vd,22:$Ve},{3:49,4:$V1,5:50,6:$V2,16:48,17:$Vc,18:52,20:$Vd,22:$Ve,23:$Vj,24:46,25:47},{19:[1,53]},{19:[2,35],26:[1,54]},o($Vk,[2,36]),{3:55,4:$V1,5:56,6:$V2,7:13,8:$V3,15:$V9,17:$V4,20:$V5,22:$V6,28:18,31:$V7,33:$V8},o($V0,$Vb,{27:[1,57]}),o($V0,$Vh,{27:[1,58]}),{21:[1,59]},o([21,23],[2,43],{26:[1,60]}),o($Vl,[2,44],{5:12,7:13,28:18,3:19,4:$V1,6:$V2,8:$V3,15:$V9,17:$V4,20:$V5,22:$V6,31:$V7,33:$V8}),{23:[1,61]},o($Vf,[2,26]),{3:19,4:$V1,5:12,6:$V2,7:13,8:$V3,15:$V9,17:$V4,20:$V5,22:$V6,28:18,31:$V7,32:[1,62],33:$V8},o($Vf,[2,30]),o($Vf,[2,31]),o($Vf,[2,32]),o($Vf,$Vi),{3:19,4:$V1,5:12,6:$V2,7:13,8:$V3,14:[1,63],15:$V9,17:$V4,20:$V5,22:$V6,28:18,31:$V7,33:$V8},{3:42,4:$V1,16:64,17:$Vc,20:$Vd,22:$Ve},{19:[1,65]},o([19,23],[2,13],{26:[1,66]}),o($Vm,[2,14]),{3:67,4:$V1,5:68,6:$V2},o([4,6],$Vi,{27:[1,69]}),{27:[1,70]},{21:[1,71]},{23:[1,72]},o($Vf,[2,22]),{3:31,4:$V1,5:32,6:$V2,7:13,8:$V3,11:30,15:$V9,17:$V4,20:$V5,22:$V6,28:6,31:$V7,33:$V8,35:73},o($V0,$Vb,{19:$Vn,26:$Vn}),o($V0,$Vh,{19:$Vo,26:$Vo}),{3:19,4:$V1,5:12,6:$V2,7:13,8:$V3,11:74,15:$V9,17:$V4,20:$V5,22:$V6,28:6,31:$V7,33:$V8},{3:19,4:$V1,5:12,6:$V2,7:13,8:$V3,11:75,15:$V9,17:$V4,20:$V5,22:$V6,28:6,31:$V7,33:$V8},o($Vf,[2,23]),{3:19,4:$V1,5:12,6:$V2,7:13,8:$V3,11:76,15:$V9,17:$V4,20:$V5,22:$V6,28:6,31:$V7,33:$V8},o($Vf,[2,24]),o($Vf,[2,27]),o($V0,[2,6]),{14:[1,77]},o($Vf,[2,9]),{3:49,4:$V1,5:50,6:$V2,16:48,17:$Vc,20:$Vd,22:$Ve,25:78},o($Vm,[2,16]),o($Vm,[2,17]),{3:42,4:$V1,16:79,17:$Vc,20:$Vd,22:$Ve},{3:42,4:$V1,16:80,17:$Vc,20:$Vd,22:$Ve},o($Vf,[2,10]),o($Vf,[2,11]),o($Vk,[2,37]),o($Vk,[2,40],{5:12,7:13,28:18,3:19,4:$V1,6:$V2,8:$V3,15:$V9,17:$V4,20:$V5,22:$V6,31:$V7,33:$V8}),o($Vk,[2,41],{5:12,7:13,28:18,3:19,4:$V1,6:$V2,8:$V3,15:$V9,17:$V4,20:$V5,22:$V6,31:$V7,33:$V8}),o($Vl,[2,45],{5:12,7:13,28:18,3:19,4:$V1,6:$V2,8:$V3,15:$V9,17:$V4,20:$V5,22:$V6,31:$V7,33:$V8}),o($V0,[2,7]),o($Vm,[2,15]),o($Vm,[2,18]),o($Vm,[2,19])],
|
|
203
|
+
defaultActions: {17:[2,4]},
|
|
159
204
|
parseError: function parseError (str, hash) {
|
|
160
205
|
if (hash.recoverable) {
|
|
161
206
|
this.trace(str);
|
|
@@ -641,38 +686,46 @@ case 1:/* one line comment */
|
|
|
641
686
|
break;
|
|
642
687
|
case 2:/* blanks */
|
|
643
688
|
break;
|
|
644
|
-
case 3:return
|
|
689
|
+
case 3:return 22;
|
|
690
|
+
break;
|
|
691
|
+
case 4:return 17;
|
|
692
|
+
break;
|
|
693
|
+
case 5:return 20;
|
|
694
|
+
break;
|
|
695
|
+
case 6:return 31;
|
|
696
|
+
break;
|
|
697
|
+
case 7:return 23;
|
|
645
698
|
break;
|
|
646
|
-
case
|
|
699
|
+
case 8:return 19;
|
|
647
700
|
break;
|
|
648
|
-
case
|
|
701
|
+
case 9:return 21;
|
|
649
702
|
break;
|
|
650
|
-
case
|
|
703
|
+
case 10:return 32;
|
|
651
704
|
break;
|
|
652
|
-
case
|
|
705
|
+
case 11:return 13;
|
|
653
706
|
break;
|
|
654
|
-
case
|
|
707
|
+
case 12:return 33;
|
|
655
708
|
break;
|
|
656
|
-
case
|
|
709
|
+
case 13:return 26;
|
|
657
710
|
break;
|
|
658
|
-
case
|
|
711
|
+
case 14:return 14;
|
|
659
712
|
break;
|
|
660
|
-
case
|
|
713
|
+
case 15:return 27;
|
|
661
714
|
break;
|
|
662
|
-
case
|
|
715
|
+
case 16:return 15;
|
|
663
716
|
break;
|
|
664
|
-
case
|
|
717
|
+
case 17:return 6
|
|
665
718
|
break;
|
|
666
|
-
case
|
|
719
|
+
case 18:return 4;
|
|
667
720
|
break;
|
|
668
|
-
case
|
|
721
|
+
case 19:return 8;
|
|
669
722
|
break;
|
|
670
|
-
case
|
|
723
|
+
case 20:return 12;
|
|
671
724
|
break;
|
|
672
725
|
}
|
|
673
726
|
},
|
|
674
|
-
rules: [/^(?:[/][*]([*][^/]|[^*])*[*][/])/,/^(?:(\/\/|#|%|--)[^\n]*)/,/^(?:\s+)/,/^(?:<)/,/^(?:\{)/,/^(?:\[)/,/^(?:\()/,/^(?:>)/,/^(?:\})/,/^(?:\])/,/^(?:\))/,/^(?:\.)/,/^(?:,)/,/^(?:"[^\"\n]*"|'[^\'\n]*')/,/^(?:[a-zA-Z_][a-zA-Z0-9_]*)/,/^(?:0|[-]?[1-9][0-9]*)/,/^(?:$)/],
|
|
675
|
-
conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],"inclusive":true}}
|
|
727
|
+
rules: [/^(?:[/][*]([*][^/]|[^*])*[*][/])/,/^(?:(\/\/|#|%|--)[^\n]*)/,/^(?:\s+)/,/^(?:<)/,/^(?:\{)/,/^(?:\[)/,/^(?:\()/,/^(?:>)/,/^(?:\})/,/^(?:\])/,/^(?:\))/,/^(?:=)/,/^(?:\.)/,/^(?:,)/,/^(?:;)/,/^(?::)/,/^(?:\$)/,/^(?:"[^\"\n]*"|'[^\'\n]*')/,/^(?:[a-zA-Z_][a-zA-Z0-9_?!]*)/,/^(?:0|[-]?[1-9][0-9]*)/,/^(?:$)/],
|
|
728
|
+
conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"inclusive":true}}
|
|
676
729
|
});
|
|
677
730
|
return lexer;
|
|
678
731
|
})();
|