|
@@ -4,6 +4,10 @@
|
|
|
function newNode(nodeClass) {
|
|
|
return nodeClass._new()._location_(location())._source_(text());
|
|
|
}
|
|
|
+
|
|
|
+ function newSequenceNode(nodeClass, temps, statements) {
|
|
|
+ return newNode(nodeClass)._temps_(temps || [])._dagChildren_(statements || []);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
start = method
|
|
@@ -178,20 +182,10 @@ wsStatements =
|
|
|
} /
|
|
|
expressions:wsExpressions? {return expressions || [];}
|
|
|
|
|
|
-wsSequenceWs = aPragmas:wsPragmas? ws temps:temps? zPragmas:wsPragmas? statements:wsStatements? maybeDotsWs {
|
|
|
- return [newNode($globals.SequenceNode)
|
|
|
- ._temps_(temps || [])
|
|
|
- ._dagChildren_(statements || []), (aPragmas || []).concat(zPragmas || [])];
|
|
|
-}
|
|
|
-
|
|
|
-wsBlockSequenceWs = ws temps:temps? statements:wsStatements? maybeDotsWs {
|
|
|
- return newNode($globals.BlockSequenceNode)
|
|
|
- ._temps_(temps || [])
|
|
|
- ._dagChildren_(statements || []);
|
|
|
-}
|
|
|
-
|
|
|
-block = '[' params:wsBlockParamList? sequence:wsBlockSequenceWs ']' {
|
|
|
- return newNode($globals.BlockNode)._parameters_(params || [])._dagChildren_([sequence]);
|
|
|
+block = '[' params:wsBlockParamList? ws temps:temps? statements:wsStatements? maybeDotsWs ']' {
|
|
|
+ return newNode($globals.BlockNode)
|
|
|
+ ._parameters_(params || [])
|
|
|
+ ._dagChildren_([newSequenceNode($globals.BlockSequenceNode, temps, statements)]);
|
|
|
}
|
|
|
|
|
|
operand = reference / literal / subexpression
|
|
@@ -247,12 +241,12 @@ cascade =
|
|
|
|
|
|
method =
|
|
|
pattern:(wsKeywordPattern / wsBinaryPattern / wsUnaryPattern)
|
|
|
- sequence:wsSequenceWs {
|
|
|
+ aPragmas:wsPragmas? ws temps:temps? zPragmas:wsPragmas? statements:wsStatements? maybeDotsWs {
|
|
|
return newNode($globals.MethodNode)
|
|
|
._selector_(pattern[0])
|
|
|
._arguments_(pattern[1])
|
|
|
- ._pragmas_(sequence[1])
|
|
|
- ._dagChildren_([sequence[0]]);
|
|
|
+ ._pragmas_((aPragmas || []).concat(zPragmas || []))
|
|
|
+ ._dagChildren_([newSequenceNode($globals.SequenceNode, temps, statements)]);
|
|
|
}
|
|
|
|
|
|
associationSend =
|