added:
#addContextReturnablePragma
#rememberContextPragma:value:
#rememberContextReturnablePragma
changed: #parseExceptionOrContextPragma
--- a/Parser.st Fri Jul 15 08:38:46 2011 +0200
+++ b/Parser.st Fri Jul 15 08:39:17 2011 +0200
@@ -8026,25 +8026,30 @@
self parseError:'symbol expected'.
^ #Error
].
- ((pragmaType = 'exception:'
- and:[
- tokenValue == #handle
- or:[ tokenValue == #raise or:[ tokenValue == #unwind ] ]
- ])
- or:[ pragmaType = 'context:' and:[ (tokenValue == #return) ] ])
- ifTrue:[
- primitiveContextInfo isNil ifTrue:[
- primitiveContextInfo := Set new.
- ].
- primitiveContextInfo add:(pragmaType -> tokenValue).
- ]
- ifFalse:[ self parseError:'unrecognized exception pragma: ' , tokenValue. ].
- annotations := annotations
- copyWith:(Array with:pragmaType asSymbol with:(Array with:tokenValue)).
+ (pragmaType = 'context:') ifTrue:[
+ (tokenValue == #return) ifTrue:[
+ self rememberContextReturnablePragma
+ ] ifFalse:[
+ self parseError:'unrecognized context pragma: ' , tokenValue.
+ ].
+ ].
+
+ (pragmaType = 'exception:') ifTrue:[
+ (tokenValue == #handle
+ or:[ tokenValue == #raise
+ or:[ tokenValue == #unwind ]]) ifTrue:[
+ self rememberContextPragma:pragmaType value:tokenValue
+ ] ifFalse:[
+ self parseError:'unrecognized exception pragma: ' , tokenValue.
+ ].
+ ].
+
+ annotations := annotations copyWith:{ pragmaType asSymbol . { tokenValue }}.
self nextToken.
"Modified: / 19-11-2009 / 11:10:04 / Jan Travnicek <travnja3@fel.cvut.cz>"
"Modified: / 01-07-2010 / 12:33:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 15-07-2011 / 08:16:03 / cg"
!
parseExternalFunctionCallDeclaration
@@ -8546,6 +8551,21 @@
^ nil
!
+rememberContextPragma:pragmaType value:pragmaValue
+ primitiveContextInfo isNil ifTrue:[
+ primitiveContextInfo := Set new.
+ ].
+ primitiveContextInfo add:(pragmaType -> pragmaValue).
+
+ "Created: / 15-07-2011 / 08:15:08 / cg"
+!
+
+rememberContextReturnablePragma
+ self rememberContextPragma:#'context:' value:#'return'
+
+ "Created: / 15-07-2011 / 08:11:08 / cg"
+!
+
skipForClosingAngle
"/ skip
[tokenType ~~ #EOF] whileTrue:[
@@ -10367,7 +10387,7 @@
!Parser class methodsFor:'documentation'!
version_CVS
- ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.673 2011-07-06 10:19:28 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.674 2011-07-15 06:39:17 cg Exp $'
!
version_SVN