|  | @@ -4,9 +4,9 @@ separator      = [ \t\v\f\u00A0\uFEFF\n\r\u2028\u2029]+
 | 
	
		
			
				|  |  |  comments       = ('"' [^"]* '"')+
 | 
	
		
			
				|  |  |  ws             = (separator / comments)*
 | 
	
		
			
				|  |  |  maybeDotsWs = ("." / separator / comments)*
 | 
	
		
			
				|  |  | -identifier     = first:[a-zA-Z] others:[a-zA-Z0-9]* {return first + others.join("");}
 | 
	
		
			
				|  |  | -keyword        = first:identifier last:":" {return first + last;}
 | 
	
		
			
				|  |  | -className      = first:[A-Z] others:[a-zA-Z0-9]* {return first + others.join("");}
 | 
	
		
			
				|  |  | +identifier     = $([a-zA-Z] [a-zA-Z0-9]*)
 | 
	
		
			
				|  |  | +keyword        = $(identifier ":")
 | 
	
		
			
				|  |  | +className      = $([A-Z] [a-zA-Z0-9]*)
 | 
	
		
			
				|  |  |  string         = contents:rawString {
 | 
	
		
			
				|  |  |                       return $globals.ValueNode._new()
 | 
	
		
			
				|  |  |                              ._location_(location())
 | 
	
	
		
			
				|  | @@ -22,7 +22,7 @@ character      = "$" char:.
 | 
	
		
			
				|  |  |                               ._value_(char);
 | 
	
		
			
				|  |  |                    }
 | 
	
		
			
				|  |  |  symbol         = "#" rest:bareSymbol {return rest;}
 | 
	
		
			
				|  |  | -bareSymbol         = val:(keywords:keyword+ {return keywords.join("");} / binarySelector / unarySelector / rawString)
 | 
	
		
			
				|  |  | +bareSymbol         = val:($(keyword+) / binarySelector / unarySelector / rawString)
 | 
	
		
			
				|  |  |                    {
 | 
	
		
			
				|  |  |                        return $globals.ValueNode._new()
 | 
	
		
			
				|  |  |                               ._location_(location())
 | 
	
	
		
			
				|  | @@ -35,10 +35,10 @@ number         = n:(numberExp / hex / float / integer) {
 | 
	
		
			
				|  |  |                              ._source_(text())
 | 
	
		
			
				|  |  |                              ._value_(n);
 | 
	
		
			
				|  |  |                   }
 | 
	
		
			
				|  |  | -numberExp      = n:((float / integer) "e" integer) {return parseFloat(n.join(""));}
 | 
	
		
			
				|  |  | -hex            = neg:"-"? "16r" num:[0-9a-fA-F]+ {return parseInt(((neg || '') + num.join("")), 16);}
 | 
	
		
			
				|  |  | -float          = neg:"-"? digits:[0-9]+ "." dec:[0-9]+ {return parseFloat(((neg || '') + digits.join("") + "." + dec.join("")), 10);}
 | 
	
		
			
				|  |  | -integer        = neg:"-"? digits:[0-9]+ {return (parseInt((neg || '') + digits.join(""), 10));}
 | 
	
		
			
				|  |  | +numberExp      = n:$((float / integer) "e" integer) {return parseFloat(n);}
 | 
	
		
			
				|  |  | +hex            = neg:"-"? "16r" num:$[0-9a-fA-F]+ {return parseInt(((neg || '') + num), 16);}
 | 
	
		
			
				|  |  | +float          = n:$("-"? [0-9]+ "." [0-9]+) {return parseFloat(n, 10);}
 | 
	
		
			
				|  |  | +integer        = n:$("-"? [0-9]+) {return parseInt(n, 10);}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  literalArray   = "#(" rest:wsLiteralArrayContents ws ")" {
 | 
	
		
			
				|  |  |      return rest
 | 
	
	
		
			
				|  | @@ -91,7 +91,7 @@ variable       = identifier:identifier {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  reference      = variable
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -binarySelector = bin:[\\+*/=><,@%~|&-]+ {return bin.join("");}
 | 
	
		
			
				|  |  | +binarySelector = $[\\+*/=><,@%~|&-]+
 | 
	
		
			
				|  |  |  unarySelector  = identifier
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  wsKeywordPattern = pairs:(ws key:keyword ws arg:identifier {return {key:key, arg:arg};})+ {
 |