parser test raises some minor improvements (remove unnecessary ValueNode arrays, etc

This commit is contained in:
Jeremy Ashkenas
2009-12-18 07:11:01 -05:00
parent 92adabdddc
commit 669c065dd7
6 changed files with 23 additions and 17 deletions

View File

@@ -169,10 +169,10 @@ rule
# Expressions that can be treated as values.
Value:
IDENTIFIER { result = ValueNode.new(val) }
| Array { result = ValueNode.new(val) }
| Object { result = ValueNode.new(val) }
| Parenthetical { result = ValueNode.new(val) }
IDENTIFIER { result = ValueNode.new(val[0]) }
| Array { result = ValueNode.new(val[0]) }
| Object { result = ValueNode.new(val[0]) }
| Parenthetical { result = ValueNode.new(val[0]) }
| Value Accessor { result = val[0] << val[1] }
| Invocation Accessor { result = ValueNode.new(val[0], [val[1]]) }
;

View File

@@ -157,8 +157,9 @@ module CoffeeScript
index = 0
loop do
tok = @tokens[index -= 1]
return if !tok || tok[0] != :IDENTIFIER
return if !tok
next if tok[0] == ','
return if tok[0] != :IDENTIFIER
tok[0] = :PARAM
end
end

View File

@@ -148,7 +148,7 @@ module CoffeeScript
# A value, indexed or dotted into or vanilla.
class ValueNode < Node
attr_reader :last
attr_reader :name, :properties, :last
def initialize(name, properties=[])
@name, @properties = name, properties
@@ -212,6 +212,8 @@ module CoffeeScript
statement
custom_return
attr_reader :variable, :value, :context
def initialize(variable, value, context=nil)
@variable, @value, @context = variable, value, context
end