added:
authorClaus Gittinger <cg@exept.de>
Fri, 15 Jul 2011 08:39:17 +0200
changeset 2563 7a9c41b4a1dc
parent 2562 be17095cbb21
child 2564 43f35a40884d
added: #addContextReturnablePragma #rememberContextPragma:value: #rememberContextReturnablePragma changed: #parseExceptionOrContextPragma
Parser.st
--- 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