compiler/extensions.st
changeset 515 b5316ef15274
parent 502 1e45d3c96ec5
child 516 3b81c9e53352
child 524 f6f68d32de73
--- a/compiler/extensions.st	Fri Jul 24 15:06:54 2015 +0100
+++ b/compiler/extensions.st	Mon Aug 17 12:13:16 2015 +0100
@@ -14,6 +14,12 @@
 
 !Object methodsFor:'*petitcompiler'!
 
+isFsaFailure
+    ^ false
+! !
+
+!Object methodsFor:'*petitcompiler'!
+
 isInlinedMethod
     ^ false
 ! !
@@ -163,6 +169,12 @@
 
 !PPContext methodsFor:'*petitcompiler'!
 
+methodFinished: whatever
+    "nothing to do"
+! !
+
+!PPContext methodsFor:'*petitcompiler'!
+
 methodInvoked: whatever
     "nothing to do"
 ! !
@@ -187,6 +199,12 @@
 
 !PPContext methodsFor:'*petitcompiler'!
 
+tokenRead: whatever
+    "nothing to do"
+! !
+
+!PPContext methodsFor:'*petitcompiler'!
+
 whitespace
     ^ self globalAt: #whitespace ifAbsent: [ nil ].
 ! !
@@ -227,6 +245,14 @@
     ^ super compileWith: aPetitCompiler.
 ! !
 
+!PPEndOfFileParser methodsFor:'*petitcompiler'!
+
+asCompilerNode
+    ^ PPCEndOfFileNode new
+        name: self name;
+        yourself
+! !
+
 !PPEndOfInputParser methodsFor:'*petitcompiler'!
 
 asCompilerNode
@@ -649,6 +675,21 @@
 
 !PPSmalltalkGrammar methodsFor:'*petitcompiler'!
 
+number
+    | numberChars |
+    numberChars := #hex asParser / 'r' asParser / 's' asParser / '-' asParser.
+    ^ $- asParser optional, #digit asParser, numberChars star, ('.' asParser, numberChars plus) optional.
+    
+"	^ ($- asParser optional , #digit asParser) and , [ :context | 
+        [ (NumberParser on: context stream) nextNumber ] 
+            on: Error
+            do: [ :err | PPFailure message: err messageText at: context position ] ] 
+                asParser
+"
+! !
+
+!PPSmalltalkGrammar methodsFor:'*petitcompiler'!
+
 whitespace
     ^ #space asParser plus
 ! !
@@ -717,6 +758,20 @@
     ^ self name hash
 ! !
 
+!PPSmalltalkWhitespaceParser methodsFor:'*petitcompiler'!
+
+parseOn: aPPContext
+    [ [aPPContext atEnd not and: [ aPPContext uncheckedPeek isSeparator ] ]
+        whileTrue: [ aPPContext next ].
+        
+     aPPContext atEnd not and: [ aPPContext uncheckedPeek = $" ] ] whileTrue: [
+        aPPContext next.
+        "aPPContext upTo: $".
+        
+        [aPPContext atEnd or: [aPPContext next == $"]] whileFalse
+    ].
+! !
+
 !PPStream methodsFor:'*petitcompiler'!
 
 peek: anInteger
@@ -805,14 +860,45 @@
         yourself
 ! !
 
+!RBLiteralValueNode methodsFor:'*petitcompiler'!
+
+isLiteralNumber
+    [(NumberParser on: sourceText ) nextNumber] on: Exception do: [ ^ false ].
+    ^ true
+! !
+
+!RBProgramNode methodsFor:'*petitcompiler'!
+
+isLiteralNumber
+    ^ false
+! !
+
 !UndefinedObject methodsFor:'*petitcompiler'!
 
 asInteger
+    "
+        because nil is returned as and of text on stream
+        
+        JK: This should be obviously rewritten in future!!
+    "
+    self flag: 'JK: Hack alert!!'.
     ^ 256
 ! !
 
 !UndefinedObject methodsFor:'*petitcompiler'!
 
+codePoint
+    "
+        because nil is returned as and of text on stream
+        
+        JK: This should be obviously rewritten in future!!
+    "
+    self flag: 'JK: Hack alert!!'.
+    ^ 0
+! !
+
+!UndefinedObject methodsFor:'*petitcompiler'!
+
 isAlphaNumeric
     ^ false
 ! !