CoffeeScript-in-CoffeeScript can compile @property references.

This commit is contained in:
Jeremy Ashkenas
2010-02-08 23:51:34 -05:00
parent 863de88671
commit 522df2a355
4 changed files with 38 additions and 1 deletions

View File

@@ -473,6 +473,18 @@ IndexNode: exports.IndexNode: inherit Node, {
}
# A this-reference, using '@'.
ThisNode: exports.ThisNode: inherit Node, {
constructor: (property) ->
@property: property or null
compile_node: (o) ->
'this' + (if @property then '.' + @property else '')
}

View File

@@ -230,6 +230,7 @@ grammar: {
o "Object", -> new ValueNode($1)
o "Parenthetical", -> new ValueNode($1)
o "Range", -> new ValueNode($1)
o "This", -> new ValueNode($1)
o "Value Accessor", -> $1.push($2)
o "Invocation Accessor", -> new ValueNode($1, [$2])
]
@@ -291,6 +292,12 @@ grammar: {
o "SUPER CALL_START ArgList CALL_END", -> new CallNode('super', $3)
]
# This references, either naked or to a property.
This: [
o "@", -> new ThisNode()
o "@ IDENTIFIER", -> new ThisNode(yytext)
]
# The range literal.
Range: [
o "[ Expression . . Expression ]", -> new RangeNode($2, $5)