resin 0.3.1 → 0.4.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.
- data/amber/bin/amberc +10 -350
- data/amber/js/Benchfib.deploy.js +80 -89
- data/amber/js/Benchfib.js +80 -89
- data/amber/js/Canvas.deploy.js +558 -545
- data/amber/js/Canvas.js +563 -545
- data/amber/js/Compiler-AST.deploy.js +431 -243
- data/amber/js/Compiler-AST.js +487 -244
- data/amber/js/Compiler-Core.deploy.js +201 -1045
- data/amber/js/Compiler-Core.js +208 -1207
- data/amber/js/Compiler-Exceptions.deploy.js +37 -18
- data/amber/js/Compiler-Exceptions.js +42 -18
- data/amber/js/Compiler-IR.deploy.js +1071 -774
- data/amber/js/Compiler-IR.js +1194 -848
- data/amber/js/Compiler-Inlining.deploy.js +395 -373
- data/amber/js/Compiler-Inlining.js +395 -373
- data/amber/js/Compiler-Interpreter.deploy.js +1202 -0
- data/amber/js/Compiler-Interpreter.js +1631 -0
- data/amber/js/Compiler-Semantic.deploy.js +695 -600
- data/amber/js/Compiler-Semantic.js +721 -611
- data/amber/js/Compiler-Tests.deploy.js +699 -376
- data/amber/js/Compiler-Tests.js +834 -381
- data/amber/js/Compiler.deploy.js +8563 -1805
- data/amber/js/Compiler.js +11476 -2633
- data/amber/js/Examples.deploy.js +29 -29
- data/amber/js/Examples.js +29 -29
- data/amber/js/IDE.deploy.js +3292 -2649
- data/amber/js/IDE.js +3318 -2710
- data/amber/js/Importer-Exporter.deploy.js +393 -349
- data/amber/js/Importer-Exporter.js +398 -354
- data/amber/js/Kernel-Announcements.deploy.js +53 -44
- data/amber/js/Kernel-Announcements.js +55 -44
- data/amber/js/Kernel-Classes.deploy.js +566 -368
- data/amber/js/Kernel-Classes.js +660 -402
- data/amber/js/Kernel-Collections.deploy.js +1149 -1098
- data/amber/js/Kernel-Collections.js +1183 -1116
- data/amber/js/Kernel-Exceptions.deploy.js +173 -75
- data/amber/js/Kernel-Exceptions.js +215 -77
- data/amber/js/Kernel-Methods.deploy.js +530 -313
- data/amber/js/Kernel-Methods.js +632 -338
- data/amber/js/Kernel-Objects.deploy.js +1734 -1577
- data/amber/js/Kernel-Objects.js +1867 -1654
- data/amber/js/Kernel-Tests.deploy.js +1416 -973
- data/amber/js/Kernel-Tests.js +1495 -981
- data/amber/js/Kernel-Transcript.deploy.js +23 -24
- data/amber/js/Kernel-Transcript.js +25 -26
- data/amber/js/SUnit-Tests.deploy.js +402 -0
- data/amber/js/SUnit-Tests.js +518 -0
- data/amber/js/SUnit.deploy.js +535 -237
- data/amber/js/SUnit.js +634 -246
- data/amber/js/amber.js +90 -53
- data/amber/js/boot.js +441 -255
- data/amber/js/init.js +1 -3
- data/amber/js/lib/CodeMirror/codemirror.css +3 -0
- data/amber/js/lib/CodeMirror/codemirror.js +104 -55
- data/amber/js/lib/peg-0.7.0.min.js +9 -0
- data/amber/js/parser.js +1504 -802
- data/amber/js/parser.pegjs +170 -165
- data/amber/st/Canvas.st +6 -0
- data/amber/st/Compiler-AST.st +54 -3
- data/amber/st/Compiler-Core.st +6 -551
- data/amber/st/Compiler-Exceptions.st +4 -0
- data/amber/st/Compiler-IR.st +205 -87
- data/amber/st/Compiler-Interpreter.st +597 -0
- data/amber/st/Compiler-Semantic.st +46 -21
- data/amber/st/Compiler-Tests.st +254 -7
- data/amber/st/Compiler.st +3172 -1541
- data/amber/st/IDE.st +57 -93
- data/amber/st/Importer-Exporter.st +4 -7
- data/amber/st/Kernel-Announcements.st +8 -0
- data/amber/st/Kernel-Classes.st +149 -40
- data/amber/st/Kernel-Collections.st +43 -32
- data/amber/st/Kernel-Exceptions.st +70 -1
- data/amber/st/Kernel-Methods.st +165 -27
- data/amber/st/Kernel-Objects.st +215 -140
- data/amber/st/Kernel-Tests.st +195 -10
- data/amber/st/Kernel-Transcript.st +1 -3
- data/amber/st/SUnit-Tests.st +186 -0
- data/amber/st/SUnit.st +186 -14
- data/bin/resin +6 -0
- data/lib/resin/cli.rb +19 -0
- metadata +41 -25
- data/amber/js/lib/peg-0.6.2.min.js +0 -2
- data/bin/resin-compile +0 -6
- data/bin/runresin +0 -12
@@ -0,0 +1,9 @@
|
|
1
|
+
/*
|
2
|
+
* PEG.js 0.7.0
|
3
|
+
*
|
4
|
+
* http://pegjs.majda.cz/
|
5
|
+
*
|
6
|
+
* Copyright (c) 2010-2012 David Majda
|
7
|
+
* Licensend under the MIT license.
|
8
|
+
*/var PEG=function(undefined){function range(a,b){b===undefined&&(b=a,a=0);var c=new Array(Math.max(0,b-a));for(var d=0,e=a;e<b;d++,e++)c[d]=e;return c}function find(a,b){var c=a.length;for(var d=0;d<c;d++)if(b(a[d]))return a[d]}function contains(a,b){var c=a.length;for(var d=0;d<c;d++)if(a[d]===b)return!0;return!1}function each(a,b){var c=a.length;for(var d=0;d<c;d++)b(a[d],d)}function map(a,b){var c=[],d=a.length;for(var e=0;e<d;e++)c[e]=b(a[e],e);return c}function pluck(a,b){return map(a,function(a){return a[b]})}function keys(a){var b=[];for(var c in a)b.push(c);return b}function values(a){var b=[];for(var c in a)b.push(a[c]);return b}function padLeft(a,b,c){var d=a,e=c-a.length;for(var f=0;f<e;f++)d=b+d;return d}function escape(a){var b=a.charCodeAt(0),c,d;return b<=255?(c="x",d=2):(c="u",d=4),"\\"+c+padLeft(b.toString(16).toUpperCase(),"0",d)}function quote(a){return'"'+a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g,escape)+'"'}function quoteForRegexpClass(a){return a.replace(/\\/g,"\\\\").replace(/\//g,"\\/").replace(/\]/g,"\\]").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\v/g,"\\x0B").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x01-\x08\x0E-\x1F\x80-\uFFFF]/g,escape)}function buildNodeVisitor(a){return function(b){return a[b.type].apply(null,arguments)}}function findRuleByName(a,b){return find(a.rules,function(a){return a.name===b})}var PEG={VERSION:"0.7.0",buildParser:function(a,b){return PEG.compiler.compile(PEG.parser.parse(a),b)}};return PEG.GrammarError=function(a){this.name="PEG.GrammarError",this.message=a},PEG.GrammarError.prototype=Error.prototype,PEG.parser=function(){function a(a){return'"'+a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g,escape)+'"'}var b={parse:function(b,c){function i(a,b,c){var d=a,e=c-a.length;for(var f=0;f<e;f++)d=b+d;return d}function j(a){var b=a.charCodeAt(0),c,d;return b<=255?(c="x",d=2):(c="u",d=4),"\\"+c+i(b.toString(16).toUpperCase(),"0",d)}function k(a){if(e<g)return;e>g&&(g=e,h=[]),h.push(a)}function l(){var a,b,c,d,f,g;f=e,g=e,a=bg();if(a!==null){b=m(),b=b!==null?b:"";if(b!==null){d=n();if(d!==null){c=[];while(d!==null)c.push(d),d=n()}else c=null;c!==null?a=[a,b,c]:(a=null,e=g)}else a=null,e=g}else a=null,e=g;return a!==null&&(a=function(a,b,c){return{type:"grammar",initializer:b!==""?b:null,rules:c,startRule:c[0].name}}(f,a[1],a[2])),a===null&&(e=f),a}function m(){var a,b,c,d;return c=e,d=e,a=u(),a!==null?(b=A(),b=b!==null?b:"",b!==null?a=[a,b]:(a=null,e=d)):(a=null,e=d),a!==null&&(a=function(a,b){return{type:"initializer",code:b}}(c,a[0])),a===null&&(e=c),a}function n(){var a,b,c,d,f,g,h;return g=e,h=e,a=K(),a!==null?(b=M(),b=b!==null?b:"",b!==null?(c=y(),c!==null?(d=o(),d!==null?(f=A(),f=f!==null?f:"",f!==null?a=[a,b,c,d,f]:(a=null,e=h)):(a=null,e=h)):(a=null,e=h)):(a=null,e=h)):(a=null,e=h),a!==null&&(a=function(a,b,c,d){return{type:"rule",name:b,displayName:c!==""?c:null,expression:d}}(g,a[0],a[1],a[3])),a===null&&(e=g),a}function o(){var a,b,c,d,f,g,h;f=e,g=e,a=p();if(a!==null){b=[],h=e,c=B(),c!==null?(d=p(),d!==null?c=[c,d]:(c=null,e=h)):(c=null,e=h);while(c!==null)b.push(c),h=e,c=B(),c!==null?(d=p(),d!==null?c=[c,d]:(c=null,e=h)):(c=null,e=h);b!==null?a=[a,b]:(a=null,e=g)}else a=null,e=g;return a!==null&&(a=function(a,b,c){if(c.length>0){var d=[b].concat(map(c,function(a){return a[1]}));return{type:"choice",alternatives:d}}return b}(f,a[0],a[1])),a===null&&(e=f),a}function p(){var a,b,c,d;c=e,d=e,a=[],b=q();while(b!==null)a.push(b),b=q();a!==null?(b=u(),b!==null?a=[a,b]:(a=null,e=d)):(a=null,e=d),a!==null&&(a=function(a,b,c){var d=b.length!==1?{type:"sequence",elements:b}:b[0];return{type:"action",expression:d,code:c}}(c,a[0],a[1])),a===null&&(e=c);if(a===null){c=e,a=[],b=q();while(b!==null)a.push(b),b=q();a!==null&&(a=function(a,b){return b.length!==1?{type:"sequence",elements:b}:b[0]}(c,a)),a===null&&(e=c)}return a}function q(){var a,b,c,d,f;return d=e,f=e,a=K(),a!==null?(b=z(),b!==null?(c=r(),c!==null?a=[a,b,c]:(a=null,e=f)):(a=null,e=f)):(a=null,e=f),a!==null&&(a=function(a,b,c){return{type:"labeled",label:b,expression:c}}(d,a[0],a[2])),a===null&&(e=d),a===null&&(a=r()),a}function r(){var a,b,c,d;return c=e,d=e,a=C(),a!==null?(b=u(),b!==null?a=[a,b]:(a=null,e=d)):(a=null,e=d),a!==null&&(a=function(a,b){return{type:"semantic_and",code:b}}(c,a[1])),a===null&&(e=c),a===null&&(c=e,d=e,a=C(),a!==null?(b=s(),b!==null?a=[a,b]:(a=null,e=d)):(a=null,e=d),a!==null&&(a=function(a,b){return{type:"simple_and",expression:b}}(c,a[1])),a===null&&(e=c),a===null&&(c=e,d=e,a=D(),a!==null?(b=u(),b!==null?a=[a,b]:(a=null,e=d)):(a=null,e=d),a!==null&&(a=function(a,b){return{type:"semantic_not",code:b}}(c,a[1])),a===null&&(e=c),a===null&&(c=e,d=e,a=D(),a!==null?(b=s(),b!==null?a=[a,b]:(a=null,e=d)):(a=null,e=d),a!==null&&(a=function(a,b){return{type:"simple_not",expression:b}}(c,a[1])),a===null&&(e=c),a===null&&(a=s())))),a}function s(){var a,b,c,d;return c=e,d=e,a=t(),a!==null?(b=E(),b!==null?a=[a,b]:(a=null,e=d)):(a=null,e=d),a!==null&&(a=function(a,b){return{type:"optional",expression:b}}(c,a[0])),a===null&&(e=c),a===null&&(c=e,d=e,a=t(),a!==null?(b=F(),b!==null?a=[a,b]:(a=null,e=d)):(a=null,e=d),a!==null&&(a=function(a,b){return{type:"zero_or_more",expression:b}}(c,a[0])),a===null&&(e=c),a===null&&(c=e,d=e,a=t(),a!==null?(b=G(),b!==null?a=[a,b]:(a=null,e=d)):(a=null,e=d),a!==null&&(a=function(a,b){return{type:"one_or_more",expression:b}}(c,a[0])),a===null&&(e=c),a===null&&(a=t()))),a}function t(){var a,b,c,d,g,h,i;return d=e,g=e,a=K(),a!==null?(h=e,f++,i=e,b=M(),b=b!==null?b:"",b!==null?(c=y(),c!==null?b=[b,c]:(b=null,e=i)):(b=null,e=i),f--,b===null?b="":(b=null,e=h),b!==null?a=[a,b]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a,b){return{type:"rule_ref",name:b}}(d,a[0])),a===null&&(e=d),a===null&&(a=L(),a===null&&(d=e,a=J(),a!==null&&(a=function(a){return{type:"any"}}(d)),a===null&&(e=d),a===null&&(a=T(),a===null&&(d=e,g=e,a=H(),a!==null?(b=o(),b!==null?(c=I(),c!==null?a=[a,b,c]:(a=null,e=g)):(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a,b){return b}(d,a[1])),a===null&&(e=d))))),a}function u(){var a,b,c,d;return f++,c=e,d=e,a=v(),a!==null?(b=bg(),b!==null?a=[a,b]:(a=null,e=d)):(a=null,e=d),a!==null&&(a=function(a,b){return b.substr(1,b.length-2)}(c,a[0])),a===null&&(e=c),f--,f===0&&a===null&&k("action"),a}function v(){var a,c,d,g,h;g=e,h=e,b.charCodeAt(e)===123?(a="{",e++):(a=null,f===0&&k('"{"'));if(a!==null){c=[],d=v(),d===null&&(d=x());while(d!==null)c.push(d),d=v(),d===null&&(d=x());c!==null?(b.charCodeAt(e)===125?(d="}",e++):(d=null,f===0&&k('"}"')),d!==null?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)}else a=null,e=h;return a!==null&&(a=function(a,b){return"{"+b.join("")+"}"}(g,a[1])),a===null&&(e=g),a}function w(){var a,b,c;c=e,b=x();if(b!==null){a=[];while(b!==null)a.push(b),b=x()}else a=null;return a!==null&&(a=function(a,b){return b.join("")}(c,a)),a===null&&(e=c),a}function x(){var a;return/^[^{}]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,f===0&&k("[^{}]")),a}function y(){var a,c,d,g;return d=e,g=e,b.charCodeAt(e)===61?(a="=",e++):(a=null,f===0&&k('"="')),a!==null?(c=bg(),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a){return"="}(d)),a===null&&(e=d),a}function z(){var a,c,d,g;return d=e,g=e,b.charCodeAt(e)===58?(a=":",e++):(a=null,f===0&&k('":"')),a!==null?(c=bg(),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a){return":"}(d)),a===null&&(e=d),a}function A(){var a,c,d,g;return d=e,g=e,b.charCodeAt(e)===59?(a=";",e++):(a=null,f===0&&k('";"')),a!==null?(c=bg(),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a){return";"}(d)),a===null&&(e=d),a}function B(){var a,c,d,g;return d=e,g=e,b.charCodeAt(e)===47?(a="/",e++):(a=null,f===0&&k('"/"')),a!==null?(c=bg(),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a){return"/"}(d)),a===null&&(e=d),a}function C(){var a,c,d,g;return d=e,g=e,b.charCodeAt(e)===38?(a="&",e++):(a=null,f===0&&k('"&"')),a!==null?(c=bg(),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a){return"&"}(d)),a===null&&(e=d),a}function D(){var a,c,d,g;return d=e,g=e,b.charCodeAt(e)===33?(a="!",e++):(a=null,f===0&&k('"!"')),a!==null?(c=bg(),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a){return"!"}(d)),a===null&&(e=d),a}function E(){var a,c,d,g;return d=e,g=e,b.charCodeAt(e)===63?(a="?",e++):(a=null,f===0&&k('"?"')),a!==null?(c=bg(),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a){return"?"}(d)),a===null&&(e=d),a}function F(){var a,c,d,g;return d=e,g=e,b.charCodeAt(e)===42?(a="*",e++):(a=null,f===0&&k('"*"')),a!==null?(c=bg(),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a){return"*"}(d)),a===null&&(e=d),a}function G(){var a,c,d,g;return d=e,g=e,b.charCodeAt(e)===43?(a="+",e++):(a=null,f===0&&k('"+"')),a!==null?(c=bg(),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a){return"+"}(d)),a===null&&(e=d),a}function H(){var a,c,d,g;return d=e,g=e,b.charCodeAt(e)===40?(a="(",e++):(a=null,f===0&&k('"("')),a!==null?(c=bg(),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a){return"("}(d)),a===null&&(e=d),a}function I(){var a,c,d,g;return d=e,g=e,b.charCodeAt(e)===41?(a=")",e++):(a=null,f===0&&k('")"')),a!==null?(c=bg(),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a){return")"}(d)),a===null&&(e=d),a}function J(){var a,c,d,g;return d=e,g=e,b.charCodeAt(e)===46?(a=".",e++):(a=null,f===0&&k('"."')),a!==null?(c=bg(),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a){return"."}(d)),a===null&&(e=d),a}function K(){var a,c,d,g,h;f++,g=e,h=e,a=bd(),a===null&&(b.charCodeAt(e)===95?(a="_",e++):(a=null,f===0&&k('"_"')),a===null&&(b.charCodeAt(e)===36?(a="$",e++):(a=null,f===0&&k('"$"'))));if(a!==null){c=[],d=bd(),d===null&&(d=bb(),d===null&&(b.charCodeAt(e)===95?(d="_",e++):(d=null,f===0&&k('"_"')),d===null&&(b.charCodeAt(e)===36?(d="$",e++):(d=null,f===0&&k('"$"')))));while(d!==null)c.push(d),d=bd(),d===null&&(d=bb(),d===null&&(b.charCodeAt(e)===95?(d="_",e++):(d=null,f===0&&k('"_"')),d===null&&(b.charCodeAt(e)===36?(d="$",e++):(d=null,f===0&&k('"$"')))));c!==null?(d=bg(),d!==null?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)}else a=null,e=h;return a!==null&&(a=function(a,b,c){return b+c.join("")}(g,a[0],a[1])),a===null&&(e=g),f--,f===0&&a===null&&k("identifier"),a}function L(){var a,c,d,g,h;return f++,g=e,h=e,a=N(),a===null&&(a=Q()),a!==null?(b.charCodeAt(e)===105?(c="i",e++):(c=null,f===0&&k('"i"')),c=c!==null?c:"",c!==null?(d=bg(),d!==null?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)):(a=null,e=h),a!==null&&(a=function(a,b,c){return{type:"literal",value:b,ignoreCase:c==="i"}}(g,a[0],a[1])),a===null&&(e=g),f--,f===0&&a===null&&k("literal"),a}function M(){var a,b,c,d;return f++,c=e,d=e,a=N(),a===null&&(a=Q()),a!==null?(b=bg(),b!==null?a=[a,b]:(a=null,e=d)):(a=null,e=d),a!==null&&(a=function(a,b){return b}(c,a[0])),a===null&&(e=c),f--,f===0&&a===null&&k("string"),a}function N(){var a,c,d,g,h;g=e,h=e,b.charCodeAt(e)===34?(a='"',e++):(a=null,f===0&&k('"\\""'));if(a!==null){c=[],d=O();while(d!==null)c.push(d),d=O();c!==null?(b.charCodeAt(e)===34?(d='"',e++):(d=null,f===0&&k('"\\""')),d!==null?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)}else a=null,e=h;return a!==null&&(a=function(a,b){return b.join("")}(g,a[1])),a===null&&(e=g),a}function O(){var a;return a=P(),a===null&&(a=Y(),a===null&&(a=Z(),a===null&&(a=$(),a===null&&(a=_(),a===null&&(a=ba()))))),a}function P(){var a,c,d,g,h;return d=e,g=e,h=e,f++,b.charCodeAt(e)===34?(a='"',e++):(a=null,f===0&&k('"\\""')),a===null&&(b.charCodeAt(e)===92?(a="\\",e++):(a=null,f===0&&k('"\\\\"')),a===null&&(a=bl())),f--,a===null?a="":(a=null,e=h),a!==null?(b.length>e?(c=b.charAt(e),e++):(c=null,f===0&&k("any character")),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a,b){return b}(d,a[1])),a===null&&(e=d),a}function Q(){var a,c,d,g,h;g=e,h=e,b.charCodeAt(e)===39?(a="'",e++):(a=null,f===0&&k('"\'"'));if(a!==null){c=[],d=R();while(d!==null)c.push(d),d=R();c!==null?(b.charCodeAt(e)===39?(d="'",e++):(d=null,f===0&&k('"\'"')),d!==null?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)}else a=null,e=h;return a!==null&&(a=function(a,b){return b.join("")}(g,a[1])),a===null&&(e=g),a}function R(){var a;return a=S(),a===null&&(a=Y(),a===null&&(a=Z(),a===null&&(a=$(),a===null&&(a=_(),a===null&&(a=ba()))))),a}function S(){var a,c,d,g,h;return d=e,g=e,h=e,f++,b.charCodeAt(e)===39?(a="'",e++):(a=null,f===0&&k('"\'"')),a===null&&(b.charCodeAt(e)===92?(a="\\",e++):(a=null,f===0&&k('"\\\\"')),a===null&&(a=bl())),f--,a===null?a="":(a=null,e=h),a!==null?(b.length>e?(c=b.charAt(e),e++):(c=null,f===0&&k("any character")),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a,b){return b}(d,a[1])),a===null&&(e=d),a}function T(){var a,c,d,g,h,i,j,l;f++,j=e,l=e,b.charCodeAt(e)===91?(a="[",e++):(a=null,f===0&&k('"["'));if(a!==null){b.charCodeAt(e)===94?(c="^",e++):(c=null,f===0&&k('"^"')),c=c!==null?c:"";if(c!==null){d=[],g=U(),g===null&&(g=V());while(g!==null)d.push(g),g=U(),g===null&&(g=V());d!==null?(b.charCodeAt(e)===93?(g="]",e++):(g=null,f===0&&k('"]"')),g!==null?(b.charCodeAt(e)===105?(h="i",e++):(h=null,f===0&&k('"i"')),h=h!==null?h:"",h!==null?(i=bg(),i!==null?a=[a,c,d,g,h,i]:(a=null,e=l)):(a=null,e=l)):(a=null,e=l)):(a=null,e=l)}else a=null,e=l}else a=null,e=l;return a!==null&&(a=function(a,b,c,d){var e=map(c,function(a){return a.data}),f="["+b+map(c,function(a){return a.rawText}).join("")+"]"+d;return{type:"class",inverted:b==="^",ignoreCase:d==="i",parts:e,rawText:f}}(j,a[1],a[2],a[4])),a===null&&(e=j),f--,f===0&&a===null&&k("character class"),a}function U(){var a,c,d,g,h;return g=e,h=e,a=V(),a!==null?(b.charCodeAt(e)===45?(c="-",e++):(c=null,f===0&&k('"-"')),c!==null?(d=V(),d!==null?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)):(a=null,e=h),a!==null&&(a=function(a,b,c){if(b.data.charCodeAt(0)>c.data.charCodeAt(0))throw new this.SyntaxError("Invalid character range: "+b.rawText+"-"+c.rawText+".");return{data:[b.data,c.data],rawText:b.rawText+"-"+c.rawText}}(g,a[0],a[2])),a===null&&(e=g),a}function V(){var a,b;return b=e,a=W(),a!==null&&(a=function(a,b){return{data:b,rawText:quoteForRegexpClass(b)}}(b,a)),a===null&&(e=b),a}function W(){var a;return a=X(),a===null&&(a=Y(),a===null&&(a=Z(),a===null&&(a=$(),a===null&&(a=_(),a===null&&(a=ba()))))),a}function X(){var a,c,d,g,h;return d=e,g=e,h=e,f++,b.charCodeAt(e)===93?(a="]",e++):(a=null,f===0&&k('"]"')),a===null&&(b.charCodeAt(e)===92?(a="\\",e++):(a=null,f===0&&k('"\\\\"')),a===null&&(a=bl())),f--,a===null?a="":(a=null,e=h),a!==null?(b.length>e?(c=b.charAt(e),e++):(c=null,f===0&&k("any character")),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a,b){return b}(d,a[1])),a===null&&(e=d),a}function Y(){var a,c,d,g,h,i;return g=e,h=e,b.charCodeAt(e)===92?(a="\\",e++):(a=null,f===0&&k('"\\\\"')),a!==null?(i=e,f++,c=bb(),c===null&&(b.charCodeAt(e)===120?(c="x",e++):(c=null,f===0&&k('"x"')),c===null&&(b.charCodeAt(e)===117?(c="u",e++):(c=null,f===0&&k('"u"')),c===null&&(c=bl()))),f--,c===null?c="":(c=null,e=i),c!==null?(b.length>e?(d=b.charAt(e),e++):(d=null,f===0&&k("any character")),d!==null?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)):(a=null,e=h),a!==null&&(a=function(a,b){return b.replace("b","\b").replace("f","\f").replace("n","\n").replace("r","\r").replace("t","\t").replace("v","")}(g,a[2])),a===null&&(e=g),a}function Z(){var a,c,d,g,h;return d=e,g=e,b.substr(e,2)==="\\0"?(a="\\0",e+=2):(a=null,f===0&&k('"\\\\0"')),a!==null?(h=e,f++,c=bb(),f--,c===null?c="":(c=null,e=h),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a){return"\0"}(d)),a===null&&(e=d),a}function $(){var a,c,d,g,h;return g=e,h=e,b.substr(e,2)==="\\x"?(a="\\x",e+=2):(a=null,f===0&&k('"\\\\x"')),a!==null?(c=bc(),c!==null?(d=bc(),d!==null?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)):(a=null,e=h),a!==null&&(a=function(a,b,c){return String.fromCharCode(parseInt(b+c,16))}(g,a[1],a[2])),a===null&&(e=g),a}function _(){var a,c,d,g,h,i,j;return i=e,j=e,b.substr(e,2)==="\\u"?(a="\\u",e+=2):(a=null,f===0&&k('"\\\\u"')),a!==null?(c=bc(),c!==null?(d=bc(),d!==null?(g=bc(),g!==null?(h=bc(),h!==null?a=[a,c,d,g,h]:(a=null,e=j)):(a=null,e=j)):(a=null,e=j)):(a=null,e=j)):(a=null,e=j),a!==null&&(a=function(a,b,c,d,e){return String.fromCharCode(parseInt(b+c+d+e,16))}(i,a[1],a[2],a[3],a[4])),a===null&&(e=i),a}function ba(){var a,c,d,g;return d=e,g=e,b.charCodeAt(e)===92?(a="\\",e++):(a=null,f===0&&k('"\\\\"')),a!==null?(c=bk(),c!==null?a=[a,c]:(a=null,e=g)):(a=null,e=g),a!==null&&(a=function(a,b){return b}(d,a[1])),a===null&&(e=d),a}function bb(){var a;return/^[0-9]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,f===0&&k("[0-9]")),a}function bc(){var a;return/^[0-9a-fA-F]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,f===0&&k("[0-9a-fA-F]")),a}function bd(){var a;return a=be(),a===null&&(a=bf()),a}function be(){var a;return/^[a-z]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,f===0&&k("[a-z]")),a}function bf(){var a;return/^[A-Z]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,f===0&&k("[A-Z]")),a}function bg(){var a,b;a=[],b=bm(),b===null&&(b=bk(),b===null&&(b=bh()));while(b!==null)a.push(b),b=bm(),b===null&&(b=bk(),b===null&&(b=bh()));return a}function bh(){var a;return f++,a=bi(),a===null&&(a=bj()),f--,f===0&&a===null&&k("comment"),a}function bi(){var a,c,d,g,h,i,j;h=e,b.substr(e,2)==="//"?(a="//",e+=2):(a=null,f===0&&k('"//"'));if(a!==null){c=[],i=e,j=e,f++,d=bl(),f--,d===null?d="":(d=null,e=j),d!==null?(b.length>e?(g=b.charAt(e),e++):(g=null,f===0&&k("any character")),g!==null?d=[d,g]:(d=null,e=i)):(d=null,e=i);while(d!==null)c.push(d),i=e,j=e,f++,d=bl(),f--,d===null?d="":(d=null,e=j),d!==null?(b.length>e?(g=b.charAt(e),e++):(g=null,f===0&&k("any character")),g!==null?d=[d,g]:(d=null,e=i)):(d=null,e=i);c!==null?a=[a,c]:(a=null,e=h)}else a=null,e=h;return a}function bj(){var a,c,d,g,h,i,j;h=e,b.substr(e,2)==="/*"?(a="/*",e+=2):(a=null,f===0&&k('"/*"'));if(a!==null){c=[],i=e,j=e,f++,b.substr(e,2)==="*/"?(d="*/",e+=2):(d=null,f===0&&k('"*/"')),f--,d===null?d="":(d=null,e=j),d!==null?(b.length>e?(g=b.charAt(e),e++):(g=null,f===0&&k("any character")),g!==null?d=[d,g]:(d=null,e=i)):(d=null,e=i);while(d!==null)c.push(d),i=e,j=e,f++,b.substr(e,2)==="*/"?(d="*/",e+=2):(d=null,f===0&&k('"*/"')),f--,d===null?d="":(d=null,e=j),d!==null?(b.length>e?(g=b.charAt(e),e++):(g=null,f===0&&k("any character")),g!==null?d=[d,g]:(d=null,e=i)):(d=null,e=i);c!==null?(b.substr(e,2)==="*/"?(d="*/",e+=2):(d=null,f===0&&k('"*/"')),d!==null?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)}else a=null,e=h;return a}function bk(){var a;return f++,b.charCodeAt(e)===10?(a="\n",e++):(a=null,f===0&&k('"\\n"')),a===null&&(b.substr(e,2)==="\r\n"?(a="\r\n",e+=2):(a=null,f===0&&k('"\\r\\n"')),a===null&&(b.charCodeAt(e)===13?(a="\r",e++):(a=null,f===0&&k('"\\r"')),a===null&&(b.charCodeAt(e)===8232?(a="\u2028",e++):(a=null,f===0&&k('"\\u2028"')),a===null&&(b.charCodeAt(e)===8233?(a="\u2029",e++):(a=null,f===0&&k('"\\u2029"')))))),f--,f===0&&a===null&&k("end of line"),a}function bl(){var a;return/^[\n\r\u2028\u2029]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,f===0&&k("[\\n\\r\\u2028\\u2029]")),a}function bm(){var a;return f++,/^[ \t\x0B\f\xA0\uFEFF\u1680\u180E\u2000-\u200A\u202F\u205F\u3000]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,f===0&&k("[ \\t\\x0B\\f\\xA0\\uFEFF\\u1680\\u180E\\u2000-\\u200A\\u202F\\u205F\\u3000]")),f--,f===0&&a===null&&k("whitespace"),a}function bn(a){a.sort();var b=null,c=[];for(var d=0;d<a.length;d++)a[d]!==b&&(c.push(a[d]),b=a[d]);return c}function bo(){var a=1,c=1,d=!1;for(var f=0;f<Math.max(e,g);f++){var h=b.charAt(f);h==="\n"?(d||a++,c=1,d=!1):h==="\r"||h==="\u2028"||h==="\u2029"?(a++,c=1,d=!0):(c++,d=!1)}return{line:a,column:c}}var d={grammar:l,initializer:m,rule:n,choice:o,sequence:p,labeled:q,prefixed:r,suffixed:s,primary:t,action:u,braced:v,nonBraceCharacters:w,nonBraceCharacter:x,equals:y,colon:z,semicolon:A,slash:B,and:C,not:D,question:E,star:F,plus:G,lparen:H,rparen:I,dot:J,identifier:K,literal:L,string:M,doubleQuotedString:N,doubleQuotedCharacter:O,simpleDoubleQuotedCharacter:P,singleQuotedString:Q,singleQuotedCharacter:R,simpleSingleQuotedCharacter:S,"class":T,classCharacterRange:U,classCharacter:V,bracketDelimitedCharacter:W,simpleBracketDelimitedCharacter:X,simpleEscapeSequence:Y,zeroEscapeSequence:Z,hexEscapeSequence:$,unicodeEscapeSequence:_,eolEscapeSequence:ba,digit:bb,hexDigit:bc,letter:bd,lowerCaseLetter:be,upperCaseLetter:bf,__:bg,comment:bh,singleLineComment:bi,multiLineComment:bj,eol:bk,eolChar:bl,whitespace:bm};if(c!==undefined){if(d[c]===undefined)throw new Error("Invalid rule name: "+a(c)+".")}else c="grammar";var e=0,f=0,g=0,h=[],bp=d[c]();if(bp===null||e!==b.length){var bq=Math.max(e,g),br=bq<b.length?b.charAt(bq):null,bs=bo();throw new this.SyntaxError(bn(h),br,bq,bs.line,bs.column)}return bp},toSource:function(){return this._source}};return b.SyntaxError=function(b,c,d,e,f){function g(b,c){var d,e;switch(b.length){case 0:d="end of input";break;case 1:d=b[0];break;default:d=b.slice(0,b.length-1).join(", ")+" or "+b[b.length-1]}return e=c?a(c):"end of input","Expected "+d+" but "+e+" found."}this.name="SyntaxError",this.expected=b,this.found=c,this.message=g(b,c),this.offset=d,this.line=e,this.column=f},b.SyntaxError.prototype=Error.prototype,b}(),PEG.compiler={appliedPassNames:["reportMissingRules","reportLeftRecursion","removeProxyRules","computeVarNames","computeParams"],compile:function(ast,options){var that=this;each(this.appliedPassNames,function(a){that.passes[a](ast)});var source=this.emitter(ast,options),result=eval(source);return result._source=source,result}},PEG.compiler.passes={reportMissingRules:function(a){function b(){}function c(a){e(a.expression)}function d(a){return function(b){each(b[a],e)}}var e=buildNodeVisitor({grammar:d("rules"),rule:c,choice:d("alternatives"),sequence:d("elements"),labeled:c,simple_and:c,simple_not:c,semantic_and:b,semantic_not:b,optional:c,zero_or_more:c,one_or_more:c,action:c,rule_ref:function(b){if(!findRuleByName(a,b.name))throw new PEG.GrammarError('Referenced rule "'+b.name+'" does not exist.')},literal:b,any:b,"class":b});e(a)},reportLeftRecursion:function(a){function b(){}function c(a,b){e(a.expression,b)}function d(a){return function(b,c){each(b[a],function(a){e(a,c)})}}var e=buildNodeVisitor({grammar:d("rules"),rule:function(a,b){e(a.expression,b.concat(a.name))},choice:d("alternatives"),sequence:function(a,b){a.elements.length>0&&e(a.elements[0],b)},labeled:c,simple_and:c,simple_not:c,semantic_and:b,semantic_not:b,optional:c,zero_or_more:c,one_or_more:c,action:c,rule_ref:function(b,c){if(contains(c,b.name))throw new PEG.GrammarError('Left recursion detected for rule "'+b.name+'".');e(findRuleByName(a,b.name),c)},literal:b,any:b,"class":b});e(a,[])},removeProxyRules:function(a){function b(a){return a.type==="rule"&&a.expression.type==="rule_ref"}function c(a,b,c){function d(){}function e(a,b,c){g(a.expression,b,c)}function f(a){return function(b,c,d){each(b[a],function(a){g(a,c,d)})}}var g=buildNodeVisitor({grammar:f("rules"),rule:e,choice:f("alternatives"),sequence:f("elements"),labeled:e,simple_and:e,simple_not:e,semantic_and:d,semantic_not:d,optional:e,zero_or_more:e,one_or_more:e,action:e,rule_ref:function(a,b,c){a.name===b&&(a.name=c)},literal:d,any:d,"class":d});g(a,b,c)}var d=[];each(a.rules,function(e,f){b(e)&&(c(a,e.name,e.expression.name),e.name===a.startRule&&(a.startRule=e.expression.name),d.push(f))}),d.reverse(),each(d,function(b){a.rules.splice(b,1)})},computeVarNames:function(a){function b(a){return"result"+a}function c(a){return"pos"+a}function d(a,c){return a.resultVar=b(c.result),{result:0,pos:0}}function e(a){return function(d,e){var g=f(d.expression,{result:e.result+a.result,pos:e.pos+a.pos});return d.resultVar=b(e.result),a.pos!==0&&(d.posVar=c(e.pos)),{result:g.result+a.result,pos:g.pos+a.pos}}}var f=buildNodeVisitor({grammar:function(a,b){each(a.rules,function(a){f(a,b)})},rule:function(a,d){var e=f(a.expression,d);a.resultVar=b(d.result),a.resultVars=map(range(e.result+1),b),a.posVars=map(range(e.pos),c)},choice:function(a,c){var d=map(a.alternatives,function(a){return f(a,c)});return a.resultVar=b(c.result),{result:Math.max.apply(null,pluck(d,"result")),pos:Math.max.apply(null,pluck(d,"pos"))}},sequence:function(a,d){var e=map(a.elements,function(a,b){return f(a,{result:d.result+b,pos:d.pos+1})});return a.resultVar=b(d.result),a.posVar=c(d.pos),{result:a.elements.length>0?Math.max.apply(null,map(e,function(a,b){return b+a.result})):0,pos:a.elements.length>0?1+Math.max.apply(null,pluck(e,"pos")):1}},labeled:e({result:0,pos:0}),simple_and:e({result:0,pos:1}),simple_not:e({result:0,pos:1}),semantic_and:d,semantic_not:d,optional:e({result:0,pos:0}),zero_or_more:e({result:1,pos:0}),one_or_more:e({result:1,pos:0}),action:e({result:0,pos:1}),rule_ref:d,literal:d,any:d,"class":d});f(a,{result:0,pos:0})},computeParams:function(a){function c(a){b.push({}),a(),b.pop()}function d(){}function e(a){c(function(){g(a.expression)})}function f(a){var c=b[b.length-1],d={},e;for(e in c)d[e]=c[e];a.params=d}var b=[],g=buildNodeVisitor({grammar:function(a){each(a.rules,g)},rule:e,choice:function(a){c(function(){each(a.alternatives,g)})},sequence:function(a){function e(b){each(pluck(a.elements,"resultVar"),function(d,e){(new RegExp("^"+d+"(\\[\\d+\\])*$")).test(c[b])&&(c[b]=a.resultVar+"["+e+"]"+c[b].substr(d.length))})}var c=b[b.length-1],d;each(a.elements,g);for(d in c)e(d)},labeled:function(a){b[b.length-1][a.label]=a.resultVar,c(function(){g(a.expression)})},simple_and:e,simple_not:e,semantic_and:f,semantic_not:f,optional:e,zero_or_more:e,one_or_more:e,action:function(a){c(function(){g(a.expression),f(a)})},rule_ref:d,literal:d,any:d,"class":d});g(a)}},PEG.compiler.emitter=function(a,b){function e(a,c){return c.string=quote,c.pluck=pluck,c.keys=keys,c.values=values,c.emit=g,c.options=b,b.trackLineAndColumn?(c.posInit=function(a){return"var "+a+" = "+"{ offset: 0, line: 1, column: 1, seenCR: false }"},c.posClone=function(a){return"clone("+a+")"},c.posOffset=function(a){return a+".offset"},c.posAdvance=function(a){return"advance(pos, "+a+")"}):(c.posInit=function(a){return"var "+a+" = 0"},c.posClone=function(a){return a},c.posOffset=function(a){return a},c.posAdvance=function(a){return a===1?"pos++":"pos += "+a}),c.posSave=function(a){return a.posVar+" = "+c.posClone("pos")},c.posRestore=function(a){return"pos = "+c.posClone(a.posVar)},d[a](c)}function f(a){return function(b){return e(a,{node:b})}}b=b||{},b.cache===undefined&&(b.cache=!1),b.trackLineAndColumn===undefined&&(b.trackLineAndColumn=!1);var c=function(a){function b(a){function b(a){return a.charCodeAt(0).toString(16).toUpperCase()}return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(a){return"\\x0"+b(a)}).replace(/[\x10-\x1F\x80-\xFF]/g,function(a){return"\\x"+b(a)}).replace(/[\u0180-\u0FFF]/g,function(a){return"\\u0"+b(a)}).replace(/[\u1080-\uFFFF]/g,function(a){return"\\u"+b(a)})}function c(a){return"__p.push("+a+");"}function d(a,d,e){function f(a,b,c){return a.replace(new RegExp("^.{"+b+"}","gm"),function(a,b){return b===0?c?"":a:""})}var g=b(f(a.substring(0,d),e.indentLevel(),e.atBOL));return g.length>0?c('"'+g+'"'):""}var e={VERSION:"1.1.0",indentStep:2,commands:{"if":{params:/^(.*)$/,compile:function(a,b,c){return["if("+c[0]+"){",[]]},stackOp:"push"},"else":{params:/^$/,compile:function(a){var b=a.commandStack,c=b[b.length-1]==="else",d=b[b.length-1]==="if";if(c)throw new Error("Multiple #elses.");if(!d)throw new Error("Using #else outside of #if.");return["}else{",[]]},stackOp:"replace"},"for":{params:/^([a-zA-Z_][a-zA-Z0-9_]*)[ \t]+in[ \t]+(.*)$/,init:function(a){a.forCurrLevel=0,a.forMaxLevel=0},compile:function(a,b,c){var d="__c"+a.forCurrLevel,e="__l"+a.forCurrLevel,f="__i"+a.forCurrLevel;return a.forCurrLevel++,a.forMaxLevel<a.forCurrLevel&&(a.forMaxLevel=a.forCurrLevel),[d+"="+c[1]+";"+e+"="+d+".length;"+"for("+f+"=0;"+f+"<"+e+";"+f+"++){"+c[0]+"="+d+"["+f+"];",[c[0],d,e,f]]},exit:function(a){a.forCurrLevel--},stackOp:"push"},end:{params:/^$/,compile:function(a){var b=a.commandStack,c;if(b.length===0)throw new Error("Too many #ends.");return c=e.commands[b[b.length-1]].exit,c&&c(a),["}",[]]},stackOp:"pop"},block:{params:/^(.*)$/,compile:function(a,d,e){var f="__x",g="__n",h="__l",i="__i";return[f+'="'+b(d.substring(a.indentLevel()))+'";'+g+"=("+e[0]+').toString().split("\\n");'+h+"="+g+".length;"+"for("+i+"=0;"+i+"<"+h+";"+i+"++){"+g+"["+i+"]="+f+"+"+g+"["+i+']+"\\n";'+"}"+c(g+'.join("")'),[f,g,h,i]]},stackOp:"nop"}},template:function(b){function g(a,b){return a.atBOL=!1,[c(b),[]]}function h(a,b,c,d){var g,h,i;g=e.commands[c];if(!g)throw new Error("Unknown command: #"+c+".");h=g.params.exec(d);if(h===null)throw new Error("Invalid params for command #"+c+": "+d+".");return i=g.compile(a,b,h.slice(1)),f[g.stackOp](a.commandStack,c),a.atBOL=!0,i}var f={push:function(a,b){a.push(b)},replace:function(a,b){a[a.length-1]=b},pop:function(a){a.pop()},nop:function(){}},i={commandStack:[],atBOL:!0,indentLevel:function(){return e.indentStep*this.commandStack.length}},j="",k=["__p=[]"],l,m,n,o;for(l in e.commands)e.commands[l].init&&e.commands[l].init(i);while((m=/^([ \t]*)#([a-zA-Z_][a-zA-Z0-9_]*)(?:[ \t]+([^ \t\n][^\n]*))?[ \t]*(?:\n|$)|#\{([^}]*)\}/m.exec(b))!==null)j+=d(b,m.index,i),n=m[2]!==a&&m[2]!==""?h(i,m[1],m[2],m[3]||""):g(i,m[4]),j+=n[0],k=k.concat(n[1]),b=b.substring(m.index+m[0].length);j+=d(b,b.length,i);if(i.commandStack.length>0)throw new Error("Missing #end.");k.sort();for(o=0;o<k.length;o++)k[o]===k[o-1]&&k.splice(o--,1);return new Function("__v",["__v=__v||{};","var "+k.join(",")+";","with(__v){",j,'return __p.join("").replace(/^\\n+|\\n+$/g,"");};'].join(""))}};return e}(),d=function(){var a,b={},d={grammar:["(function(){"," /*"," * Generated by PEG.js 0.7.0."," *"," * http://pegjs.majda.cz/"," */"," "," function quote(s) {"," /*"," * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a"," * string literal except for the closing quote character, backslash,"," * carriage return, line separator, paragraph separator, and line feed."," * Any character may appear in the form of an escape sequence."," *"," * For portability, we also escape escape all control and non-ASCII",' * characters. Note that "\\0" and "\\v" escape sequences are not used'," * because JSHint does not like the first and IE the second."," */"," return '\"' + s"," .replace(/\\\\/g, '\\\\\\\\') // backslash"," .replace(/\"/g, '\\\\\"') // closing quote character"," .replace(/\\x08/g, '\\\\b') // backspace"," .replace(/\\t/g, '\\\\t') // horizontal tab"," .replace(/\\n/g, '\\\\n') // line feed"," .replace(/\\f/g, '\\\\f') // form feed"," .replace(/\\r/g, '\\\\r') // carriage return"," .replace(/[\\x00-\\x07\\x0B\\x0E-\\x1F\\x80-\\uFFFF]/g, escape)"," + '\"';"," }"," "," var result = {"," /*"," * Parses the input with a generated parser. If the parsing is successfull,"," * returns a value explicitly or implicitly specified by the grammar from"," * which the parser was generated (see |PEG.buildParser|). If the parsing is"," * unsuccessful, throws |PEG.parser.SyntaxError| describing the error."," */"," parse: function(input, startRule) {"," var parseFunctions = {"," #for rule in node.rules",' #{string(rule.name) + ": parse_" + rule.name + (rule !== node.rules[node.rules.length - 1] ? "," : "")}'," #end"," };"," "," if (startRule !== undefined) {"," if (parseFunctions[startRule] === undefined) {",' throw new Error("Invalid rule name: " + quote(startRule) + ".");'," }"," } else {"," startRule = #{string(node.startRule)};"," }"," ",' #{posInit("pos")};'," var reportFailures = 0;",' #{posInit("rightmostFailuresPos")};'," var rightmostFailuresExpected = [];"," #if options.cache"," var cache = {};"," #end"," "," function padLeft(input, padding, length) {"," var result = input;"," "," var padLength = length - input.length;"
|
9
|
+
," for (var i = 0; i < padLength; i++) {"," result = padding + result;"," }"," "," return result;"," }"," "," function escape(ch) {"," var charCode = ch.charCodeAt(0);"," var escapeChar;"," var length;"," "," if (charCode <= 0xFF) {"," escapeChar = 'x';"," length = 2;"," } else {"," escapeChar = 'u';"," length = 4;"," }"," "," return '\\\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length);"," }"," "," #if options.trackLineAndColumn"," function clone(object) {"," var result = {};"," for (var key in object) {"," result[key] = object[key];"," }"," return result;"," }"," "," function advance(pos, n) {"," var endOffset = pos.offset + n;"," "," for (var offset = pos.offset; offset < endOffset; offset++) {"," var ch = input.charAt(offset);",' if (ch === "\\n") {'," if (!pos.seenCR) { pos.line++; }"," pos.column = 1;"," pos.seenCR = false;",' } else if (ch === "\\r" || ch === "\\u2028" || ch === "\\u2029") {'," pos.line++;"," pos.column = 1;"," pos.seenCR = true;"," } else {"," pos.column++;"," pos.seenCR = false;"," }"," }"," "," pos.offset += n;"," }"," "," #end"," function matchFailed(failure) {",' if (#{posOffset("pos")} < #{posOffset("rightmostFailuresPos")}) {'," return;"," }"," ",' if (#{posOffset("pos")} > #{posOffset("rightmostFailuresPos")}) {',' rightmostFailuresPos = #{posClone("pos")};'," rightmostFailuresExpected = [];"," }"," "," rightmostFailuresExpected.push(failure);"," }"," "," #for rule in node.rules"," #block emit(rule)"," "," #end"," "," function cleanupExpected(expected) {"," expected.sort();"," "," var lastExpected = null;"," var cleanExpected = [];"," for (var i = 0; i < expected.length; i++) {"," if (expected[i] !== lastExpected) {"," cleanExpected.push(expected[i]);"," lastExpected = expected[i];"," }"," }"," return cleanExpected;"," }"," "," #if !options.trackLineAndColumn"," function computeErrorPosition() {"," /*"," * The first idea was to use |String.split| to break the input up to the"," * error position along newlines and derive the line and column from"," * there. However IE's |split| implementation is so broken that it was"," * enough to prevent it."," */"," "," var line = 1;"," var column = 1;"," var seenCR = false;"," "," for (var i = 0; i < Math.max(pos, rightmostFailuresPos); i++) {"," var ch = input.charAt(i);",' if (ch === "\\n") {'," if (!seenCR) { line++; }"," column = 1;"," seenCR = false;",' } else if (ch === "\\r" || ch === "\\u2028" || ch === "\\u2029") {'," line++;"," column = 1;"," seenCR = true;"," } else {"," column++;"," seenCR = false;"," }"," }"," "," return { line: line, column: column };"," }"," #end"," "," #if node.initializer"," #block emit(node.initializer)"," #end"," "," var result = parseFunctions[startRule]();"," "," /*"," * The parser is now in one of the following three states:"," *"," * 1. The parser successfully parsed the whole input."," *"," * - |result !== null|",' * - |#{posOffset("pos")} === input.length|'," * - |rightmostFailuresExpected| may or may not contain something"," *"," * 2. The parser successfully parsed only a part of the input."," *"," * - |result !== null|",' * - |#{posOffset("pos")} < input.length|'," * - |rightmostFailuresExpected| may or may not contain something"," *"," * 3. The parser did not successfully parse any part of the input."," *"," * - |result === null|",' * - |#{posOffset("pos")} === 0|'," * - |rightmostFailuresExpected| contains at least one failure"," *"," * All code following this comment (including called functions) must"," * handle these states."," */",' if (result === null || #{posOffset("pos")} !== input.length) {',' var offset = Math.max(#{posOffset("pos")}, #{posOffset("rightmostFailuresPos")});'," var found = offset < input.length ? input.charAt(offset) : null;"," #if options.trackLineAndColumn",' var errorPosition = #{posOffset("pos")} > #{posOffset("rightmostFailuresPos")} ? pos : rightmostFailuresPos;'," #else"," var errorPosition = computeErrorPosition();"," #end"," "," throw new this.SyntaxError("," cleanupExpected(rightmostFailuresExpected),"," found,"," offset,"," errorPosition.line,"," errorPosition.column"," );"," }"," "," return result;"," },"," "," /* Returns the parser source code. */"," toSource: function() { return this._source; }"," };"," "," /* Thrown when a parser encounters a syntax error. */"," "," result.SyntaxError = function(expected, found, offset, line, column) {"," function buildMessage(expected, found) {"," var expectedHumanized, foundHumanized;"," "," switch (expected.length) {"," case 0:",' expectedHumanized = "end of input";'," break;"," case 1:"," expectedHumanized = expected[0];"," break;"," default:",' expectedHumanized = expected.slice(0, expected.length - 1).join(", ")',' + " or "'," + expected[expected.length - 1];"," }"," ",' foundHumanized = found ? quote(found) : "end of input";'," ",' return "Expected " + expectedHumanized + " but " + foundHumanized + " found.";'," }"," ",' this.name = "SyntaxError";'," this.expected = expected;"," this.found = found;"," this.message = buildMessage(expected, found);"," this.offset = offset;"," this.line = line;"," this.column = column;"," };"," "," result.SyntaxError.prototype = Error.prototype;"," "," return result;","})()"],rule:["function parse_#{node.name}() {"," #if options.cache",' var cacheKey = "#{node.name}@" + #{posOffset("pos")};'," var cachedResult = cache[cacheKey];"," if (cachedResult) {",' pos = #{posClone("cachedResult.nextPos")};'," return cachedResult.result;"," }"," "," #end"," #if node.resultVars.length > 0",' var #{node.resultVars.join(", ")};'," #end"," #if node.posVars.length > 0",' var #{node.posVars.join(", ")};'," #end"," "," #if node.displayName !== null"," reportFailures++;"," #end"," #block emit(node.expression)"," #if node.displayName !== null"," reportFailures--;"," if (reportFailures === 0 && #{node.resultVar} === null) {"," matchFailed(#{string(node.displayName)});"," }"," #end"," #if options.cache"," "," cache[cacheKey] = {",' nextPos: #{posClone("pos")},'," result: #{node.resultVar}"," };"," #end"," return #{node.resultVar};","}"],choice:["#block emit(alternative)","#block nextAlternativesCode"],"choice.next":["if (#{node.resultVar} === null) {"," #block code","}"],sequence:["#{posSave(node)};","#block code"],"sequence.iteration":["#block emit(element)","if (#{element.resultVar} !== null) {"," #block code","} else {"," #{node.resultVar} = null;"," #{posRestore(node)};","}"],"sequence.inner":['#{node.resultVar} = [#{pluck(node.elements, "resultVar").join(", ")}];'],simple_and:["#{posSave(node)};","reportFailures++;","#block emit(node.expression)","reportFailures--;","if (#{node.resultVar} !== null) {",' #{node.resultVar} = "";'," #{posRestore(node)};","} else {"," #{node.resultVar} = null;","}"],simple_not:["#{posSave(node)};","reportFailures++;","#block emit(node.expression)","reportFailures--;","if (#{node.resultVar} === null) {",' #{node.resultVar} = "";',"} else {"," #{node.resultVar} = null;"," #{posRestore(node)};","}"],semantic_and:['#{node.resultVar} = (function(#{(options.trackLineAndColumn ? ["offset", "line", "column"] : ["offset"]).concat(keys(node.params)).join(", ")}) {#{node.code}})(#{(options.trackLineAndColumn ? ["pos.offset", "pos.line", "pos.column"] : ["pos"]).concat(values(node.params)).join(", ")}) ? "" : null;'],semantic_not:['#{node.resultVar} = (function(#{(options.trackLineAndColumn ? ["offset", "line", "column"] : ["offset"]).concat(keys(node.params)).join(", ")}) {#{node.code}})(#{(options.trackLineAndColumn ? ["pos.offset", "pos.line", "pos.column"] : ["pos"]).concat(values(node.params)).join(", ")}) ? null : "";'],optional:["#block emit(node.expression)",'#{node.resultVar} = #{node.resultVar} !== null ? #{node.resultVar} : "";'],zero_or_more:["#{node.resultVar} = [];","#block emit(node.expression)","while (#{node.expression.resultVar} !== null) {"," #{node.resultVar}.push(#{node.expression.resultVar});"," #block emit(node.expression)","}"],one_or_more:["#block emit(node.expression)","if (#{node.expression.resultVar} !== null) {"," #{node.resultVar} = [];"," while (#{node.expression.resultVar} !== null) {"," #{node.resultVar}.push(#{node.expression.resultVar});"," #block emit(node.expression)"," }","} else {"," #{node.resultVar} = null;","}"],action:["#{posSave(node)};","#block emit(node.expression)","if (#{node.resultVar} !== null) {",' #{node.resultVar} = (function(#{(options.trackLineAndColumn ? ["offset", "line", "column"] : ["offset"]).concat(keys(node.params)).join(", ")}) {#{node.code}})(#{(options.trackLineAndColumn ? [node.posVar + ".offset", node.posVar + ".line", node.posVar + ".column"] : [node.posVar]).concat(values(node.params)).join(", ")});',"}","if (#{node.resultVar} === null) {"," #{posRestore(node)};","}"],rule_ref:["#{node.resultVar} = parse_#{node.name}();"],literal:["#if node.value.length === 0",' #{node.resultVar} = "";',"#else"," #if !node.ignoreCase"," #if node.value.length === 1",' if (input.charCodeAt(#{posOffset("pos")}) === #{node.value.charCodeAt(0)}) {'," #else",' if (input.substr(#{posOffset("pos")}, #{node.value.length}) === #{string(node.value)}) {'," #end"," #else",' if (input.substr(#{posOffset("pos")}, #{node.value.length}).toLowerCase() === #{string(node.value.toLowerCase())}) {'," #end"," #if !node.ignoreCase"," #{node.resultVar} = #{string(node.value)};"," #else",' #{node.resultVar} = input.substr(#{posOffset("pos")}, #{node.value.length});'," #end"," #{posAdvance(node.value.length)};"," } else {"," #{node.resultVar} = null;"," if (reportFailures === 0) {"," matchFailed(#{string(string(node.value))});"," }"," }","#end"],any:['if (input.length > #{posOffset("pos")}) {',' #{node.resultVar} = input.charAt(#{posOffset("pos")});'," #{posAdvance(1)};","} else {"," #{node.resultVar} = null;"," if (reportFailures === 0) {",' matchFailed("any character");'," }","}"],"class":['if (#{regexp}.test(input.charAt(#{posOffset("pos")}))) {',' #{node.resultVar} = input.charAt(#{posOffset("pos")});'," #{posAdvance(1)};","} else {"," #{node.resultVar} = null;"," if (reportFailures === 0) {"," matchFailed(#{string(node.rawText)});"," }","}"]};for(a in d)b[a]=c.template(d[a].join("\n"));return b}(),g=buildNodeVisitor({grammar:f("grammar"),initializer:function(a){return a.code},rule:f("rule"),choice:function(a){var b,c;for(var d=a.alternatives.length-1;d>=0;d--)c=d!==a.alternatives.length-1?e("choice.next",{node:a,code:b}):"",b=e("choice",{alternative:a.alternatives[d],nextAlternativesCode:c});return b},sequence:function(a){var b=e("sequence.inner",{node:a});for(var c=a.elements.length-1;c>=0;c--)b=e("sequence.iteration",{node:a,element:a.elements[c],code:b});return e("sequence",{node:a,code:b})},labeled:function(a){return g(a.expression)},simple_and:f("simple_and"),simple_not:f("simple_not"),semantic_and:f("semantic_and"),semantic_not:f("semantic_not"),optional:f("optional"),zero_or_more:f("zero_or_more"),one_or_more:f("one_or_more"),action:f("action"),rule_ref:f("rule_ref"),literal:f("literal"),any:f("any"),"class":function(a){var b;return a.parts.length>0?b="/^["+(a.inverted?"^":"")+map(a.parts,function(a){return a instanceof Array?quoteForRegexpClass(a[0])+"-"+quoteForRegexpClass(a[1]):quoteForRegexpClass(a)}).join("")+"]/"+(a.ignoreCase?"i":""):b=a.inverted?"/^[\\S\\s]/":"/^(?!)/",e("class",{node:a,regexp:b})}});return g(a)},PEG}();typeof module!="undefined"&&(module.exports=PEG);
|
data/amber/js/parser.js
CHANGED
@@ -47,6 +47,7 @@ smalltalk.parser = (function(){
|
|
47
47
|
"string": parse_string,
|
48
48
|
"symbol": parse_symbol,
|
49
49
|
"number": parse_number,
|
50
|
+
"hex": parse_hex,
|
50
51
|
"float": parse_float,
|
51
52
|
"integer": parse_integer,
|
52
53
|
"literalArray": parse_literalArray,
|
@@ -72,6 +73,7 @@ smalltalk.parser = (function(){
|
|
72
73
|
"subexpression": parse_subexpression,
|
73
74
|
"statements": parse_statements,
|
74
75
|
"sequence": parse_sequence,
|
76
|
+
"stSequence": parse_stSequence,
|
75
77
|
"block": parse_block,
|
76
78
|
"operand": parse_operand,
|
77
79
|
"unaryMessage": parse_unaryMessage,
|
@@ -96,10 +98,11 @@ smalltalk.parser = (function(){
|
|
96
98
|
startRule = "method";
|
97
99
|
}
|
98
100
|
|
99
|
-
var pos = 0;
|
101
|
+
var pos = { offset: 0, line: 1, column: 1, seenCR: false };
|
100
102
|
var reportFailures = 0;
|
101
|
-
var rightmostFailuresPos = 0;
|
103
|
+
var rightmostFailuresPos = { offset: 0, line: 1, column: 1, seenCR: false };
|
102
104
|
var rightmostFailuresExpected = [];
|
105
|
+
var cache = {};
|
103
106
|
|
104
107
|
function padLeft(input, padding, length) {
|
105
108
|
var result = input;
|
@@ -128,13 +131,43 @@ smalltalk.parser = (function(){
|
|
128
131
|
return '\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length);
|
129
132
|
}
|
130
133
|
|
134
|
+
function clone(object) {
|
135
|
+
var result = {};
|
136
|
+
for (var key in object) {
|
137
|
+
result[key] = object[key];
|
138
|
+
}
|
139
|
+
return result;
|
140
|
+
}
|
141
|
+
|
142
|
+
function advance(pos, n) {
|
143
|
+
var endOffset = pos.offset + n;
|
144
|
+
|
145
|
+
for (var offset = pos.offset; offset < endOffset; offset++) {
|
146
|
+
var ch = input.charAt(offset);
|
147
|
+
if (ch === "\n") {
|
148
|
+
if (!pos.seenCR) { pos.line++; }
|
149
|
+
pos.column = 1;
|
150
|
+
pos.seenCR = false;
|
151
|
+
} else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") {
|
152
|
+
pos.line++;
|
153
|
+
pos.column = 1;
|
154
|
+
pos.seenCR = true;
|
155
|
+
} else {
|
156
|
+
pos.column++;
|
157
|
+
pos.seenCR = false;
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
pos.offset += n;
|
162
|
+
}
|
163
|
+
|
131
164
|
function matchFailed(failure) {
|
132
|
-
if (pos < rightmostFailuresPos) {
|
165
|
+
if (pos.offset < rightmostFailuresPos.offset) {
|
133
166
|
return;
|
134
167
|
}
|
135
168
|
|
136
|
-
if (pos > rightmostFailuresPos) {
|
137
|
-
rightmostFailuresPos = pos;
|
169
|
+
if (pos.offset > rightmostFailuresPos.offset) {
|
170
|
+
rightmostFailuresPos = clone(pos);
|
138
171
|
rightmostFailuresExpected = [];
|
139
172
|
}
|
140
173
|
|
@@ -142,11 +175,18 @@ smalltalk.parser = (function(){
|
|
142
175
|
}
|
143
176
|
|
144
177
|
function parse_separator() {
|
178
|
+
var cacheKey = "separator@" + pos.offset;
|
179
|
+
var cachedResult = cache[cacheKey];
|
180
|
+
if (cachedResult) {
|
181
|
+
pos = clone(cachedResult.nextPos);
|
182
|
+
return cachedResult.result;
|
183
|
+
}
|
184
|
+
|
145
185
|
var result0, result1;
|
146
186
|
|
147
|
-
if (/^[ \t\x0B\f\xA0\uFEFF\n\r\u2028\u2029]/.test(input.charAt(pos))) {
|
148
|
-
result1 = input.charAt(pos);
|
149
|
-
pos
|
187
|
+
if (/^[ \t\x0B\f\xA0\uFEFF\n\r\u2028\u2029]/.test(input.charAt(pos.offset))) {
|
188
|
+
result1 = input.charAt(pos.offset);
|
189
|
+
advance(pos, 1);
|
150
190
|
} else {
|
151
191
|
result1 = null;
|
152
192
|
if (reportFailures === 0) {
|
@@ -157,9 +197,9 @@ smalltalk.parser = (function(){
|
|
157
197
|
result0 = [];
|
158
198
|
while (result1 !== null) {
|
159
199
|
result0.push(result1);
|
160
|
-
if (/^[ \t\x0B\f\xA0\uFEFF\n\r\u2028\u2029]/.test(input.charAt(pos))) {
|
161
|
-
result1 = input.charAt(pos);
|
162
|
-
pos
|
200
|
+
if (/^[ \t\x0B\f\xA0\uFEFF\n\r\u2028\u2029]/.test(input.charAt(pos.offset))) {
|
201
|
+
result1 = input.charAt(pos.offset);
|
202
|
+
advance(pos, 1);
|
163
203
|
} else {
|
164
204
|
result1 = null;
|
165
205
|
if (reportFailures === 0) {
|
@@ -170,17 +210,29 @@ smalltalk.parser = (function(){
|
|
170
210
|
} else {
|
171
211
|
result0 = null;
|
172
212
|
}
|
213
|
+
|
214
|
+
cache[cacheKey] = {
|
215
|
+
nextPos: clone(pos),
|
216
|
+
result: result0
|
217
|
+
};
|
173
218
|
return result0;
|
174
219
|
}
|
175
220
|
|
176
221
|
function parse_comments() {
|
222
|
+
var cacheKey = "comments@" + pos.offset;
|
223
|
+
var cachedResult = cache[cacheKey];
|
224
|
+
if (cachedResult) {
|
225
|
+
pos = clone(cachedResult.nextPos);
|
226
|
+
return cachedResult.result;
|
227
|
+
}
|
228
|
+
|
177
229
|
var result0, result1, result2, result3;
|
178
230
|
var pos0;
|
179
231
|
|
180
|
-
pos0 = pos;
|
181
|
-
if (/^["]/.test(input.charAt(pos))) {
|
182
|
-
result1 = input.charAt(pos);
|
183
|
-
pos
|
232
|
+
pos0 = clone(pos);
|
233
|
+
if (/^["]/.test(input.charAt(pos.offset))) {
|
234
|
+
result1 = input.charAt(pos.offset);
|
235
|
+
advance(pos, 1);
|
184
236
|
} else {
|
185
237
|
result1 = null;
|
186
238
|
if (reportFailures === 0) {
|
@@ -189,9 +241,9 @@ smalltalk.parser = (function(){
|
|
189
241
|
}
|
190
242
|
if (result1 !== null) {
|
191
243
|
result2 = [];
|
192
|
-
if (/^[^"]/.test(input.charAt(pos))) {
|
193
|
-
result3 = input.charAt(pos);
|
194
|
-
pos
|
244
|
+
if (/^[^"]/.test(input.charAt(pos.offset))) {
|
245
|
+
result3 = input.charAt(pos.offset);
|
246
|
+
advance(pos, 1);
|
195
247
|
} else {
|
196
248
|
result3 = null;
|
197
249
|
if (reportFailures === 0) {
|
@@ -200,9 +252,9 @@ smalltalk.parser = (function(){
|
|
200
252
|
}
|
201
253
|
while (result3 !== null) {
|
202
254
|
result2.push(result3);
|
203
|
-
if (/^[^"]/.test(input.charAt(pos))) {
|
204
|
-
result3 = input.charAt(pos);
|
205
|
-
pos
|
255
|
+
if (/^[^"]/.test(input.charAt(pos.offset))) {
|
256
|
+
result3 = input.charAt(pos.offset);
|
257
|
+
advance(pos, 1);
|
206
258
|
} else {
|
207
259
|
result3 = null;
|
208
260
|
if (reportFailures === 0) {
|
@@ -211,9 +263,9 @@ smalltalk.parser = (function(){
|
|
211
263
|
}
|
212
264
|
}
|
213
265
|
if (result2 !== null) {
|
214
|
-
if (/^["]/.test(input.charAt(pos))) {
|
215
|
-
result3 = input.charAt(pos);
|
216
|
-
pos
|
266
|
+
if (/^["]/.test(input.charAt(pos.offset))) {
|
267
|
+
result3 = input.charAt(pos.offset);
|
268
|
+
advance(pos, 1);
|
217
269
|
} else {
|
218
270
|
result3 = null;
|
219
271
|
if (reportFailures === 0) {
|
@@ -224,24 +276,24 @@ smalltalk.parser = (function(){
|
|
224
276
|
result1 = [result1, result2, result3];
|
225
277
|
} else {
|
226
278
|
result1 = null;
|
227
|
-
pos = pos0;
|
279
|
+
pos = clone(pos0);
|
228
280
|
}
|
229
281
|
} else {
|
230
282
|
result1 = null;
|
231
|
-
pos = pos0;
|
283
|
+
pos = clone(pos0);
|
232
284
|
}
|
233
285
|
} else {
|
234
286
|
result1 = null;
|
235
|
-
pos = pos0;
|
287
|
+
pos = clone(pos0);
|
236
288
|
}
|
237
289
|
if (result1 !== null) {
|
238
290
|
result0 = [];
|
239
291
|
while (result1 !== null) {
|
240
292
|
result0.push(result1);
|
241
|
-
pos0 = pos;
|
242
|
-
if (/^["]/.test(input.charAt(pos))) {
|
243
|
-
result1 = input.charAt(pos);
|
244
|
-
pos
|
293
|
+
pos0 = clone(pos);
|
294
|
+
if (/^["]/.test(input.charAt(pos.offset))) {
|
295
|
+
result1 = input.charAt(pos.offset);
|
296
|
+
advance(pos, 1);
|
245
297
|
} else {
|
246
298
|
result1 = null;
|
247
299
|
if (reportFailures === 0) {
|
@@ -250,9 +302,9 @@ smalltalk.parser = (function(){
|
|
250
302
|
}
|
251
303
|
if (result1 !== null) {
|
252
304
|
result2 = [];
|
253
|
-
if (/^[^"]/.test(input.charAt(pos))) {
|
254
|
-
result3 = input.charAt(pos);
|
255
|
-
pos
|
305
|
+
if (/^[^"]/.test(input.charAt(pos.offset))) {
|
306
|
+
result3 = input.charAt(pos.offset);
|
307
|
+
advance(pos, 1);
|
256
308
|
} else {
|
257
309
|
result3 = null;
|
258
310
|
if (reportFailures === 0) {
|
@@ -261,9 +313,9 @@ smalltalk.parser = (function(){
|
|
261
313
|
}
|
262
314
|
while (result3 !== null) {
|
263
315
|
result2.push(result3);
|
264
|
-
if (/^[^"]/.test(input.charAt(pos))) {
|
265
|
-
result3 = input.charAt(pos);
|
266
|
-
pos
|
316
|
+
if (/^[^"]/.test(input.charAt(pos.offset))) {
|
317
|
+
result3 = input.charAt(pos.offset);
|
318
|
+
advance(pos, 1);
|
267
319
|
} else {
|
268
320
|
result3 = null;
|
269
321
|
if (reportFailures === 0) {
|
@@ -272,9 +324,9 @@ smalltalk.parser = (function(){
|
|
272
324
|
}
|
273
325
|
}
|
274
326
|
if (result2 !== null) {
|
275
|
-
if (/^["]/.test(input.charAt(pos))) {
|
276
|
-
result3 = input.charAt(pos);
|
277
|
-
pos
|
327
|
+
if (/^["]/.test(input.charAt(pos.offset))) {
|
328
|
+
result3 = input.charAt(pos.offset);
|
329
|
+
advance(pos, 1);
|
278
330
|
} else {
|
279
331
|
result3 = null;
|
280
332
|
if (reportFailures === 0) {
|
@@ -285,24 +337,36 @@ smalltalk.parser = (function(){
|
|
285
337
|
result1 = [result1, result2, result3];
|
286
338
|
} else {
|
287
339
|
result1 = null;
|
288
|
-
pos = pos0;
|
340
|
+
pos = clone(pos0);
|
289
341
|
}
|
290
342
|
} else {
|
291
343
|
result1 = null;
|
292
|
-
pos = pos0;
|
344
|
+
pos = clone(pos0);
|
293
345
|
}
|
294
346
|
} else {
|
295
347
|
result1 = null;
|
296
|
-
pos = pos0;
|
348
|
+
pos = clone(pos0);
|
297
349
|
}
|
298
350
|
}
|
299
351
|
} else {
|
300
352
|
result0 = null;
|
301
353
|
}
|
354
|
+
|
355
|
+
cache[cacheKey] = {
|
356
|
+
nextPos: clone(pos),
|
357
|
+
result: result0
|
358
|
+
};
|
302
359
|
return result0;
|
303
360
|
}
|
304
361
|
|
305
362
|
function parse_ws() {
|
363
|
+
var cacheKey = "ws@" + pos.offset;
|
364
|
+
var cachedResult = cache[cacheKey];
|
365
|
+
if (cachedResult) {
|
366
|
+
pos = clone(cachedResult.nextPos);
|
367
|
+
return cachedResult.result;
|
368
|
+
}
|
369
|
+
|
306
370
|
var result0, result1;
|
307
371
|
|
308
372
|
result0 = [];
|
@@ -317,18 +381,30 @@ smalltalk.parser = (function(){
|
|
317
381
|
result1 = parse_comments();
|
318
382
|
}
|
319
383
|
}
|
384
|
+
|
385
|
+
cache[cacheKey] = {
|
386
|
+
nextPos: clone(pos),
|
387
|
+
result: result0
|
388
|
+
};
|
320
389
|
return result0;
|
321
390
|
}
|
322
391
|
|
323
392
|
function parse_identifier() {
|
393
|
+
var cacheKey = "identifier@" + pos.offset;
|
394
|
+
var cachedResult = cache[cacheKey];
|
395
|
+
if (cachedResult) {
|
396
|
+
pos = clone(cachedResult.nextPos);
|
397
|
+
return cachedResult.result;
|
398
|
+
}
|
399
|
+
|
324
400
|
var result0, result1, result2;
|
325
401
|
var pos0, pos1;
|
326
402
|
|
327
|
-
pos0 = pos;
|
328
|
-
pos1 = pos;
|
329
|
-
if (/^[a-zA-Z]/.test(input.charAt(pos))) {
|
330
|
-
result0 = input.charAt(pos);
|
331
|
-
pos
|
403
|
+
pos0 = clone(pos);
|
404
|
+
pos1 = clone(pos);
|
405
|
+
if (/^[a-zA-Z]/.test(input.charAt(pos.offset))) {
|
406
|
+
result0 = input.charAt(pos.offset);
|
407
|
+
advance(pos, 1);
|
332
408
|
} else {
|
333
409
|
result0 = null;
|
334
410
|
if (reportFailures === 0) {
|
@@ -337,9 +413,9 @@ smalltalk.parser = (function(){
|
|
337
413
|
}
|
338
414
|
if (result0 !== null) {
|
339
415
|
result1 = [];
|
340
|
-
if (/^[a-zA-Z0-9]/.test(input.charAt(pos))) {
|
341
|
-
result2 = input.charAt(pos);
|
342
|
-
pos
|
416
|
+
if (/^[a-zA-Z0-9]/.test(input.charAt(pos.offset))) {
|
417
|
+
result2 = input.charAt(pos.offset);
|
418
|
+
advance(pos, 1);
|
343
419
|
} else {
|
344
420
|
result2 = null;
|
345
421
|
if (reportFailures === 0) {
|
@@ -348,9 +424,9 @@ smalltalk.parser = (function(){
|
|
348
424
|
}
|
349
425
|
while (result2 !== null) {
|
350
426
|
result1.push(result2);
|
351
|
-
if (/^[a-zA-Z0-9]/.test(input.charAt(pos))) {
|
352
|
-
result2 = input.charAt(pos);
|
353
|
-
pos
|
427
|
+
if (/^[a-zA-Z0-9]/.test(input.charAt(pos.offset))) {
|
428
|
+
result2 = input.charAt(pos.offset);
|
429
|
+
advance(pos, 1);
|
354
430
|
} else {
|
355
431
|
result2 = null;
|
356
432
|
if (reportFailures === 0) {
|
@@ -362,30 +438,42 @@ smalltalk.parser = (function(){
|
|
362
438
|
result0 = [result0, result1];
|
363
439
|
} else {
|
364
440
|
result0 = null;
|
365
|
-
pos = pos1;
|
441
|
+
pos = clone(pos1);
|
366
442
|
}
|
367
443
|
} else {
|
368
444
|
result0 = null;
|
369
|
-
pos = pos1;
|
445
|
+
pos = clone(pos1);
|
370
446
|
}
|
371
447
|
if (result0 !== null) {
|
372
|
-
result0 = (function(offset, first, others) {return first + others.join("")})(pos0, result0[0], result0[1]);
|
448
|
+
result0 = (function(offset, line, column, first, others) {return first + others.join("")})(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]);
|
373
449
|
}
|
374
450
|
if (result0 === null) {
|
375
|
-
pos = pos0;
|
451
|
+
pos = clone(pos0);
|
376
452
|
}
|
453
|
+
|
454
|
+
cache[cacheKey] = {
|
455
|
+
nextPos: clone(pos),
|
456
|
+
result: result0
|
457
|
+
};
|
377
458
|
return result0;
|
378
459
|
}
|
379
460
|
|
380
461
|
function parse_varIdentifier() {
|
462
|
+
var cacheKey = "varIdentifier@" + pos.offset;
|
463
|
+
var cachedResult = cache[cacheKey];
|
464
|
+
if (cachedResult) {
|
465
|
+
pos = clone(cachedResult.nextPos);
|
466
|
+
return cachedResult.result;
|
467
|
+
}
|
468
|
+
|
381
469
|
var result0, result1, result2;
|
382
470
|
var pos0, pos1;
|
383
471
|
|
384
|
-
pos0 = pos;
|
385
|
-
pos1 = pos;
|
386
|
-
if (/^[a-z]/.test(input.charAt(pos))) {
|
387
|
-
result0 = input.charAt(pos);
|
388
|
-
pos
|
472
|
+
pos0 = clone(pos);
|
473
|
+
pos1 = clone(pos);
|
474
|
+
if (/^[a-z]/.test(input.charAt(pos.offset))) {
|
475
|
+
result0 = input.charAt(pos.offset);
|
476
|
+
advance(pos, 1);
|
389
477
|
} else {
|
390
478
|
result0 = null;
|
391
479
|
if (reportFailures === 0) {
|
@@ -394,9 +482,9 @@ smalltalk.parser = (function(){
|
|
394
482
|
}
|
395
483
|
if (result0 !== null) {
|
396
484
|
result1 = [];
|
397
|
-
if (/^[a-zA-Z0-9]/.test(input.charAt(pos))) {
|
398
|
-
result2 = input.charAt(pos);
|
399
|
-
pos
|
485
|
+
if (/^[a-zA-Z0-9]/.test(input.charAt(pos.offset))) {
|
486
|
+
result2 = input.charAt(pos.offset);
|
487
|
+
advance(pos, 1);
|
400
488
|
} else {
|
401
489
|
result2 = null;
|
402
490
|
if (reportFailures === 0) {
|
@@ -405,9 +493,9 @@ smalltalk.parser = (function(){
|
|
405
493
|
}
|
406
494
|
while (result2 !== null) {
|
407
495
|
result1.push(result2);
|
408
|
-
if (/^[a-zA-Z0-9]/.test(input.charAt(pos))) {
|
409
|
-
result2 = input.charAt(pos);
|
410
|
-
pos
|
496
|
+
if (/^[a-zA-Z0-9]/.test(input.charAt(pos.offset))) {
|
497
|
+
result2 = input.charAt(pos.offset);
|
498
|
+
advance(pos, 1);
|
411
499
|
} else {
|
412
500
|
result2 = null;
|
413
501
|
if (reportFailures === 0) {
|
@@ -419,32 +507,44 @@ smalltalk.parser = (function(){
|
|
419
507
|
result0 = [result0, result1];
|
420
508
|
} else {
|
421
509
|
result0 = null;
|
422
|
-
pos = pos1;
|
510
|
+
pos = clone(pos1);
|
423
511
|
}
|
424
512
|
} else {
|
425
513
|
result0 = null;
|
426
|
-
pos = pos1;
|
514
|
+
pos = clone(pos1);
|
427
515
|
}
|
428
516
|
if (result0 !== null) {
|
429
|
-
result0 = (function(offset, first, others) {return first + others.join("")})(pos0, result0[0], result0[1]);
|
517
|
+
result0 = (function(offset, line, column, first, others) {return first + others.join("")})(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]);
|
430
518
|
}
|
431
519
|
if (result0 === null) {
|
432
|
-
pos = pos0;
|
520
|
+
pos = clone(pos0);
|
433
521
|
}
|
522
|
+
|
523
|
+
cache[cacheKey] = {
|
524
|
+
nextPos: clone(pos),
|
525
|
+
result: result0
|
526
|
+
};
|
434
527
|
return result0;
|
435
528
|
}
|
436
529
|
|
437
530
|
function parse_keyword() {
|
531
|
+
var cacheKey = "keyword@" + pos.offset;
|
532
|
+
var cachedResult = cache[cacheKey];
|
533
|
+
if (cachedResult) {
|
534
|
+
pos = clone(cachedResult.nextPos);
|
535
|
+
return cachedResult.result;
|
536
|
+
}
|
537
|
+
|
438
538
|
var result0, result1;
|
439
539
|
var pos0, pos1;
|
440
540
|
|
441
|
-
pos0 = pos;
|
442
|
-
pos1 = pos;
|
541
|
+
pos0 = clone(pos);
|
542
|
+
pos1 = clone(pos);
|
443
543
|
result0 = parse_identifier();
|
444
544
|
if (result0 !== null) {
|
445
|
-
if (/^[:]/.test(input.charAt(pos))) {
|
446
|
-
result1 = input.charAt(pos);
|
447
|
-
pos
|
545
|
+
if (/^[:]/.test(input.charAt(pos.offset))) {
|
546
|
+
result1 = input.charAt(pos.offset);
|
547
|
+
advance(pos, 1);
|
448
548
|
} else {
|
449
549
|
result1 = null;
|
450
550
|
if (reportFailures === 0) {
|
@@ -455,30 +555,42 @@ smalltalk.parser = (function(){
|
|
455
555
|
result0 = [result0, result1];
|
456
556
|
} else {
|
457
557
|
result0 = null;
|
458
|
-
pos = pos1;
|
558
|
+
pos = clone(pos1);
|
459
559
|
}
|
460
560
|
} else {
|
461
561
|
result0 = null;
|
462
|
-
pos = pos1;
|
562
|
+
pos = clone(pos1);
|
463
563
|
}
|
464
564
|
if (result0 !== null) {
|
465
|
-
result0 = (function(offset, first, last) {return first + last})(pos0, result0[0], result0[1]);
|
565
|
+
result0 = (function(offset, line, column, first, last) {return first + last})(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]);
|
466
566
|
}
|
467
567
|
if (result0 === null) {
|
468
|
-
pos = pos0;
|
568
|
+
pos = clone(pos0);
|
469
569
|
}
|
570
|
+
|
571
|
+
cache[cacheKey] = {
|
572
|
+
nextPos: clone(pos),
|
573
|
+
result: result0
|
574
|
+
};
|
470
575
|
return result0;
|
471
576
|
}
|
472
577
|
|
473
578
|
function parse_className() {
|
579
|
+
var cacheKey = "className@" + pos.offset;
|
580
|
+
var cachedResult = cache[cacheKey];
|
581
|
+
if (cachedResult) {
|
582
|
+
pos = clone(cachedResult.nextPos);
|
583
|
+
return cachedResult.result;
|
584
|
+
}
|
585
|
+
|
474
586
|
var result0, result1, result2;
|
475
587
|
var pos0, pos1;
|
476
588
|
|
477
|
-
pos0 = pos;
|
478
|
-
pos1 = pos;
|
479
|
-
if (/^[A-Z]/.test(input.charAt(pos))) {
|
480
|
-
result0 = input.charAt(pos);
|
481
|
-
pos
|
589
|
+
pos0 = clone(pos);
|
590
|
+
pos1 = clone(pos);
|
591
|
+
if (/^[A-Z]/.test(input.charAt(pos.offset))) {
|
592
|
+
result0 = input.charAt(pos.offset);
|
593
|
+
advance(pos, 1);
|
482
594
|
} else {
|
483
595
|
result0 = null;
|
484
596
|
if (reportFailures === 0) {
|
@@ -487,9 +599,9 @@ smalltalk.parser = (function(){
|
|
487
599
|
}
|
488
600
|
if (result0 !== null) {
|
489
601
|
result1 = [];
|
490
|
-
if (/^[a-zA-Z0-9]/.test(input.charAt(pos))) {
|
491
|
-
result2 = input.charAt(pos);
|
492
|
-
pos
|
602
|
+
if (/^[a-zA-Z0-9]/.test(input.charAt(pos.offset))) {
|
603
|
+
result2 = input.charAt(pos.offset);
|
604
|
+
advance(pos, 1);
|
493
605
|
} else {
|
494
606
|
result2 = null;
|
495
607
|
if (reportFailures === 0) {
|
@@ -498,9 +610,9 @@ smalltalk.parser = (function(){
|
|
498
610
|
}
|
499
611
|
while (result2 !== null) {
|
500
612
|
result1.push(result2);
|
501
|
-
if (/^[a-zA-Z0-9]/.test(input.charAt(pos))) {
|
502
|
-
result2 = input.charAt(pos);
|
503
|
-
pos
|
613
|
+
if (/^[a-zA-Z0-9]/.test(input.charAt(pos.offset))) {
|
614
|
+
result2 = input.charAt(pos.offset);
|
615
|
+
advance(pos, 1);
|
504
616
|
} else {
|
505
617
|
result2 = null;
|
506
618
|
if (reportFailures === 0) {
|
@@ -512,30 +624,42 @@ smalltalk.parser = (function(){
|
|
512
624
|
result0 = [result0, result1];
|
513
625
|
} else {
|
514
626
|
result0 = null;
|
515
|
-
pos = pos1;
|
627
|
+
pos = clone(pos1);
|
516
628
|
}
|
517
629
|
} else {
|
518
630
|
result0 = null;
|
519
|
-
pos = pos1;
|
631
|
+
pos = clone(pos1);
|
520
632
|
}
|
521
633
|
if (result0 !== null) {
|
522
|
-
result0 = (function(offset, first, others) {return first + others.join("")})(pos0, result0[0], result0[1]);
|
634
|
+
result0 = (function(offset, line, column, first, others) {return first + others.join("")})(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]);
|
523
635
|
}
|
524
636
|
if (result0 === null) {
|
525
|
-
pos = pos0;
|
637
|
+
pos = clone(pos0);
|
526
638
|
}
|
639
|
+
|
640
|
+
cache[cacheKey] = {
|
641
|
+
nextPos: clone(pos),
|
642
|
+
result: result0
|
643
|
+
};
|
527
644
|
return result0;
|
528
645
|
}
|
529
646
|
|
530
647
|
function parse_string() {
|
648
|
+
var cacheKey = "string@" + pos.offset;
|
649
|
+
var cachedResult = cache[cacheKey];
|
650
|
+
if (cachedResult) {
|
651
|
+
pos = clone(cachedResult.nextPos);
|
652
|
+
return cachedResult.result;
|
653
|
+
}
|
654
|
+
|
531
655
|
var result0, result1, result2;
|
532
656
|
var pos0, pos1, pos2;
|
533
657
|
|
534
|
-
pos0 = pos;
|
535
|
-
pos1 = pos;
|
536
|
-
if (/^[']/.test(input.charAt(pos))) {
|
537
|
-
result0 = input.charAt(pos);
|
538
|
-
pos
|
658
|
+
pos0 = clone(pos);
|
659
|
+
pos1 = clone(pos);
|
660
|
+
if (/^[']/.test(input.charAt(pos.offset))) {
|
661
|
+
result0 = input.charAt(pos.offset);
|
662
|
+
advance(pos, 1);
|
539
663
|
} else {
|
540
664
|
result0 = null;
|
541
665
|
if (reportFailures === 0) {
|
@@ -544,10 +668,10 @@ smalltalk.parser = (function(){
|
|
544
668
|
}
|
545
669
|
if (result0 !== null) {
|
546
670
|
result1 = [];
|
547
|
-
pos2 = pos;
|
548
|
-
if (input.substr(pos, 2) === "''") {
|
671
|
+
pos2 = clone(pos);
|
672
|
+
if (input.substr(pos.offset, 2) === "''") {
|
549
673
|
result2 = "''";
|
550
|
-
pos
|
674
|
+
advance(pos, 2);
|
551
675
|
} else {
|
552
676
|
result2 = null;
|
553
677
|
if (reportFailures === 0) {
|
@@ -555,15 +679,15 @@ smalltalk.parser = (function(){
|
|
555
679
|
}
|
556
680
|
}
|
557
681
|
if (result2 !== null) {
|
558
|
-
result2 = (function(offset) {return "'"})(pos2);
|
682
|
+
result2 = (function(offset, line, column) {return "'"})(pos2.offset, pos2.line, pos2.column);
|
559
683
|
}
|
560
684
|
if (result2 === null) {
|
561
|
-
pos = pos2;
|
685
|
+
pos = clone(pos2);
|
562
686
|
}
|
563
687
|
if (result2 === null) {
|
564
|
-
if (/^[^']/.test(input.charAt(pos))) {
|
565
|
-
result2 = input.charAt(pos);
|
566
|
-
pos
|
688
|
+
if (/^[^']/.test(input.charAt(pos.offset))) {
|
689
|
+
result2 = input.charAt(pos.offset);
|
690
|
+
advance(pos, 1);
|
567
691
|
} else {
|
568
692
|
result2 = null;
|
569
693
|
if (reportFailures === 0) {
|
@@ -573,10 +697,10 @@ smalltalk.parser = (function(){
|
|
573
697
|
}
|
574
698
|
while (result2 !== null) {
|
575
699
|
result1.push(result2);
|
576
|
-
pos2 = pos;
|
577
|
-
if (input.substr(pos, 2) === "''") {
|
700
|
+
pos2 = clone(pos);
|
701
|
+
if (input.substr(pos.offset, 2) === "''") {
|
578
702
|
result2 = "''";
|
579
|
-
pos
|
703
|
+
advance(pos, 2);
|
580
704
|
} else {
|
581
705
|
result2 = null;
|
582
706
|
if (reportFailures === 0) {
|
@@ -584,15 +708,15 @@ smalltalk.parser = (function(){
|
|
584
708
|
}
|
585
709
|
}
|
586
710
|
if (result2 !== null) {
|
587
|
-
result2 = (function(offset) {return "'"})(pos2);
|
711
|
+
result2 = (function(offset, line, column) {return "'"})(pos2.offset, pos2.line, pos2.column);
|
588
712
|
}
|
589
713
|
if (result2 === null) {
|
590
|
-
pos = pos2;
|
714
|
+
pos = clone(pos2);
|
591
715
|
}
|
592
716
|
if (result2 === null) {
|
593
|
-
if (/^[^']/.test(input.charAt(pos))) {
|
594
|
-
result2 = input.charAt(pos);
|
595
|
-
pos
|
717
|
+
if (/^[^']/.test(input.charAt(pos.offset))) {
|
718
|
+
result2 = input.charAt(pos.offset);
|
719
|
+
advance(pos, 1);
|
596
720
|
} else {
|
597
721
|
result2 = null;
|
598
722
|
if (reportFailures === 0) {
|
@@ -602,9 +726,9 @@ smalltalk.parser = (function(){
|
|
602
726
|
}
|
603
727
|
}
|
604
728
|
if (result1 !== null) {
|
605
|
-
if (/^[']/.test(input.charAt(pos))) {
|
606
|
-
result2 = input.charAt(pos);
|
607
|
-
pos
|
729
|
+
if (/^[']/.test(input.charAt(pos.offset))) {
|
730
|
+
result2 = input.charAt(pos.offset);
|
731
|
+
advance(pos, 1);
|
608
732
|
} else {
|
609
733
|
result2 = null;
|
610
734
|
if (reportFailures === 0) {
|
@@ -615,37 +739,49 @@ smalltalk.parser = (function(){
|
|
615
739
|
result0 = [result0, result1, result2];
|
616
740
|
} else {
|
617
741
|
result0 = null;
|
618
|
-
pos = pos1;
|
742
|
+
pos = clone(pos1);
|
619
743
|
}
|
620
744
|
} else {
|
621
745
|
result0 = null;
|
622
|
-
pos = pos1;
|
746
|
+
pos = clone(pos1);
|
623
747
|
}
|
624
748
|
} else {
|
625
749
|
result0 = null;
|
626
|
-
pos = pos1;
|
750
|
+
pos = clone(pos1);
|
627
751
|
}
|
628
752
|
if (result0 !== null) {
|
629
|
-
result0 = (function(offset, val) {
|
630
|
-
|
631
|
-
|
632
|
-
|
753
|
+
result0 = (function(offset, line, column, val) {
|
754
|
+
return smalltalk.ValueNode._new()
|
755
|
+
._value_(val.join("").replace(/\"/ig, '"'))
|
756
|
+
})(pos0.offset, pos0.line, pos0.column, result0[1]);
|
633
757
|
}
|
634
758
|
if (result0 === null) {
|
635
|
-
pos = pos0;
|
759
|
+
pos = clone(pos0);
|
636
760
|
}
|
761
|
+
|
762
|
+
cache[cacheKey] = {
|
763
|
+
nextPos: clone(pos),
|
764
|
+
result: result0
|
765
|
+
};
|
637
766
|
return result0;
|
638
767
|
}
|
639
768
|
|
640
769
|
function parse_symbol() {
|
770
|
+
var cacheKey = "symbol@" + pos.offset;
|
771
|
+
var cachedResult = cache[cacheKey];
|
772
|
+
if (cachedResult) {
|
773
|
+
pos = clone(cachedResult.nextPos);
|
774
|
+
return cachedResult.result;
|
775
|
+
}
|
776
|
+
|
641
777
|
var result0, result1, result2, result3;
|
642
778
|
var pos0, pos1, pos2;
|
643
779
|
|
644
|
-
pos0 = pos;
|
645
|
-
pos1 = pos;
|
646
|
-
if (input.charCodeAt(pos) === 35) {
|
780
|
+
pos0 = clone(pos);
|
781
|
+
pos1 = clone(pos);
|
782
|
+
if (input.charCodeAt(pos.offset) === 35) {
|
647
783
|
result0 = "#";
|
648
|
-
pos
|
784
|
+
advance(pos, 1);
|
649
785
|
} else {
|
650
786
|
result0 = null;
|
651
787
|
if (reportFailures === 0) {
|
@@ -654,10 +790,10 @@ smalltalk.parser = (function(){
|
|
654
790
|
}
|
655
791
|
if (result0 !== null) {
|
656
792
|
result1 = [];
|
657
|
-
pos2 = pos;
|
658
|
-
if (/^[a-zA-Z0-9:]/.test(input.charAt(pos))) {
|
659
|
-
result3 = input.charAt(pos);
|
660
|
-
pos
|
793
|
+
pos2 = clone(pos);
|
794
|
+
if (/^[a-zA-Z0-9:]/.test(input.charAt(pos.offset))) {
|
795
|
+
result3 = input.charAt(pos.offset);
|
796
|
+
advance(pos, 1);
|
661
797
|
} else {
|
662
798
|
result3 = null;
|
663
799
|
if (reportFailures === 0) {
|
@@ -668,9 +804,9 @@ smalltalk.parser = (function(){
|
|
668
804
|
result2 = [];
|
669
805
|
while (result3 !== null) {
|
670
806
|
result2.push(result3);
|
671
|
-
if (/^[a-zA-Z0-9:]/.test(input.charAt(pos))) {
|
672
|
-
result3 = input.charAt(pos);
|
673
|
-
pos
|
807
|
+
if (/^[a-zA-Z0-9:]/.test(input.charAt(pos.offset))) {
|
808
|
+
result3 = input.charAt(pos.offset);
|
809
|
+
advance(pos, 1);
|
674
810
|
} else {
|
675
811
|
result3 = null;
|
676
812
|
if (reportFailures === 0) {
|
@@ -682,27 +818,27 @@ smalltalk.parser = (function(){
|
|
682
818
|
result2 = null;
|
683
819
|
}
|
684
820
|
if (result2 !== null) {
|
685
|
-
result2 = (function(offset, digits) {return digits.join("")})(pos2, result2);
|
821
|
+
result2 = (function(offset, line, column, digits) {return digits.join("")})(pos2.offset, pos2.line, pos2.column, result2);
|
686
822
|
}
|
687
823
|
if (result2 === null) {
|
688
|
-
pos = pos2;
|
824
|
+
pos = clone(pos2);
|
689
825
|
}
|
690
826
|
if (result2 === null) {
|
691
|
-
pos2 = pos;
|
827
|
+
pos2 = clone(pos);
|
692
828
|
result2 = parse_string();
|
693
829
|
if (result2 !== null) {
|
694
|
-
result2 = (function(offset, node) {return node._value()})(pos2, result2);
|
830
|
+
result2 = (function(offset, line, column, node) {return node._value()})(pos2.offset, pos2.line, pos2.column, result2);
|
695
831
|
}
|
696
832
|
if (result2 === null) {
|
697
|
-
pos = pos2;
|
833
|
+
pos = clone(pos2);
|
698
834
|
}
|
699
835
|
}
|
700
836
|
while (result2 !== null) {
|
701
837
|
result1.push(result2);
|
702
|
-
pos2 = pos;
|
703
|
-
if (/^[a-zA-Z0-9:]/.test(input.charAt(pos))) {
|
704
|
-
result3 = input.charAt(pos);
|
705
|
-
pos
|
838
|
+
pos2 = clone(pos);
|
839
|
+
if (/^[a-zA-Z0-9:]/.test(input.charAt(pos.offset))) {
|
840
|
+
result3 = input.charAt(pos.offset);
|
841
|
+
advance(pos, 1);
|
706
842
|
} else {
|
707
843
|
result3 = null;
|
708
844
|
if (reportFailures === 0) {
|
@@ -713,9 +849,9 @@ smalltalk.parser = (function(){
|
|
713
849
|
result2 = [];
|
714
850
|
while (result3 !== null) {
|
715
851
|
result2.push(result3);
|
716
|
-
if (/^[a-zA-Z0-9:]/.test(input.charAt(pos))) {
|
717
|
-
result3 = input.charAt(pos);
|
718
|
-
pos
|
852
|
+
if (/^[a-zA-Z0-9:]/.test(input.charAt(pos.offset))) {
|
853
|
+
result3 = input.charAt(pos.offset);
|
854
|
+
advance(pos, 1);
|
719
855
|
} else {
|
720
856
|
result3 = null;
|
721
857
|
if (reportFailures === 0) {
|
@@ -727,19 +863,19 @@ smalltalk.parser = (function(){
|
|
727
863
|
result2 = null;
|
728
864
|
}
|
729
865
|
if (result2 !== null) {
|
730
|
-
result2 = (function(offset, digits) {return digits.join("")})(pos2, result2);
|
866
|
+
result2 = (function(offset, line, column, digits) {return digits.join("")})(pos2.offset, pos2.line, pos2.column, result2);
|
731
867
|
}
|
732
868
|
if (result2 === null) {
|
733
|
-
pos = pos2;
|
869
|
+
pos = clone(pos2);
|
734
870
|
}
|
735
871
|
if (result2 === null) {
|
736
|
-
pos2 = pos;
|
872
|
+
pos2 = clone(pos);
|
737
873
|
result2 = parse_string();
|
738
874
|
if (result2 !== null) {
|
739
|
-
result2 = (function(offset, node) {return node._value()})(pos2, result2);
|
875
|
+
result2 = (function(offset, line, column, node) {return node._value()})(pos2.offset, pos2.line, pos2.column, result2);
|
740
876
|
}
|
741
877
|
if (result2 === null) {
|
742
|
-
pos = pos2;
|
878
|
+
pos = clone(pos2);
|
743
879
|
}
|
744
880
|
}
|
745
881
|
}
|
@@ -747,54 +883,169 @@ smalltalk.parser = (function(){
|
|
747
883
|
result0 = [result0, result1];
|
748
884
|
} else {
|
749
885
|
result0 = null;
|
750
|
-
pos = pos1;
|
886
|
+
pos = clone(pos1);
|
751
887
|
}
|
752
888
|
} else {
|
753
889
|
result0 = null;
|
754
|
-
pos = pos1;
|
890
|
+
pos = clone(pos1);
|
755
891
|
}
|
756
892
|
if (result0 !== null) {
|
757
|
-
result0 = (function(offset, val) {
|
758
|
-
|
759
|
-
|
760
|
-
|
893
|
+
result0 = (function(offset, line, column, val) {
|
894
|
+
return smalltalk.ValueNode._new()
|
895
|
+
._value_(smalltalk.symbolFor(val.join("").replace(/\"/ig, '"')))
|
896
|
+
})(pos0.offset, pos0.line, pos0.column, result0[1]);
|
761
897
|
}
|
762
898
|
if (result0 === null) {
|
763
|
-
pos = pos0;
|
899
|
+
pos = clone(pos0);
|
764
900
|
}
|
901
|
+
|
902
|
+
cache[cacheKey] = {
|
903
|
+
nextPos: clone(pos),
|
904
|
+
result: result0
|
905
|
+
};
|
765
906
|
return result0;
|
766
907
|
}
|
767
908
|
|
768
909
|
function parse_number() {
|
910
|
+
var cacheKey = "number@" + pos.offset;
|
911
|
+
var cachedResult = cache[cacheKey];
|
912
|
+
if (cachedResult) {
|
913
|
+
pos = clone(cachedResult.nextPos);
|
914
|
+
return cachedResult.result;
|
915
|
+
}
|
916
|
+
|
769
917
|
var result0;
|
770
918
|
var pos0;
|
771
919
|
|
772
|
-
pos0 = pos;
|
773
|
-
result0 =
|
920
|
+
pos0 = clone(pos);
|
921
|
+
result0 = parse_hex();
|
774
922
|
if (result0 === null) {
|
775
|
-
result0 =
|
923
|
+
result0 = parse_float();
|
924
|
+
if (result0 === null) {
|
925
|
+
result0 = parse_integer();
|
926
|
+
}
|
927
|
+
}
|
928
|
+
if (result0 !== null) {
|
929
|
+
result0 = (function(offset, line, column, n) {
|
930
|
+
return smalltalk.ValueNode._new()
|
931
|
+
._value_(n)
|
932
|
+
})(pos0.offset, pos0.line, pos0.column, result0);
|
933
|
+
}
|
934
|
+
if (result0 === null) {
|
935
|
+
pos = clone(pos0);
|
936
|
+
}
|
937
|
+
|
938
|
+
cache[cacheKey] = {
|
939
|
+
nextPos: clone(pos),
|
940
|
+
result: result0
|
941
|
+
};
|
942
|
+
return result0;
|
943
|
+
}
|
944
|
+
|
945
|
+
function parse_hex() {
|
946
|
+
var cacheKey = "hex@" + pos.offset;
|
947
|
+
var cachedResult = cache[cacheKey];
|
948
|
+
if (cachedResult) {
|
949
|
+
pos = clone(cachedResult.nextPos);
|
950
|
+
return cachedResult.result;
|
951
|
+
}
|
952
|
+
|
953
|
+
var result0, result1, result2, result3;
|
954
|
+
var pos0, pos1;
|
955
|
+
|
956
|
+
pos0 = clone(pos);
|
957
|
+
pos1 = clone(pos);
|
958
|
+
if (/^[\-]/.test(input.charAt(pos.offset))) {
|
959
|
+
result0 = input.charAt(pos.offset);
|
960
|
+
advance(pos, 1);
|
961
|
+
} else {
|
962
|
+
result0 = null;
|
963
|
+
if (reportFailures === 0) {
|
964
|
+
matchFailed("[\\-]");
|
965
|
+
}
|
966
|
+
}
|
967
|
+
result0 = result0 !== null ? result0 : "";
|
968
|
+
if (result0 !== null) {
|
969
|
+
if (input.substr(pos.offset, 3) === "16r") {
|
970
|
+
result1 = "16r";
|
971
|
+
advance(pos, 3);
|
972
|
+
} else {
|
973
|
+
result1 = null;
|
974
|
+
if (reportFailures === 0) {
|
975
|
+
matchFailed("\"16r\"");
|
976
|
+
}
|
977
|
+
}
|
978
|
+
if (result1 !== null) {
|
979
|
+
if (/^[0-9a-fA-F]/.test(input.charAt(pos.offset))) {
|
980
|
+
result3 = input.charAt(pos.offset);
|
981
|
+
advance(pos, 1);
|
982
|
+
} else {
|
983
|
+
result3 = null;
|
984
|
+
if (reportFailures === 0) {
|
985
|
+
matchFailed("[0-9a-fA-F]");
|
986
|
+
}
|
987
|
+
}
|
988
|
+
if (result3 !== null) {
|
989
|
+
result2 = [];
|
990
|
+
while (result3 !== null) {
|
991
|
+
result2.push(result3);
|
992
|
+
if (/^[0-9a-fA-F]/.test(input.charAt(pos.offset))) {
|
993
|
+
result3 = input.charAt(pos.offset);
|
994
|
+
advance(pos, 1);
|
995
|
+
} else {
|
996
|
+
result3 = null;
|
997
|
+
if (reportFailures === 0) {
|
998
|
+
matchFailed("[0-9a-fA-F]");
|
999
|
+
}
|
1000
|
+
}
|
1001
|
+
}
|
1002
|
+
} else {
|
1003
|
+
result2 = null;
|
1004
|
+
}
|
1005
|
+
if (result2 !== null) {
|
1006
|
+
result0 = [result0, result1, result2];
|
1007
|
+
} else {
|
1008
|
+
result0 = null;
|
1009
|
+
pos = clone(pos1);
|
1010
|
+
}
|
1011
|
+
} else {
|
1012
|
+
result0 = null;
|
1013
|
+
pos = clone(pos1);
|
1014
|
+
}
|
1015
|
+
} else {
|
1016
|
+
result0 = null;
|
1017
|
+
pos = clone(pos1);
|
776
1018
|
}
|
777
1019
|
if (result0 !== null) {
|
778
|
-
result0 = (function(offset,
|
779
|
-
return smalltalk.ValueNode._new()
|
780
|
-
._value_(n)
|
781
|
-
})(pos0, result0);
|
1020
|
+
result0 = (function(offset, line, column, neg, num) {return parseInt((neg + num.join("")), 16)})(pos0.offset, pos0.line, pos0.column, result0[0], result0[2]);
|
782
1021
|
}
|
783
1022
|
if (result0 === null) {
|
784
|
-
pos = pos0;
|
1023
|
+
pos = clone(pos0);
|
785
1024
|
}
|
1025
|
+
|
1026
|
+
cache[cacheKey] = {
|
1027
|
+
nextPos: clone(pos),
|
1028
|
+
result: result0
|
1029
|
+
};
|
786
1030
|
return result0;
|
787
1031
|
}
|
788
1032
|
|
789
1033
|
function parse_float() {
|
1034
|
+
var cacheKey = "float@" + pos.offset;
|
1035
|
+
var cachedResult = cache[cacheKey];
|
1036
|
+
if (cachedResult) {
|
1037
|
+
pos = clone(cachedResult.nextPos);
|
1038
|
+
return cachedResult.result;
|
1039
|
+
}
|
1040
|
+
|
790
1041
|
var result0, result1, result2, result3, result4;
|
791
1042
|
var pos0, pos1;
|
792
1043
|
|
793
|
-
pos0 = pos;
|
794
|
-
pos1 = pos;
|
795
|
-
if (/^[\-]/.test(input.charAt(pos))) {
|
796
|
-
result0 = input.charAt(pos);
|
797
|
-
pos
|
1044
|
+
pos0 = clone(pos);
|
1045
|
+
pos1 = clone(pos);
|
1046
|
+
if (/^[\-]/.test(input.charAt(pos.offset))) {
|
1047
|
+
result0 = input.charAt(pos.offset);
|
1048
|
+
advance(pos, 1);
|
798
1049
|
} else {
|
799
1050
|
result0 = null;
|
800
1051
|
if (reportFailures === 0) {
|
@@ -803,9 +1054,9 @@ smalltalk.parser = (function(){
|
|
803
1054
|
}
|
804
1055
|
result0 = result0 !== null ? result0 : "";
|
805
1056
|
if (result0 !== null) {
|
806
|
-
if (/^[0-9]/.test(input.charAt(pos))) {
|
807
|
-
result2 = input.charAt(pos);
|
808
|
-
pos
|
1057
|
+
if (/^[0-9]/.test(input.charAt(pos.offset))) {
|
1058
|
+
result2 = input.charAt(pos.offset);
|
1059
|
+
advance(pos, 1);
|
809
1060
|
} else {
|
810
1061
|
result2 = null;
|
811
1062
|
if (reportFailures === 0) {
|
@@ -816,9 +1067,9 @@ smalltalk.parser = (function(){
|
|
816
1067
|
result1 = [];
|
817
1068
|
while (result2 !== null) {
|
818
1069
|
result1.push(result2);
|
819
|
-
if (/^[0-9]/.test(input.charAt(pos))) {
|
820
|
-
result2 = input.charAt(pos);
|
821
|
-
pos
|
1070
|
+
if (/^[0-9]/.test(input.charAt(pos.offset))) {
|
1071
|
+
result2 = input.charAt(pos.offset);
|
1072
|
+
advance(pos, 1);
|
822
1073
|
} else {
|
823
1074
|
result2 = null;
|
824
1075
|
if (reportFailures === 0) {
|
@@ -830,9 +1081,9 @@ smalltalk.parser = (function(){
|
|
830
1081
|
result1 = null;
|
831
1082
|
}
|
832
1083
|
if (result1 !== null) {
|
833
|
-
if (input.charCodeAt(pos) === 46) {
|
1084
|
+
if (input.charCodeAt(pos.offset) === 46) {
|
834
1085
|
result2 = ".";
|
835
|
-
pos
|
1086
|
+
advance(pos, 1);
|
836
1087
|
} else {
|
837
1088
|
result2 = null;
|
838
1089
|
if (reportFailures === 0) {
|
@@ -840,9 +1091,9 @@ smalltalk.parser = (function(){
|
|
840
1091
|
}
|
841
1092
|
}
|
842
1093
|
if (result2 !== null) {
|
843
|
-
if (/^[0-9]/.test(input.charAt(pos))) {
|
844
|
-
result4 = input.charAt(pos);
|
845
|
-
pos
|
1094
|
+
if (/^[0-9]/.test(input.charAt(pos.offset))) {
|
1095
|
+
result4 = input.charAt(pos.offset);
|
1096
|
+
advance(pos, 1);
|
846
1097
|
} else {
|
847
1098
|
result4 = null;
|
848
1099
|
if (reportFailures === 0) {
|
@@ -853,9 +1104,9 @@ smalltalk.parser = (function(){
|
|
853
1104
|
result3 = [];
|
854
1105
|
while (result4 !== null) {
|
855
1106
|
result3.push(result4);
|
856
|
-
if (/^[0-9]/.test(input.charAt(pos))) {
|
857
|
-
result4 = input.charAt(pos);
|
858
|
-
pos
|
1107
|
+
if (/^[0-9]/.test(input.charAt(pos.offset))) {
|
1108
|
+
result4 = input.charAt(pos.offset);
|
1109
|
+
advance(pos, 1);
|
859
1110
|
} else {
|
860
1111
|
result4 = null;
|
861
1112
|
if (reportFailures === 0) {
|
@@ -870,38 +1121,50 @@ smalltalk.parser = (function(){
|
|
870
1121
|
result0 = [result0, result1, result2, result3];
|
871
1122
|
} else {
|
872
1123
|
result0 = null;
|
873
|
-
pos = pos1;
|
1124
|
+
pos = clone(pos1);
|
874
1125
|
}
|
875
1126
|
} else {
|
876
1127
|
result0 = null;
|
877
|
-
pos = pos1;
|
1128
|
+
pos = clone(pos1);
|
878
1129
|
}
|
879
1130
|
} else {
|
880
1131
|
result0 = null;
|
881
|
-
pos = pos1;
|
1132
|
+
pos = clone(pos1);
|
882
1133
|
}
|
883
1134
|
} else {
|
884
1135
|
result0 = null;
|
885
|
-
pos = pos1;
|
1136
|
+
pos = clone(pos1);
|
886
1137
|
}
|
887
1138
|
if (result0 !== null) {
|
888
|
-
result0 = (function(offset, neg, int, dec) {return parseFloat((neg + int.join("") + "." + dec.join("")), 10)})(pos0, result0[0], result0[1], result0[3]);
|
1139
|
+
result0 = (function(offset, line, column, neg, int, dec) {return parseFloat((neg + int.join("") + "." + dec.join("")), 10)})(pos0.offset, pos0.line, pos0.column, result0[0], result0[1], result0[3]);
|
889
1140
|
}
|
890
1141
|
if (result0 === null) {
|
891
|
-
pos = pos0;
|
1142
|
+
pos = clone(pos0);
|
892
1143
|
}
|
1144
|
+
|
1145
|
+
cache[cacheKey] = {
|
1146
|
+
nextPos: clone(pos),
|
1147
|
+
result: result0
|
1148
|
+
};
|
893
1149
|
return result0;
|
894
1150
|
}
|
895
1151
|
|
896
1152
|
function parse_integer() {
|
1153
|
+
var cacheKey = "integer@" + pos.offset;
|
1154
|
+
var cachedResult = cache[cacheKey];
|
1155
|
+
if (cachedResult) {
|
1156
|
+
pos = clone(cachedResult.nextPos);
|
1157
|
+
return cachedResult.result;
|
1158
|
+
}
|
1159
|
+
|
897
1160
|
var result0, result1, result2;
|
898
1161
|
var pos0, pos1;
|
899
1162
|
|
900
|
-
pos0 = pos;
|
901
|
-
pos1 = pos;
|
902
|
-
if (/^[\-]/.test(input.charAt(pos))) {
|
903
|
-
result0 = input.charAt(pos);
|
904
|
-
pos
|
1163
|
+
pos0 = clone(pos);
|
1164
|
+
pos1 = clone(pos);
|
1165
|
+
if (/^[\-]/.test(input.charAt(pos.offset))) {
|
1166
|
+
result0 = input.charAt(pos.offset);
|
1167
|
+
advance(pos, 1);
|
905
1168
|
} else {
|
906
1169
|
result0 = null;
|
907
1170
|
if (reportFailures === 0) {
|
@@ -910,9 +1173,9 @@ smalltalk.parser = (function(){
|
|
910
1173
|
}
|
911
1174
|
result0 = result0 !== null ? result0 : "";
|
912
1175
|
if (result0 !== null) {
|
913
|
-
if (/^[0-9]/.test(input.charAt(pos))) {
|
914
|
-
result2 = input.charAt(pos);
|
915
|
-
pos
|
1176
|
+
if (/^[0-9]/.test(input.charAt(pos.offset))) {
|
1177
|
+
result2 = input.charAt(pos.offset);
|
1178
|
+
advance(pos, 1);
|
916
1179
|
} else {
|
917
1180
|
result2 = null;
|
918
1181
|
if (reportFailures === 0) {
|
@@ -923,9 +1186,9 @@ smalltalk.parser = (function(){
|
|
923
1186
|
result1 = [];
|
924
1187
|
while (result2 !== null) {
|
925
1188
|
result1.push(result2);
|
926
|
-
if (/^[0-9]/.test(input.charAt(pos))) {
|
927
|
-
result2 = input.charAt(pos);
|
928
|
-
pos
|
1189
|
+
if (/^[0-9]/.test(input.charAt(pos.offset))) {
|
1190
|
+
result2 = input.charAt(pos.offset);
|
1191
|
+
advance(pos, 1);
|
929
1192
|
} else {
|
930
1193
|
result2 = null;
|
931
1194
|
if (reportFailures === 0) {
|
@@ -940,30 +1203,42 @@ smalltalk.parser = (function(){
|
|
940
1203
|
result0 = [result0, result1];
|
941
1204
|
} else {
|
942
1205
|
result0 = null;
|
943
|
-
pos = pos1;
|
1206
|
+
pos = clone(pos1);
|
944
1207
|
}
|
945
1208
|
} else {
|
946
1209
|
result0 = null;
|
947
|
-
pos = pos1;
|
1210
|
+
pos = clone(pos1);
|
948
1211
|
}
|
949
1212
|
if (result0 !== null) {
|
950
|
-
result0 = (function(offset, neg, digits) {return (parseInt(neg+digits.join(""), 10))})(pos0, result0[0], result0[1]);
|
1213
|
+
result0 = (function(offset, line, column, neg, digits) {return (parseInt(neg+digits.join(""), 10))})(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]);
|
951
1214
|
}
|
952
1215
|
if (result0 === null) {
|
953
|
-
pos = pos0;
|
1216
|
+
pos = clone(pos0);
|
954
1217
|
}
|
1218
|
+
|
1219
|
+
cache[cacheKey] = {
|
1220
|
+
nextPos: clone(pos),
|
1221
|
+
result: result0
|
1222
|
+
};
|
955
1223
|
return result0;
|
956
1224
|
}
|
957
1225
|
|
958
1226
|
function parse_literalArray() {
|
1227
|
+
var cacheKey = "literalArray@" + pos.offset;
|
1228
|
+
var cachedResult = cache[cacheKey];
|
1229
|
+
if (cachedResult) {
|
1230
|
+
pos = clone(cachedResult.nextPos);
|
1231
|
+
return cachedResult.result;
|
1232
|
+
}
|
1233
|
+
|
959
1234
|
var result0, result1, result2, result3, result4;
|
960
1235
|
var pos0, pos1, pos2, pos3;
|
961
1236
|
|
962
|
-
pos0 = pos;
|
963
|
-
pos1 = pos;
|
964
|
-
if (input.substr(pos, 2) === "#(") {
|
1237
|
+
pos0 = clone(pos);
|
1238
|
+
pos1 = clone(pos);
|
1239
|
+
if (input.substr(pos.offset, 2) === "#(") {
|
965
1240
|
result0 = "#(";
|
966
|
-
pos
|
1241
|
+
advance(pos, 2);
|
967
1242
|
} else {
|
968
1243
|
result0 = null;
|
969
1244
|
if (reportFailures === 0) {
|
@@ -974,8 +1249,8 @@ smalltalk.parser = (function(){
|
|
974
1249
|
result1 = parse_ws();
|
975
1250
|
if (result1 !== null) {
|
976
1251
|
result2 = [];
|
977
|
-
pos2 = pos;
|
978
|
-
pos3 = pos;
|
1252
|
+
pos2 = clone(pos);
|
1253
|
+
pos3 = clone(pos);
|
979
1254
|
result3 = parse_literal();
|
980
1255
|
if (result3 !== null) {
|
981
1256
|
result4 = parse_ws();
|
@@ -983,22 +1258,22 @@ smalltalk.parser = (function(){
|
|
983
1258
|
result3 = [result3, result4];
|
984
1259
|
} else {
|
985
1260
|
result3 = null;
|
986
|
-
pos = pos3;
|
1261
|
+
pos = clone(pos3);
|
987
1262
|
}
|
988
1263
|
} else {
|
989
1264
|
result3 = null;
|
990
|
-
pos = pos3;
|
1265
|
+
pos = clone(pos3);
|
991
1266
|
}
|
992
1267
|
if (result3 !== null) {
|
993
|
-
result3 = (function(offset, lit) {return lit._value()})(pos2, result3[0]);
|
1268
|
+
result3 = (function(offset, line, column, lit) {return lit._value()})(pos2.offset, pos2.line, pos2.column, result3[0]);
|
994
1269
|
}
|
995
1270
|
if (result3 === null) {
|
996
|
-
pos = pos2;
|
1271
|
+
pos = clone(pos2);
|
997
1272
|
}
|
998
1273
|
while (result3 !== null) {
|
999
1274
|
result2.push(result3);
|
1000
|
-
pos2 = pos;
|
1001
|
-
pos3 = pos;
|
1275
|
+
pos2 = clone(pos);
|
1276
|
+
pos3 = clone(pos);
|
1002
1277
|
result3 = parse_literal();
|
1003
1278
|
if (result3 !== null) {
|
1004
1279
|
result4 = parse_ws();
|
@@ -1006,25 +1281,25 @@ smalltalk.parser = (function(){
|
|
1006
1281
|
result3 = [result3, result4];
|
1007
1282
|
} else {
|
1008
1283
|
result3 = null;
|
1009
|
-
pos = pos3;
|
1284
|
+
pos = clone(pos3);
|
1010
1285
|
}
|
1011
1286
|
} else {
|
1012
1287
|
result3 = null;
|
1013
|
-
pos = pos3;
|
1288
|
+
pos = clone(pos3);
|
1014
1289
|
}
|
1015
1290
|
if (result3 !== null) {
|
1016
|
-
result3 = (function(offset, lit) {return lit._value()})(pos2, result3[0]);
|
1291
|
+
result3 = (function(offset, line, column, lit) {return lit._value()})(pos2.offset, pos2.line, pos2.column, result3[0]);
|
1017
1292
|
}
|
1018
1293
|
if (result3 === null) {
|
1019
|
-
pos = pos2;
|
1294
|
+
pos = clone(pos2);
|
1020
1295
|
}
|
1021
1296
|
}
|
1022
1297
|
if (result2 !== null) {
|
1023
1298
|
result3 = parse_ws();
|
1024
1299
|
if (result3 !== null) {
|
1025
|
-
if (input.charCodeAt(pos) === 41) {
|
1300
|
+
if (input.charCodeAt(pos.offset) === 41) {
|
1026
1301
|
result4 = ")";
|
1027
|
-
pos
|
1302
|
+
advance(pos, 1);
|
1028
1303
|
} else {
|
1029
1304
|
result4 = null;
|
1030
1305
|
if (reportFailures === 0) {
|
@@ -1035,45 +1310,57 @@ smalltalk.parser = (function(){
|
|
1035
1310
|
result0 = [result0, result1, result2, result3, result4];
|
1036
1311
|
} else {
|
1037
1312
|
result0 = null;
|
1038
|
-
pos = pos1;
|
1313
|
+
pos = clone(pos1);
|
1039
1314
|
}
|
1040
1315
|
} else {
|
1041
1316
|
result0 = null;
|
1042
|
-
pos = pos1;
|
1317
|
+
pos = clone(pos1);
|
1043
1318
|
}
|
1044
1319
|
} else {
|
1045
1320
|
result0 = null;
|
1046
|
-
pos = pos1;
|
1321
|
+
pos = clone(pos1);
|
1047
1322
|
}
|
1048
1323
|
} else {
|
1049
1324
|
result0 = null;
|
1050
|
-
pos = pos1;
|
1325
|
+
pos = clone(pos1);
|
1051
1326
|
}
|
1052
1327
|
} else {
|
1053
1328
|
result0 = null;
|
1054
|
-
pos = pos1;
|
1329
|
+
pos = clone(pos1);
|
1055
1330
|
}
|
1056
1331
|
if (result0 !== null) {
|
1057
|
-
result0 = (function(offset, lits) {
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1332
|
+
result0 = (function(offset, line, column, lits) {
|
1333
|
+
return smalltalk.ValueNode._new()
|
1334
|
+
._value_(lits)
|
1335
|
+
})(pos0.offset, pos0.line, pos0.column, result0[2]);
|
1061
1336
|
}
|
1062
1337
|
if (result0 === null) {
|
1063
|
-
pos = pos0;
|
1338
|
+
pos = clone(pos0);
|
1064
1339
|
}
|
1340
|
+
|
1341
|
+
cache[cacheKey] = {
|
1342
|
+
nextPos: clone(pos),
|
1343
|
+
result: result0
|
1344
|
+
};
|
1065
1345
|
return result0;
|
1066
1346
|
}
|
1067
1347
|
|
1068
1348
|
function parse_dynamicArray() {
|
1349
|
+
var cacheKey = "dynamicArray@" + pos.offset;
|
1350
|
+
var cachedResult = cache[cacheKey];
|
1351
|
+
if (cachedResult) {
|
1352
|
+
pos = clone(cachedResult.nextPos);
|
1353
|
+
return cachedResult.result;
|
1354
|
+
}
|
1355
|
+
|
1069
1356
|
var result0, result1, result2, result3, result4, result5;
|
1070
1357
|
var pos0, pos1;
|
1071
1358
|
|
1072
|
-
pos0 = pos;
|
1073
|
-
pos1 = pos;
|
1074
|
-
if (input.charCodeAt(pos) === 123) {
|
1359
|
+
pos0 = clone(pos);
|
1360
|
+
pos1 = clone(pos);
|
1361
|
+
if (input.charCodeAt(pos.offset) === 123) {
|
1075
1362
|
result0 = "{";
|
1076
|
-
pos
|
1363
|
+
advance(pos, 1);
|
1077
1364
|
} else {
|
1078
1365
|
result0 = null;
|
1079
1366
|
if (reportFailures === 0) {
|
@@ -1088,9 +1375,9 @@ smalltalk.parser = (function(){
|
|
1088
1375
|
if (result2 !== null) {
|
1089
1376
|
result3 = parse_ws();
|
1090
1377
|
if (result3 !== null) {
|
1091
|
-
if (input.charCodeAt(pos) === 46) {
|
1378
|
+
if (input.charCodeAt(pos.offset) === 46) {
|
1092
1379
|
result4 = ".";
|
1093
|
-
pos
|
1380
|
+
advance(pos, 1);
|
1094
1381
|
} else {
|
1095
1382
|
result4 = null;
|
1096
1383
|
if (reportFailures === 0) {
|
@@ -1099,9 +1386,9 @@ smalltalk.parser = (function(){
|
|
1099
1386
|
}
|
1100
1387
|
result4 = result4 !== null ? result4 : "";
|
1101
1388
|
if (result4 !== null) {
|
1102
|
-
if (input.charCodeAt(pos) === 125) {
|
1389
|
+
if (input.charCodeAt(pos.offset) === 125) {
|
1103
1390
|
result5 = "}";
|
1104
|
-
pos
|
1391
|
+
advance(pos, 1);
|
1105
1392
|
} else {
|
1106
1393
|
result5 = null;
|
1107
1394
|
if (reportFailures === 0) {
|
@@ -1112,49 +1399,61 @@ smalltalk.parser = (function(){
|
|
1112
1399
|
result0 = [result0, result1, result2, result3, result4, result5];
|
1113
1400
|
} else {
|
1114
1401
|
result0 = null;
|
1115
|
-
pos = pos1;
|
1402
|
+
pos = clone(pos1);
|
1116
1403
|
}
|
1117
1404
|
} else {
|
1118
1405
|
result0 = null;
|
1119
|
-
pos = pos1;
|
1406
|
+
pos = clone(pos1);
|
1120
1407
|
}
|
1121
1408
|
} else {
|
1122
1409
|
result0 = null;
|
1123
|
-
pos = pos1;
|
1410
|
+
pos = clone(pos1);
|
1124
1411
|
}
|
1125
1412
|
} else {
|
1126
1413
|
result0 = null;
|
1127
|
-
pos = pos1;
|
1414
|
+
pos = clone(pos1);
|
1128
1415
|
}
|
1129
1416
|
} else {
|
1130
1417
|
result0 = null;
|
1131
|
-
pos = pos1;
|
1418
|
+
pos = clone(pos1);
|
1132
1419
|
}
|
1133
1420
|
} else {
|
1134
1421
|
result0 = null;
|
1135
|
-
pos = pos1;
|
1422
|
+
pos = clone(pos1);
|
1136
1423
|
}
|
1137
1424
|
if (result0 !== null) {
|
1138
|
-
result0 = (function(offset, expressions) {
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1425
|
+
result0 = (function(offset, line, column, expressions) {
|
1426
|
+
return smalltalk.DynamicArrayNode._new()
|
1427
|
+
._nodes_(expressions)
|
1428
|
+
})(pos0.offset, pos0.line, pos0.column, result0[2]);
|
1142
1429
|
}
|
1143
1430
|
if (result0 === null) {
|
1144
|
-
pos = pos0;
|
1431
|
+
pos = clone(pos0);
|
1145
1432
|
}
|
1433
|
+
|
1434
|
+
cache[cacheKey] = {
|
1435
|
+
nextPos: clone(pos),
|
1436
|
+
result: result0
|
1437
|
+
};
|
1146
1438
|
return result0;
|
1147
1439
|
}
|
1148
1440
|
|
1149
1441
|
function parse_dynamicDictionary() {
|
1442
|
+
var cacheKey = "dynamicDictionary@" + pos.offset;
|
1443
|
+
var cachedResult = cache[cacheKey];
|
1444
|
+
if (cachedResult) {
|
1445
|
+
pos = clone(cachedResult.nextPos);
|
1446
|
+
return cachedResult.result;
|
1447
|
+
}
|
1448
|
+
|
1150
1449
|
var result0, result1, result2, result3, result4;
|
1151
1450
|
var pos0, pos1;
|
1152
1451
|
|
1153
|
-
pos0 = pos;
|
1154
|
-
pos1 = pos;
|
1155
|
-
if (input.substr(pos, 2) === "#{") {
|
1452
|
+
pos0 = clone(pos);
|
1453
|
+
pos1 = clone(pos);
|
1454
|
+
if (input.substr(pos.offset, 2) === "#{") {
|
1156
1455
|
result0 = "#{";
|
1157
|
-
pos
|
1456
|
+
advance(pos, 2);
|
1158
1457
|
} else {
|
1159
1458
|
result0 = null;
|
1160
1459
|
if (reportFailures === 0) {
|
@@ -1169,9 +1468,9 @@ smalltalk.parser = (function(){
|
|
1169
1468
|
if (result2 !== null) {
|
1170
1469
|
result3 = parse_ws();
|
1171
1470
|
if (result3 !== null) {
|
1172
|
-
if (input.charCodeAt(pos) === 125) {
|
1471
|
+
if (input.charCodeAt(pos.offset) === 125) {
|
1173
1472
|
result4 = "}";
|
1174
|
-
pos
|
1473
|
+
advance(pos, 1);
|
1175
1474
|
} else {
|
1176
1475
|
result4 = null;
|
1177
1476
|
if (reportFailures === 0) {
|
@@ -1182,45 +1481,57 @@ smalltalk.parser = (function(){
|
|
1182
1481
|
result0 = [result0, result1, result2, result3, result4];
|
1183
1482
|
} else {
|
1184
1483
|
result0 = null;
|
1185
|
-
pos = pos1;
|
1484
|
+
pos = clone(pos1);
|
1186
1485
|
}
|
1187
1486
|
} else {
|
1188
1487
|
result0 = null;
|
1189
|
-
pos = pos1;
|
1488
|
+
pos = clone(pos1);
|
1190
1489
|
}
|
1191
1490
|
} else {
|
1192
1491
|
result0 = null;
|
1193
|
-
pos = pos1;
|
1492
|
+
pos = clone(pos1);
|
1194
1493
|
}
|
1195
1494
|
} else {
|
1196
1495
|
result0 = null;
|
1197
|
-
pos = pos1;
|
1496
|
+
pos = clone(pos1);
|
1198
1497
|
}
|
1199
1498
|
} else {
|
1200
1499
|
result0 = null;
|
1201
|
-
pos = pos1;
|
1500
|
+
pos = clone(pos1);
|
1202
1501
|
}
|
1203
1502
|
if (result0 !== null) {
|
1204
|
-
result0 = (function(offset, expressions) {
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1503
|
+
result0 = (function(offset, line, column, expressions) {
|
1504
|
+
return smalltalk.DynamicDictionaryNode._new()
|
1505
|
+
._nodes_(expressions)
|
1506
|
+
})(pos0.offset, pos0.line, pos0.column, result0[2]);
|
1208
1507
|
}
|
1209
1508
|
if (result0 === null) {
|
1210
|
-
pos = pos0;
|
1509
|
+
pos = clone(pos0);
|
1211
1510
|
}
|
1511
|
+
|
1512
|
+
cache[cacheKey] = {
|
1513
|
+
nextPos: clone(pos),
|
1514
|
+
result: result0
|
1515
|
+
};
|
1212
1516
|
return result0;
|
1213
1517
|
}
|
1214
1518
|
|
1215
1519
|
function parse_pseudoVariable() {
|
1520
|
+
var cacheKey = "pseudoVariable@" + pos.offset;
|
1521
|
+
var cachedResult = cache[cacheKey];
|
1522
|
+
if (cachedResult) {
|
1523
|
+
pos = clone(cachedResult.nextPos);
|
1524
|
+
return cachedResult.result;
|
1525
|
+
}
|
1526
|
+
|
1216
1527
|
var result0;
|
1217
1528
|
var pos0, pos1;
|
1218
1529
|
|
1219
|
-
pos0 = pos;
|
1220
|
-
pos1 = pos;
|
1221
|
-
if (input.substr(pos, 4) === "true") {
|
1530
|
+
pos0 = clone(pos);
|
1531
|
+
pos1 = clone(pos);
|
1532
|
+
if (input.substr(pos.offset, 4) === "true") {
|
1222
1533
|
result0 = "true";
|
1223
|
-
pos
|
1534
|
+
advance(pos, 4);
|
1224
1535
|
} else {
|
1225
1536
|
result0 = null;
|
1226
1537
|
if (reportFailures === 0) {
|
@@ -1228,16 +1539,16 @@ smalltalk.parser = (function(){
|
|
1228
1539
|
}
|
1229
1540
|
}
|
1230
1541
|
if (result0 !== null) {
|
1231
|
-
result0 = (function(offset) {return true})(pos1);
|
1542
|
+
result0 = (function(offset, line, column) {return true})(pos1.offset, pos1.line, pos1.column);
|
1232
1543
|
}
|
1233
1544
|
if (result0 === null) {
|
1234
|
-
pos = pos1;
|
1545
|
+
pos = clone(pos1);
|
1235
1546
|
}
|
1236
1547
|
if (result0 === null) {
|
1237
|
-
pos1 = pos;
|
1238
|
-
if (input.substr(pos, 5) === "false") {
|
1548
|
+
pos1 = clone(pos);
|
1549
|
+
if (input.substr(pos.offset, 5) === "false") {
|
1239
1550
|
result0 = "false";
|
1240
|
-
pos
|
1551
|
+
advance(pos, 5);
|
1241
1552
|
} else {
|
1242
1553
|
result0 = null;
|
1243
1554
|
if (reportFailures === 0) {
|
@@ -1245,16 +1556,16 @@ smalltalk.parser = (function(){
|
|
1245
1556
|
}
|
1246
1557
|
}
|
1247
1558
|
if (result0 !== null) {
|
1248
|
-
result0 = (function(offset) {return false})(pos1);
|
1559
|
+
result0 = (function(offset, line, column) {return false})(pos1.offset, pos1.line, pos1.column);
|
1249
1560
|
}
|
1250
1561
|
if (result0 === null) {
|
1251
|
-
pos = pos1;
|
1562
|
+
pos = clone(pos1);
|
1252
1563
|
}
|
1253
1564
|
if (result0 === null) {
|
1254
|
-
pos1 = pos;
|
1255
|
-
if (input.substr(pos, 3) === "nil") {
|
1565
|
+
pos1 = clone(pos);
|
1566
|
+
if (input.substr(pos.offset, 3) === "nil") {
|
1256
1567
|
result0 = "nil";
|
1257
|
-
pos
|
1568
|
+
advance(pos, 3);
|
1258
1569
|
} else {
|
1259
1570
|
result0 = null;
|
1260
1571
|
if (reportFailures === 0) {
|
@@ -1262,25 +1573,38 @@ smalltalk.parser = (function(){
|
|
1262
1573
|
}
|
1263
1574
|
}
|
1264
1575
|
if (result0 !== null) {
|
1265
|
-
result0 = (function(offset) {return nil})(pos1);
|
1576
|
+
result0 = (function(offset, line, column) {return nil})(pos1.offset, pos1.line, pos1.column);
|
1266
1577
|
}
|
1267
1578
|
if (result0 === null) {
|
1268
|
-
pos = pos1;
|
1579
|
+
pos = clone(pos1);
|
1269
1580
|
}
|
1270
1581
|
}
|
1271
1582
|
}
|
1272
1583
|
if (result0 !== null) {
|
1273
|
-
result0 = (function(offset, val) {
|
1274
|
-
|
1275
|
-
|
1584
|
+
result0 = (function(offset, line, column, val) {
|
1585
|
+
return smalltalk.ValueNode._new()
|
1586
|
+
._value_(val)
|
1587
|
+
})(pos0.offset, pos0.line, pos0.column, result0);
|
1276
1588
|
}
|
1277
1589
|
if (result0 === null) {
|
1278
|
-
pos = pos0;
|
1590
|
+
pos = clone(pos0);
|
1279
1591
|
}
|
1592
|
+
|
1593
|
+
cache[cacheKey] = {
|
1594
|
+
nextPos: clone(pos),
|
1595
|
+
result: result0
|
1596
|
+
};
|
1280
1597
|
return result0;
|
1281
1598
|
}
|
1282
1599
|
|
1283
1600
|
function parse_literal() {
|
1601
|
+
var cacheKey = "literal@" + pos.offset;
|
1602
|
+
var cachedResult = cache[cacheKey];
|
1603
|
+
if (cachedResult) {
|
1604
|
+
pos = clone(cachedResult.nextPos);
|
1605
|
+
return cachedResult.result;
|
1606
|
+
}
|
1607
|
+
|
1284
1608
|
var result0;
|
1285
1609
|
|
1286
1610
|
result0 = parse_pseudoVariable();
|
@@ -1305,61 +1629,109 @@ smalltalk.parser = (function(){
|
|
1305
1629
|
}
|
1306
1630
|
}
|
1307
1631
|
}
|
1632
|
+
|
1633
|
+
cache[cacheKey] = {
|
1634
|
+
nextPos: clone(pos),
|
1635
|
+
result: result0
|
1636
|
+
};
|
1308
1637
|
return result0;
|
1309
1638
|
}
|
1310
1639
|
|
1311
1640
|
function parse_variable() {
|
1641
|
+
var cacheKey = "variable@" + pos.offset;
|
1642
|
+
var cachedResult = cache[cacheKey];
|
1643
|
+
if (cachedResult) {
|
1644
|
+
pos = clone(cachedResult.nextPos);
|
1645
|
+
return cachedResult.result;
|
1646
|
+
}
|
1647
|
+
|
1312
1648
|
var result0;
|
1313
1649
|
var pos0;
|
1314
1650
|
|
1315
|
-
pos0 = pos;
|
1651
|
+
pos0 = clone(pos);
|
1316
1652
|
result0 = parse_varIdentifier();
|
1317
1653
|
if (result0 !== null) {
|
1318
|
-
result0 = (function(offset, identifier) {
|
1319
|
-
|
1320
|
-
|
1321
|
-
|
1654
|
+
result0 = (function(offset, line, column, identifier) {
|
1655
|
+
return smalltalk.VariableNode._new()
|
1656
|
+
._value_(identifier)
|
1657
|
+
})(pos0.offset, pos0.line, pos0.column, result0);
|
1322
1658
|
}
|
1323
1659
|
if (result0 === null) {
|
1324
|
-
pos = pos0;
|
1660
|
+
pos = clone(pos0);
|
1325
1661
|
}
|
1662
|
+
|
1663
|
+
cache[cacheKey] = {
|
1664
|
+
nextPos: clone(pos),
|
1665
|
+
result: result0
|
1666
|
+
};
|
1326
1667
|
return result0;
|
1327
1668
|
}
|
1328
1669
|
|
1329
1670
|
function parse_classReference() {
|
1671
|
+
var cacheKey = "classReference@" + pos.offset;
|
1672
|
+
var cachedResult = cache[cacheKey];
|
1673
|
+
if (cachedResult) {
|
1674
|
+
pos = clone(cachedResult.nextPos);
|
1675
|
+
return cachedResult.result;
|
1676
|
+
}
|
1677
|
+
|
1330
1678
|
var result0;
|
1331
1679
|
var pos0;
|
1332
1680
|
|
1333
|
-
pos0 = pos;
|
1681
|
+
pos0 = clone(pos);
|
1334
1682
|
result0 = parse_className();
|
1335
1683
|
if (result0 !== null) {
|
1336
|
-
result0 = (function(offset, className) {
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1684
|
+
result0 = (function(offset, line, column, className) {
|
1685
|
+
return smalltalk.ClassReferenceNode._new()
|
1686
|
+
._value_(className)
|
1687
|
+
})(pos0.offset, pos0.line, pos0.column, result0);
|
1340
1688
|
}
|
1341
1689
|
if (result0 === null) {
|
1342
|
-
pos = pos0;
|
1690
|
+
pos = clone(pos0);
|
1343
1691
|
}
|
1692
|
+
|
1693
|
+
cache[cacheKey] = {
|
1694
|
+
nextPos: clone(pos),
|
1695
|
+
result: result0
|
1696
|
+
};
|
1344
1697
|
return result0;
|
1345
1698
|
}
|
1346
1699
|
|
1347
1700
|
function parse_reference() {
|
1701
|
+
var cacheKey = "reference@" + pos.offset;
|
1702
|
+
var cachedResult = cache[cacheKey];
|
1703
|
+
if (cachedResult) {
|
1704
|
+
pos = clone(cachedResult.nextPos);
|
1705
|
+
return cachedResult.result;
|
1706
|
+
}
|
1707
|
+
|
1348
1708
|
var result0;
|
1349
1709
|
|
1350
1710
|
result0 = parse_variable();
|
1351
1711
|
if (result0 === null) {
|
1352
1712
|
result0 = parse_classReference();
|
1353
1713
|
}
|
1714
|
+
|
1715
|
+
cache[cacheKey] = {
|
1716
|
+
nextPos: clone(pos),
|
1717
|
+
result: result0
|
1718
|
+
};
|
1354
1719
|
return result0;
|
1355
1720
|
}
|
1356
1721
|
|
1357
1722
|
function parse_keywordPair() {
|
1723
|
+
var cacheKey = "keywordPair@" + pos.offset;
|
1724
|
+
var cachedResult = cache[cacheKey];
|
1725
|
+
if (cachedResult) {
|
1726
|
+
pos = clone(cachedResult.nextPos);
|
1727
|
+
return cachedResult.result;
|
1728
|
+
}
|
1729
|
+
|
1358
1730
|
var result0, result1, result2, result3;
|
1359
1731
|
var pos0, pos1;
|
1360
1732
|
|
1361
|
-
pos0 = pos;
|
1362
|
-
pos1 = pos;
|
1733
|
+
pos0 = clone(pos);
|
1734
|
+
pos1 = clone(pos);
|
1363
1735
|
result0 = parse_keyword();
|
1364
1736
|
if (result0 !== null) {
|
1365
1737
|
result1 = parse_ws();
|
@@ -1371,37 +1743,49 @@ smalltalk.parser = (function(){
|
|
1371
1743
|
result0 = [result0, result1, result2, result3];
|
1372
1744
|
} else {
|
1373
1745
|
result0 = null;
|
1374
|
-
pos = pos1;
|
1746
|
+
pos = clone(pos1);
|
1375
1747
|
}
|
1376
1748
|
} else {
|
1377
1749
|
result0 = null;
|
1378
|
-
pos = pos1;
|
1750
|
+
pos = clone(pos1);
|
1379
1751
|
}
|
1380
1752
|
} else {
|
1381
1753
|
result0 = null;
|
1382
|
-
pos = pos1;
|
1754
|
+
pos = clone(pos1);
|
1383
1755
|
}
|
1384
1756
|
} else {
|
1385
1757
|
result0 = null;
|
1386
|
-
pos = pos1;
|
1758
|
+
pos = clone(pos1);
|
1387
1759
|
}
|
1388
1760
|
if (result0 !== null) {
|
1389
|
-
result0 = (function(offset, key, arg) {return {key:key, arg: arg}})(pos0, result0[0], result0[2]);
|
1761
|
+
result0 = (function(offset, line, column, key, arg) {return {key:key, arg: arg}})(pos0.offset, pos0.line, pos0.column, result0[0], result0[2]);
|
1390
1762
|
}
|
1391
1763
|
if (result0 === null) {
|
1392
|
-
pos = pos0;
|
1764
|
+
pos = clone(pos0);
|
1393
1765
|
}
|
1766
|
+
|
1767
|
+
cache[cacheKey] = {
|
1768
|
+
nextPos: clone(pos),
|
1769
|
+
result: result0
|
1770
|
+
};
|
1394
1771
|
return result0;
|
1395
1772
|
}
|
1396
1773
|
|
1397
1774
|
function parse_binarySelector() {
|
1775
|
+
var cacheKey = "binarySelector@" + pos.offset;
|
1776
|
+
var cachedResult = cache[cacheKey];
|
1777
|
+
if (cachedResult) {
|
1778
|
+
pos = clone(cachedResult.nextPos);
|
1779
|
+
return cachedResult.result;
|
1780
|
+
}
|
1781
|
+
|
1398
1782
|
var result0, result1;
|
1399
1783
|
var pos0;
|
1400
1784
|
|
1401
|
-
pos0 = pos;
|
1402
|
-
if (/^[\\+*\/=><,@%~|&\-]/.test(input.charAt(pos))) {
|
1403
|
-
result1 = input.charAt(pos);
|
1404
|
-
pos
|
1785
|
+
pos0 = clone(pos);
|
1786
|
+
if (/^[\\+*\/=><,@%~|&\-]/.test(input.charAt(pos.offset))) {
|
1787
|
+
result1 = input.charAt(pos.offset);
|
1788
|
+
advance(pos, 1);
|
1405
1789
|
} else {
|
1406
1790
|
result1 = null;
|
1407
1791
|
if (reportFailures === 0) {
|
@@ -1412,9 +1796,9 @@ smalltalk.parser = (function(){
|
|
1412
1796
|
result0 = [];
|
1413
1797
|
while (result1 !== null) {
|
1414
1798
|
result0.push(result1);
|
1415
|
-
if (/^[\\+*\/=><,@%~|&\-]/.test(input.charAt(pos))) {
|
1416
|
-
result1 = input.charAt(pos);
|
1417
|
-
pos
|
1799
|
+
if (/^[\\+*\/=><,@%~|&\-]/.test(input.charAt(pos.offset))) {
|
1800
|
+
result1 = input.charAt(pos.offset);
|
1801
|
+
advance(pos, 1);
|
1418
1802
|
} else {
|
1419
1803
|
result1 = null;
|
1420
1804
|
if (reportFailures === 0) {
|
@@ -1426,21 +1810,33 @@ smalltalk.parser = (function(){
|
|
1426
1810
|
result0 = null;
|
1427
1811
|
}
|
1428
1812
|
if (result0 !== null) {
|
1429
|
-
result0 = (function(offset, bin) {return bin.join("")
|
1813
|
+
result0 = (function(offset, line, column, bin) {return bin.join("")})(pos0.offset, pos0.line, pos0.column, result0);
|
1430
1814
|
}
|
1431
1815
|
if (result0 === null) {
|
1432
|
-
pos = pos0;
|
1816
|
+
pos = clone(pos0);
|
1433
1817
|
}
|
1818
|
+
|
1819
|
+
cache[cacheKey] = {
|
1820
|
+
nextPos: clone(pos),
|
1821
|
+
result: result0
|
1822
|
+
};
|
1434
1823
|
return result0;
|
1435
1824
|
}
|
1436
1825
|
|
1437
1826
|
function parse_keywordPattern() {
|
1827
|
+
var cacheKey = "keywordPattern@" + pos.offset;
|
1828
|
+
var cachedResult = cache[cacheKey];
|
1829
|
+
if (cachedResult) {
|
1830
|
+
pos = clone(cachedResult.nextPos);
|
1831
|
+
return cachedResult.result;
|
1832
|
+
}
|
1833
|
+
|
1438
1834
|
var result0, result1, result2, result3, result4;
|
1439
1835
|
var pos0, pos1, pos2;
|
1440
1836
|
|
1441
|
-
pos0 = pos;
|
1442
|
-
pos1 = pos;
|
1443
|
-
pos2 = pos;
|
1837
|
+
pos0 = clone(pos);
|
1838
|
+
pos1 = clone(pos);
|
1839
|
+
pos2 = clone(pos);
|
1444
1840
|
result1 = parse_ws();
|
1445
1841
|
if (result1 !== null) {
|
1446
1842
|
result2 = parse_keyword();
|
@@ -1452,32 +1848,32 @@ smalltalk.parser = (function(){
|
|
1452
1848
|
result1 = [result1, result2, result3, result4];
|
1453
1849
|
} else {
|
1454
1850
|
result1 = null;
|
1455
|
-
pos = pos2;
|
1851
|
+
pos = clone(pos2);
|
1456
1852
|
}
|
1457
1853
|
} else {
|
1458
1854
|
result1 = null;
|
1459
|
-
pos = pos2;
|
1855
|
+
pos = clone(pos2);
|
1460
1856
|
}
|
1461
1857
|
} else {
|
1462
1858
|
result1 = null;
|
1463
|
-
pos = pos2;
|
1859
|
+
pos = clone(pos2);
|
1464
1860
|
}
|
1465
1861
|
} else {
|
1466
1862
|
result1 = null;
|
1467
|
-
pos = pos2;
|
1863
|
+
pos = clone(pos2);
|
1468
1864
|
}
|
1469
1865
|
if (result1 !== null) {
|
1470
|
-
result1 = (function(offset, key, arg) {return {key:key, arg: arg}})(pos1, result1[1], result1[3]);
|
1866
|
+
result1 = (function(offset, line, column, key, arg) {return {key:key, arg: arg}})(pos1.offset, pos1.line, pos1.column, result1[1], result1[3]);
|
1471
1867
|
}
|
1472
1868
|
if (result1 === null) {
|
1473
|
-
pos = pos1;
|
1869
|
+
pos = clone(pos1);
|
1474
1870
|
}
|
1475
1871
|
if (result1 !== null) {
|
1476
1872
|
result0 = [];
|
1477
1873
|
while (result1 !== null) {
|
1478
1874
|
result0.push(result1);
|
1479
|
-
pos1 = pos;
|
1480
|
-
pos2 = pos;
|
1875
|
+
pos1 = clone(pos);
|
1876
|
+
pos2 = clone(pos);
|
1481
1877
|
result1 = parse_ws();
|
1482
1878
|
if (result1 !== null) {
|
1483
1879
|
result2 = parse_keyword();
|
@@ -1489,33 +1885,33 @@ smalltalk.parser = (function(){
|
|
1489
1885
|
result1 = [result1, result2, result3, result4];
|
1490
1886
|
} else {
|
1491
1887
|
result1 = null;
|
1492
|
-
pos = pos2;
|
1888
|
+
pos = clone(pos2);
|
1493
1889
|
}
|
1494
1890
|
} else {
|
1495
1891
|
result1 = null;
|
1496
|
-
pos = pos2;
|
1892
|
+
pos = clone(pos2);
|
1497
1893
|
}
|
1498
1894
|
} else {
|
1499
1895
|
result1 = null;
|
1500
|
-
pos = pos2;
|
1896
|
+
pos = clone(pos2);
|
1501
1897
|
}
|
1502
1898
|
} else {
|
1503
1899
|
result1 = null;
|
1504
|
-
pos = pos2;
|
1900
|
+
pos = clone(pos2);
|
1505
1901
|
}
|
1506
1902
|
if (result1 !== null) {
|
1507
|
-
result1 = (function(offset, key, arg) {return {key:key, arg: arg}})(pos1, result1[1], result1[3]);
|
1903
|
+
result1 = (function(offset, line, column, key, arg) {return {key:key, arg: arg}})(pos1.offset, pos1.line, pos1.column, result1[1], result1[3]);
|
1508
1904
|
}
|
1509
1905
|
if (result1 === null) {
|
1510
|
-
pos = pos1;
|
1906
|
+
pos = clone(pos1);
|
1511
1907
|
}
|
1512
1908
|
}
|
1513
1909
|
} else {
|
1514
1910
|
result0 = null;
|
1515
1911
|
}
|
1516
1912
|
if (result0 !== null) {
|
1517
|
-
result0 = (function(offset, pairs) {
|
1518
|
-
|
1913
|
+
result0 = (function(offset, line, column, pairs) {
|
1914
|
+
var keywords = [];
|
1519
1915
|
var params = [];
|
1520
1916
|
for(var i=0;i<pairs.length;i++){
|
1521
1917
|
keywords.push(pairs[i].key);
|
@@ -1523,21 +1919,33 @@ smalltalk.parser = (function(){
|
|
1523
1919
|
for(var i=0;i<pairs.length;i++){
|
1524
1920
|
params.push(pairs[i].arg);
|
1525
1921
|
}
|
1526
|
-
|
1527
|
-
|
1922
|
+
return [keywords.join(""), params]
|
1923
|
+
})(pos0.offset, pos0.line, pos0.column, result0);
|
1528
1924
|
}
|
1529
1925
|
if (result0 === null) {
|
1530
|
-
pos = pos0;
|
1926
|
+
pos = clone(pos0);
|
1531
1927
|
}
|
1928
|
+
|
1929
|
+
cache[cacheKey] = {
|
1930
|
+
nextPos: clone(pos),
|
1931
|
+
result: result0
|
1932
|
+
};
|
1532
1933
|
return result0;
|
1533
1934
|
}
|
1534
1935
|
|
1535
1936
|
function parse_binaryPattern() {
|
1937
|
+
var cacheKey = "binaryPattern@" + pos.offset;
|
1938
|
+
var cachedResult = cache[cacheKey];
|
1939
|
+
if (cachedResult) {
|
1940
|
+
pos = clone(cachedResult.nextPos);
|
1941
|
+
return cachedResult.result;
|
1942
|
+
}
|
1943
|
+
|
1536
1944
|
var result0, result1, result2, result3;
|
1537
1945
|
var pos0, pos1;
|
1538
1946
|
|
1539
|
-
pos0 = pos;
|
1540
|
-
pos1 = pos;
|
1947
|
+
pos0 = clone(pos);
|
1948
|
+
pos1 = clone(pos);
|
1541
1949
|
result0 = parse_ws();
|
1542
1950
|
if (result0 !== null) {
|
1543
1951
|
result1 = parse_binarySelector();
|
@@ -1549,35 +1957,47 @@ smalltalk.parser = (function(){
|
|
1549
1957
|
result0 = [result0, result1, result2, result3];
|
1550
1958
|
} else {
|
1551
1959
|
result0 = null;
|
1552
|
-
pos = pos1;
|
1960
|
+
pos = clone(pos1);
|
1553
1961
|
}
|
1554
1962
|
} else {
|
1555
1963
|
result0 = null;
|
1556
|
-
pos = pos1;
|
1964
|
+
pos = clone(pos1);
|
1557
1965
|
}
|
1558
1966
|
} else {
|
1559
1967
|
result0 = null;
|
1560
|
-
pos = pos1;
|
1968
|
+
pos = clone(pos1);
|
1561
1969
|
}
|
1562
1970
|
} else {
|
1563
1971
|
result0 = null;
|
1564
|
-
pos = pos1;
|
1972
|
+
pos = clone(pos1);
|
1565
1973
|
}
|
1566
1974
|
if (result0 !== null) {
|
1567
|
-
result0 = (function(offset, selector, arg) {return [selector, [arg]]})(pos0, result0[1], result0[3]);
|
1975
|
+
result0 = (function(offset, line, column, selector, arg) {return [selector, [arg]]})(pos0.offset, pos0.line, pos0.column, result0[1], result0[3]);
|
1568
1976
|
}
|
1569
1977
|
if (result0 === null) {
|
1570
|
-
pos = pos0;
|
1978
|
+
pos = clone(pos0);
|
1571
1979
|
}
|
1980
|
+
|
1981
|
+
cache[cacheKey] = {
|
1982
|
+
nextPos: clone(pos),
|
1983
|
+
result: result0
|
1984
|
+
};
|
1572
1985
|
return result0;
|
1573
1986
|
}
|
1574
1987
|
|
1575
1988
|
function parse_unaryPattern() {
|
1989
|
+
var cacheKey = "unaryPattern@" + pos.offset;
|
1990
|
+
var cachedResult = cache[cacheKey];
|
1991
|
+
if (cachedResult) {
|
1992
|
+
pos = clone(cachedResult.nextPos);
|
1993
|
+
return cachedResult.result;
|
1994
|
+
}
|
1995
|
+
|
1576
1996
|
var result0, result1;
|
1577
1997
|
var pos0, pos1;
|
1578
1998
|
|
1579
|
-
pos0 = pos;
|
1580
|
-
pos1 = pos;
|
1999
|
+
pos0 = clone(pos);
|
2000
|
+
pos1 = clone(pos);
|
1581
2001
|
result0 = parse_ws();
|
1582
2002
|
if (result0 !== null) {
|
1583
2003
|
result1 = parse_identifier();
|
@@ -1585,22 +2005,34 @@ smalltalk.parser = (function(){
|
|
1585
2005
|
result0 = [result0, result1];
|
1586
2006
|
} else {
|
1587
2007
|
result0 = null;
|
1588
|
-
pos = pos1;
|
2008
|
+
pos = clone(pos1);
|
1589
2009
|
}
|
1590
2010
|
} else {
|
1591
2011
|
result0 = null;
|
1592
|
-
pos = pos1;
|
2012
|
+
pos = clone(pos1);
|
1593
2013
|
}
|
1594
2014
|
if (result0 !== null) {
|
1595
|
-
result0 = (function(offset, selector) {return [selector, []]})(pos0, result0[1]);
|
2015
|
+
result0 = (function(offset, line, column, selector) {return [selector, []]})(pos0.offset, pos0.line, pos0.column, result0[1]);
|
1596
2016
|
}
|
1597
2017
|
if (result0 === null) {
|
1598
|
-
pos = pos0;
|
2018
|
+
pos = clone(pos0);
|
1599
2019
|
}
|
2020
|
+
|
2021
|
+
cache[cacheKey] = {
|
2022
|
+
nextPos: clone(pos),
|
2023
|
+
result: result0
|
2024
|
+
};
|
1600
2025
|
return result0;
|
1601
2026
|
}
|
1602
2027
|
|
1603
2028
|
function parse_expression() {
|
2029
|
+
var cacheKey = "expression@" + pos.offset;
|
2030
|
+
var cachedResult = cache[cacheKey];
|
2031
|
+
if (cachedResult) {
|
2032
|
+
pos = clone(cachedResult.nextPos);
|
2033
|
+
return cachedResult.result;
|
2034
|
+
}
|
2035
|
+
|
1604
2036
|
var result0;
|
1605
2037
|
|
1606
2038
|
result0 = parse_assignment();
|
@@ -1610,26 +2042,35 @@ smalltalk.parser = (function(){
|
|
1610
2042
|
result0 = parse_keywordSend();
|
1611
2043
|
if (result0 === null) {
|
1612
2044
|
result0 = parse_binarySend();
|
1613
|
-
if (result0 === null) {
|
1614
|
-
result0 = parse_jsStatement();
|
1615
|
-
}
|
1616
2045
|
}
|
1617
2046
|
}
|
1618
2047
|
}
|
2048
|
+
|
2049
|
+
cache[cacheKey] = {
|
2050
|
+
nextPos: clone(pos),
|
2051
|
+
result: result0
|
2052
|
+
};
|
1619
2053
|
return result0;
|
1620
2054
|
}
|
1621
2055
|
|
1622
2056
|
function parse_expressionList() {
|
2057
|
+
var cacheKey = "expressionList@" + pos.offset;
|
2058
|
+
var cachedResult = cache[cacheKey];
|
2059
|
+
if (cachedResult) {
|
2060
|
+
pos = clone(cachedResult.nextPos);
|
2061
|
+
return cachedResult.result;
|
2062
|
+
}
|
2063
|
+
|
1623
2064
|
var result0, result1, result2, result3;
|
1624
2065
|
var pos0, pos1;
|
1625
2066
|
|
1626
|
-
pos0 = pos;
|
1627
|
-
pos1 = pos;
|
2067
|
+
pos0 = clone(pos);
|
2068
|
+
pos1 = clone(pos);
|
1628
2069
|
result0 = parse_ws();
|
1629
2070
|
if (result0 !== null) {
|
1630
|
-
if (input.charCodeAt(pos) === 46) {
|
2071
|
+
if (input.charCodeAt(pos.offset) === 46) {
|
1631
2072
|
result1 = ".";
|
1632
|
-
pos
|
2073
|
+
advance(pos, 1);
|
1633
2074
|
} else {
|
1634
2075
|
result1 = null;
|
1635
2076
|
if (reportFailures === 0) {
|
@@ -1644,35 +2085,47 @@ smalltalk.parser = (function(){
|
|
1644
2085
|
result0 = [result0, result1, result2, result3];
|
1645
2086
|
} else {
|
1646
2087
|
result0 = null;
|
1647
|
-
pos = pos1;
|
2088
|
+
pos = clone(pos1);
|
1648
2089
|
}
|
1649
2090
|
} else {
|
1650
2091
|
result0 = null;
|
1651
|
-
pos = pos1;
|
2092
|
+
pos = clone(pos1);
|
1652
2093
|
}
|
1653
2094
|
} else {
|
1654
2095
|
result0 = null;
|
1655
|
-
pos = pos1;
|
2096
|
+
pos = clone(pos1);
|
1656
2097
|
}
|
1657
2098
|
} else {
|
1658
2099
|
result0 = null;
|
1659
|
-
pos = pos1;
|
2100
|
+
pos = clone(pos1);
|
1660
2101
|
}
|
1661
2102
|
if (result0 !== null) {
|
1662
|
-
result0 = (function(offset, expression) {return expression})(pos0, result0[3]);
|
2103
|
+
result0 = (function(offset, line, column, expression) {return expression})(pos0.offset, pos0.line, pos0.column, result0[3]);
|
1663
2104
|
}
|
1664
2105
|
if (result0 === null) {
|
1665
|
-
pos = pos0;
|
2106
|
+
pos = clone(pos0);
|
1666
2107
|
}
|
2108
|
+
|
2109
|
+
cache[cacheKey] = {
|
2110
|
+
nextPos: clone(pos),
|
2111
|
+
result: result0
|
2112
|
+
};
|
1667
2113
|
return result0;
|
1668
2114
|
}
|
1669
2115
|
|
1670
2116
|
function parse_expressions() {
|
2117
|
+
var cacheKey = "expressions@" + pos.offset;
|
2118
|
+
var cachedResult = cache[cacheKey];
|
2119
|
+
if (cachedResult) {
|
2120
|
+
pos = clone(cachedResult.nextPos);
|
2121
|
+
return cachedResult.result;
|
2122
|
+
}
|
2123
|
+
|
1671
2124
|
var result0, result1, result2;
|
1672
2125
|
var pos0, pos1;
|
1673
2126
|
|
1674
|
-
pos0 = pos;
|
1675
|
-
pos1 = pos;
|
2127
|
+
pos0 = clone(pos);
|
2128
|
+
pos1 = clone(pos);
|
1676
2129
|
result0 = parse_expression();
|
1677
2130
|
if (result0 !== null) {
|
1678
2131
|
result1 = [];
|
@@ -1685,40 +2138,52 @@ smalltalk.parser = (function(){
|
|
1685
2138
|
result0 = [result0, result1];
|
1686
2139
|
} else {
|
1687
2140
|
result0 = null;
|
1688
|
-
pos = pos1;
|
2141
|
+
pos = clone(pos1);
|
1689
2142
|
}
|
1690
2143
|
} else {
|
1691
2144
|
result0 = null;
|
1692
|
-
pos = pos1;
|
2145
|
+
pos = clone(pos1);
|
1693
2146
|
}
|
1694
2147
|
if (result0 !== null) {
|
1695
|
-
result0 = (function(offset, first, others) {
|
1696
|
-
|
1697
|
-
|
1698
|
-
|
1699
|
-
|
1700
|
-
|
1701
|
-
|
2148
|
+
result0 = (function(offset, line, column, first, others) {
|
2149
|
+
var result = [first];
|
2150
|
+
for(var i=0;i<others.length;i++) {
|
2151
|
+
result.push(others[i]);
|
2152
|
+
}
|
2153
|
+
return result;
|
2154
|
+
})(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]);
|
1702
2155
|
}
|
1703
2156
|
if (result0 === null) {
|
1704
|
-
pos = pos0;
|
2157
|
+
pos = clone(pos0);
|
1705
2158
|
}
|
2159
|
+
|
2160
|
+
cache[cacheKey] = {
|
2161
|
+
nextPos: clone(pos),
|
2162
|
+
result: result0
|
2163
|
+
};
|
1706
2164
|
return result0;
|
1707
2165
|
}
|
1708
2166
|
|
1709
2167
|
function parse_assignment() {
|
2168
|
+
var cacheKey = "assignment@" + pos.offset;
|
2169
|
+
var cachedResult = cache[cacheKey];
|
2170
|
+
if (cachedResult) {
|
2171
|
+
pos = clone(cachedResult.nextPos);
|
2172
|
+
return cachedResult.result;
|
2173
|
+
}
|
2174
|
+
|
1710
2175
|
var result0, result1, result2, result3, result4;
|
1711
2176
|
var pos0, pos1;
|
1712
2177
|
|
1713
|
-
pos0 = pos;
|
1714
|
-
pos1 = pos;
|
2178
|
+
pos0 = clone(pos);
|
2179
|
+
pos1 = clone(pos);
|
1715
2180
|
result0 = parse_variable();
|
1716
2181
|
if (result0 !== null) {
|
1717
2182
|
result1 = parse_ws();
|
1718
2183
|
if (result1 !== null) {
|
1719
|
-
if (input.substr(pos, 2) === ":=") {
|
2184
|
+
if (input.substr(pos.offset, 2) === ":=") {
|
1720
2185
|
result2 = ":=";
|
1721
|
-
pos
|
2186
|
+
advance(pos, 2);
|
1722
2187
|
} else {
|
1723
2188
|
result2 = null;
|
1724
2189
|
if (reportFailures === 0) {
|
@@ -1733,46 +2198,58 @@ smalltalk.parser = (function(){
|
|
1733
2198
|
result0 = [result0, result1, result2, result3, result4];
|
1734
2199
|
} else {
|
1735
2200
|
result0 = null;
|
1736
|
-
pos = pos1;
|
2201
|
+
pos = clone(pos1);
|
1737
2202
|
}
|
1738
2203
|
} else {
|
1739
2204
|
result0 = null;
|
1740
|
-
pos = pos1;
|
2205
|
+
pos = clone(pos1);
|
1741
2206
|
}
|
1742
2207
|
} else {
|
1743
2208
|
result0 = null;
|
1744
|
-
pos = pos1;
|
2209
|
+
pos = clone(pos1);
|
1745
2210
|
}
|
1746
2211
|
} else {
|
1747
2212
|
result0 = null;
|
1748
|
-
pos = pos1;
|
2213
|
+
pos = clone(pos1);
|
1749
2214
|
}
|
1750
2215
|
} else {
|
1751
2216
|
result0 = null;
|
1752
|
-
pos = pos1;
|
2217
|
+
pos = clone(pos1);
|
1753
2218
|
}
|
1754
2219
|
if (result0 !== null) {
|
1755
|
-
result0 = (function(offset, variable, expression) {
|
1756
|
-
|
1757
|
-
|
1758
|
-
|
1759
|
-
|
2220
|
+
result0 = (function(offset, line, column, variable, expression) {
|
2221
|
+
return smalltalk.AssignmentNode._new()
|
2222
|
+
._left_(variable)
|
2223
|
+
._right_(expression)
|
2224
|
+
})(pos0.offset, pos0.line, pos0.column, result0[0], result0[4]);
|
1760
2225
|
}
|
1761
2226
|
if (result0 === null) {
|
1762
|
-
pos = pos0;
|
2227
|
+
pos = clone(pos0);
|
1763
2228
|
}
|
2229
|
+
|
2230
|
+
cache[cacheKey] = {
|
2231
|
+
nextPos: clone(pos),
|
2232
|
+
result: result0
|
2233
|
+
};
|
1764
2234
|
return result0;
|
1765
2235
|
}
|
1766
2236
|
|
1767
2237
|
function parse_ret() {
|
2238
|
+
var cacheKey = "ret@" + pos.offset;
|
2239
|
+
var cachedResult = cache[cacheKey];
|
2240
|
+
if (cachedResult) {
|
2241
|
+
pos = clone(cachedResult.nextPos);
|
2242
|
+
return cachedResult.result;
|
2243
|
+
}
|
2244
|
+
|
1768
2245
|
var result0, result1, result2, result3, result4;
|
1769
2246
|
var pos0, pos1;
|
1770
2247
|
|
1771
|
-
pos0 = pos;
|
1772
|
-
pos1 = pos;
|
1773
|
-
if (input.charCodeAt(pos) === 94) {
|
2248
|
+
pos0 = clone(pos);
|
2249
|
+
pos1 = clone(pos);
|
2250
|
+
if (input.charCodeAt(pos.offset) === 94) {
|
1774
2251
|
result0 = "^";
|
1775
|
-
pos
|
2252
|
+
advance(pos, 1);
|
1776
2253
|
} else {
|
1777
2254
|
result0 = null;
|
1778
2255
|
if (reportFailures === 0) {
|
@@ -1786,9 +2263,9 @@ smalltalk.parser = (function(){
|
|
1786
2263
|
if (result2 !== null) {
|
1787
2264
|
result3 = parse_ws();
|
1788
2265
|
if (result3 !== null) {
|
1789
|
-
if (input.charCodeAt(pos) === 46) {
|
2266
|
+
if (input.charCodeAt(pos.offset) === 46) {
|
1790
2267
|
result4 = ".";
|
1791
|
-
pos
|
2268
|
+
advance(pos, 1);
|
1792
2269
|
} else {
|
1793
2270
|
result4 = null;
|
1794
2271
|
if (reportFailures === 0) {
|
@@ -1800,45 +2277,57 @@ smalltalk.parser = (function(){
|
|
1800
2277
|
result0 = [result0, result1, result2, result3, result4];
|
1801
2278
|
} else {
|
1802
2279
|
result0 = null;
|
1803
|
-
pos = pos1;
|
2280
|
+
pos = clone(pos1);
|
1804
2281
|
}
|
1805
2282
|
} else {
|
1806
2283
|
result0 = null;
|
1807
|
-
pos = pos1;
|
2284
|
+
pos = clone(pos1);
|
1808
2285
|
}
|
1809
2286
|
} else {
|
1810
2287
|
result0 = null;
|
1811
|
-
pos = pos1;
|
2288
|
+
pos = clone(pos1);
|
1812
2289
|
}
|
1813
2290
|
} else {
|
1814
2291
|
result0 = null;
|
1815
|
-
pos = pos1;
|
2292
|
+
pos = clone(pos1);
|
1816
2293
|
}
|
1817
2294
|
} else {
|
1818
2295
|
result0 = null;
|
1819
|
-
pos = pos1;
|
2296
|
+
pos = clone(pos1);
|
1820
2297
|
}
|
1821
2298
|
if (result0 !== null) {
|
1822
|
-
result0 = (function(offset, expression) {
|
1823
|
-
|
1824
|
-
|
1825
|
-
|
2299
|
+
result0 = (function(offset, line, column, expression) {
|
2300
|
+
return smalltalk.ReturnNode._new()
|
2301
|
+
._nodes_([expression])
|
2302
|
+
})(pos0.offset, pos0.line, pos0.column, result0[2]);
|
1826
2303
|
}
|
1827
2304
|
if (result0 === null) {
|
1828
|
-
pos = pos0;
|
2305
|
+
pos = clone(pos0);
|
1829
2306
|
}
|
2307
|
+
|
2308
|
+
cache[cacheKey] = {
|
2309
|
+
nextPos: clone(pos),
|
2310
|
+
result: result0
|
2311
|
+
};
|
1830
2312
|
return result0;
|
1831
2313
|
}
|
1832
2314
|
|
1833
2315
|
function parse_temps() {
|
2316
|
+
var cacheKey = "temps@" + pos.offset;
|
2317
|
+
var cachedResult = cache[cacheKey];
|
2318
|
+
if (cachedResult) {
|
2319
|
+
pos = clone(cachedResult.nextPos);
|
2320
|
+
return cachedResult.result;
|
2321
|
+
}
|
2322
|
+
|
1834
2323
|
var result0, result1, result2, result3, result4;
|
1835
2324
|
var pos0, pos1, pos2, pos3;
|
1836
2325
|
|
1837
|
-
pos0 = pos;
|
1838
|
-
pos1 = pos;
|
1839
|
-
if (input.charCodeAt(pos) === 124) {
|
2326
|
+
pos0 = clone(pos);
|
2327
|
+
pos1 = clone(pos);
|
2328
|
+
if (input.charCodeAt(pos.offset) === 124) {
|
1840
2329
|
result0 = "|";
|
1841
|
-
pos
|
2330
|
+
advance(pos, 1);
|
1842
2331
|
} else {
|
1843
2332
|
result0 = null;
|
1844
2333
|
if (reportFailures === 0) {
|
@@ -1847,8 +2336,8 @@ smalltalk.parser = (function(){
|
|
1847
2336
|
}
|
1848
2337
|
if (result0 !== null) {
|
1849
2338
|
result1 = [];
|
1850
|
-
pos2 = pos;
|
1851
|
-
pos3 = pos;
|
2339
|
+
pos2 = clone(pos);
|
2340
|
+
pos3 = clone(pos);
|
1852
2341
|
result2 = parse_ws();
|
1853
2342
|
if (result2 !== null) {
|
1854
2343
|
result3 = parse_identifier();
|
@@ -1858,26 +2347,26 @@ smalltalk.parser = (function(){
|
|
1858
2347
|
result2 = [result2, result3, result4];
|
1859
2348
|
} else {
|
1860
2349
|
result2 = null;
|
1861
|
-
pos = pos3;
|
2350
|
+
pos = clone(pos3);
|
1862
2351
|
}
|
1863
2352
|
} else {
|
1864
2353
|
result2 = null;
|
1865
|
-
pos = pos3;
|
2354
|
+
pos = clone(pos3);
|
1866
2355
|
}
|
1867
2356
|
} else {
|
1868
2357
|
result2 = null;
|
1869
|
-
pos = pos3;
|
2358
|
+
pos = clone(pos3);
|
1870
2359
|
}
|
1871
2360
|
if (result2 !== null) {
|
1872
|
-
result2 = (function(offset, variable) {return variable})(pos2, result2[1]);
|
2361
|
+
result2 = (function(offset, line, column, variable) {return variable})(pos2.offset, pos2.line, pos2.column, result2[1]);
|
1873
2362
|
}
|
1874
2363
|
if (result2 === null) {
|
1875
|
-
pos = pos2;
|
2364
|
+
pos = clone(pos2);
|
1876
2365
|
}
|
1877
2366
|
while (result2 !== null) {
|
1878
2367
|
result1.push(result2);
|
1879
|
-
pos2 = pos;
|
1880
|
-
pos3 = pos;
|
2368
|
+
pos2 = clone(pos);
|
2369
|
+
pos3 = clone(pos);
|
1881
2370
|
result2 = parse_ws();
|
1882
2371
|
if (result2 !== null) {
|
1883
2372
|
result3 = parse_identifier();
|
@@ -1887,27 +2376,27 @@ smalltalk.parser = (function(){
|
|
1887
2376
|
result2 = [result2, result3, result4];
|
1888
2377
|
} else {
|
1889
2378
|
result2 = null;
|
1890
|
-
pos = pos3;
|
2379
|
+
pos = clone(pos3);
|
1891
2380
|
}
|
1892
2381
|
} else {
|
1893
2382
|
result2 = null;
|
1894
|
-
pos = pos3;
|
2383
|
+
pos = clone(pos3);
|
1895
2384
|
}
|
1896
2385
|
} else {
|
1897
2386
|
result2 = null;
|
1898
|
-
pos = pos3;
|
2387
|
+
pos = clone(pos3);
|
1899
2388
|
}
|
1900
2389
|
if (result2 !== null) {
|
1901
|
-
result2 = (function(offset, variable) {return variable})(pos2, result2[1]);
|
2390
|
+
result2 = (function(offset, line, column, variable) {return variable})(pos2.offset, pos2.line, pos2.column, result2[1]);
|
1902
2391
|
}
|
1903
2392
|
if (result2 === null) {
|
1904
|
-
pos = pos2;
|
2393
|
+
pos = clone(pos2);
|
1905
2394
|
}
|
1906
2395
|
}
|
1907
2396
|
if (result1 !== null) {
|
1908
|
-
if (input.charCodeAt(pos) === 124) {
|
2397
|
+
if (input.charCodeAt(pos.offset) === 124) {
|
1909
2398
|
result2 = "|";
|
1910
|
-
pos
|
2399
|
+
advance(pos, 1);
|
1911
2400
|
} else {
|
1912
2401
|
result2 = null;
|
1913
2402
|
if (reportFailures === 0) {
|
@@ -1918,38 +2407,50 @@ smalltalk.parser = (function(){
|
|
1918
2407
|
result0 = [result0, result1, result2];
|
1919
2408
|
} else {
|
1920
2409
|
result0 = null;
|
1921
|
-
pos = pos1;
|
2410
|
+
pos = clone(pos1);
|
1922
2411
|
}
|
1923
2412
|
} else {
|
1924
2413
|
result0 = null;
|
1925
|
-
pos = pos1;
|
2414
|
+
pos = clone(pos1);
|
1926
2415
|
}
|
1927
2416
|
} else {
|
1928
2417
|
result0 = null;
|
1929
|
-
pos = pos1;
|
2418
|
+
pos = clone(pos1);
|
1930
2419
|
}
|
1931
2420
|
if (result0 !== null) {
|
1932
|
-
result0 = (function(offset, vars) {return vars})(pos0, result0[1]);
|
2421
|
+
result0 = (function(offset, line, column, vars) {return vars})(pos0.offset, pos0.line, pos0.column, result0[1]);
|
1933
2422
|
}
|
1934
2423
|
if (result0 === null) {
|
1935
|
-
pos = pos0;
|
2424
|
+
pos = clone(pos0);
|
1936
2425
|
}
|
2426
|
+
|
2427
|
+
cache[cacheKey] = {
|
2428
|
+
nextPos: clone(pos),
|
2429
|
+
result: result0
|
2430
|
+
};
|
1937
2431
|
return result0;
|
1938
2432
|
}
|
1939
2433
|
|
1940
2434
|
function parse_blockParamList() {
|
2435
|
+
var cacheKey = "blockParamList@" + pos.offset;
|
2436
|
+
var cachedResult = cache[cacheKey];
|
2437
|
+
if (cachedResult) {
|
2438
|
+
pos = clone(cachedResult.nextPos);
|
2439
|
+
return cachedResult.result;
|
2440
|
+
}
|
2441
|
+
|
1941
2442
|
var result0, result1, result2, result3, result4;
|
1942
2443
|
var pos0, pos1, pos2, pos3;
|
1943
2444
|
|
1944
|
-
pos0 = pos;
|
1945
|
-
pos1 = pos;
|
1946
|
-
pos2 = pos;
|
1947
|
-
pos3 = pos;
|
2445
|
+
pos0 = clone(pos);
|
2446
|
+
pos1 = clone(pos);
|
2447
|
+
pos2 = clone(pos);
|
2448
|
+
pos3 = clone(pos);
|
1948
2449
|
result1 = parse_ws();
|
1949
2450
|
if (result1 !== null) {
|
1950
|
-
if (input.charCodeAt(pos) === 58) {
|
2451
|
+
if (input.charCodeAt(pos.offset) === 58) {
|
1951
2452
|
result2 = ":";
|
1952
|
-
pos
|
2453
|
+
advance(pos, 1);
|
1953
2454
|
} else {
|
1954
2455
|
result2 = null;
|
1955
2456
|
if (reportFailures === 0) {
|
@@ -1964,37 +2465,37 @@ smalltalk.parser = (function(){
|
|
1964
2465
|
result1 = [result1, result2, result3, result4];
|
1965
2466
|
} else {
|
1966
2467
|
result1 = null;
|
1967
|
-
pos = pos3;
|
2468
|
+
pos = clone(pos3);
|
1968
2469
|
}
|
1969
2470
|
} else {
|
1970
2471
|
result1 = null;
|
1971
|
-
pos = pos3;
|
2472
|
+
pos = clone(pos3);
|
1972
2473
|
}
|
1973
2474
|
} else {
|
1974
2475
|
result1 = null;
|
1975
|
-
pos = pos3;
|
2476
|
+
pos = clone(pos3);
|
1976
2477
|
}
|
1977
2478
|
} else {
|
1978
2479
|
result1 = null;
|
1979
|
-
pos = pos3;
|
2480
|
+
pos = clone(pos3);
|
1980
2481
|
}
|
1981
2482
|
if (result1 !== null) {
|
1982
|
-
result1 = (function(offset, param) {return param})(pos2, result1[3]);
|
2483
|
+
result1 = (function(offset, line, column, param) {return param})(pos2.offset, pos2.line, pos2.column, result1[3]);
|
1983
2484
|
}
|
1984
2485
|
if (result1 === null) {
|
1985
|
-
pos = pos2;
|
2486
|
+
pos = clone(pos2);
|
1986
2487
|
}
|
1987
2488
|
if (result1 !== null) {
|
1988
2489
|
result0 = [];
|
1989
2490
|
while (result1 !== null) {
|
1990
2491
|
result0.push(result1);
|
1991
|
-
pos2 = pos;
|
1992
|
-
pos3 = pos;
|
2492
|
+
pos2 = clone(pos);
|
2493
|
+
pos3 = clone(pos);
|
1993
2494
|
result1 = parse_ws();
|
1994
2495
|
if (result1 !== null) {
|
1995
|
-
if (input.charCodeAt(pos) === 58) {
|
2496
|
+
if (input.charCodeAt(pos.offset) === 58) {
|
1996
2497
|
result2 = ":";
|
1997
|
-
pos
|
2498
|
+
advance(pos, 1);
|
1998
2499
|
} else {
|
1999
2500
|
result2 = null;
|
2000
2501
|
if (reportFailures === 0) {
|
@@ -2009,25 +2510,25 @@ smalltalk.parser = (function(){
|
|
2009
2510
|
result1 = [result1, result2, result3, result4];
|
2010
2511
|
} else {
|
2011
2512
|
result1 = null;
|
2012
|
-
pos = pos3;
|
2513
|
+
pos = clone(pos3);
|
2013
2514
|
}
|
2014
2515
|
} else {
|
2015
2516
|
result1 = null;
|
2016
|
-
pos = pos3;
|
2517
|
+
pos = clone(pos3);
|
2017
2518
|
}
|
2018
2519
|
} else {
|
2019
2520
|
result1 = null;
|
2020
|
-
pos = pos3;
|
2521
|
+
pos = clone(pos3);
|
2021
2522
|
}
|
2022
2523
|
} else {
|
2023
2524
|
result1 = null;
|
2024
|
-
pos = pos3;
|
2525
|
+
pos = clone(pos3);
|
2025
2526
|
}
|
2026
2527
|
if (result1 !== null) {
|
2027
|
-
result1 = (function(offset, param) {return param})(pos2, result1[3]);
|
2528
|
+
result1 = (function(offset, line, column, param) {return param})(pos2.offset, pos2.line, pos2.column, result1[3]);
|
2028
2529
|
}
|
2029
2530
|
if (result1 === null) {
|
2030
|
-
pos = pos2;
|
2531
|
+
pos = clone(pos2);
|
2031
2532
|
}
|
2032
2533
|
}
|
2033
2534
|
} else {
|
@@ -2036,9 +2537,9 @@ smalltalk.parser = (function(){
|
|
2036
2537
|
if (result0 !== null) {
|
2037
2538
|
result1 = parse_ws();
|
2038
2539
|
if (result1 !== null) {
|
2039
|
-
if (input.charCodeAt(pos) === 124) {
|
2540
|
+
if (input.charCodeAt(pos.offset) === 124) {
|
2040
2541
|
result2 = "|";
|
2041
|
-
pos
|
2542
|
+
advance(pos, 1);
|
2042
2543
|
} else {
|
2043
2544
|
result2 = null;
|
2044
2545
|
if (reportFailures === 0) {
|
@@ -2049,34 +2550,46 @@ smalltalk.parser = (function(){
|
|
2049
2550
|
result0 = [result0, result1, result2];
|
2050
2551
|
} else {
|
2051
2552
|
result0 = null;
|
2052
|
-
pos = pos1;
|
2553
|
+
pos = clone(pos1);
|
2053
2554
|
}
|
2054
2555
|
} else {
|
2055
2556
|
result0 = null;
|
2056
|
-
pos = pos1;
|
2557
|
+
pos = clone(pos1);
|
2057
2558
|
}
|
2058
2559
|
} else {
|
2059
2560
|
result0 = null;
|
2060
|
-
pos = pos1;
|
2561
|
+
pos = clone(pos1);
|
2061
2562
|
}
|
2062
2563
|
if (result0 !== null) {
|
2063
|
-
result0 = (function(offset, params) {return params})(pos0, result0[0]);
|
2564
|
+
result0 = (function(offset, line, column, params) {return params})(pos0.offset, pos0.line, pos0.column, result0[0]);
|
2064
2565
|
}
|
2065
2566
|
if (result0 === null) {
|
2066
|
-
pos = pos0;
|
2567
|
+
pos = clone(pos0);
|
2067
2568
|
}
|
2569
|
+
|
2570
|
+
cache[cacheKey] = {
|
2571
|
+
nextPos: clone(pos),
|
2572
|
+
result: result0
|
2573
|
+
};
|
2068
2574
|
return result0;
|
2069
2575
|
}
|
2070
2576
|
|
2071
2577
|
function parse_subexpression() {
|
2578
|
+
var cacheKey = "subexpression@" + pos.offset;
|
2579
|
+
var cachedResult = cache[cacheKey];
|
2580
|
+
if (cachedResult) {
|
2581
|
+
pos = clone(cachedResult.nextPos);
|
2582
|
+
return cachedResult.result;
|
2583
|
+
}
|
2584
|
+
|
2072
2585
|
var result0, result1, result2, result3, result4;
|
2073
2586
|
var pos0, pos1;
|
2074
2587
|
|
2075
|
-
pos0 = pos;
|
2076
|
-
pos1 = pos;
|
2077
|
-
if (input.charCodeAt(pos) === 40) {
|
2588
|
+
pos0 = clone(pos);
|
2589
|
+
pos1 = clone(pos);
|
2590
|
+
if (input.charCodeAt(pos.offset) === 40) {
|
2078
2591
|
result0 = "(";
|
2079
|
-
pos
|
2592
|
+
advance(pos, 1);
|
2080
2593
|
} else {
|
2081
2594
|
result0 = null;
|
2082
2595
|
if (reportFailures === 0) {
|
@@ -2090,9 +2603,9 @@ smalltalk.parser = (function(){
|
|
2090
2603
|
if (result2 !== null) {
|
2091
2604
|
result3 = parse_ws();
|
2092
2605
|
if (result3 !== null) {
|
2093
|
-
if (input.charCodeAt(pos) === 41) {
|
2606
|
+
if (input.charCodeAt(pos.offset) === 41) {
|
2094
2607
|
result4 = ")";
|
2095
|
-
pos
|
2608
|
+
advance(pos, 1);
|
2096
2609
|
} else {
|
2097
2610
|
result4 = null;
|
2098
2611
|
if (reportFailures === 0) {
|
@@ -2103,45 +2616,57 @@ smalltalk.parser = (function(){
|
|
2103
2616
|
result0 = [result0, result1, result2, result3, result4];
|
2104
2617
|
} else {
|
2105
2618
|
result0 = null;
|
2106
|
-
pos = pos1;
|
2619
|
+
pos = clone(pos1);
|
2107
2620
|
}
|
2108
2621
|
} else {
|
2109
2622
|
result0 = null;
|
2110
|
-
pos = pos1;
|
2623
|
+
pos = clone(pos1);
|
2111
2624
|
}
|
2112
2625
|
} else {
|
2113
2626
|
result0 = null;
|
2114
|
-
pos = pos1;
|
2627
|
+
pos = clone(pos1);
|
2115
2628
|
}
|
2116
2629
|
} else {
|
2117
2630
|
result0 = null;
|
2118
|
-
pos = pos1;
|
2631
|
+
pos = clone(pos1);
|
2119
2632
|
}
|
2120
2633
|
} else {
|
2121
2634
|
result0 = null;
|
2122
|
-
pos = pos1;
|
2635
|
+
pos = clone(pos1);
|
2123
2636
|
}
|
2124
2637
|
if (result0 !== null) {
|
2125
|
-
result0 = (function(offset, expression) {return expression})(pos0, result0[2]);
|
2638
|
+
result0 = (function(offset, line, column, expression) {return expression})(pos0.offset, pos0.line, pos0.column, result0[2]);
|
2126
2639
|
}
|
2127
2640
|
if (result0 === null) {
|
2128
|
-
pos = pos0;
|
2641
|
+
pos = clone(pos0);
|
2129
2642
|
}
|
2643
|
+
|
2644
|
+
cache[cacheKey] = {
|
2645
|
+
nextPos: clone(pos),
|
2646
|
+
result: result0
|
2647
|
+
};
|
2130
2648
|
return result0;
|
2131
2649
|
}
|
2132
2650
|
|
2133
2651
|
function parse_statements() {
|
2652
|
+
var cacheKey = "statements@" + pos.offset;
|
2653
|
+
var cachedResult = cache[cacheKey];
|
2654
|
+
if (cachedResult) {
|
2655
|
+
pos = clone(cachedResult.nextPos);
|
2656
|
+
return cachedResult.result;
|
2657
|
+
}
|
2658
|
+
|
2134
2659
|
var result0, result1, result2, result3, result4, result5, result6;
|
2135
2660
|
var pos0, pos1;
|
2136
2661
|
|
2137
|
-
pos0 = pos;
|
2138
|
-
pos1 = pos;
|
2662
|
+
pos0 = clone(pos);
|
2663
|
+
pos1 = clone(pos);
|
2139
2664
|
result0 = parse_ret();
|
2140
2665
|
if (result0 !== null) {
|
2141
2666
|
result1 = [];
|
2142
|
-
if (/^[.]/.test(input.charAt(pos))) {
|
2143
|
-
result2 = input.charAt(pos);
|
2144
|
-
pos
|
2667
|
+
if (/^[.]/.test(input.charAt(pos.offset))) {
|
2668
|
+
result2 = input.charAt(pos.offset);
|
2669
|
+
advance(pos, 1);
|
2145
2670
|
} else {
|
2146
2671
|
result2 = null;
|
2147
2672
|
if (reportFailures === 0) {
|
@@ -2150,9 +2675,9 @@ smalltalk.parser = (function(){
|
|
2150
2675
|
}
|
2151
2676
|
while (result2 !== null) {
|
2152
2677
|
result1.push(result2);
|
2153
|
-
if (/^[.]/.test(input.charAt(pos))) {
|
2154
|
-
result2 = input.charAt(pos);
|
2155
|
-
pos
|
2678
|
+
if (/^[.]/.test(input.charAt(pos.offset))) {
|
2679
|
+
result2 = input.charAt(pos.offset);
|
2680
|
+
advance(pos, 1);
|
2156
2681
|
} else {
|
2157
2682
|
result2 = null;
|
2158
2683
|
if (reportFailures === 0) {
|
@@ -2164,28 +2689,28 @@ smalltalk.parser = (function(){
|
|
2164
2689
|
result0 = [result0, result1];
|
2165
2690
|
} else {
|
2166
2691
|
result0 = null;
|
2167
|
-
pos = pos1;
|
2692
|
+
pos = clone(pos1);
|
2168
2693
|
}
|
2169
2694
|
} else {
|
2170
2695
|
result0 = null;
|
2171
|
-
pos = pos1;
|
2696
|
+
pos = clone(pos1);
|
2172
2697
|
}
|
2173
2698
|
if (result0 !== null) {
|
2174
|
-
result0 = (function(offset, ret) {return [ret]})(pos0, result0[0]);
|
2699
|
+
result0 = (function(offset, line, column, ret) {return [ret]})(pos0.offset, pos0.line, pos0.column, result0[0]);
|
2175
2700
|
}
|
2176
2701
|
if (result0 === null) {
|
2177
|
-
pos = pos0;
|
2702
|
+
pos = clone(pos0);
|
2178
2703
|
}
|
2179
2704
|
if (result0 === null) {
|
2180
|
-
pos0 = pos;
|
2181
|
-
pos1 = pos;
|
2705
|
+
pos0 = clone(pos);
|
2706
|
+
pos1 = clone(pos);
|
2182
2707
|
result0 = parse_expressions();
|
2183
2708
|
if (result0 !== null) {
|
2184
2709
|
result1 = parse_ws();
|
2185
2710
|
if (result1 !== null) {
|
2186
|
-
if (/^[.]/.test(input.charAt(pos))) {
|
2187
|
-
result3 = input.charAt(pos);
|
2188
|
-
pos
|
2711
|
+
if (/^[.]/.test(input.charAt(pos.offset))) {
|
2712
|
+
result3 = input.charAt(pos.offset);
|
2713
|
+
advance(pos, 1);
|
2189
2714
|
} else {
|
2190
2715
|
result3 = null;
|
2191
2716
|
if (reportFailures === 0) {
|
@@ -2196,9 +2721,9 @@ smalltalk.parser = (function(){
|
|
2196
2721
|
result2 = [];
|
2197
2722
|
while (result3 !== null) {
|
2198
2723
|
result2.push(result3);
|
2199
|
-
if (/^[.]/.test(input.charAt(pos))) {
|
2200
|
-
result3 = input.charAt(pos);
|
2201
|
-
pos
|
2724
|
+
if (/^[.]/.test(input.charAt(pos.offset))) {
|
2725
|
+
result3 = input.charAt(pos.offset);
|
2726
|
+
advance(pos, 1);
|
2202
2727
|
} else {
|
2203
2728
|
result3 = null;
|
2204
2729
|
if (reportFailures === 0) {
|
@@ -2215,9 +2740,9 @@ smalltalk.parser = (function(){
|
|
2215
2740
|
result4 = parse_ret();
|
2216
2741
|
if (result4 !== null) {
|
2217
2742
|
result5 = [];
|
2218
|
-
if (/^[.]/.test(input.charAt(pos))) {
|
2219
|
-
result6 = input.charAt(pos);
|
2220
|
-
pos
|
2743
|
+
if (/^[.]/.test(input.charAt(pos.offset))) {
|
2744
|
+
result6 = input.charAt(pos.offset);
|
2745
|
+
advance(pos, 1);
|
2221
2746
|
} else {
|
2222
2747
|
result6 = null;
|
2223
2748
|
if (reportFailures === 0) {
|
@@ -2226,9 +2751,9 @@ smalltalk.parser = (function(){
|
|
2226
2751
|
}
|
2227
2752
|
while (result6 !== null) {
|
2228
2753
|
result5.push(result6);
|
2229
|
-
if (/^[.]/.test(input.charAt(pos))) {
|
2230
|
-
result6 = input.charAt(pos);
|
2231
|
-
pos
|
2754
|
+
if (/^[.]/.test(input.charAt(pos.offset))) {
|
2755
|
+
result6 = input.charAt(pos.offset);
|
2756
|
+
advance(pos, 1);
|
2232
2757
|
} else {
|
2233
2758
|
result6 = null;
|
2234
2759
|
if (reportFailures === 0) {
|
@@ -2240,48 +2765,48 @@ smalltalk.parser = (function(){
|
|
2240
2765
|
result0 = [result0, result1, result2, result3, result4, result5];
|
2241
2766
|
} else {
|
2242
2767
|
result0 = null;
|
2243
|
-
pos = pos1;
|
2768
|
+
pos = clone(pos1);
|
2244
2769
|
}
|
2245
2770
|
} else {
|
2246
2771
|
result0 = null;
|
2247
|
-
pos = pos1;
|
2772
|
+
pos = clone(pos1);
|
2248
2773
|
}
|
2249
2774
|
} else {
|
2250
2775
|
result0 = null;
|
2251
|
-
pos = pos1;
|
2776
|
+
pos = clone(pos1);
|
2252
2777
|
}
|
2253
2778
|
} else {
|
2254
2779
|
result0 = null;
|
2255
|
-
pos = pos1;
|
2780
|
+
pos = clone(pos1);
|
2256
2781
|
}
|
2257
2782
|
} else {
|
2258
2783
|
result0 = null;
|
2259
|
-
pos = pos1;
|
2784
|
+
pos = clone(pos1);
|
2260
2785
|
}
|
2261
2786
|
} else {
|
2262
2787
|
result0 = null;
|
2263
|
-
pos = pos1;
|
2788
|
+
pos = clone(pos1);
|
2264
2789
|
}
|
2265
2790
|
if (result0 !== null) {
|
2266
|
-
result0 = (function(offset, exps, ret) {
|
2267
|
-
|
2268
|
-
|
2269
|
-
|
2270
|
-
|
2791
|
+
result0 = (function(offset, line, column, exps, ret) {
|
2792
|
+
var expressions = exps;
|
2793
|
+
expressions.push(ret);
|
2794
|
+
return expressions
|
2795
|
+
})(pos0.offset, pos0.line, pos0.column, result0[0], result0[4]);
|
2271
2796
|
}
|
2272
2797
|
if (result0 === null) {
|
2273
|
-
pos = pos0;
|
2798
|
+
pos = clone(pos0);
|
2274
2799
|
}
|
2275
2800
|
if (result0 === null) {
|
2276
|
-
pos0 = pos;
|
2277
|
-
pos1 = pos;
|
2801
|
+
pos0 = clone(pos);
|
2802
|
+
pos1 = clone(pos);
|
2278
2803
|
result0 = parse_expressions();
|
2279
2804
|
result0 = result0 !== null ? result0 : "";
|
2280
2805
|
if (result0 !== null) {
|
2281
2806
|
result1 = [];
|
2282
|
-
if (/^[.]/.test(input.charAt(pos))) {
|
2283
|
-
result2 = input.charAt(pos);
|
2284
|
-
pos
|
2807
|
+
if (/^[.]/.test(input.charAt(pos.offset))) {
|
2808
|
+
result2 = input.charAt(pos.offset);
|
2809
|
+
advance(pos, 1);
|
2285
2810
|
} else {
|
2286
2811
|
result2 = null;
|
2287
2812
|
if (reportFailures === 0) {
|
@@ -2290,9 +2815,9 @@ smalltalk.parser = (function(){
|
|
2290
2815
|
}
|
2291
2816
|
while (result2 !== null) {
|
2292
2817
|
result1.push(result2);
|
2293
|
-
if (/^[.]/.test(input.charAt(pos))) {
|
2294
|
-
result2 = input.charAt(pos);
|
2295
|
-
pos
|
2818
|
+
if (/^[.]/.test(input.charAt(pos.offset))) {
|
2819
|
+
result2 = input.charAt(pos.offset);
|
2820
|
+
advance(pos, 1);
|
2296
2821
|
} else {
|
2297
2822
|
result2 = null;
|
2298
2823
|
if (reportFailures === 0) {
|
@@ -2304,31 +2829,65 @@ smalltalk.parser = (function(){
|
|
2304
2829
|
result0 = [result0, result1];
|
2305
2830
|
} else {
|
2306
2831
|
result0 = null;
|
2307
|
-
pos = pos1;
|
2832
|
+
pos = clone(pos1);
|
2308
2833
|
}
|
2309
2834
|
} else {
|
2310
2835
|
result0 = null;
|
2311
|
-
pos = pos1;
|
2836
|
+
pos = clone(pos1);
|
2312
2837
|
}
|
2313
2838
|
if (result0 !== null) {
|
2314
|
-
result0 = (function(offset, expressions) {
|
2315
|
-
|
2316
|
-
|
2839
|
+
result0 = (function(offset, line, column, expressions) {
|
2840
|
+
return expressions || []
|
2841
|
+
})(pos0.offset, pos0.line, pos0.column, result0[0]);
|
2317
2842
|
}
|
2318
2843
|
if (result0 === null) {
|
2319
|
-
pos = pos0;
|
2844
|
+
pos = clone(pos0);
|
2320
2845
|
}
|
2321
2846
|
}
|
2322
2847
|
}
|
2848
|
+
|
2849
|
+
cache[cacheKey] = {
|
2850
|
+
nextPos: clone(pos),
|
2851
|
+
result: result0
|
2852
|
+
};
|
2323
2853
|
return result0;
|
2324
2854
|
}
|
2325
2855
|
|
2326
2856
|
function parse_sequence() {
|
2857
|
+
var cacheKey = "sequence@" + pos.offset;
|
2858
|
+
var cachedResult = cache[cacheKey];
|
2859
|
+
if (cachedResult) {
|
2860
|
+
pos = clone(cachedResult.nextPos);
|
2861
|
+
return cachedResult.result;
|
2862
|
+
}
|
2863
|
+
|
2864
|
+
var result0;
|
2865
|
+
|
2866
|
+
result0 = parse_jsStatement();
|
2867
|
+
if (result0 === null) {
|
2868
|
+
result0 = parse_stSequence();
|
2869
|
+
}
|
2870
|
+
|
2871
|
+
cache[cacheKey] = {
|
2872
|
+
nextPos: clone(pos),
|
2873
|
+
result: result0
|
2874
|
+
};
|
2875
|
+
return result0;
|
2876
|
+
}
|
2877
|
+
|
2878
|
+
function parse_stSequence() {
|
2879
|
+
var cacheKey = "stSequence@" + pos.offset;
|
2880
|
+
var cachedResult = cache[cacheKey];
|
2881
|
+
if (cachedResult) {
|
2882
|
+
pos = clone(cachedResult.nextPos);
|
2883
|
+
return cachedResult.result;
|
2884
|
+
}
|
2885
|
+
|
2327
2886
|
var result0, result1, result2, result3;
|
2328
2887
|
var pos0, pos1;
|
2329
2888
|
|
2330
|
-
pos0 = pos;
|
2331
|
-
pos1 = pos;
|
2889
|
+
pos0 = clone(pos);
|
2890
|
+
pos1 = clone(pos);
|
2332
2891
|
result0 = parse_temps();
|
2333
2892
|
result0 = result0 !== null ? result0 : "";
|
2334
2893
|
if (result0 !== null) {
|
@@ -2342,42 +2901,54 @@ smalltalk.parser = (function(){
|
|
2342
2901
|
result0 = [result0, result1, result2, result3];
|
2343
2902
|
} else {
|
2344
2903
|
result0 = null;
|
2345
|
-
pos = pos1;
|
2904
|
+
pos = clone(pos1);
|
2346
2905
|
}
|
2347
2906
|
} else {
|
2348
2907
|
result0 = null;
|
2349
|
-
pos = pos1;
|
2908
|
+
pos = clone(pos1);
|
2350
2909
|
}
|
2351
2910
|
} else {
|
2352
2911
|
result0 = null;
|
2353
|
-
pos = pos1;
|
2912
|
+
pos = clone(pos1);
|
2354
2913
|
}
|
2355
2914
|
} else {
|
2356
2915
|
result0 = null;
|
2357
|
-
pos = pos1;
|
2916
|
+
pos = clone(pos1);
|
2358
2917
|
}
|
2359
2918
|
if (result0 !== null) {
|
2360
|
-
result0 = (function(offset, temps, statements) {
|
2361
|
-
|
2362
|
-
|
2363
|
-
|
2364
|
-
|
2919
|
+
result0 = (function(offset, line, column, temps, statements) {
|
2920
|
+
return smalltalk.SequenceNode._new()
|
2921
|
+
._temps_(temps || [])
|
2922
|
+
._nodes_(statements || [])
|
2923
|
+
})(pos0.offset, pos0.line, pos0.column, result0[0], result0[2]);
|
2365
2924
|
}
|
2366
2925
|
if (result0 === null) {
|
2367
|
-
pos = pos0;
|
2926
|
+
pos = clone(pos0);
|
2368
2927
|
}
|
2928
|
+
|
2929
|
+
cache[cacheKey] = {
|
2930
|
+
nextPos: clone(pos),
|
2931
|
+
result: result0
|
2932
|
+
};
|
2369
2933
|
return result0;
|
2370
2934
|
}
|
2371
2935
|
|
2372
2936
|
function parse_block() {
|
2937
|
+
var cacheKey = "block@" + pos.offset;
|
2938
|
+
var cachedResult = cache[cacheKey];
|
2939
|
+
if (cachedResult) {
|
2940
|
+
pos = clone(cachedResult.nextPos);
|
2941
|
+
return cachedResult.result;
|
2942
|
+
}
|
2943
|
+
|
2373
2944
|
var result0, result1, result2, result3, result4, result5, result6;
|
2374
2945
|
var pos0, pos1;
|
2375
2946
|
|
2376
|
-
pos0 = pos;
|
2377
|
-
pos1 = pos;
|
2378
|
-
if (input.charCodeAt(pos) === 91) {
|
2947
|
+
pos0 = clone(pos);
|
2948
|
+
pos1 = clone(pos);
|
2949
|
+
if (input.charCodeAt(pos.offset) === 91) {
|
2379
2950
|
result0 = "[";
|
2380
|
-
pos
|
2951
|
+
advance(pos, 1);
|
2381
2952
|
} else {
|
2382
2953
|
result0 = null;
|
2383
2954
|
if (reportFailures === 0) {
|
@@ -2397,9 +2968,9 @@ smalltalk.parser = (function(){
|
|
2397
2968
|
if (result4 !== null) {
|
2398
2969
|
result5 = parse_ws();
|
2399
2970
|
if (result5 !== null) {
|
2400
|
-
if (input.charCodeAt(pos) === 93) {
|
2971
|
+
if (input.charCodeAt(pos.offset) === 93) {
|
2401
2972
|
result6 = "]";
|
2402
|
-
pos
|
2973
|
+
advance(pos, 1);
|
2403
2974
|
} else {
|
2404
2975
|
result6 = null;
|
2405
2976
|
if (reportFailures === 0) {
|
@@ -2410,46 +2981,58 @@ smalltalk.parser = (function(){
|
|
2410
2981
|
result0 = [result0, result1, result2, result3, result4, result5, result6];
|
2411
2982
|
} else {
|
2412
2983
|
result0 = null;
|
2413
|
-
pos = pos1;
|
2984
|
+
pos = clone(pos1);
|
2414
2985
|
}
|
2415
2986
|
} else {
|
2416
2987
|
result0 = null;
|
2417
|
-
pos = pos1;
|
2988
|
+
pos = clone(pos1);
|
2418
2989
|
}
|
2419
2990
|
} else {
|
2420
2991
|
result0 = null;
|
2421
|
-
pos = pos1;
|
2992
|
+
pos = clone(pos1);
|
2422
2993
|
}
|
2423
2994
|
} else {
|
2424
2995
|
result0 = null;
|
2425
|
-
pos = pos1;
|
2996
|
+
pos = clone(pos1);
|
2426
2997
|
}
|
2427
2998
|
} else {
|
2428
2999
|
result0 = null;
|
2429
|
-
pos = pos1;
|
3000
|
+
pos = clone(pos1);
|
2430
3001
|
}
|
2431
3002
|
} else {
|
2432
3003
|
result0 = null;
|
2433
|
-
pos = pos1;
|
3004
|
+
pos = clone(pos1);
|
2434
3005
|
}
|
2435
3006
|
} else {
|
2436
3007
|
result0 = null;
|
2437
|
-
pos = pos1;
|
3008
|
+
pos = clone(pos1);
|
2438
3009
|
}
|
2439
3010
|
if (result0 !== null) {
|
2440
|
-
result0 = (function(offset, params, sequence) {
|
2441
|
-
|
2442
|
-
|
2443
|
-
|
2444
|
-
|
3011
|
+
result0 = (function(offset, line, column, params, sequence) {
|
3012
|
+
return smalltalk.BlockNode._new()
|
3013
|
+
._parameters_(params || [])
|
3014
|
+
._nodes_([sequence._asBlockSequenceNode()])
|
3015
|
+
})(pos0.offset, pos0.line, pos0.column, result0[2], result0[4]);
|
2445
3016
|
}
|
2446
3017
|
if (result0 === null) {
|
2447
|
-
pos = pos0;
|
3018
|
+
pos = clone(pos0);
|
2448
3019
|
}
|
3020
|
+
|
3021
|
+
cache[cacheKey] = {
|
3022
|
+
nextPos: clone(pos),
|
3023
|
+
result: result0
|
3024
|
+
};
|
2449
3025
|
return result0;
|
2450
3026
|
}
|
2451
3027
|
|
2452
3028
|
function parse_operand() {
|
3029
|
+
var cacheKey = "operand@" + pos.offset;
|
3030
|
+
var cachedResult = cache[cacheKey];
|
3031
|
+
if (cachedResult) {
|
3032
|
+
pos = clone(cachedResult.nextPos);
|
3033
|
+
return cachedResult.result;
|
3034
|
+
}
|
3035
|
+
|
2453
3036
|
var result0;
|
2454
3037
|
|
2455
3038
|
result0 = parse_literal();
|
@@ -2459,24 +3042,36 @@ smalltalk.parser = (function(){
|
|
2459
3042
|
result0 = parse_subexpression();
|
2460
3043
|
}
|
2461
3044
|
}
|
3045
|
+
|
3046
|
+
cache[cacheKey] = {
|
3047
|
+
nextPos: clone(pos),
|
3048
|
+
result: result0
|
3049
|
+
};
|
2462
3050
|
return result0;
|
2463
3051
|
}
|
2464
3052
|
|
2465
3053
|
function parse_unaryMessage() {
|
3054
|
+
var cacheKey = "unaryMessage@" + pos.offset;
|
3055
|
+
var cachedResult = cache[cacheKey];
|
3056
|
+
if (cachedResult) {
|
3057
|
+
pos = clone(cachedResult.nextPos);
|
3058
|
+
return cachedResult.result;
|
3059
|
+
}
|
3060
|
+
|
2466
3061
|
var result0, result1, result2;
|
2467
3062
|
var pos0, pos1, pos2;
|
2468
3063
|
|
2469
|
-
pos0 = pos;
|
2470
|
-
pos1 = pos;
|
3064
|
+
pos0 = clone(pos);
|
3065
|
+
pos1 = clone(pos);
|
2471
3066
|
result0 = parse_ws();
|
2472
3067
|
if (result0 !== null) {
|
2473
3068
|
result1 = parse_identifier();
|
2474
3069
|
if (result1 !== null) {
|
2475
|
-
pos2 = pos;
|
3070
|
+
pos2 = clone(pos);
|
2476
3071
|
reportFailures++;
|
2477
|
-
if (/^[:]/.test(input.charAt(pos))) {
|
2478
|
-
result2 = input.charAt(pos);
|
2479
|
-
pos
|
3072
|
+
if (/^[:]/.test(input.charAt(pos.offset))) {
|
3073
|
+
result2 = input.charAt(pos.offset);
|
3074
|
+
advance(pos, 1);
|
2480
3075
|
} else {
|
2481
3076
|
result2 = null;
|
2482
3077
|
if (reportFailures === 0) {
|
@@ -2488,40 +3083,52 @@ smalltalk.parser = (function(){
|
|
2488
3083
|
result2 = "";
|
2489
3084
|
} else {
|
2490
3085
|
result2 = null;
|
2491
|
-
pos = pos2;
|
3086
|
+
pos = clone(pos2);
|
2492
3087
|
}
|
2493
3088
|
if (result2 !== null) {
|
2494
3089
|
result0 = [result0, result1, result2];
|
2495
3090
|
} else {
|
2496
3091
|
result0 = null;
|
2497
|
-
pos = pos1;
|
3092
|
+
pos = clone(pos1);
|
2498
3093
|
}
|
2499
3094
|
} else {
|
2500
3095
|
result0 = null;
|
2501
|
-
pos = pos1;
|
3096
|
+
pos = clone(pos1);
|
2502
3097
|
}
|
2503
3098
|
} else {
|
2504
3099
|
result0 = null;
|
2505
|
-
pos = pos1;
|
3100
|
+
pos = clone(pos1);
|
2506
3101
|
}
|
2507
3102
|
if (result0 !== null) {
|
2508
|
-
result0 = (function(offset, selector) {
|
2509
|
-
|
2510
|
-
|
2511
|
-
|
3103
|
+
result0 = (function(offset, line, column, selector) {
|
3104
|
+
return smalltalk.SendNode._new()
|
3105
|
+
._selector_(selector)
|
3106
|
+
})(pos0.offset, pos0.line, pos0.column, result0[1]);
|
2512
3107
|
}
|
2513
3108
|
if (result0 === null) {
|
2514
|
-
pos = pos0;
|
3109
|
+
pos = clone(pos0);
|
2515
3110
|
}
|
3111
|
+
|
3112
|
+
cache[cacheKey] = {
|
3113
|
+
nextPos: clone(pos),
|
3114
|
+
result: result0
|
3115
|
+
};
|
2516
3116
|
return result0;
|
2517
3117
|
}
|
2518
3118
|
|
2519
3119
|
function parse_unaryTail() {
|
3120
|
+
var cacheKey = "unaryTail@" + pos.offset;
|
3121
|
+
var cachedResult = cache[cacheKey];
|
3122
|
+
if (cachedResult) {
|
3123
|
+
pos = clone(cachedResult.nextPos);
|
3124
|
+
return cachedResult.result;
|
3125
|
+
}
|
3126
|
+
|
2520
3127
|
var result0, result1, result2, result3;
|
2521
3128
|
var pos0, pos1;
|
2522
3129
|
|
2523
|
-
pos0 = pos;
|
2524
|
-
pos1 = pos;
|
3130
|
+
pos0 = clone(pos);
|
3131
|
+
pos1 = clone(pos);
|
2525
3132
|
result0 = parse_unaryMessage();
|
2526
3133
|
if (result0 !== null) {
|
2527
3134
|
result1 = parse_ws();
|
@@ -2534,42 +3141,54 @@ smalltalk.parser = (function(){
|
|
2534
3141
|
result0 = [result0, result1, result2, result3];
|
2535
3142
|
} else {
|
2536
3143
|
result0 = null;
|
2537
|
-
pos = pos1;
|
3144
|
+
pos = clone(pos1);
|
2538
3145
|
}
|
2539
3146
|
} else {
|
2540
3147
|
result0 = null;
|
2541
|
-
pos = pos1;
|
3148
|
+
pos = clone(pos1);
|
2542
3149
|
}
|
2543
3150
|
} else {
|
2544
3151
|
result0 = null;
|
2545
|
-
pos = pos1;
|
3152
|
+
pos = clone(pos1);
|
2546
3153
|
}
|
2547
3154
|
} else {
|
2548
3155
|
result0 = null;
|
2549
|
-
pos = pos1;
|
3156
|
+
pos = clone(pos1);
|
2550
3157
|
}
|
2551
3158
|
if (result0 !== null) {
|
2552
|
-
result0 = (function(offset, message, tail) {
|
2553
|
-
|
2554
|
-
|
2555
|
-
|
2556
|
-
|
2557
|
-
|
2558
|
-
|
2559
|
-
|
3159
|
+
result0 = (function(offset, line, column, message, tail) {
|
3160
|
+
if(tail) {
|
3161
|
+
return tail._valueForReceiver_(message);
|
3162
|
+
}
|
3163
|
+
else {
|
3164
|
+
return message;
|
3165
|
+
}
|
3166
|
+
})(pos0.offset, pos0.line, pos0.column, result0[0], result0[2]);
|
2560
3167
|
}
|
2561
3168
|
if (result0 === null) {
|
2562
|
-
pos = pos0;
|
3169
|
+
pos = clone(pos0);
|
2563
3170
|
}
|
3171
|
+
|
3172
|
+
cache[cacheKey] = {
|
3173
|
+
nextPos: clone(pos),
|
3174
|
+
result: result0
|
3175
|
+
};
|
2564
3176
|
return result0;
|
2565
3177
|
}
|
2566
3178
|
|
2567
3179
|
function parse_unarySend() {
|
3180
|
+
var cacheKey = "unarySend@" + pos.offset;
|
3181
|
+
var cachedResult = cache[cacheKey];
|
3182
|
+
if (cachedResult) {
|
3183
|
+
pos = clone(cachedResult.nextPos);
|
3184
|
+
return cachedResult.result;
|
3185
|
+
}
|
3186
|
+
|
2568
3187
|
var result0, result1, result2;
|
2569
3188
|
var pos0, pos1;
|
2570
3189
|
|
2571
|
-
pos0 = pos;
|
2572
|
-
pos1 = pos;
|
3190
|
+
pos0 = clone(pos);
|
3191
|
+
pos1 = clone(pos);
|
2573
3192
|
result0 = parse_operand();
|
2574
3193
|
if (result0 !== null) {
|
2575
3194
|
result1 = parse_ws();
|
@@ -2580,38 +3199,50 @@ smalltalk.parser = (function(){
|
|
2580
3199
|
result0 = [result0, result1, result2];
|
2581
3200
|
} else {
|
2582
3201
|
result0 = null;
|
2583
|
-
pos = pos1;
|
3202
|
+
pos = clone(pos1);
|
2584
3203
|
}
|
2585
3204
|
} else {
|
2586
3205
|
result0 = null;
|
2587
|
-
pos = pos1;
|
3206
|
+
pos = clone(pos1);
|
2588
3207
|
}
|
2589
3208
|
} else {
|
2590
3209
|
result0 = null;
|
2591
|
-
pos = pos1;
|
3210
|
+
pos = clone(pos1);
|
2592
3211
|
}
|
2593
3212
|
if (result0 !== null) {
|
2594
|
-
result0 = (function(offset, receiver, tail) {
|
2595
|
-
|
2596
|
-
|
2597
|
-
|
2598
|
-
|
2599
|
-
|
2600
|
-
|
2601
|
-
|
3213
|
+
result0 = (function(offset, line, column, receiver, tail) {
|
3214
|
+
if(tail) {
|
3215
|
+
return tail._valueForReceiver_(receiver);
|
3216
|
+
}
|
3217
|
+
else {
|
3218
|
+
return receiver;
|
3219
|
+
}
|
3220
|
+
})(pos0.offset, pos0.line, pos0.column, result0[0], result0[2]);
|
2602
3221
|
}
|
2603
3222
|
if (result0 === null) {
|
2604
|
-
pos = pos0;
|
3223
|
+
pos = clone(pos0);
|
2605
3224
|
}
|
3225
|
+
|
3226
|
+
cache[cacheKey] = {
|
3227
|
+
nextPos: clone(pos),
|
3228
|
+
result: result0
|
3229
|
+
};
|
2606
3230
|
return result0;
|
2607
3231
|
}
|
2608
3232
|
|
2609
3233
|
function parse_binaryMessage() {
|
3234
|
+
var cacheKey = "binaryMessage@" + pos.offset;
|
3235
|
+
var cachedResult = cache[cacheKey];
|
3236
|
+
if (cachedResult) {
|
3237
|
+
pos = clone(cachedResult.nextPos);
|
3238
|
+
return cachedResult.result;
|
3239
|
+
}
|
3240
|
+
|
2610
3241
|
var result0, result1, result2, result3;
|
2611
3242
|
var pos0, pos1;
|
2612
3243
|
|
2613
|
-
pos0 = pos;
|
2614
|
-
pos1 = pos;
|
3244
|
+
pos0 = clone(pos);
|
3245
|
+
pos1 = clone(pos);
|
2615
3246
|
result0 = parse_ws();
|
2616
3247
|
if (result0 !== null) {
|
2617
3248
|
result1 = parse_binarySelector();
|
@@ -2626,39 +3257,51 @@ smalltalk.parser = (function(){
|
|
2626
3257
|
result0 = [result0, result1, result2, result3];
|
2627
3258
|
} else {
|
2628
3259
|
result0 = null;
|
2629
|
-
pos = pos1;
|
3260
|
+
pos = clone(pos1);
|
2630
3261
|
}
|
2631
3262
|
} else {
|
2632
3263
|
result0 = null;
|
2633
|
-
pos = pos1;
|
3264
|
+
pos = clone(pos1);
|
2634
3265
|
}
|
2635
3266
|
} else {
|
2636
3267
|
result0 = null;
|
2637
|
-
pos = pos1;
|
3268
|
+
pos = clone(pos1);
|
2638
3269
|
}
|
2639
3270
|
} else {
|
2640
3271
|
result0 = null;
|
2641
|
-
pos = pos1;
|
3272
|
+
pos = clone(pos1);
|
2642
3273
|
}
|
2643
3274
|
if (result0 !== null) {
|
2644
|
-
result0 = (function(offset, selector, arg) {
|
2645
|
-
|
2646
|
-
|
2647
|
-
|
2648
|
-
|
3275
|
+
result0 = (function(offset, line, column, selector, arg) {
|
3276
|
+
return smalltalk.SendNode._new()
|
3277
|
+
._selector_(selector)
|
3278
|
+
._arguments_([arg])
|
3279
|
+
})(pos0.offset, pos0.line, pos0.column, result0[1], result0[3]);
|
2649
3280
|
}
|
2650
3281
|
if (result0 === null) {
|
2651
|
-
pos = pos0;
|
3282
|
+
pos = clone(pos0);
|
2652
3283
|
}
|
3284
|
+
|
3285
|
+
cache[cacheKey] = {
|
3286
|
+
nextPos: clone(pos),
|
3287
|
+
result: result0
|
3288
|
+
};
|
2653
3289
|
return result0;
|
2654
3290
|
}
|
2655
3291
|
|
2656
3292
|
function parse_binaryTail() {
|
3293
|
+
var cacheKey = "binaryTail@" + pos.offset;
|
3294
|
+
var cachedResult = cache[cacheKey];
|
3295
|
+
if (cachedResult) {
|
3296
|
+
pos = clone(cachedResult.nextPos);
|
3297
|
+
return cachedResult.result;
|
3298
|
+
}
|
3299
|
+
|
2657
3300
|
var result0, result1;
|
2658
3301
|
var pos0, pos1;
|
2659
3302
|
|
2660
|
-
pos0 = pos;
|
2661
|
-
pos1 = pos;
|
3303
|
+
pos0 = clone(pos);
|
3304
|
+
pos1 = clone(pos);
|
2662
3305
|
result0 = parse_binaryMessage();
|
2663
3306
|
if (result0 !== null) {
|
2664
3307
|
result1 = parse_binaryTail();
|
@@ -2667,34 +3310,46 @@ smalltalk.parser = (function(){
|
|
2667
3310
|
result0 = [result0, result1];
|
2668
3311
|
} else {
|
2669
3312
|
result0 = null;
|
2670
|
-
pos = pos1;
|
3313
|
+
pos = clone(pos1);
|
2671
3314
|
}
|
2672
3315
|
} else {
|
2673
3316
|
result0 = null;
|
2674
|
-
pos = pos1;
|
3317
|
+
pos = clone(pos1);
|
2675
3318
|
}
|
2676
3319
|
if (result0 !== null) {
|
2677
|
-
result0 = (function(offset, message, tail) {
|
2678
|
-
|
2679
|
-
|
2680
|
-
|
2681
|
-
|
2682
|
-
|
2683
|
-
|
2684
|
-
|
3320
|
+
result0 = (function(offset, line, column, message, tail) {
|
3321
|
+
if(tail) {
|
3322
|
+
return tail._valueForReceiver_(message);
|
3323
|
+
}
|
3324
|
+
else {
|
3325
|
+
return message;
|
3326
|
+
}
|
3327
|
+
})(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]);
|
2685
3328
|
}
|
2686
3329
|
if (result0 === null) {
|
2687
|
-
pos = pos0;
|
3330
|
+
pos = clone(pos0);
|
2688
3331
|
}
|
3332
|
+
|
3333
|
+
cache[cacheKey] = {
|
3334
|
+
nextPos: clone(pos),
|
3335
|
+
result: result0
|
3336
|
+
};
|
2689
3337
|
return result0;
|
2690
3338
|
}
|
2691
3339
|
|
2692
3340
|
function parse_binarySend() {
|
3341
|
+
var cacheKey = "binarySend@" + pos.offset;
|
3342
|
+
var cachedResult = cache[cacheKey];
|
3343
|
+
if (cachedResult) {
|
3344
|
+
pos = clone(cachedResult.nextPos);
|
3345
|
+
return cachedResult.result;
|
3346
|
+
}
|
3347
|
+
|
2693
3348
|
var result0, result1;
|
2694
3349
|
var pos0, pos1;
|
2695
3350
|
|
2696
|
-
pos0 = pos;
|
2697
|
-
pos1 = pos;
|
3351
|
+
pos0 = clone(pos);
|
3352
|
+
pos1 = clone(pos);
|
2698
3353
|
result0 = parse_unarySend();
|
2699
3354
|
if (result0 !== null) {
|
2700
3355
|
result1 = parse_binaryTail();
|
@@ -2703,38 +3358,50 @@ smalltalk.parser = (function(){
|
|
2703
3358
|
result0 = [result0, result1];
|
2704
3359
|
} else {
|
2705
3360
|
result0 = null;
|
2706
|
-
pos = pos1;
|
3361
|
+
pos = clone(pos1);
|
2707
3362
|
}
|
2708
3363
|
} else {
|
2709
3364
|
result0 = null;
|
2710
|
-
pos = pos1;
|
3365
|
+
pos = clone(pos1);
|
2711
3366
|
}
|
2712
3367
|
if (result0 !== null) {
|
2713
|
-
result0 = (function(offset, receiver, tail) {
|
2714
|
-
|
2715
|
-
|
2716
|
-
|
2717
|
-
|
2718
|
-
|
2719
|
-
|
2720
|
-
|
3368
|
+
result0 = (function(offset, line, column, receiver, tail) {
|
3369
|
+
if(tail) {
|
3370
|
+
return tail._valueForReceiver_(receiver);
|
3371
|
+
}
|
3372
|
+
else {
|
3373
|
+
return receiver;
|
3374
|
+
}
|
3375
|
+
})(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]);
|
2721
3376
|
}
|
2722
3377
|
if (result0 === null) {
|
2723
|
-
pos = pos0;
|
3378
|
+
pos = clone(pos0);
|
2724
3379
|
}
|
3380
|
+
|
3381
|
+
cache[cacheKey] = {
|
3382
|
+
nextPos: clone(pos),
|
3383
|
+
result: result0
|
3384
|
+
};
|
2725
3385
|
return result0;
|
2726
3386
|
}
|
2727
3387
|
|
2728
3388
|
function parse_keywordMessage() {
|
3389
|
+
var cacheKey = "keywordMessage@" + pos.offset;
|
3390
|
+
var cachedResult = cache[cacheKey];
|
3391
|
+
if (cachedResult) {
|
3392
|
+
pos = clone(cachedResult.nextPos);
|
3393
|
+
return cachedResult.result;
|
3394
|
+
}
|
3395
|
+
|
2729
3396
|
var result0, result1, result2, result3;
|
2730
3397
|
var pos0, pos1, pos2, pos3;
|
2731
3398
|
|
2732
|
-
pos0 = pos;
|
2733
|
-
pos1 = pos;
|
3399
|
+
pos0 = clone(pos);
|
3400
|
+
pos1 = clone(pos);
|
2734
3401
|
result0 = parse_ws();
|
2735
3402
|
if (result0 !== null) {
|
2736
|
-
pos2 = pos;
|
2737
|
-
pos3 = pos;
|
3403
|
+
pos2 = clone(pos);
|
3404
|
+
pos3 = clone(pos);
|
2738
3405
|
result2 = parse_keywordPair();
|
2739
3406
|
if (result2 !== null) {
|
2740
3407
|
result3 = parse_ws();
|
@@ -2742,24 +3409,24 @@ smalltalk.parser = (function(){
|
|
2742
3409
|
result2 = [result2, result3];
|
2743
3410
|
} else {
|
2744
3411
|
result2 = null;
|
2745
|
-
pos = pos3;
|
3412
|
+
pos = clone(pos3);
|
2746
3413
|
}
|
2747
3414
|
} else {
|
2748
3415
|
result2 = null;
|
2749
|
-
pos = pos3;
|
3416
|
+
pos = clone(pos3);
|
2750
3417
|
}
|
2751
3418
|
if (result2 !== null) {
|
2752
|
-
result2 = (function(offset, pair) {return pair})(pos2, result2[0]);
|
3419
|
+
result2 = (function(offset, line, column, pair) {return pair})(pos2.offset, pos2.line, pos2.column, result2[0]);
|
2753
3420
|
}
|
2754
3421
|
if (result2 === null) {
|
2755
|
-
pos = pos2;
|
3422
|
+
pos = clone(pos2);
|
2756
3423
|
}
|
2757
3424
|
if (result2 !== null) {
|
2758
3425
|
result1 = [];
|
2759
3426
|
while (result2 !== null) {
|
2760
3427
|
result1.push(result2);
|
2761
|
-
pos2 = pos;
|
2762
|
-
pos3 = pos;
|
3428
|
+
pos2 = clone(pos);
|
3429
|
+
pos3 = clone(pos);
|
2763
3430
|
result2 = parse_keywordPair();
|
2764
3431
|
if (result2 !== null) {
|
2765
3432
|
result3 = parse_ws();
|
@@ -2767,17 +3434,17 @@ smalltalk.parser = (function(){
|
|
2767
3434
|
result2 = [result2, result3];
|
2768
3435
|
} else {
|
2769
3436
|
result2 = null;
|
2770
|
-
pos = pos3;
|
3437
|
+
pos = clone(pos3);
|
2771
3438
|
}
|
2772
3439
|
} else {
|
2773
3440
|
result2 = null;
|
2774
|
-
pos = pos3;
|
3441
|
+
pos = clone(pos3);
|
2775
3442
|
}
|
2776
3443
|
if (result2 !== null) {
|
2777
|
-
result2 = (function(offset, pair) {return pair})(pos2, result2[0]);
|
3444
|
+
result2 = (function(offset, line, column, pair) {return pair})(pos2.offset, pos2.line, pos2.column, result2[0]);
|
2778
3445
|
}
|
2779
3446
|
if (result2 === null) {
|
2780
|
-
pos = pos2;
|
3447
|
+
pos = clone(pos2);
|
2781
3448
|
}
|
2782
3449
|
}
|
2783
3450
|
} else {
|
@@ -2787,37 +3454,49 @@ smalltalk.parser = (function(){
|
|
2787
3454
|
result0 = [result0, result1];
|
2788
3455
|
} else {
|
2789
3456
|
result0 = null;
|
2790
|
-
pos = pos1;
|
3457
|
+
pos = clone(pos1);
|
2791
3458
|
}
|
2792
3459
|
} else {
|
2793
3460
|
result0 = null;
|
2794
|
-
pos = pos1;
|
3461
|
+
pos = clone(pos1);
|
2795
3462
|
}
|
2796
3463
|
if (result0 !== null) {
|
2797
|
-
result0 = (function(offset, pairs) {
|
2798
|
-
|
2799
|
-
|
2800
|
-
|
2801
|
-
|
2802
|
-
|
2803
|
-
|
2804
|
-
|
2805
|
-
|
2806
|
-
|
2807
|
-
|
3464
|
+
result0 = (function(offset, line, column, pairs) {
|
3465
|
+
var selector = [];
|
3466
|
+
var args = [];
|
3467
|
+
for(var i=0;i<pairs.length;i++) {
|
3468
|
+
selector.push(pairs[i].key);
|
3469
|
+
args.push(pairs[i].arg);
|
3470
|
+
}
|
3471
|
+
return smalltalk.SendNode._new()
|
3472
|
+
._selector_(selector.join(""))
|
3473
|
+
._arguments_(args)
|
3474
|
+
})(pos0.offset, pos0.line, pos0.column, result0[1]);
|
2808
3475
|
}
|
2809
3476
|
if (result0 === null) {
|
2810
|
-
pos = pos0;
|
3477
|
+
pos = clone(pos0);
|
2811
3478
|
}
|
3479
|
+
|
3480
|
+
cache[cacheKey] = {
|
3481
|
+
nextPos: clone(pos),
|
3482
|
+
result: result0
|
3483
|
+
};
|
2812
3484
|
return result0;
|
2813
3485
|
}
|
2814
3486
|
|
2815
3487
|
function parse_keywordSend() {
|
3488
|
+
var cacheKey = "keywordSend@" + pos.offset;
|
3489
|
+
var cachedResult = cache[cacheKey];
|
3490
|
+
if (cachedResult) {
|
3491
|
+
pos = clone(cachedResult.nextPos);
|
3492
|
+
return cachedResult.result;
|
3493
|
+
}
|
3494
|
+
|
2816
3495
|
var result0, result1;
|
2817
3496
|
var pos0, pos1;
|
2818
3497
|
|
2819
|
-
pos0 = pos;
|
2820
|
-
pos1 = pos;
|
3498
|
+
pos0 = clone(pos);
|
3499
|
+
pos1 = clone(pos);
|
2821
3500
|
result0 = parse_binarySend();
|
2822
3501
|
if (result0 !== null) {
|
2823
3502
|
result1 = parse_keywordMessage();
|
@@ -2825,24 +3504,36 @@ smalltalk.parser = (function(){
|
|
2825
3504
|
result0 = [result0, result1];
|
2826
3505
|
} else {
|
2827
3506
|
result0 = null;
|
2828
|
-
pos = pos1;
|
3507
|
+
pos = clone(pos1);
|
2829
3508
|
}
|
2830
3509
|
} else {
|
2831
3510
|
result0 = null;
|
2832
|
-
pos = pos1;
|
3511
|
+
pos = clone(pos1);
|
2833
3512
|
}
|
2834
3513
|
if (result0 !== null) {
|
2835
|
-
result0 = (function(offset, receiver, tail) {
|
2836
|
-
|
2837
|
-
|
3514
|
+
result0 = (function(offset, line, column, receiver, tail) {
|
3515
|
+
return tail._valueForReceiver_(receiver);
|
3516
|
+
})(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]);
|
2838
3517
|
}
|
2839
3518
|
if (result0 === null) {
|
2840
|
-
pos = pos0;
|
3519
|
+
pos = clone(pos0);
|
2841
3520
|
}
|
3521
|
+
|
3522
|
+
cache[cacheKey] = {
|
3523
|
+
nextPos: clone(pos),
|
3524
|
+
result: result0
|
3525
|
+
};
|
2842
3526
|
return result0;
|
2843
3527
|
}
|
2844
3528
|
|
2845
3529
|
function parse_message() {
|
3530
|
+
var cacheKey = "message@" + pos.offset;
|
3531
|
+
var cachedResult = cache[cacheKey];
|
3532
|
+
if (cachedResult) {
|
3533
|
+
pos = clone(cachedResult.nextPos);
|
3534
|
+
return cachedResult.result;
|
3535
|
+
}
|
3536
|
+
|
2846
3537
|
var result0;
|
2847
3538
|
|
2848
3539
|
result0 = parse_binaryMessage();
|
@@ -2852,15 +3543,27 @@ smalltalk.parser = (function(){
|
|
2852
3543
|
result0 = parse_keywordMessage();
|
2853
3544
|
}
|
2854
3545
|
}
|
3546
|
+
|
3547
|
+
cache[cacheKey] = {
|
3548
|
+
nextPos: clone(pos),
|
3549
|
+
result: result0
|
3550
|
+
};
|
2855
3551
|
return result0;
|
2856
3552
|
}
|
2857
3553
|
|
2858
3554
|
function parse_cascade() {
|
3555
|
+
var cacheKey = "cascade@" + pos.offset;
|
3556
|
+
var cachedResult = cache[cacheKey];
|
3557
|
+
if (cachedResult) {
|
3558
|
+
pos = clone(cachedResult.nextPos);
|
3559
|
+
return cachedResult.result;
|
3560
|
+
}
|
3561
|
+
|
2859
3562
|
var result0, result1, result2, result3, result4, result5, result6, result7;
|
2860
3563
|
var pos0, pos1, pos2, pos3;
|
2861
3564
|
|
2862
|
-
pos0 = pos;
|
2863
|
-
pos1 = pos;
|
3565
|
+
pos0 = clone(pos);
|
3566
|
+
pos1 = clone(pos);
|
2864
3567
|
result0 = parse_ws();
|
2865
3568
|
if (result0 !== null) {
|
2866
3569
|
result1 = parse_keywordSend();
|
@@ -2868,13 +3571,13 @@ smalltalk.parser = (function(){
|
|
2868
3571
|
result1 = parse_binarySend();
|
2869
3572
|
}
|
2870
3573
|
if (result1 !== null) {
|
2871
|
-
pos2 = pos;
|
2872
|
-
pos3 = pos;
|
3574
|
+
pos2 = clone(pos);
|
3575
|
+
pos3 = clone(pos);
|
2873
3576
|
result3 = parse_ws();
|
2874
3577
|
if (result3 !== null) {
|
2875
|
-
if (input.charCodeAt(pos) === 59) {
|
3578
|
+
if (input.charCodeAt(pos.offset) === 59) {
|
2876
3579
|
result4 = ";";
|
2877
|
-
pos
|
3580
|
+
advance(pos, 1);
|
2878
3581
|
} else {
|
2879
3582
|
result4 = null;
|
2880
3583
|
if (reportFailures === 0) {
|
@@ -2891,41 +3594,41 @@ smalltalk.parser = (function(){
|
|
2891
3594
|
result3 = [result3, result4, result5, result6, result7];
|
2892
3595
|
} else {
|
2893
3596
|
result3 = null;
|
2894
|
-
pos = pos3;
|
3597
|
+
pos = clone(pos3);
|
2895
3598
|
}
|
2896
3599
|
} else {
|
2897
3600
|
result3 = null;
|
2898
|
-
pos = pos3;
|
3601
|
+
pos = clone(pos3);
|
2899
3602
|
}
|
2900
3603
|
} else {
|
2901
3604
|
result3 = null;
|
2902
|
-
pos = pos3;
|
3605
|
+
pos = clone(pos3);
|
2903
3606
|
}
|
2904
3607
|
} else {
|
2905
3608
|
result3 = null;
|
2906
|
-
pos = pos3;
|
3609
|
+
pos = clone(pos3);
|
2907
3610
|
}
|
2908
3611
|
} else {
|
2909
3612
|
result3 = null;
|
2910
|
-
pos = pos3;
|
3613
|
+
pos = clone(pos3);
|
2911
3614
|
}
|
2912
3615
|
if (result3 !== null) {
|
2913
|
-
result3 = (function(offset, mess) {return mess})(pos2, result3[3]);
|
3616
|
+
result3 = (function(offset, line, column, mess) {return mess})(pos2.offset, pos2.line, pos2.column, result3[3]);
|
2914
3617
|
}
|
2915
3618
|
if (result3 === null) {
|
2916
|
-
pos = pos2;
|
3619
|
+
pos = clone(pos2);
|
2917
3620
|
}
|
2918
3621
|
if (result3 !== null) {
|
2919
3622
|
result2 = [];
|
2920
3623
|
while (result3 !== null) {
|
2921
3624
|
result2.push(result3);
|
2922
|
-
pos2 = pos;
|
2923
|
-
pos3 = pos;
|
3625
|
+
pos2 = clone(pos);
|
3626
|
+
pos3 = clone(pos);
|
2924
3627
|
result3 = parse_ws();
|
2925
3628
|
if (result3 !== null) {
|
2926
|
-
if (input.charCodeAt(pos) === 59) {
|
3629
|
+
if (input.charCodeAt(pos.offset) === 59) {
|
2927
3630
|
result4 = ";";
|
2928
|
-
pos
|
3631
|
+
advance(pos, 1);
|
2929
3632
|
} else {
|
2930
3633
|
result4 = null;
|
2931
3634
|
if (reportFailures === 0) {
|
@@ -2942,29 +3645,29 @@ smalltalk.parser = (function(){
|
|
2942
3645
|
result3 = [result3, result4, result5, result6, result7];
|
2943
3646
|
} else {
|
2944
3647
|
result3 = null;
|
2945
|
-
pos = pos3;
|
3648
|
+
pos = clone(pos3);
|
2946
3649
|
}
|
2947
3650
|
} else {
|
2948
3651
|
result3 = null;
|
2949
|
-
pos = pos3;
|
3652
|
+
pos = clone(pos3);
|
2950
3653
|
}
|
2951
3654
|
} else {
|
2952
3655
|
result3 = null;
|
2953
|
-
pos = pos3;
|
3656
|
+
pos = clone(pos3);
|
2954
3657
|
}
|
2955
3658
|
} else {
|
2956
3659
|
result3 = null;
|
2957
|
-
pos = pos3;
|
3660
|
+
pos = clone(pos3);
|
2958
3661
|
}
|
2959
3662
|
} else {
|
2960
3663
|
result3 = null;
|
2961
|
-
pos = pos3;
|
3664
|
+
pos = clone(pos3);
|
2962
3665
|
}
|
2963
3666
|
if (result3 !== null) {
|
2964
|
-
result3 = (function(offset, mess) {return mess})(pos2, result3[3]);
|
3667
|
+
result3 = (function(offset, line, column, mess) {return mess})(pos2.offset, pos2.line, pos2.column, result3[3]);
|
2965
3668
|
}
|
2966
3669
|
if (result3 === null) {
|
2967
|
-
pos = pos2;
|
3670
|
+
pos = clone(pos2);
|
2968
3671
|
}
|
2969
3672
|
}
|
2970
3673
|
} else {
|
@@ -2974,43 +3677,55 @@ smalltalk.parser = (function(){
|
|
2974
3677
|
result0 = [result0, result1, result2];
|
2975
3678
|
} else {
|
2976
3679
|
result0 = null;
|
2977
|
-
pos = pos1;
|
3680
|
+
pos = clone(pos1);
|
2978
3681
|
}
|
2979
3682
|
} else {
|
2980
3683
|
result0 = null;
|
2981
|
-
pos = pos1;
|
3684
|
+
pos = clone(pos1);
|
2982
3685
|
}
|
2983
3686
|
} else {
|
2984
3687
|
result0 = null;
|
2985
|
-
pos = pos1;
|
3688
|
+
pos = clone(pos1);
|
2986
3689
|
}
|
2987
3690
|
if (result0 !== null) {
|
2988
|
-
result0 = (function(offset, send, messages) {
|
2989
|
-
|
2990
|
-
|
2991
|
-
|
2992
|
-
|
2993
|
-
|
2994
|
-
|
2995
|
-
|
2996
|
-
|
2997
|
-
|
3691
|
+
result0 = (function(offset, line, column, send, messages) {
|
3692
|
+
var cascade = [];
|
3693
|
+
cascade.push(send);
|
3694
|
+
for(var i=0;i<messages.length;i++) {
|
3695
|
+
cascade.push(messages[i]);
|
3696
|
+
}
|
3697
|
+
return smalltalk.CascadeNode._new()
|
3698
|
+
._receiver_(send._receiver())
|
3699
|
+
._nodes_(cascade)
|
3700
|
+
})(pos0.offset, pos0.line, pos0.column, result0[1], result0[2]);
|
2998
3701
|
}
|
2999
3702
|
if (result0 === null) {
|
3000
|
-
pos = pos0;
|
3703
|
+
pos = clone(pos0);
|
3001
3704
|
}
|
3705
|
+
|
3706
|
+
cache[cacheKey] = {
|
3707
|
+
nextPos: clone(pos),
|
3708
|
+
result: result0
|
3709
|
+
};
|
3002
3710
|
return result0;
|
3003
3711
|
}
|
3004
3712
|
|
3005
3713
|
function parse_jsStatement() {
|
3714
|
+
var cacheKey = "jsStatement@" + pos.offset;
|
3715
|
+
var cachedResult = cache[cacheKey];
|
3716
|
+
if (cachedResult) {
|
3717
|
+
pos = clone(cachedResult.nextPos);
|
3718
|
+
return cachedResult.result;
|
3719
|
+
}
|
3720
|
+
|
3006
3721
|
var result0, result1, result2;
|
3007
3722
|
var pos0, pos1, pos2;
|
3008
3723
|
|
3009
|
-
pos0 = pos;
|
3010
|
-
pos1 = pos;
|
3011
|
-
if (input.charCodeAt(pos) === 60) {
|
3724
|
+
pos0 = clone(pos);
|
3725
|
+
pos1 = clone(pos);
|
3726
|
+
if (input.charCodeAt(pos.offset) === 60) {
|
3012
3727
|
result0 = "<";
|
3013
|
-
pos
|
3728
|
+
advance(pos, 1);
|
3014
3729
|
} else {
|
3015
3730
|
result0 = null;
|
3016
3731
|
if (reportFailures === 0) {
|
@@ -3019,10 +3734,10 @@ smalltalk.parser = (function(){
|
|
3019
3734
|
}
|
3020
3735
|
if (result0 !== null) {
|
3021
3736
|
result1 = [];
|
3022
|
-
pos2 = pos;
|
3023
|
-
if (input.substr(pos, 2) === ">>") {
|
3737
|
+
pos2 = clone(pos);
|
3738
|
+
if (input.substr(pos.offset, 2) === ">>") {
|
3024
3739
|
result2 = ">>";
|
3025
|
-
pos
|
3740
|
+
advance(pos, 2);
|
3026
3741
|
} else {
|
3027
3742
|
result2 = null;
|
3028
3743
|
if (reportFailures === 0) {
|
@@ -3030,15 +3745,15 @@ smalltalk.parser = (function(){
|
|
3030
3745
|
}
|
3031
3746
|
}
|
3032
3747
|
if (result2 !== null) {
|
3033
|
-
result2 = (function(offset) {return ">"})(pos2);
|
3748
|
+
result2 = (function(offset, line, column) {return ">"})(pos2.offset, pos2.line, pos2.column);
|
3034
3749
|
}
|
3035
3750
|
if (result2 === null) {
|
3036
|
-
pos = pos2;
|
3751
|
+
pos = clone(pos2);
|
3037
3752
|
}
|
3038
3753
|
if (result2 === null) {
|
3039
|
-
if (/^[^>]/.test(input.charAt(pos))) {
|
3040
|
-
result2 = input.charAt(pos);
|
3041
|
-
pos
|
3754
|
+
if (/^[^>]/.test(input.charAt(pos.offset))) {
|
3755
|
+
result2 = input.charAt(pos.offset);
|
3756
|
+
advance(pos, 1);
|
3042
3757
|
} else {
|
3043
3758
|
result2 = null;
|
3044
3759
|
if (reportFailures === 0) {
|
@@ -3048,10 +3763,10 @@ smalltalk.parser = (function(){
|
|
3048
3763
|
}
|
3049
3764
|
while (result2 !== null) {
|
3050
3765
|
result1.push(result2);
|
3051
|
-
pos2 = pos;
|
3052
|
-
if (input.substr(pos, 2) === ">>") {
|
3766
|
+
pos2 = clone(pos);
|
3767
|
+
if (input.substr(pos.offset, 2) === ">>") {
|
3053
3768
|
result2 = ">>";
|
3054
|
-
pos
|
3769
|
+
advance(pos, 2);
|
3055
3770
|
} else {
|
3056
3771
|
result2 = null;
|
3057
3772
|
if (reportFailures === 0) {
|
@@ -3059,15 +3774,15 @@ smalltalk.parser = (function(){
|
|
3059
3774
|
}
|
3060
3775
|
}
|
3061
3776
|
if (result2 !== null) {
|
3062
|
-
result2 = (function(offset) {return ">"})(pos2);
|
3777
|
+
result2 = (function(offset, line, column) {return ">"})(pos2.offset, pos2.line, pos2.column);
|
3063
3778
|
}
|
3064
3779
|
if (result2 === null) {
|
3065
|
-
pos = pos2;
|
3780
|
+
pos = clone(pos2);
|
3066
3781
|
}
|
3067
3782
|
if (result2 === null) {
|
3068
|
-
if (/^[^>]/.test(input.charAt(pos))) {
|
3069
|
-
result2 = input.charAt(pos);
|
3070
|
-
pos
|
3783
|
+
if (/^[^>]/.test(input.charAt(pos.offset))) {
|
3784
|
+
result2 = input.charAt(pos.offset);
|
3785
|
+
advance(pos, 1);
|
3071
3786
|
} else {
|
3072
3787
|
result2 = null;
|
3073
3788
|
if (reportFailures === 0) {
|
@@ -3077,9 +3792,9 @@ smalltalk.parser = (function(){
|
|
3077
3792
|
}
|
3078
3793
|
}
|
3079
3794
|
if (result1 !== null) {
|
3080
|
-
if (input.charCodeAt(pos) === 62) {
|
3795
|
+
if (input.charCodeAt(pos.offset) === 62) {
|
3081
3796
|
result2 = ">";
|
3082
|
-
pos
|
3797
|
+
advance(pos, 1);
|
3083
3798
|
} else {
|
3084
3799
|
result2 = null;
|
3085
3800
|
if (reportFailures === 0) {
|
@@ -3090,34 +3805,46 @@ smalltalk.parser = (function(){
|
|
3090
3805
|
result0 = [result0, result1, result2];
|
3091
3806
|
} else {
|
3092
3807
|
result0 = null;
|
3093
|
-
pos = pos1;
|
3808
|
+
pos = clone(pos1);
|
3094
3809
|
}
|
3095
3810
|
} else {
|
3096
3811
|
result0 = null;
|
3097
|
-
pos = pos1;
|
3812
|
+
pos = clone(pos1);
|
3098
3813
|
}
|
3099
3814
|
} else {
|
3100
3815
|
result0 = null;
|
3101
|
-
pos = pos1;
|
3816
|
+
pos = clone(pos1);
|
3102
3817
|
}
|
3103
3818
|
if (result0 !== null) {
|
3104
|
-
result0 = (function(offset, val) {
|
3105
|
-
|
3106
|
-
|
3107
|
-
|
3819
|
+
result0 = (function(offset, line, column, val) {
|
3820
|
+
return smalltalk.JSStatementNode._new()
|
3821
|
+
._source_(val.join(""))
|
3822
|
+
})(pos0.offset, pos0.line, pos0.column, result0[1]);
|
3108
3823
|
}
|
3109
3824
|
if (result0 === null) {
|
3110
|
-
pos = pos0;
|
3825
|
+
pos = clone(pos0);
|
3111
3826
|
}
|
3827
|
+
|
3828
|
+
cache[cacheKey] = {
|
3829
|
+
nextPos: clone(pos),
|
3830
|
+
result: result0
|
3831
|
+
};
|
3112
3832
|
return result0;
|
3113
3833
|
}
|
3114
3834
|
|
3115
3835
|
function parse_method() {
|
3836
|
+
var cacheKey = "method@" + pos.offset;
|
3837
|
+
var cachedResult = cache[cacheKey];
|
3838
|
+
if (cachedResult) {
|
3839
|
+
pos = clone(cachedResult.nextPos);
|
3840
|
+
return cachedResult.result;
|
3841
|
+
}
|
3842
|
+
|
3116
3843
|
var result0, result1, result2, result3, result4;
|
3117
3844
|
var pos0, pos1;
|
3118
3845
|
|
3119
|
-
pos0 = pos;
|
3120
|
-
pos1 = pos;
|
3846
|
+
pos0 = clone(pos);
|
3847
|
+
pos1 = clone(pos);
|
3121
3848
|
result0 = parse_ws();
|
3122
3849
|
if (result0 !== null) {
|
3123
3850
|
result1 = parse_keywordPattern();
|
@@ -3138,35 +3865,40 @@ smalltalk.parser = (function(){
|
|
3138
3865
|
result0 = [result0, result1, result2, result3, result4];
|
3139
3866
|
} else {
|
3140
3867
|
result0 = null;
|
3141
|
-
pos = pos1;
|
3868
|
+
pos = clone(pos1);
|
3142
3869
|
}
|
3143
3870
|
} else {
|
3144
3871
|
result0 = null;
|
3145
|
-
pos = pos1;
|
3872
|
+
pos = clone(pos1);
|
3146
3873
|
}
|
3147
3874
|
} else {
|
3148
3875
|
result0 = null;
|
3149
|
-
pos = pos1;
|
3876
|
+
pos = clone(pos1);
|
3150
3877
|
}
|
3151
3878
|
} else {
|
3152
3879
|
result0 = null;
|
3153
|
-
pos = pos1;
|
3880
|
+
pos = clone(pos1);
|
3154
3881
|
}
|
3155
3882
|
} else {
|
3156
3883
|
result0 = null;
|
3157
|
-
pos = pos1;
|
3884
|
+
pos = clone(pos1);
|
3158
3885
|
}
|
3159
3886
|
if (result0 !== null) {
|
3160
|
-
result0 = (function(offset, pattern, sequence) {
|
3161
|
-
|
3162
|
-
|
3163
|
-
|
3164
|
-
|
3165
|
-
|
3887
|
+
result0 = (function(offset, line, column, pattern, sequence) {
|
3888
|
+
return smalltalk.MethodNode._new()
|
3889
|
+
._selector_(pattern[0])
|
3890
|
+
._arguments_(pattern[1])
|
3891
|
+
._nodes_([sequence])
|
3892
|
+
})(pos0.offset, pos0.line, pos0.column, result0[1], result0[3]);
|
3166
3893
|
}
|
3167
3894
|
if (result0 === null) {
|
3168
|
-
pos = pos0;
|
3895
|
+
pos = clone(pos0);
|
3169
3896
|
}
|
3897
|
+
|
3898
|
+
cache[cacheKey] = {
|
3899
|
+
nextPos: clone(pos),
|
3900
|
+
result: result0
|
3901
|
+
};
|
3170
3902
|
return result0;
|
3171
3903
|
}
|
3172
3904
|
|
@@ -3185,36 +3917,6 @@ smalltalk.parser = (function(){
|
|
3185
3917
|
return cleanExpected;
|
3186
3918
|
}
|
3187
3919
|
|
3188
|
-
function computeErrorPosition() {
|
3189
|
-
/*
|
3190
|
-
* The first idea was to use |String.split| to break the input up to the
|
3191
|
-
* error position along newlines and derive the line and column from
|
3192
|
-
* there. However IE's |split| implementation is so broken that it was
|
3193
|
-
* enough to prevent it.
|
3194
|
-
*/
|
3195
|
-
|
3196
|
-
var line = 1;
|
3197
|
-
var column = 1;
|
3198
|
-
var seenCR = false;
|
3199
|
-
|
3200
|
-
for (var i = 0; i < Math.max(pos, rightmostFailuresPos); i++) {
|
3201
|
-
var ch = input.charAt(i);
|
3202
|
-
if (ch === "\n") {
|
3203
|
-
if (!seenCR) { line++; }
|
3204
|
-
column = 1;
|
3205
|
-
seenCR = false;
|
3206
|
-
} else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") {
|
3207
|
-
line++;
|
3208
|
-
column = 1;
|
3209
|
-
seenCR = true;
|
3210
|
-
} else {
|
3211
|
-
column++;
|
3212
|
-
seenCR = false;
|
3213
|
-
}
|
3214
|
-
}
|
3215
|
-
|
3216
|
-
return { line: line, column: column };
|
3217
|
-
}
|
3218
3920
|
|
3219
3921
|
|
3220
3922
|
var result = parseFunctions[startRule]();
|
@@ -3225,28 +3927,28 @@ smalltalk.parser = (function(){
|
|
3225
3927
|
* 1. The parser successfully parsed the whole input.
|
3226
3928
|
*
|
3227
3929
|
* - |result !== null|
|
3228
|
-
* - |pos === input.length|
|
3930
|
+
* - |pos.offset === input.length|
|
3229
3931
|
* - |rightmostFailuresExpected| may or may not contain something
|
3230
3932
|
*
|
3231
3933
|
* 2. The parser successfully parsed only a part of the input.
|
3232
3934
|
*
|
3233
3935
|
* - |result !== null|
|
3234
|
-
* - |pos < input.length|
|
3936
|
+
* - |pos.offset < input.length|
|
3235
3937
|
* - |rightmostFailuresExpected| may or may not contain something
|
3236
3938
|
*
|
3237
3939
|
* 3. The parser did not successfully parse any part of the input.
|
3238
3940
|
*
|
3239
3941
|
* - |result === null|
|
3240
|
-
* - |pos === 0|
|
3942
|
+
* - |pos.offset === 0|
|
3241
3943
|
* - |rightmostFailuresExpected| contains at least one failure
|
3242
3944
|
*
|
3243
3945
|
* All code following this comment (including called functions) must
|
3244
3946
|
* handle these states.
|
3245
3947
|
*/
|
3246
|
-
if (result === null || pos !== input.length) {
|
3247
|
-
var offset = Math.max(pos, rightmostFailuresPos);
|
3948
|
+
if (result === null || pos.offset !== input.length) {
|
3949
|
+
var offset = Math.max(pos.offset, rightmostFailuresPos.offset);
|
3248
3950
|
var found = offset < input.length ? input.charAt(offset) : null;
|
3249
|
-
var errorPosition =
|
3951
|
+
var errorPosition = pos.offset > rightmostFailuresPos.offset ? pos : rightmostFailuresPos;
|
3250
3952
|
|
3251
3953
|
throw new this.SyntaxError(
|
3252
3954
|
cleanupExpected(rightmostFailuresExpected),
|