Parser.st
changeset 2209 89aba5bfa3ee
parent 2207 102a9b844b91
child 2210 0c4b63e4a841
--- a/Parser.st	Tue Sep 22 16:25:53 2009 +0200
+++ b/Parser.st	Wed Sep 23 14:30:17 2009 +0200
@@ -7789,7 +7789,9 @@
      and to mark resource methods (image, menu or canvas resources).
 
      prim ::= st80Primitive | st80Pragma | stxPragma
-              squeakPrimitive | vAgePrimitive | newSTXPrimitive | resourceDecl
+              | squeakPrimitive | vAgePrimitive | newSTXPrimitive 
+              | externalFuncDecl
+              | resourceDecl
 
      st80Primitive ::= 'primitive:' INTEGER
      st80Pragma    ::= 'exception:' ( 'handle | 'raise' | 'unwind' )
@@ -7802,8 +7804,27 @@
      vAgePrimitive ::= 'primitive:' IDENTIFIER
                        | 'sysprim:' IDENTIFIER
 
-     resourceDecl ::= 'resource:' SYMBOL       - leave SYMBOL in primitiveResource
-                    | 'resource:' SYMBOL (...) - leave (SYMBOL (...)) in primitiveResource
+     externalFuncDecl ::= vwExternalFuncDecl
+                          | stvExternalFuncDecl
+                          | squeakExternalFuncDecl
+                          | dolphinExternalFuncDecl
+
+     vwExternalFuncDecl ::= 'c:' vwFuncDecl
+
+     stvExternalFuncDecl ::= 'api:' stvFuncDecl
+                             |  'ole:' stvFuncDecl
+
+     squeakExternalFuncDecl ::= 'apicall:' stvFuncDecl
+                                |  'cdecl:' stvFuncDecl
+
+     dolphinExternalFuncDecl ::= 'stdcall:' stvFuncDecl
+
+     resourceDecl ::= 'resource:'  SYMBOL       - leave SYMBOL in primitiveResource
+                    | 'resource:'  SYMBOL (...) - leave (SYMBOL (...)) in primitiveResource
+                    | 'pragma:'    SYMBOL       - same as resource; alternative syntax
+                    | 'pragma:'    SYMBOL (...) - same as resource; alternative syntax
+                    | 'attribute:' SYMBOL       - same as resource; alternative syntax
+                    | 'attribute:' SYMBOL (...) - same as resource; alternative syntax
     "
 
     |lcTokenName|
@@ -7827,7 +7848,9 @@
         self checkForClosingAngle.
         ^ 0.    "/ no primitive number
     ].
-    (tokenName = 'resource:') ifTrue:[
+    ((tokenName = 'resource:') 
+    or:[tokenName = 'pragma:'
+    or:[tokenName = 'attribute:' ]]) ifTrue:[
         self parseResourcePragma.
         ^ nil.    "/ no primitive number
     ].
@@ -9598,7 +9621,7 @@
 !Parser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.606 2009-09-21 21:26:34 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.607 2009-09-23 12:30:17 cg Exp $'
 ! !
 
 Parser initialize!