added: #returnStatement
authorClaus Gittinger <cg@exept.de>
Tue, 05 Jul 2011 21:24:33 +0200
changeset 2535 1185b5e67a04
parent 2534 6cd019ddec46
child 2536 62a35499ff1d
added: #returnStatement changed: #statement refactored
Parser.st
--- a/Parser.st	Tue Jul 05 21:14:26 2011 +0200
+++ b/Parser.st	Tue Jul 05 21:24:33 2011 +0200
@@ -5375,6 +5375,40 @@
     "Modified: / 12-07-2010 / 09:57:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+returnStatement
+    "parse a return statement;
+
+     statement ::= '^' expression
+    "
+
+    |expr node lnr pos note|
+
+    pos := tokenPosition.
+
+    self markReturnAt:tokenPosition.
+    lnr := tokenLineNr.
+    self nextToken.
+    expr := self expression.
+    (expr == #Error) ifTrue:[^ #Error].
+
+    node := ReturnNode expression:expr.
+    node startPosition:pos.
+    node home:self blockHome:currentBlock.
+    true "(lineNumberInfo == #full)" ifTrue:[node lineNumber:lnr].
+
+    (ignoreErrors or:[ignoreWarnings]) ifFalse:[
+        note := self plausibilityCheck:node.
+        note notNil ifTrue:[
+            self warning:note position:pos to:tokenPosition.
+        ].
+    ].
+    self rememberReturnedValue:expr.
+    ^ node
+
+    "Modified: / 05-07-2011 / 18:05:18 / cg"
+    "Created: / 05-07-2011 / 21:22:05 / cg"
+!
+
 statement
     "parse a statement; return a node-tree or #Error.
 
@@ -5383,30 +5417,12 @@
                    | expression
     "
 
-    |expr node lnr code pos note|
+    |expr node lnr code pos|
 
     pos := tokenPosition.
 
     (tokenType == $^) ifTrue:[
-        self markReturnAt:tokenPosition.
-        lnr := tokenLineNr.
-        self nextToken.
-        expr := self expression.
-        (expr == #Error) ifTrue:[^ #Error].
-
-        node := ReturnNode expression:expr.
-        node startPosition:pos.
-        node home:self blockHome:currentBlock.
-        true "(lineNumberInfo == #full)" ifTrue:[node lineNumber:lnr].
-
-        (ignoreErrors or:[ignoreWarnings]) ifFalse:[
-            note := self plausibilityCheck:node.
-            note notNil ifTrue:[
-                self warning:note position:pos to:tokenPosition.
-            ].
-        ].
-        self rememberReturnedValue:expr.
-        ^ node
+        ^ self returnStatement
     ].
 
     (tokenType == #Primitive) ifTrue:[
@@ -5456,7 +5472,7 @@
     node startPosition:pos.
     ^ node
 
-    "Modified: / 05-07-2011 / 18:05:18 / cg"
+    "Modified: / 05-07-2011 / 21:22:31 / cg"
 !
 
 statementList
@@ -10349,7 +10365,7 @@
 !Parser class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.670 2011-07-05 16:15:48 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.671 2011-07-05 19:24:33 cg Exp $'
 !
 
 version_SVN