--- a/compiler/extensions.st Fri Jul 31 14:07:31 2015 +0100
+++ b/compiler/extensions.st Mon Aug 17 12:56:02 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,51 @@
yourself
! !
+!RBLiteralValueNode methodsFor:'*petitcompiler'!
+
+isLiteralNumber
+ ((Smalltalk respondsTo: #isSmalltalk/X) and: [Smalltalk isSmalltalkX]) ifTrue:[
+ ^super isLiteralNumber
+ ] ifFalse:[
+ "Assume Pharo..."
+ [(NumberParser on: self 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
! !