*** empty log message ***
authorClaus Gittinger <cg@exept.de>
Thu, 08 Jul 1999 19:00:53 +0200
changeset 897 346df366b4d5
parent 896 8d8c4bcca4b8
child 898 8db540a5fda8
*** empty log message ***
Parser.st
--- a/Parser.st	Thu Jul 08 19:00:43 1999 +0200
+++ b/Parser.st	Thu Jul 08 19:00:53 1999 +0200
@@ -3042,39 +3042,11 @@
     "Modified: / 31.3.1998 / 17:31:59 / cg"
 !
 
-parsePrimitiveOrResourceSpecOrEmpty
-    "parse a methods primitive or resource spec"
-
-    |pos wmsg primNr|
-
-    [(tokenType == #BinaryOperator) and:[tokenName = '<']] whileTrue:[
-	"/ an ST-80 primitive or resourceSpec - parsed but ignored
-
-	pos := tokenPosition.
-	self nextToken.
-	primNr := self parseST80Primitive.
-
-	(primNr == #Error) ifTrue:[^ #Error].
-	wmsg := nil.
-
-	primNr < 0 ifTrue:[
-	    WarnST80Directives == true ifTrue:[
-		wmsg := 'ST-80 directive ignored'.
-	    ].
-	] ifFalse:[
-	    primitiveNr := primNr.
-	    wmsg := 'ST-80 primitive may not work'
-	].
-	wmsg notNil ifTrue:[self warning:wmsg position:pos]
-    ].
-
-    "Created: 27.4.1996 / 16:55:55 / cg"
-    "Modified: 29.5.1996 / 17:25:52 / cg"
-!
-
-parseST80Primitive
+parsePrimitive
     "parse an ST-80 type primitive as '< primitive: nr >';
      return primitive number or #Error.
+     or a Squeak-style primitive, as '< primitive: string >';
+     return primitive name or #Error.
      Also, ST-80 style resource specs are parsed; the result is
      left (as side effect) in primitiveResource. 
      (maybe someone else knows what to do with it ...)
@@ -3084,6 +3056,7 @@
      For faster finding of used keyboard accelerators.
 
      st80Primitive ::= 'primitive:' INTEGER
+     squeakPrimitive ::= 'primitive:' STRING
      st80Primitive ::= 'resource:' SYMBOL       - ignored; leave SYMBOL in primitiveResource
      st80Primitive ::= 'resource:' SYMBOL (...) - ignored; leave (SYMBOL (...)) in primitiveResource
     "
@@ -3091,60 +3064,60 @@
     |primNumber keys resource resourceValue|
 
     (tokenType ~~ #Keyword) ifTrue:[
-	self parseError:'bad primitive definition (keyword expected)'.
-	^ #Error
+        self parseError:'bad primitive definition (keyword expected)'.
+        ^ #Error
     ].
 
     (tokenName = 'primitive:') ifTrue:[
-	self nextToken.
-	(tokenType == #Integer) ifFalse:[
-	    self parseError:'primitive number expected'.
-	    ^ #Error
-	].
-	primitiveNr notNil ifTrue:[
-	    self parseError:'only one primitive spec allowed'.
-	    primNumber := -1.
-	] ifFalse:[
-	    primNumber := tokenValue.
-	].
-	self nextToken.
+        self nextToken.
+        (tokenType == #Integer) ifFalse:[
+            self parseError:'primitive number expected'.
+            ^ #Error
+        ].
+        primitiveNr notNil ifTrue:[
+            self parseError:'only one primitive spec allowed'.
+            primNumber := -1.
+        ] ifFalse:[
+            primNumber := tokenValue.
+        ].
+        self nextToken.
     ] ifFalse:[
-	(tokenName = 'resource:') ifTrue:[
-	    self nextToken.
-	    (tokenType ~~ #Symbol) ifTrue:[
-		self parseError:'symbol expected'.
-		^ #Error
-	    ].
-	    primNumber := -1.
-	    resource := tokenValue.
-	    resourceValue := true.
-
-	    self nextToken.
-
-	    tokenType == $( ifTrue:[
-		self nextToken.
-		keys := OrderedCollection new.
-		[tokenType == $) ] whileFalse:[
-		    keys add:tokenValue.
-		    self nextToken.
-		].
-		resourceValue := keys.
-		self nextToken.
-	    ].
-
-	    primitiveResource isNil ifTrue:[
-		primitiveResource := IdentityDictionary new.
-	    ].
-	    primitiveResource at:(resource asSymbol) put:resourceValue.
-	] ifFalse:[
-	    self parseError:'unrecognized primitive'.
-	    ^ #Error
-	].
+        (tokenName = 'resource:') ifTrue:[
+            self nextToken.
+            (tokenType ~~ #Symbol) ifTrue:[
+                self parseError:'symbol expected'.
+                ^ #Error
+            ].
+            primNumber := -1.
+            resource := tokenValue.
+            resourceValue := true.
+
+            self nextToken.
+
+            tokenType == $( ifTrue:[
+                self nextToken.
+                keys := OrderedCollection new.
+                [tokenType == $) ] whileFalse:[
+                    keys add:tokenValue.
+                    self nextToken.
+                ].
+                resourceValue := keys.
+                self nextToken.
+            ].
+
+            primitiveResource isNil ifTrue:[
+                primitiveResource := IdentityDictionary new.
+            ].
+            primitiveResource at:(resource asSymbol) put:resourceValue.
+        ] ifFalse:[
+            self parseError:'unrecognized primitive'.
+            ^ #Error
+        ].
     ].
 
     ((tokenType == #BinaryOperator) and:[tokenName = '>']) ifFalse:[
-	self parseError:'bad primitive definition (> expected)'.
-	^ #Error
+        self parseError:'bad primitive definition (> expected)'.
+        ^ #Error
     ].
     self nextToken.
     ^ primNumber
@@ -3152,6 +3125,36 @@
     "Modified: 29.5.1996 / 17:24:09 / cg"
 !
 
+parsePrimitiveOrResourceSpecOrEmpty
+    "parse a methods primitive or resource spec"
+
+    |pos wmsg primNr|
+
+    [(tokenType == #BinaryOperator) and:[tokenName = '<']] whileTrue:[
+        "/ an ST-80 primitive or resourceSpec - parsed but ignored
+
+        pos := tokenPosition.
+        self nextToken.
+        primNr := self parsePrimitive.
+
+        (primNr == #Error) ifTrue:[^ #Error].
+        wmsg := nil.
+
+        primNr < 0 ifTrue:[
+            WarnST80Directives == true ifTrue:[
+                wmsg := 'ST-80 directive ignored'.
+            ].
+        ] ifFalse:[
+            primitiveNr := primNr.
+            wmsg := 'ST-80 primitive may not work'
+        ].
+        wmsg notNil ifTrue:[self warning:wmsg position:pos]
+    ].
+
+    "Created: 27.4.1996 / 16:55:55 / cg"
+    "Modified: 29.5.1996 / 17:25:52 / cg"
+!
+
 statement
     "parse a statement; return a node-tree or #Error.
 
@@ -4115,7 +4118,7 @@
     ].
 
     (tokenType == ${ ) ifTrue:[
-        AllowSqueakComputedArrays ifFalse:[
+        AllowSqueakExtensions ifFalse:[
             self parseError:'non-Standard Squeak extension (enable in settings)' position:pos to:tokenPosition.
             ^ #Error
         ].
@@ -5007,6 +5010,6 @@
 !Parser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.208 1999-07-08 15:42:03 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.209 1999-07-08 17:00:53 cg Exp $'
 ! !
 Parser initialize!