part of the way to supporting multiline array comprehensions -- the grammar and parsing is there -- the code generation is tricky

This commit is contained in:
Jeremy Ashkenas
2009-12-27 21:50:02 -08:00
parent ac00a19514
commit aa45456d7d
3 changed files with 13 additions and 5 deletions

View File

@@ -321,7 +321,9 @@ rule
# Looks a little confusing, check nodes.rb for the arguments to ForNode.
For:
Expression FOR
ForVariables ForSource { result = ForNode.new(val[0], val[3][0], val[2][0], val[3][1], val[2][1]) }
ForVariables ForSource "." { result = ForNode.new(val[0], val[3][0], val[2][0], val[3][1], val[2][1]) }
| FOR ForVariables ForSource
Terminator Expressions "." { result = ForNode.new(val[4], val[2][0], val[1][0], val[2][1], val[1][1]) }
;
# An array comprehension has variables for the current element and index.
@@ -332,9 +334,9 @@ rule
# The source of the array comprehension can optionally be filtered.
ForSource:
IN PureExpression "." { result = [val[1]] }
IN PureExpression { result = [val[1]] }
| IN PureExpression
IF Expression "." { result = [val[1], val[3]] }
IF Expression { result = [val[1], val[3]] }
;
# Switch/When blocks.