| 
					
				 | 
			
			
				@@ -56,6 +56,7 @@ smalltalk.parser = (function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "unaryPattern": parse_unaryPattern, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "unarySend": parse_unarySend, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "unaryTail": parse_unaryTail, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "varIdentifier": parse_varIdentifier, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "variable": parse_variable, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         "ws": parse_ws 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -368,6 +369,78 @@ smalltalk.parser = (function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var savedPos0 = pos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var savedPos1 = pos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (input.substr(pos).match(/^[a-zA-Z]/) !== null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          var result3 = input.charAt(pos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          pos++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          var result3 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (reportMatchFailures) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            matchFailed("[a-zA-Z]"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (result3 !== null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          var result4 = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (input.substr(pos).match(/^[a-zA-Z0-9]/) !== null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var result5 = input.charAt(pos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pos++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var result5 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (reportMatchFailures) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              matchFailed("[a-zA-Z0-9]"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          while (result5 !== null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            result4.push(result5); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (input.substr(pos).match(/^[a-zA-Z0-9]/) !== null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              var result5 = input.charAt(pos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              pos++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              var result5 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              if (reportMatchFailures) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                matchFailed("[a-zA-Z0-9]"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (result4 !== null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var result1 = [result3, result4]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var result1 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pos = savedPos1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          var result1 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          pos = savedPos1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var result2 = result1 !== null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ? (function(first, others) {return first + others.join("")})(result1[0], result1[1]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          : null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (result2 !== null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          var result0 = result2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          var result0 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          pos = savedPos0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cache[cacheKey] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          nextPos: pos, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          result:  result0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return result0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      function parse_varIdentifier() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var cacheKey = 'varIdentifier@' + pos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var cachedResult = cache[cacheKey]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (cachedResult) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          pos = cachedResult.nextPos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return cachedResult.result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var savedPos0 = pos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var savedPos1 = pos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (input.substr(pos).match(/^[a-z]/) !== null) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1430,7 +1503,7 @@ smalltalk.parser = (function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var savedPos0 = pos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var result1 = parse_identifier(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var result1 = parse_varIdentifier(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var result2 = result1 !== null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           ? (function(identifier) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           		  return smalltalk.VariableNode._new() 
			 |