mercury-lang
Advanced tools
Comparing version 1.5.5 to 1.5.6
{ | ||
"name": "mercury-lang", | ||
"version": "1.5.5", | ||
"version": "1.5.6", | ||
"description": "Parser for the mercury live coding language", | ||
@@ -43,3 +43,3 @@ "main": "index.js", | ||
"@babel/cli": "^7.17.6", | ||
"@babel/core": "^7.17.5", | ||
"@babel/core": "^7.17.8", | ||
"@babel/preset-env": "^7.16.11", | ||
@@ -49,5 +49,5 @@ "browserify": "^17.0.0", | ||
"nodemon": "^2.0.15", | ||
"terser": "^5.12.0", | ||
"terser": "^5.12.1", | ||
"uglify-js": "^3.15.3" | ||
} | ||
} |
@@ -12,21 +12,13 @@ // Generated automatically by nearley, version 2.20.1 | ||
comment: /(?:\/\/).*?$/, | ||
//instrument: [/synth/, /sample/, /polySynth/, /loop/, /emitter/], | ||
/*instrument: { | ||
match: [/synth\ /, /sample\ /, /polySynth\ /, /loop\ /,/emitter\ / ], | ||
value: x => x.slice(0, x.length-1) | ||
},*/ | ||
list: [/ring /, /array /, /list /], | ||
newObject: [/new /, /make /, /add(?: |$)/], | ||
newObject: [/new /, /make /], | ||
setObject: [/set /, /apply /, /give /, /send /], | ||
print: [/print /, /post /, /log /], | ||
//global: [/silence/, /mute/, /killAll/], | ||
//action: [/ring\ /, /new\ /, /set\ /], | ||
//kill: /kill[\-|_]?[a|A]ll/, | ||
seperator: /,/, | ||
//seperator: /,/, | ||
//newLine: /[&;]/, | ||
//note: /[a-gA-G](?:[0-9])?(?:#+|b+|x)?/, | ||
//note: /[a-gA-G](?:[0-9])?(?:#+|b+|x)?/, | ||
number: /[+-]?(?:[0-9]|[0-9]+)(?:\.[0-9]+)?(?:[eE][-+]?[0-9]+)?\b/, | ||
@@ -36,3 +28,2 @@ //hex: /0x[0-9a-f]+/, | ||
divider: /[/:]/, | ||
//timevalue: /[nm]/, | ||
@@ -39,0 +30,0 @@ |
@@ -22,2 +22,3 @@ //==================================================================== | ||
let parseTree = {}; | ||
let parser; | ||
@@ -27,3 +28,3 @@ for (let l in lines){ | ||
// create a Parser object from our grammar | ||
let parser = new nearley.Parser(nearley.Grammar.fromCompiled(grammar), { keepHistory: false }); | ||
parser = new nearley.Parser(nearley.Grammar.fromCompiled(grammar), { keepHistory: false }); | ||
@@ -44,9 +45,12 @@ try { | ||
} else { | ||
// console.log(parser.results[0]); | ||
console.log(parser.results[0]); | ||
} | ||
} | ||
// remove other results | ||
parser.results.length = 1; | ||
// build the tokenized syntax tree | ||
syntaxTree['@main'].push(parser.results[0]); | ||
// only if not undefined | ||
if (parser.results[0] !== undefined){ | ||
// build the tokenized syntax tree | ||
syntaxTree['@main'].push(parser.results[0]); | ||
} else { | ||
throw new Error(); | ||
} | ||
} catch (e) { | ||
@@ -53,0 +57,0 @@ // console.error(e); |
@@ -32,5 +32,5 @@ //==================================================================== | ||
if (verbose){ | ||
console.log(util.inspect(result.parseTree, { showHidden: false, depth: null, colors: true })); | ||
// console.log(util.inspect(result.syntaxTree, { showHidden: false, depth: null, colors: true })); | ||
// console.log(util.inspect(result.errors, { showHidden: false, depth: null, colors: true })); | ||
// console.log(util.inspect(result.parseTree, { showHidden: false, depth: null, colors: true })); | ||
console.log(util.inspect(result.syntaxTree, { showHidden: false, depth: null, colors: true })); | ||
console.log(util.inspect(result.errors, { showHidden: false, depth: null, colors: true })); | ||
// console.log(util.inspect(result, { showHidden: false, depth: null, colors: true })); | ||
@@ -43,9 +43,9 @@ } | ||
parseFile('./test/test-grammar.txt'); | ||
parseFile('./test/test-errors.txt'); | ||
parseFile('./test/test-dev.txt'); | ||
parseFile('./test/test-rings.txt'); | ||
parseFile('./test/test-errors.txt'); | ||
parseFile('./test/test-small.txt'); | ||
parseFile('./test/test-grammar.txt'); | ||
parseFile('./test/test-synth.txt'); | ||
parseFile('./test/test-mini.txt'); | ||
parseFile('./test/test-sample.txt'); | ||
parseFile('./test/test-sample.txt'); | ||
parseFile('./test/test-rings.txt'); | ||
// parseFile('./test/test-mini.txt'); |
@@ -10,2 +10,9 @@ | ||
ring this Array [10 20] | ||
list arr myArr | ||
list arr [myArr] | ||
list arr[myArr] | ||
list arr [ myArr | ||
list arr myArr] | ||
list arr [[myArr] | ||
list arr [myArr]] | ||
@@ -12,0 +19,0 @@ list theArr [ 5 6 7 8 9 new |
@@ -93,9 +93,9 @@ | ||
new sample [hat_min kick snare tabla] | ||
new synth [ saw triangle ] | ||
new synth [ saw triangle ] group(syn1) | ||
make synth saw note([0 5 7 9] 0) name(bob) | ||
make synth saw note([0 5 7 9] 0) name(bob) group(syn1) | ||
make sample [kick snare] time(0.25 0.5) speed(0.9) name(alice) | ||
make loop amen-break02 speed(randomFloat(8 0.5 0.9)) | ||
// TODO | ||
// make loop amen-break02 speed(randomFloat(8 0.5 0.9)) | ||
// new polySynth triangle | ||
@@ -124,1 +124,4 @@ // new emitter osc name(fred) | ||
killAll | ||
set hipass 900 1500 | ||
set lopass 2500 100 | ||
set crossFade 100 |
@@ -197,6 +197,6 @@ { | ||
[ | ||
3, | ||
3, | ||
13, | ||
4 | ||
7, | ||
10, | ||
10, | ||
14 | ||
] | ||
@@ -203,0 +203,0 @@ ], |
@@ -24,2 +24,10 @@ { | ||
], | ||
"arr": [ | ||
[ | ||
1, | ||
2, | ||
3, | ||
4 | ||
] | ||
], | ||
"beat": [ | ||
@@ -37,5 +45,25 @@ "euclid", | ||
], | ||
"commaArr": [ | ||
3, | ||
",14", | ||
6, | ||
",28", | ||
3.14, | ||
1.618 | ||
], | ||
"val": [ | ||
"the string name", | ||
"3.14 with/ ( [ ]) special, ;characters&" | ||
], | ||
"theSeps": [ | ||
1, | ||
",", | ||
23, | ||
",", | ||
4.15, | ||
",", | ||
6, | ||
",", | ||
789.1011, | ||
"," | ||
] | ||
@@ -60,3 +88,10 @@ }, | ||
], | ||
"commaArr" | ||
[ | ||
3, | ||
",14", | ||
6, | ||
",28", | ||
3.14, | ||
1.618 | ||
] | ||
], | ||
@@ -88,4 +123,35 @@ "comments": [] | ||
}, | ||
null, | ||
{ | ||
"@list": { | ||
"@name": "arr", | ||
"@params": { | ||
"@identifier": "myArr" | ||
} | ||
} | ||
}, | ||
{ | ||
"@list": { | ||
"@name": "arr", | ||
"@params": { | ||
"@array": [ | ||
{ | ||
"@identifier": "myArr" | ||
} | ||
] | ||
} | ||
} | ||
}, | ||
{ | ||
"@list": { | ||
"@name": "arr", | ||
"@params": { | ||
"@array": [ | ||
{ | ||
"@identifier": "myArr" | ||
} | ||
] | ||
} | ||
} | ||
}, | ||
{ | ||
"@global": { | ||
@@ -152,2 +218,29 @@ "@print": [ | ||
{ | ||
"@list": { | ||
"@name": "commaArr", | ||
"@params": { | ||
"@array": [ | ||
{ | ||
"@number": 3 | ||
}, | ||
{ | ||
"@identifier": ",14" | ||
}, | ||
{ | ||
"@number": 6 | ||
}, | ||
{ | ||
"@identifier": ",28" | ||
}, | ||
{ | ||
"@number": 3.14 | ||
}, | ||
{ | ||
"@number": 1.618 | ||
} | ||
] | ||
} | ||
} | ||
}, | ||
{ | ||
"@global": { | ||
@@ -175,2 +268,41 @@ "@print": [ | ||
} | ||
}, | ||
{ | ||
"@list": { | ||
"@name": "theSeps", | ||
"@params": { | ||
"@array": [ | ||
{ | ||
"@number": 1 | ||
}, | ||
{ | ||
"@identifier": "," | ||
}, | ||
{ | ||
"@number": 23 | ||
}, | ||
{ | ||
"@identifier": "," | ||
}, | ||
{ | ||
"@number": 4.15 | ||
}, | ||
{ | ||
"@identifier": "," | ||
}, | ||
{ | ||
"@number": 6 | ||
}, | ||
{ | ||
"@identifier": "," | ||
}, | ||
{ | ||
"@number": 789.1011 | ||
}, | ||
{ | ||
"@identifier": "," | ||
} | ||
] | ||
} | ||
} | ||
} | ||
@@ -184,9 +316,12 @@ ] | ||
"Error at line 9: Unexpected lArray: '[' at ring this Array [<-", | ||
"Error at line 14: Unexpected identifier: 'kick' at newsample kick<-", | ||
"Error at line 16: Unexpected identifier: 'spread' at ring notes shuffle spread<-", | ||
"Error at line 17: Unexpected lParam: '(' at ring notes2 duplicate\t(<-", | ||
"Error at line 23: Unexpected identifier: 'euclid' at ring beat2 join( euclid 8 3) euclid<-", | ||
"Error at line 25: Unexpected seperator: ',' at array commaArr [ 3,<-", | ||
"Error at line 30: Unexpected seperator: ',' at ring theSeps [1,<-" | ||
"Error at line 13", | ||
"Error at line 14: Unexpected rArray: ']' at list arr myArr]<-", | ||
"Error at line 15", | ||
"Error at line 16: Unexpected rArray: ']' at list arr [myArr]]<-", | ||
"Error at line 18", | ||
"Error at line 21: Unexpected identifier: 'kick' at newsample kick<-", | ||
"Error at line 23: Unexpected identifier: 'spread' at ring notes shuffle spread<-", | ||
"Error at line 24: Unexpected lParam: '(' at ring notes2 duplicate\t(<-", | ||
"Error at line 30: Unexpected identifier: 'euclid' at ring beat2 join( euclid 8 3) euclid<-" | ||
] | ||
} |
@@ -8,8 +8,8 @@ { | ||
"highPass": [ | ||
5, | ||
0 | ||
900, | ||
1500 | ||
], | ||
"lowPass": [ | ||
18000, | ||
0 | ||
2500, | ||
100 | ||
], | ||
@@ -24,2 +24,5 @@ "silence": true, | ||
"g#" | ||
], | ||
"crossFade": [ | ||
100 | ||
] | ||
@@ -93,9 +96,9 @@ }, | ||
"snare", | ||
"kick", | ||
"hat", | ||
"snare", | ||
"hat", | ||
"hat", | ||
"kick", | ||
"snare", | ||
"kick", | ||
"snare" | ||
"hat" | ||
], | ||
@@ -163,6 +166,6 @@ "arpMel": [ | ||
10, | ||
6, | ||
0, | ||
13, | ||
3, | ||
6 | ||
3 | ||
], | ||
@@ -196,3 +199,3 @@ "bsLine3": [ | ||
"objects": { | ||
"LRWTWWLC": { | ||
"J3IF7IAA": { | ||
"object": "synth", | ||
@@ -226,7 +229,7 @@ "type": "saw", | ||
"name": [ | ||
"LRWTWWLC" | ||
"J3IF7IAA" | ||
] | ||
} | ||
}, | ||
"ZAOXZRUR": { | ||
"8UMKUO7I": { | ||
"object": "sample", | ||
@@ -259,7 +262,7 @@ "type": "hat_min", | ||
"name": [ | ||
"ZAOXZRUR" | ||
"8UMKUO7I" | ||
] | ||
} | ||
}, | ||
"YVX6B459": { | ||
"SOYDZBQ8": { | ||
"object": "sample", | ||
@@ -297,7 +300,7 @@ "type": [ | ||
"name": [ | ||
"YVX6B459" | ||
"SOYDZBQ8" | ||
] | ||
} | ||
}, | ||
"A3M3B8W4": { | ||
"0Z791Z1Z": { | ||
"object": "synth", | ||
@@ -309,3 +312,5 @@ "type": [ | ||
"functions": { | ||
"group": [], | ||
"group": [ | ||
"syn1" | ||
], | ||
"time": [ | ||
@@ -335,3 +340,3 @@ "1", | ||
"name": [ | ||
"A3M3B8W4" | ||
"0Z791Z1Z" | ||
] | ||
@@ -344,3 +349,5 @@ } | ||
"functions": { | ||
"group": [], | ||
"group": [ | ||
"syn1" | ||
], | ||
"time": [ | ||
@@ -434,2 +441,43 @@ "1", | ||
}, | ||
"VDDV0AJ4": { | ||
"object": "loop", | ||
"type": "amen-break02", | ||
"functions": { | ||
"group": [], | ||
"time": [ | ||
"1", | ||
0 | ||
], | ||
"speed": [ | ||
[ | ||
0.7037576616385512, | ||
0.6103037263946622, | ||
0.886645822807021, | ||
0.6590037033604633, | ||
0.7339422134020237, | ||
0.8780859281448412, | ||
0.5211680251354198, | ||
0.8444054625519417 | ||
] | ||
], | ||
"env": [ | ||
-1 | ||
], | ||
"beat": [ | ||
1 | ||
], | ||
"amp": [ | ||
0.9 | ||
], | ||
"stretch": [ | ||
1, | ||
1, | ||
1 | ||
], | ||
"add_fx": [], | ||
"name": [ | ||
"VDDV0AJ4" | ||
] | ||
} | ||
}, | ||
"newname": { | ||
@@ -599,3 +647,2 @@ "object": "sample", | ||
"// TODO", | ||
"// make loop amen-break02 speed(randomFloat(8 0.5 0.9))", | ||
"// new polySynth triangle", | ||
@@ -1603,3 +1650,15 @@ "// new emitter osc name(fred)", | ||
] | ||
} | ||
}, | ||
"@functions": [ | ||
{ | ||
"@function": { | ||
"@name": "group", | ||
"@args": [ | ||
{ | ||
"@identifier": "syn1" | ||
} | ||
] | ||
} | ||
} | ||
] | ||
} | ||
@@ -1651,2 +1710,12 @@ } | ||
} | ||
}, | ||
{ | ||
"@function": { | ||
"@name": "group", | ||
"@args": [ | ||
{ | ||
"@identifier": "syn1" | ||
} | ||
] | ||
} | ||
} | ||
@@ -1710,4 +1779,34 @@ ] | ||
{ | ||
"@global": { | ||
"@comment": "// TODO" | ||
"@object": { | ||
"@new": { | ||
"@inst": "loop", | ||
"@type": { | ||
"@identifier": "amen-break02" | ||
}, | ||
"@functions": [ | ||
{ | ||
"@function": { | ||
"@name": "speed", | ||
"@args": [ | ||
{ | ||
"@function": { | ||
"@name": "randomFloat", | ||
"@args": [ | ||
{ | ||
"@number": 8 | ||
}, | ||
{ | ||
"@number": 0.5 | ||
}, | ||
{ | ||
"@number": 0.9 | ||
} | ||
] | ||
} | ||
} | ||
] | ||
} | ||
} | ||
] | ||
} | ||
} | ||
@@ -1717,3 +1816,3 @@ }, | ||
"@global": { | ||
"@comment": "// make loop amen-break02 speed(randomFloat(8 0.5 0.9))" | ||
"@comment": "// TODO" | ||
} | ||
@@ -1932,2 +2031,44 @@ }, | ||
} | ||
}, | ||
{ | ||
"@object": { | ||
"@set": { | ||
"@name": "hipass", | ||
"@functions": [ | ||
{ | ||
"@number": 900 | ||
}, | ||
{ | ||
"@number": 1500 | ||
} | ||
] | ||
} | ||
} | ||
}, | ||
{ | ||
"@object": { | ||
"@set": { | ||
"@name": "lopass", | ||
"@functions": [ | ||
{ | ||
"@number": 2500 | ||
}, | ||
{ | ||
"@number": 100 | ||
} | ||
] | ||
} | ||
} | ||
}, | ||
{ | ||
"@object": { | ||
"@set": { | ||
"@name": "crossFade", | ||
"@functions": [ | ||
{ | ||
"@number": 100 | ||
} | ||
] | ||
} | ||
} | ||
} | ||
@@ -1934,0 +2075,0 @@ ] |
@@ -40,3 +40,3 @@ { | ||
"objects": { | ||
"Q4XCH0M8": { | ||
"TYKEYK7B": { | ||
"object": "sample", | ||
@@ -77,3 +77,3 @@ "type": [ | ||
"name": [ | ||
"Q4XCH0M8" | ||
"TYKEYK7B" | ||
] | ||
@@ -80,0 +80,0 @@ } |
@@ -25,7 +25,5 @@ { | ||
0, | ||
0, | ||
1, | ||
0, | ||
0, | ||
1, | ||
0, | ||
@@ -37,4 +35,6 @@ 0, | ||
0, | ||
0, | ||
1, | ||
0 | ||
0, | ||
1 | ||
], | ||
@@ -78,7 +78,5 @@ "drives": [ | ||
0, | ||
0, | ||
1, | ||
0, | ||
0, | ||
1, | ||
0, | ||
@@ -90,4 +88,6 @@ 0, | ||
0, | ||
0, | ||
1, | ||
0 | ||
0, | ||
1 | ||
] | ||
@@ -94,0 +94,0 @@ ], |
@@ -91,3 +91,3 @@ { | ||
"objects": { | ||
"FVY4VFIK": { | ||
"3VWVHTEX": { | ||
"object": "synth", | ||
@@ -147,7 +147,7 @@ "type": [ | ||
"name": [ | ||
"FVY4VFIK" | ||
"3VWVHTEX" | ||
] | ||
} | ||
}, | ||
"4SBDMVZ7": { | ||
"I6XW27Z2": { | ||
"object": "sample", | ||
@@ -194,3 +194,3 @@ "type": [ | ||
"name": [ | ||
"4SBDMVZ7" | ||
"I6XW27Z2" | ||
] | ||
@@ -197,0 +197,0 @@ } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
2445660
18120