--- 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