--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/FooScanner.st Fri Jul 24 15:06:54 2015 +0100
@@ -0,0 +1,210 @@
+"{ Package: 'stx:goodies/petitparser/compiler' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCScanner subclass:#FooScanner
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'PetitCompiler-Scanner'
+!
+
+!FooScanner methodsFor:'as yet unclassified'!
+
+nextTokenA
+ "a"
+ self step.
+ self peek == $a ifFalse: [ ^ self return ].
+
+ self recordMatch: #a.
+
+ ^ self return
+!
+
+nextTokenAAorA
+ "aa / a"
+ self step.
+ (self peek == $a) ifFalse: [ ^ self return ].
+ self recordMatch: #a priority: -1.
+
+ self step.
+ (self peek == $a) ifFalse: [ ^ self return ].
+ self recordMatch: #aa priority: 0.
+
+ ^ self return.
+!
+
+nextTokenAAplusA
+ "(aa)+a"
+ self step.
+ self peek == $a ifFalse: [ ^ self return ].
+
+ self step.
+ self peek == $a ifFalse: [ ^ self return. ].
+
+ [
+ self step.
+ self peek == $a ifFalse: [ ^ self returnPriority: 0 ].
+ self recordMatch: #AAplusA priority: -1.
+
+ self step.
+ self peek == $a.
+ ] whileTrue.
+
+ ^ self returnPriority: -1
+!
+
+nextTokenAAstarA
+ "(aa)*a"
+ self step.
+ self peek == $a ifFalse: [ ^ self return ].
+
+ [
+ self recordMatch: #AAstarA priority: -1.
+
+ self step.
+ self peek == $a ifFalse: [ ^ self returnPriority: -1 ].
+ self step.
+
+ self peek == $a
+ ] whileTrue.
+
+ ^ self returnPriority: 0
+!
+
+nextTokenAB
+ "ab"
+ self step.
+ self peek == $a ifFalse: [ ^ self return ].
+
+ self step.
+ self peek == $b ifFalse: [ ^ self return ].
+ self recordMatch: #b.
+
+ ^ self return.
+!
+
+nextTokenABorBC
+ "a"
+ self step.
+ (self peek == $a) ifTrue: [
+
+ self step.
+ self peek == $b ifFalse: [ ^ self return ].
+ self recordMatch: #ab.
+
+ ^ self return
+ ].
+
+ (self peek == $b) ifTrue: [
+ self step.
+ self peek == $c ifFalse: [ ^ self return ].
+ self recordMatch: #bc.
+
+ ^ self return
+ ].
+
+ ^ self return
+!
+
+nextTokenABstarA
+ "(ab)*a"
+ self step.
+ self peek == $a ifFalse: [ ^ self return ].
+
+ [
+ self recordMatch: #ABstarA priority: -1.
+
+ self step.
+ self peek == $b ifFalse: [ ^ self returnPriority: -1 ].
+
+ self step.
+ self peek == $a.
+ ] whileTrue.
+
+ ^ self returnPriority: 0
+!
+
+nextTokenA_Bstar_A
+ "ab"
+ self step.
+ self peek == $a ifFalse: [ ^ self return ].
+
+ [
+ self step.
+ self peek == $b.
+ ] whileTrue.
+
+
+ self peek == $a ifFalse: [ ^ self return ].
+ self recordMatch: #A_Bstar_A.
+
+ ^ self return.
+!
+
+nextTokenAorAA
+ "aa / a"
+ self step.
+ (self peek == $a) ifTrue: [
+ self recordMatch: #a priority: 0.
+ ^ self return
+ ].
+
+ self step.
+ (self peek == $a) ifTrue: [
+ self recordMatch: #aa priority: -1.
+ ^ self return
+ ].
+!
+
+nextTokenAorB
+ "a"
+ self step.
+ (self peek == $a) ifTrue: [
+ self recordMatch: #a.
+ ^ self return
+ ].
+ (self peek == $b) ifTrue: [
+ self recordMatch: #b.
+ ^ self return
+ ].
+
+ ^ self return
+!
+
+nextTokenAstarA
+ "a*a"
+ [
+ self step.
+ self peek == $a.
+ ] whileTrue.
+
+ self peek == $a ifFalse: [ ^ self return ].
+ self recordMatch: #AstarA.
+ ^ self return
+!
+
+nextTokenAstarB
+ "a*b"
+ [
+ self step.
+ self peek == $a.
+ ] whileTrue.
+
+ self peek == $b ifFalse: [ ^ self return ].
+ self recordMatch: #AstarB.
+ ^ self return
+!
+
+nextTokenAuorA
+ "a | a"
+ self step.
+ (self peek == $a) ifTrue: [
+ self recordMatch: #a1.
+ self recordMatch: #a2.
+ ^ self return
+ ].
+
+ ^ self return
+! !
+