resin 0.0.1 → 0.0.2
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/images/amber.svg +706 -0
 - data/amber/js/Canvas.deploy.js +1311 -400
 - data/amber/js/Canvas.js +1750 -424
 - data/amber/js/Compiler.deploy.js +615 -615
 - data/amber/js/Compiler.js +1367 -1367
 - data/amber/js/IDE.deploy.js +1381 -1345
 - data/amber/js/IDE.js +1949 -1903
 - data/amber/js/Kernel-Announcements.deploy.js +37 -37
 - data/amber/js/Kernel-Announcements.js +52 -52
 - data/amber/js/Kernel-Collections.deploy.js +961 -950
 - data/amber/js/Kernel-Collections.js +2064 -2053
 - data/amber/js/Kernel-Methods.deploy.js +323 -260
 - data/amber/js/Kernel-Methods.js +395 -327
 - data/amber/js/Kernel-Objects.deploy.js +1846 -1104
 - data/amber/js/Kernel-Objects.js +2142 -1194
 - data/amber/js/boot.js +44 -29
 - data/amber/js/parser.js +234 -17
 - data/amber/js/parser.pegjs +9 -6
 - data/amber/st/Canvas.st +474 -146
 - data/amber/st/Compiler.st +418 -417
 - data/amber/st/IDE.st +803 -772
 - data/amber/st/Kernel-Announcements.st +27 -27
 - data/amber/st/Kernel-Collections.st +289 -268
 - data/amber/st/Kernel-Methods.st +104 -100
 - data/amber/st/Kernel-Objects.st +277 -80
 - metadata +18 -17
 
    
        data/amber/js/boot.js
    CHANGED
    
    | 
         @@ -48,9 +48,9 @@ if (typeof console === "undefined") { 
     | 
|
| 
       48 
48 
     | 
    
         | 
| 
       49 
49 
     | 
    
         
             
            /* Smalltalk constructors definition */
         
     | 
| 
       50 
50 
     | 
    
         | 
| 
       51 
     | 
    
         
            -
            function SmalltalkObject(){} 
     | 
| 
      
 51 
     | 
    
         
            +
            function SmalltalkObject(){}
         
     | 
| 
       52 
52 
     | 
    
         
             
            function SmalltalkBehavior(){};
         
     | 
| 
       53 
     | 
    
         
            -
            function SmalltalkClass(){} 
     | 
| 
      
 53 
     | 
    
         
            +
            function SmalltalkClass(){}
         
     | 
| 
       54 
54 
     | 
    
         
             
            function SmalltalkPackage(){};
         
     | 
| 
       55 
55 
     | 
    
         
             
            function SmalltalkMetaclass(){
         
     | 
| 
       56 
56 
     | 
    
         
             
            	this.meta = true;
         
     | 
| 
         @@ -133,6 +133,7 @@ function Smalltalk(){ 
     | 
|
| 
       133 
133 
     | 
    
         
             
            		that.fn = spec.fn || function(){};
         
     | 
| 
       134 
134 
     | 
    
         
             
            		that.superclass = spec.superclass;
         
     | 
| 
       135 
135 
     | 
    
         
             
            		that.iVarNames = spec.iVarNames || [];
         
     | 
| 
      
 136 
     | 
    
         
            +
                    that.toString = function() {return 'Smalltalk ' + that.className};
         
     | 
| 
       136 
137 
     | 
    
         
             
            		if(that.superclass) {
         
     | 
| 
       137 
138 
     | 
    
         
             
            			that.klass.superclass = that.superclass.klass;
         
     | 
| 
       138 
139 
     | 
    
         
             
            		}
         
     | 
| 
         @@ -246,7 +247,7 @@ function Smalltalk(){ 
     | 
|
| 
       246 
247 
     | 
    
         
             
            	/* Create a new class wrapping a JavaScript constructor, and add it to the 
         
     | 
| 
       247 
248 
     | 
    
         
             
            	   global smalltalk object. Package is lazily created if it does not exist with given name. */
         
     | 
| 
       248 
249 
     | 
    
         | 
| 
       249 
     | 
    
         
            -
            	st. 
     | 
| 
      
 250 
     | 
    
         
            +
            	st.wrapClassName = function(className, pkgName, fn, superclass) {
         
     | 
| 
       250 
251 
     | 
    
         
             
            		var pkg = st.addPackage(pkgName);
         
     | 
| 
       251 
252 
     | 
    
         
             
            		st[className] = klass({
         
     | 
| 
       252 
253 
     | 
    
         
             
            			className:  className, 
         
     | 
| 
         @@ -256,6 +257,11 @@ function Smalltalk(){ 
     | 
|
| 
       256 
257 
     | 
    
         
             
            		});
         
     | 
| 
       257 
258 
     | 
    
         
             
            	};
         
     | 
| 
       258 
259 
     | 
    
         | 
| 
      
 260 
     | 
    
         
            +
                /* Create an alias for an existing class */
         
     | 
| 
      
 261 
     | 
    
         
            +
                st.alias = function(klass, alias) {
         
     | 
| 
      
 262 
     | 
    
         
            +
                    st[alias] = klass;
         
     | 
| 
      
 263 
     | 
    
         
            +
                }
         
     | 
| 
      
 264 
     | 
    
         
            +
             
     | 
| 
       259 
265 
     | 
    
         
             
            	/* Add a package to the smalltalk.packages object, creating a new one if needed.
         
     | 
| 
       260 
266 
     | 
    
         
             
            	   If pkgName is null or empty we return nil, which is an allowed package for a class.
         
     | 
| 
       261 
267 
     | 
    
         
             
            	   If package already exists we still update the properties of it. */
         
     | 
| 
         @@ -390,6 +396,10 @@ function Smalltalk(){ 
     | 
|
| 
       390 
396 
     | 
    
         
             
            	/* Call a method of a JS object, or answer a property if it exists.
         
     | 
| 
       391 
397 
     | 
    
         
             
            	   Else try wrapping a JSObjectProxy around the receiver.
         
     | 
| 
       392 
398 
     | 
    
         | 
| 
      
 399 
     | 
    
         
            +
                   If the object property is a function, then call it, except if it starts with
         
     | 
| 
      
 400 
     | 
    
         
            +
                   an uppercase character (we probably want to answer the function itself in this 
         
     | 
| 
      
 401 
     | 
    
         
            +
                   case and send it #new from Amber).
         
     | 
| 
      
 402 
     | 
    
         
            +
             
     | 
| 
       393 
403 
     | 
    
         
             
            	   Converts keyword-based selectors by using the first
         
     | 
| 
       394 
404 
     | 
    
         
             
            	   keyword only, but keeping all message arguments.
         
     | 
| 
       395 
405 
     | 
    
         | 
| 
         @@ -399,14 +409,14 @@ function Smalltalk(){ 
     | 
|
| 
       399 
409 
     | 
    
         
             
            	function callJavaScriptMethod(receiver, selector, args) {
         
     | 
| 
       400 
410 
     | 
    
         
             
            		var jsSelector = selector._asJavaScriptSelector();
         
     | 
| 
       401 
411 
     | 
    
         
             
            		var jsProperty = receiver[jsSelector];
         
     | 
| 
       402 
     | 
    
         
            -
            		if(typeof jsProperty === "function") {
         
     | 
| 
      
 412 
     | 
    
         
            +
            		if(typeof jsProperty === "function" && !/^[A-Z]/.test(jsSelector)) {
         
     | 
| 
       403 
413 
     | 
    
         
             
            			return jsProperty.apply(receiver, args);
         
     | 
| 
       404 
414 
     | 
    
         
             
            		} else if(jsProperty !== undefined) {
         
     | 
| 
       405 
415 
     | 
    
         
             
            			if(args[0]) {
         
     | 
| 
       406 
416 
     | 
    
         
             
            				receiver[jsSelector] = args[0];
         
     | 
| 
       407 
417 
     | 
    
         
             
            				return nil;
         
     | 
| 
       408 
418 
     | 
    
         
             
            			} else {
         
     | 
| 
       409 
     | 
    
         
            -
            				return jsProperty
         
     | 
| 
      
 419 
     | 
    
         
            +
            				return jsProperty;
         
     | 
| 
       410 
420 
     | 
    
         
             
            			}
         
     | 
| 
       411 
421 
     | 
    
         
             
            		}
         
     | 
| 
       412 
422 
     | 
    
         | 
| 
         @@ -556,32 +566,37 @@ if(this.jQuery) { 
     | 
|
| 
       556 
566 
     | 
    
         
             
            /****************************************************************************************/
         
     | 
| 
       557 
567 
     | 
    
         | 
| 
       558 
568 
     | 
    
         | 
| 
       559 
     | 
    
         
            -
            /* Base classes  
     | 
| 
      
 569 
     | 
    
         
            +
            /* Base classes wrapping. If you edit this part, do not forget to set the superclass of the
         
     | 
| 
       560 
570 
     | 
    
         
             
               object metaclass to Class after the definition of Object */
         
     | 
| 
       561 
571 
     | 
    
         | 
| 
       562 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       563 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       564 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       565 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       566 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       567 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       568 
     | 
    
         
            -
            smalltalk. 
     | 
| 
      
 572 
     | 
    
         
            +
            smalltalk.wrapClassName("Object", "Kernel", SmalltalkObject);
         
     | 
| 
      
 573 
     | 
    
         
            +
            smalltalk.wrapClassName("Smalltalk", "Kernel", Smalltalk, smalltalk.Object);
         
     | 
| 
      
 574 
     | 
    
         
            +
            smalltalk.wrapClassName("Package", "Kernel", SmalltalkPackage, smalltalk.Object);
         
     | 
| 
      
 575 
     | 
    
         
            +
            smalltalk.wrapClassName("Behavior", "Kernel", SmalltalkBehavior, smalltalk.Object);
         
     | 
| 
      
 576 
     | 
    
         
            +
            smalltalk.wrapClassName("Class", "Kernel", SmalltalkClass, smalltalk.Behavior);
         
     | 
| 
      
 577 
     | 
    
         
            +
            smalltalk.wrapClassName("Metaclass", "Kernel", SmalltalkMetaclass, smalltalk.Behavior);
         
     | 
| 
      
 578 
     | 
    
         
            +
            smalltalk.wrapClassName("CompiledMethod", "Kernel", SmalltalkMethod, smalltalk.Object);
         
     | 
| 
       569 
579 
     | 
    
         | 
| 
       570 
580 
     | 
    
         
             
            smalltalk.Object.klass.superclass = smalltalk.Class;
         
     | 
| 
       571 
581 
     | 
    
         | 
| 
       572 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       573 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       574 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       575 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       576 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       577 
     | 
    
         
            -
             
     | 
| 
       578 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       579 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       580 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       581 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       582 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       583 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       584 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       585 
     | 
    
         
            -
             
     | 
| 
       586 
     | 
    
         
            -
            smalltalk. 
     | 
| 
       587 
     | 
    
         
            -
            smalltalk. 
     | 
| 
      
 582 
     | 
    
         
            +
            smalltalk.wrapClassName("Number", "Kernel", Number, smalltalk.Object);
         
     | 
| 
      
 583 
     | 
    
         
            +
            smalltalk.wrapClassName("BlockClosure", "Kernel", Function, smalltalk.Object);
         
     | 
| 
      
 584 
     | 
    
         
            +
            smalltalk.wrapClassName("Boolean", "Kernel", Boolean, smalltalk.Object);
         
     | 
| 
      
 585 
     | 
    
         
            +
            smalltalk.wrapClassName("Date", "Kernel", Date, smalltalk.Object);
         
     | 
| 
      
 586 
     | 
    
         
            +
            smalltalk.wrapClassName("UndefinedObject", "Kernel", SmalltalkNil, smalltalk.Object);
         
     | 
| 
      
 587 
     | 
    
         
            +
             
     | 
| 
      
 588 
     | 
    
         
            +
            smalltalk.wrapClassName("Collection", "Kernel", null, smalltalk.Object);
         
     | 
| 
      
 589 
     | 
    
         
            +
            smalltalk.wrapClassName("SequenceableCollection", "Kernel", null, smalltalk.Collection);
         
     | 
| 
      
 590 
     | 
    
         
            +
            smalltalk.wrapClassName("CharacterArray", "Kernel", null, smalltalk.SequenceableCollection);
         
     | 
| 
      
 591 
     | 
    
         
            +
            smalltalk.wrapClassName("String", "Kernel", String, smalltalk.CharacterArray);
         
     | 
| 
      
 592 
     | 
    
         
            +
            smalltalk.wrapClassName("Symbol", "Kernel", SmalltalkSymbol, smalltalk.CharacterArray);
         
     | 
| 
      
 593 
     | 
    
         
            +
            smalltalk.wrapClassName("Array", "Kernel", Array, smalltalk.SequenceableCollection);
         
     | 
| 
      
 594 
     | 
    
         
            +
            smalltalk.wrapClassName("RegularExpression", "Kernel", RegExp, smalltalk.String);
         
     | 
| 
      
 595 
     | 
    
         
            +
             
     | 
| 
      
 596 
     | 
    
         
            +
            smalltalk.wrapClassName("Error", "Kernel", Error, smalltalk.Object);
         
     | 
| 
      
 597 
     | 
    
         
            +
            smalltalk.wrapClassName("MethodContext", "Kernel", SmalltalkMethodContext, smalltalk.Object);
         
     | 
| 
      
 598 
     | 
    
         
            +
             
     | 
| 
      
 599 
     | 
    
         
            +
            /* Alias definitions */
         
     | 
| 
      
 600 
     | 
    
         
            +
             
     | 
| 
      
 601 
     | 
    
         
            +
            smalltalk.alias(smalltalk.Array, "OrderedCollection");
         
     | 
| 
      
 602 
     | 
    
         
            +
            smalltalk.alias(smalltalk.Date, "Time");
         
     | 
    
        data/amber/js/parser.js
    CHANGED
    
    | 
         @@ -56,6 +56,7 @@ smalltalk.parser = (function(){ 
     | 
|
| 
       56 
56 
     | 
    
         
             
                    "unaryPattern": parse_unaryPattern,
         
     | 
| 
       57 
57 
     | 
    
         
             
                    "unarySend": parse_unarySend,
         
     | 
| 
       58 
58 
     | 
    
         
             
                    "unaryTail": parse_unaryTail,
         
     | 
| 
      
 59 
     | 
    
         
            +
                    "varIdentifier": parse_varIdentifier,
         
     | 
| 
       59 
60 
     | 
    
         
             
                    "variable": parse_variable,
         
     | 
| 
       60 
61 
     | 
    
         
             
                    "ws": parse_ws
         
     | 
| 
       61 
62 
     | 
    
         
             
                  };
         
     | 
| 
         @@ -368,6 +369,78 @@ smalltalk.parser = (function(){ 
     | 
|
| 
       368 
369 
     | 
    
         
             
                    }
         
     | 
| 
       369 
370 
     | 
    
         | 
| 
       370 
371 
     | 
    
         | 
| 
      
 372 
     | 
    
         
            +
                    var savedPos0 = pos;
         
     | 
| 
      
 373 
     | 
    
         
            +
                    var savedPos1 = pos;
         
     | 
| 
      
 374 
     | 
    
         
            +
                    if (input.substr(pos).match(/^[a-zA-Z]/) !== null) {
         
     | 
| 
      
 375 
     | 
    
         
            +
                      var result3 = input.charAt(pos);
         
     | 
| 
      
 376 
     | 
    
         
            +
                      pos++;
         
     | 
| 
      
 377 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 378 
     | 
    
         
            +
                      var result3 = null;
         
     | 
| 
      
 379 
     | 
    
         
            +
                      if (reportMatchFailures) {
         
     | 
| 
      
 380 
     | 
    
         
            +
                        matchFailed("[a-zA-Z]");
         
     | 
| 
      
 381 
     | 
    
         
            +
                      }
         
     | 
| 
      
 382 
     | 
    
         
            +
                    }
         
     | 
| 
      
 383 
     | 
    
         
            +
                    if (result3 !== null) {
         
     | 
| 
      
 384 
     | 
    
         
            +
                      var result4 = [];
         
     | 
| 
      
 385 
     | 
    
         
            +
                      if (input.substr(pos).match(/^[a-zA-Z0-9]/) !== null) {
         
     | 
| 
      
 386 
     | 
    
         
            +
                        var result5 = input.charAt(pos);
         
     | 
| 
      
 387 
     | 
    
         
            +
                        pos++;
         
     | 
| 
      
 388 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 389 
     | 
    
         
            +
                        var result5 = null;
         
     | 
| 
      
 390 
     | 
    
         
            +
                        if (reportMatchFailures) {
         
     | 
| 
      
 391 
     | 
    
         
            +
                          matchFailed("[a-zA-Z0-9]");
         
     | 
| 
      
 392 
     | 
    
         
            +
                        }
         
     | 
| 
      
 393 
     | 
    
         
            +
                      }
         
     | 
| 
      
 394 
     | 
    
         
            +
                      while (result5 !== null) {
         
     | 
| 
      
 395 
     | 
    
         
            +
                        result4.push(result5);
         
     | 
| 
      
 396 
     | 
    
         
            +
                        if (input.substr(pos).match(/^[a-zA-Z0-9]/) !== null) {
         
     | 
| 
      
 397 
     | 
    
         
            +
                          var result5 = input.charAt(pos);
         
     | 
| 
      
 398 
     | 
    
         
            +
                          pos++;
         
     | 
| 
      
 399 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 400 
     | 
    
         
            +
                          var result5 = null;
         
     | 
| 
      
 401 
     | 
    
         
            +
                          if (reportMatchFailures) {
         
     | 
| 
      
 402 
     | 
    
         
            +
                            matchFailed("[a-zA-Z0-9]");
         
     | 
| 
      
 403 
     | 
    
         
            +
                          }
         
     | 
| 
      
 404 
     | 
    
         
            +
                        }
         
     | 
| 
      
 405 
     | 
    
         
            +
                      }
         
     | 
| 
      
 406 
     | 
    
         
            +
                      if (result4 !== null) {
         
     | 
| 
      
 407 
     | 
    
         
            +
                        var result1 = [result3, result4];
         
     | 
| 
      
 408 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 409 
     | 
    
         
            +
                        var result1 = null;
         
     | 
| 
      
 410 
     | 
    
         
            +
                        pos = savedPos1;
         
     | 
| 
      
 411 
     | 
    
         
            +
                      }
         
     | 
| 
      
 412 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 413 
     | 
    
         
            +
                      var result1 = null;
         
     | 
| 
      
 414 
     | 
    
         
            +
                      pos = savedPos1;
         
     | 
| 
      
 415 
     | 
    
         
            +
                    }
         
     | 
| 
      
 416 
     | 
    
         
            +
                    var result2 = result1 !== null
         
     | 
| 
      
 417 
     | 
    
         
            +
                      ? (function(first, others) {return first + others.join("")})(result1[0], result1[1])
         
     | 
| 
      
 418 
     | 
    
         
            +
                      : null;
         
     | 
| 
      
 419 
     | 
    
         
            +
                    if (result2 !== null) {
         
     | 
| 
      
 420 
     | 
    
         
            +
                      var result0 = result2;
         
     | 
| 
      
 421 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 422 
     | 
    
         
            +
                      var result0 = null;
         
     | 
| 
      
 423 
     | 
    
         
            +
                      pos = savedPos0;
         
     | 
| 
      
 424 
     | 
    
         
            +
                    }
         
     | 
| 
      
 425 
     | 
    
         
            +
                    
         
     | 
| 
      
 426 
     | 
    
         
            +
                    
         
     | 
| 
      
 427 
     | 
    
         
            +
                    
         
     | 
| 
      
 428 
     | 
    
         
            +
                    cache[cacheKey] = {
         
     | 
| 
      
 429 
     | 
    
         
            +
                      nextPos: pos,
         
     | 
| 
      
 430 
     | 
    
         
            +
                      result:  result0
         
     | 
| 
      
 431 
     | 
    
         
            +
                    };
         
     | 
| 
      
 432 
     | 
    
         
            +
                    return result0;
         
     | 
| 
      
 433 
     | 
    
         
            +
                  }
         
     | 
| 
      
 434 
     | 
    
         
            +
                  
         
     | 
| 
      
 435 
     | 
    
         
            +
                  function parse_varIdentifier() {
         
     | 
| 
      
 436 
     | 
    
         
            +
                    var cacheKey = 'varIdentifier@' + pos;
         
     | 
| 
      
 437 
     | 
    
         
            +
                    var cachedResult = cache[cacheKey];
         
     | 
| 
      
 438 
     | 
    
         
            +
                    if (cachedResult) {
         
     | 
| 
      
 439 
     | 
    
         
            +
                      pos = cachedResult.nextPos;
         
     | 
| 
      
 440 
     | 
    
         
            +
                      return cachedResult.result;
         
     | 
| 
      
 441 
     | 
    
         
            +
                    }
         
     | 
| 
      
 442 
     | 
    
         
            +
                    
         
     | 
| 
      
 443 
     | 
    
         
            +
                    
         
     | 
| 
       371 
444 
     | 
    
         
             
                    var savedPos0 = pos;
         
     | 
| 
       372 
445 
     | 
    
         
             
                    var savedPos1 = pos;
         
     | 
| 
       373 
446 
     | 
    
         
             
                    if (input.substr(pos).match(/^[a-z]/) !== null) {
         
     | 
| 
         @@ -721,25 +794,119 @@ smalltalk.parser = (function(){ 
     | 
|
| 
       721 
794 
     | 
    
         
             
                    }
         
     | 
| 
       722 
795 
     | 
    
         
             
                    if (result3 !== null) {
         
     | 
| 
       723 
796 
     | 
    
         
             
                      var result4 = [];
         
     | 
| 
       724 
     | 
    
         
            -
                       
     | 
| 
       725 
     | 
    
         
            -
             
     | 
| 
      
 797 
     | 
    
         
            +
                      var savedPos3 = pos;
         
     | 
| 
      
 798 
     | 
    
         
            +
                      if (input.substr(pos).match(/^[a-zA-Z0-9:]/) !== null) {
         
     | 
| 
      
 799 
     | 
    
         
            +
                        var result12 = input.charAt(pos);
         
     | 
| 
       726 
800 
     | 
    
         
             
                        pos++;
         
     | 
| 
       727 
801 
     | 
    
         
             
                      } else {
         
     | 
| 
       728 
     | 
    
         
            -
                        var  
     | 
| 
      
 802 
     | 
    
         
            +
                        var result12 = null;
         
     | 
| 
       729 
803 
     | 
    
         
             
                        if (reportMatchFailures) {
         
     | 
| 
       730 
     | 
    
         
            -
                          matchFailed("[a-zA-Z0-9]");
         
     | 
| 
      
 804 
     | 
    
         
            +
                          matchFailed("[a-zA-Z0-9:]");
         
     | 
| 
       731 
805 
     | 
    
         
             
                        }
         
     | 
| 
       732 
806 
     | 
    
         
             
                      }
         
     | 
| 
      
 807 
     | 
    
         
            +
                      if (result12 !== null) {
         
     | 
| 
      
 808 
     | 
    
         
            +
                        var result10 = [];
         
     | 
| 
      
 809 
     | 
    
         
            +
                        while (result12 !== null) {
         
     | 
| 
      
 810 
     | 
    
         
            +
                          result10.push(result12);
         
     | 
| 
      
 811 
     | 
    
         
            +
                          if (input.substr(pos).match(/^[a-zA-Z0-9:]/) !== null) {
         
     | 
| 
      
 812 
     | 
    
         
            +
                            var result12 = input.charAt(pos);
         
     | 
| 
      
 813 
     | 
    
         
            +
                            pos++;
         
     | 
| 
      
 814 
     | 
    
         
            +
                          } else {
         
     | 
| 
      
 815 
     | 
    
         
            +
                            var result12 = null;
         
     | 
| 
      
 816 
     | 
    
         
            +
                            if (reportMatchFailures) {
         
     | 
| 
      
 817 
     | 
    
         
            +
                              matchFailed("[a-zA-Z0-9:]");
         
     | 
| 
      
 818 
     | 
    
         
            +
                            }
         
     | 
| 
      
 819 
     | 
    
         
            +
                          }
         
     | 
| 
      
 820 
     | 
    
         
            +
                        }
         
     | 
| 
      
 821 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 822 
     | 
    
         
            +
                        var result10 = null;
         
     | 
| 
      
 823 
     | 
    
         
            +
                      }
         
     | 
| 
      
 824 
     | 
    
         
            +
                      var result11 = result10 !== null
         
     | 
| 
      
 825 
     | 
    
         
            +
                        ? (function(digits) {return digits.join("")})(result10)
         
     | 
| 
      
 826 
     | 
    
         
            +
                        : null;
         
     | 
| 
      
 827 
     | 
    
         
            +
                      if (result11 !== null) {
         
     | 
| 
      
 828 
     | 
    
         
            +
                        var result9 = result11;
         
     | 
| 
      
 829 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 830 
     | 
    
         
            +
                        var result9 = null;
         
     | 
| 
      
 831 
     | 
    
         
            +
                        pos = savedPos3;
         
     | 
| 
      
 832 
     | 
    
         
            +
                      }
         
     | 
| 
      
 833 
     | 
    
         
            +
                      if (result9 !== null) {
         
     | 
| 
      
 834 
     | 
    
         
            +
                        var result5 = result9;
         
     | 
| 
      
 835 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 836 
     | 
    
         
            +
                        var savedPos2 = pos;
         
     | 
| 
      
 837 
     | 
    
         
            +
                        var result7 = parse_string();
         
     | 
| 
      
 838 
     | 
    
         
            +
                        var result8 = result7 !== null
         
     | 
| 
      
 839 
     | 
    
         
            +
                          ? (function(node) {return node._value()})(result7)
         
     | 
| 
      
 840 
     | 
    
         
            +
                          : null;
         
     | 
| 
      
 841 
     | 
    
         
            +
                        if (result8 !== null) {
         
     | 
| 
      
 842 
     | 
    
         
            +
                          var result6 = result8;
         
     | 
| 
      
 843 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 844 
     | 
    
         
            +
                          var result6 = null;
         
     | 
| 
      
 845 
     | 
    
         
            +
                          pos = savedPos2;
         
     | 
| 
      
 846 
     | 
    
         
            +
                        }
         
     | 
| 
      
 847 
     | 
    
         
            +
                        if (result6 !== null) {
         
     | 
| 
      
 848 
     | 
    
         
            +
                          var result5 = result6;
         
     | 
| 
      
 849 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 850 
     | 
    
         
            +
                          var result5 = null;;
         
     | 
| 
      
 851 
     | 
    
         
            +
                        };
         
     | 
| 
      
 852 
     | 
    
         
            +
                      }
         
     | 
| 
       733 
853 
     | 
    
         
             
                      while (result5 !== null) {
         
     | 
| 
       734 
854 
     | 
    
         
             
                        result4.push(result5);
         
     | 
| 
       735 
     | 
    
         
            -
                         
     | 
| 
       736 
     | 
    
         
            -
             
     | 
| 
      
 855 
     | 
    
         
            +
                        var savedPos3 = pos;
         
     | 
| 
      
 856 
     | 
    
         
            +
                        if (input.substr(pos).match(/^[a-zA-Z0-9:]/) !== null) {
         
     | 
| 
      
 857 
     | 
    
         
            +
                          var result12 = input.charAt(pos);
         
     | 
| 
       737 
858 
     | 
    
         
             
                          pos++;
         
     | 
| 
       738 
859 
     | 
    
         
             
                        } else {
         
     | 
| 
       739 
     | 
    
         
            -
                          var  
     | 
| 
      
 860 
     | 
    
         
            +
                          var result12 = null;
         
     | 
| 
       740 
861 
     | 
    
         
             
                          if (reportMatchFailures) {
         
     | 
| 
       741 
     | 
    
         
            -
                            matchFailed("[a-zA-Z0-9]");
         
     | 
| 
      
 862 
     | 
    
         
            +
                            matchFailed("[a-zA-Z0-9:]");
         
     | 
| 
      
 863 
     | 
    
         
            +
                          }
         
     | 
| 
      
 864 
     | 
    
         
            +
                        }
         
     | 
| 
      
 865 
     | 
    
         
            +
                        if (result12 !== null) {
         
     | 
| 
      
 866 
     | 
    
         
            +
                          var result10 = [];
         
     | 
| 
      
 867 
     | 
    
         
            +
                          while (result12 !== null) {
         
     | 
| 
      
 868 
     | 
    
         
            +
                            result10.push(result12);
         
     | 
| 
      
 869 
     | 
    
         
            +
                            if (input.substr(pos).match(/^[a-zA-Z0-9:]/) !== null) {
         
     | 
| 
      
 870 
     | 
    
         
            +
                              var result12 = input.charAt(pos);
         
     | 
| 
      
 871 
     | 
    
         
            +
                              pos++;
         
     | 
| 
      
 872 
     | 
    
         
            +
                            } else {
         
     | 
| 
      
 873 
     | 
    
         
            +
                              var result12 = null;
         
     | 
| 
      
 874 
     | 
    
         
            +
                              if (reportMatchFailures) {
         
     | 
| 
      
 875 
     | 
    
         
            +
                                matchFailed("[a-zA-Z0-9:]");
         
     | 
| 
      
 876 
     | 
    
         
            +
                              }
         
     | 
| 
      
 877 
     | 
    
         
            +
                            }
         
     | 
| 
       742 
878 
     | 
    
         
             
                          }
         
     | 
| 
      
 879 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 880 
     | 
    
         
            +
                          var result10 = null;
         
     | 
| 
      
 881 
     | 
    
         
            +
                        }
         
     | 
| 
      
 882 
     | 
    
         
            +
                        var result11 = result10 !== null
         
     | 
| 
      
 883 
     | 
    
         
            +
                          ? (function(digits) {return digits.join("")})(result10)
         
     | 
| 
      
 884 
     | 
    
         
            +
                          : null;
         
     | 
| 
      
 885 
     | 
    
         
            +
                        if (result11 !== null) {
         
     | 
| 
      
 886 
     | 
    
         
            +
                          var result9 = result11;
         
     | 
| 
      
 887 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 888 
     | 
    
         
            +
                          var result9 = null;
         
     | 
| 
      
 889 
     | 
    
         
            +
                          pos = savedPos3;
         
     | 
| 
      
 890 
     | 
    
         
            +
                        }
         
     | 
| 
      
 891 
     | 
    
         
            +
                        if (result9 !== null) {
         
     | 
| 
      
 892 
     | 
    
         
            +
                          var result5 = result9;
         
     | 
| 
      
 893 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 894 
     | 
    
         
            +
                          var savedPos2 = pos;
         
     | 
| 
      
 895 
     | 
    
         
            +
                          var result7 = parse_string();
         
     | 
| 
      
 896 
     | 
    
         
            +
                          var result8 = result7 !== null
         
     | 
| 
      
 897 
     | 
    
         
            +
                            ? (function(node) {return node._value()})(result7)
         
     | 
| 
      
 898 
     | 
    
         
            +
                            : null;
         
     | 
| 
      
 899 
     | 
    
         
            +
                          if (result8 !== null) {
         
     | 
| 
      
 900 
     | 
    
         
            +
                            var result6 = result8;
         
     | 
| 
      
 901 
     | 
    
         
            +
                          } else {
         
     | 
| 
      
 902 
     | 
    
         
            +
                            var result6 = null;
         
     | 
| 
      
 903 
     | 
    
         
            +
                            pos = savedPos2;
         
     | 
| 
      
 904 
     | 
    
         
            +
                          }
         
     | 
| 
      
 905 
     | 
    
         
            +
                          if (result6 !== null) {
         
     | 
| 
      
 906 
     | 
    
         
            +
                            var result5 = result6;
         
     | 
| 
      
 907 
     | 
    
         
            +
                          } else {
         
     | 
| 
      
 908 
     | 
    
         
            +
                            var result5 = null;;
         
     | 
| 
      
 909 
     | 
    
         
            +
                          };
         
     | 
| 
       743 
910 
     | 
    
         
             
                        }
         
     | 
| 
       744 
911 
     | 
    
         
             
                      }
         
     | 
| 
       745 
912 
     | 
    
         
             
                      if (result4 !== null) {
         
     | 
| 
         @@ -754,8 +921,8 @@ smalltalk.parser = (function(){ 
     | 
|
| 
       754 
921 
     | 
    
         
             
                    }
         
     | 
| 
       755 
922 
     | 
    
         
             
                    var result2 = result1 !== null
         
     | 
| 
       756 
923 
     | 
    
         
             
                      ? (function(val) {
         
     | 
| 
       757 
     | 
    
         
            -
             
     | 
| 
       758 
     | 
    
         
            -
             
     | 
| 
      
 924 
     | 
    
         
            +
                      		  		    return smalltalk.ValueNode._new()
         
     | 
| 
      
 925 
     | 
    
         
            +
                                     	   		    	   ._value_(smalltalk.symbolFor(val.join("").replace(/\"/ig, '"')))
         
     | 
| 
       759 
926 
     | 
    
         
             
                                     	 })(result1[1])
         
     | 
| 
       760 
927 
     | 
    
         
             
                      : null;
         
     | 
| 
       761 
928 
     | 
    
         
             
                    if (result2 !== null) {
         
     | 
| 
         @@ -829,17 +996,42 @@ smalltalk.parser = (function(){ 
     | 
|
| 
       829 
996 
     | 
    
         
             
                    var savedPos0 = pos;
         
     | 
| 
       830 
997 
     | 
    
         
             
                    var savedPos1 = pos;
         
     | 
| 
       831 
998 
     | 
    
         
             
                    if (input.substr(pos).match(/^[\-]/) !== null) {
         
     | 
| 
       832 
     | 
    
         
            -
                      var  
     | 
| 
      
 999 
     | 
    
         
            +
                      var result9 = input.charAt(pos);
         
     | 
| 
       833 
1000 
     | 
    
         
             
                      pos++;
         
     | 
| 
       834 
1001 
     | 
    
         
             
                    } else {
         
     | 
| 
       835 
     | 
    
         
            -
                      var  
     | 
| 
      
 1002 
     | 
    
         
            +
                      var result9 = null;
         
     | 
| 
       836 
1003 
     | 
    
         
             
                      if (reportMatchFailures) {
         
     | 
| 
       837 
1004 
     | 
    
         
             
                        matchFailed("[\\-]");
         
     | 
| 
       838 
1005 
     | 
    
         
             
                      }
         
     | 
| 
       839 
1006 
     | 
    
         
             
                    }
         
     | 
| 
       840 
     | 
    
         
            -
                    var result3 =  
     | 
| 
      
 1007 
     | 
    
         
            +
                    var result3 = result9 !== null ? result9 : '';
         
     | 
| 
       841 
1008 
     | 
    
         
             
                    if (result3 !== null) {
         
     | 
| 
       842 
     | 
    
         
            -
                       
     | 
| 
      
 1009 
     | 
    
         
            +
                      if (input.substr(pos).match(/^[0-9]/) !== null) {
         
     | 
| 
      
 1010 
     | 
    
         
            +
                        var result8 = input.charAt(pos);
         
     | 
| 
      
 1011 
     | 
    
         
            +
                        pos++;
         
     | 
| 
      
 1012 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 1013 
     | 
    
         
            +
                        var result8 = null;
         
     | 
| 
      
 1014 
     | 
    
         
            +
                        if (reportMatchFailures) {
         
     | 
| 
      
 1015 
     | 
    
         
            +
                          matchFailed("[0-9]");
         
     | 
| 
      
 1016 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1017 
     | 
    
         
            +
                      }
         
     | 
| 
      
 1018 
     | 
    
         
            +
                      if (result8 !== null) {
         
     | 
| 
      
 1019 
     | 
    
         
            +
                        var result4 = [];
         
     | 
| 
      
 1020 
     | 
    
         
            +
                        while (result8 !== null) {
         
     | 
| 
      
 1021 
     | 
    
         
            +
                          result4.push(result8);
         
     | 
| 
      
 1022 
     | 
    
         
            +
                          if (input.substr(pos).match(/^[0-9]/) !== null) {
         
     | 
| 
      
 1023 
     | 
    
         
            +
                            var result8 = input.charAt(pos);
         
     | 
| 
      
 1024 
     | 
    
         
            +
                            pos++;
         
     | 
| 
      
 1025 
     | 
    
         
            +
                          } else {
         
     | 
| 
      
 1026 
     | 
    
         
            +
                            var result8 = null;
         
     | 
| 
      
 1027 
     | 
    
         
            +
                            if (reportMatchFailures) {
         
     | 
| 
      
 1028 
     | 
    
         
            +
                              matchFailed("[0-9]");
         
     | 
| 
      
 1029 
     | 
    
         
            +
                            }
         
     | 
| 
      
 1030 
     | 
    
         
            +
                          }
         
     | 
| 
      
 1031 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1032 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 1033 
     | 
    
         
            +
                        var result4 = null;
         
     | 
| 
      
 1034 
     | 
    
         
            +
                      }
         
     | 
| 
       843 
1035 
     | 
    
         
             
                      if (result4 !== null) {
         
     | 
| 
       844 
1036 
     | 
    
         
             
                        if (input.substr(pos, 1) === ".") {
         
     | 
| 
       845 
1037 
     | 
    
         
             
                          var result5 = ".";
         
     | 
| 
         @@ -851,7 +1043,32 @@ smalltalk.parser = (function(){ 
     | 
|
| 
       851 
1043 
     | 
    
         
             
                          }
         
     | 
| 
       852 
1044 
     | 
    
         
             
                        }
         
     | 
| 
       853 
1045 
     | 
    
         
             
                        if (result5 !== null) {
         
     | 
| 
       854 
     | 
    
         
            -
                           
     | 
| 
      
 1046 
     | 
    
         
            +
                          if (input.substr(pos).match(/^[0-9]/) !== null) {
         
     | 
| 
      
 1047 
     | 
    
         
            +
                            var result7 = input.charAt(pos);
         
     | 
| 
      
 1048 
     | 
    
         
            +
                            pos++;
         
     | 
| 
      
 1049 
     | 
    
         
            +
                          } else {
         
     | 
| 
      
 1050 
     | 
    
         
            +
                            var result7 = null;
         
     | 
| 
      
 1051 
     | 
    
         
            +
                            if (reportMatchFailures) {
         
     | 
| 
      
 1052 
     | 
    
         
            +
                              matchFailed("[0-9]");
         
     | 
| 
      
 1053 
     | 
    
         
            +
                            }
         
     | 
| 
      
 1054 
     | 
    
         
            +
                          }
         
     | 
| 
      
 1055 
     | 
    
         
            +
                          if (result7 !== null) {
         
     | 
| 
      
 1056 
     | 
    
         
            +
                            var result6 = [];
         
     | 
| 
      
 1057 
     | 
    
         
            +
                            while (result7 !== null) {
         
     | 
| 
      
 1058 
     | 
    
         
            +
                              result6.push(result7);
         
     | 
| 
      
 1059 
     | 
    
         
            +
                              if (input.substr(pos).match(/^[0-9]/) !== null) {
         
     | 
| 
      
 1060 
     | 
    
         
            +
                                var result7 = input.charAt(pos);
         
     | 
| 
      
 1061 
     | 
    
         
            +
                                pos++;
         
     | 
| 
      
 1062 
     | 
    
         
            +
                              } else {
         
     | 
| 
      
 1063 
     | 
    
         
            +
                                var result7 = null;
         
     | 
| 
      
 1064 
     | 
    
         
            +
                                if (reportMatchFailures) {
         
     | 
| 
      
 1065 
     | 
    
         
            +
                                  matchFailed("[0-9]");
         
     | 
| 
      
 1066 
     | 
    
         
            +
                                }
         
     | 
| 
      
 1067 
     | 
    
         
            +
                              }
         
     | 
| 
      
 1068 
     | 
    
         
            +
                            }
         
     | 
| 
      
 1069 
     | 
    
         
            +
                          } else {
         
     | 
| 
      
 1070 
     | 
    
         
            +
                            var result6 = null;
         
     | 
| 
      
 1071 
     | 
    
         
            +
                          }
         
     | 
| 
       855 
1072 
     | 
    
         
             
                          if (result6 !== null) {
         
     | 
| 
       856 
1073 
     | 
    
         
             
                            var result1 = [result3, result4, result5, result6];
         
     | 
| 
       857 
1074 
     | 
    
         
             
                          } else {
         
     | 
| 
         @@ -871,7 +1088,7 @@ smalltalk.parser = (function(){ 
     | 
|
| 
       871 
1088 
     | 
    
         
             
                      pos = savedPos1;
         
     | 
| 
       872 
1089 
     | 
    
         
             
                    }
         
     | 
| 
       873 
1090 
     | 
    
         
             
                    var result2 = result1 !== null
         
     | 
| 
       874 
     | 
    
         
            -
                      ? (function(neg, int, dec) {return parseFloat((neg+int+"."+dec), 10)})(result1[0], result1[1], result1[3])
         
     | 
| 
      
 1091 
     | 
    
         
            +
                      ? (function(neg, int, dec) {return parseFloat((neg + int.join("") + "." + dec.join("")), 10)})(result1[0], result1[1], result1[3])
         
     | 
| 
       875 
1092 
     | 
    
         
             
                      : null;
         
     | 
| 
       876 
1093 
     | 
    
         
             
                    if (result2 !== null) {
         
     | 
| 
       877 
1094 
     | 
    
         
             
                      var result0 = result2;
         
     | 
| 
         @@ -1430,7 +1647,7 @@ smalltalk.parser = (function(){ 
     | 
|
| 
       1430 
1647 
     | 
    
         | 
| 
       1431 
1648 
     | 
    
         | 
| 
       1432 
1649 
     | 
    
         
             
                    var savedPos0 = pos;
         
     | 
| 
       1433 
     | 
    
         
            -
                    var result1 =  
     | 
| 
      
 1650 
     | 
    
         
            +
                    var result1 = parse_varIdentifier();
         
     | 
| 
       1434 
1651 
     | 
    
         
             
                    var result2 = result1 !== null
         
     | 
| 
       1435 
1652 
     | 
    
         
             
                      ? (function(identifier) {
         
     | 
| 
       1436 
1653 
     | 
    
         
             
                      		  return smalltalk.VariableNode._new()
         
     | 
    
        data/amber/js/parser.pegjs
    CHANGED
    
    | 
         @@ -3,7 +3,8 @@ start = method 
     | 
|
| 
       3 
3 
     | 
    
         
             
            separator      = [ \t\v\f\u00A0\uFEFF\n\r\u2028\u2029]+
         
     | 
| 
       4 
4 
     | 
    
         
             
            comments       = (["][^"]*["])+
         
     | 
| 
       5 
5 
     | 
    
         
             
            ws             = (separator / comments)*
         
     | 
| 
       6 
     | 
    
         
            -
            identifier     = first:[a- 
     | 
| 
      
 6 
     | 
    
         
            +
            identifier     = first:[a-zA-Z] others:[a-zA-Z0-9]* {return first + others.join("")}
         
     | 
| 
      
 7 
     | 
    
         
            +
            varIdentifier  = first:[a-z] others:[a-zA-Z0-9]* {return first + others.join("")}
         
     | 
| 
       7 
8 
     | 
    
         
             
            keyword        = first:identifier last:[:] {return first + last}
         
     | 
| 
       8 
9 
     | 
    
         
             
            className      = first:[A-Z] others:[a-zA-Z0-9]* {return first + others.join("")}
         
     | 
| 
       9 
10 
     | 
    
         
             
            string         = ['] val:(("''" {return "'"} / [^'])*) ['] {
         
     | 
| 
         @@ -11,15 +12,17 @@ string         = ['] val:(("''" {return "'"} / [^'])*) ['] { 
     | 
|
| 
       11 
12 
     | 
    
         
             
                           	   	._value_(val.join("").replace(/\"/ig, '"'))
         
     | 
| 
       12 
13 
     | 
    
         
             
            	         }
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
            symbol         = "#"val: 
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
            symbol         = "#"val:(
         
     | 
| 
      
 16 
     | 
    
         
            +
            			digits:[a-zA-Z0-9\:]+ {return digits.join("")} / 
         
     | 
| 
      
 17 
     | 
    
         
            +
            			node:string {return node._value()})* {
         
     | 
| 
      
 18 
     | 
    
         
            +
            		  		    return smalltalk.ValueNode._new()
         
     | 
| 
      
 19 
     | 
    
         
            +
                           	   		    	   ._value_(smalltalk.symbolFor(val.join("").replace(/\"/ig, '"')))
         
     | 
| 
       17 
20 
     | 
    
         
             
                           	 }
         
     | 
| 
       18 
21 
     | 
    
         
             
            number         = n:(float / integer) {
         
     | 
| 
       19 
22 
     | 
    
         
             
            		  return smalltalk.ValueNode._new()
         
     | 
| 
       20 
23 
     | 
    
         
             
                           	   	._value_(n)
         
     | 
| 
       21 
24 
     | 
    
         
             
                           	 }
         
     | 
| 
       22 
     | 
    
         
            -
            float          = neg:[-]?int: 
     | 
| 
      
 25 
     | 
    
         
            +
            float          = neg:[-]?int:[0-9]+ "." dec:[0-9]+ {return parseFloat((neg + int.join("") + "." + dec.join("")), 10)}
         
     | 
| 
       23 
26 
     | 
    
         
             
            integer        = neg:[-]?digits:[0-9]+ {return (parseInt(neg+digits.join(""), 10))}
         
     | 
| 
       24 
27 
     | 
    
         
             
            literalArray   = "#(" ws lits:(lit:literal ws {return lit._value()})* ws ")" {
         
     | 
| 
       25 
28 
     | 
    
         
             
            		  return smalltalk.ValueNode._new()
         
     | 
| 
         @@ -42,7 +45,7 @@ pseudoVariable = val:( 
     | 
|
| 
       42 
45 
     | 
    
         
             
            literal        = pseudoVariable / number / literalArray / dynamicDictionary / dynamicArray / string / symbol / block
         
     | 
| 
       43 
46 
     | 
    
         | 
| 
       44 
47 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
            variable       = identifier: 
     | 
| 
      
 48 
     | 
    
         
            +
            variable       = identifier:varIdentifier {
         
     | 
| 
       46 
49 
     | 
    
         
             
            		  return smalltalk.VariableNode._new()
         
     | 
| 
       47 
50 
     | 
    
         
             
            			._value_(identifier)
         
     | 
| 
       48 
51 
     | 
    
         
             
            		  }
         
     |