PPStartOfWordParser.st
changeset 427 a7f5e6de19d2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PPStartOfWordParser.st	Mon Apr 13 22:00:44 2015 +0100
@@ -0,0 +1,42 @@
+"{ Package: 'stx:goodies/petitparser' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPParser subclass:#PPStartOfWordParser
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitParser-Parsers'
+!
+
+!PPStartOfWordParser methodsFor:'as yet unclassified'!
+
+acceptsEpsilon
+	^ true
+!
+
+parseOn: aPPContext
+	aPPContext atEnd ifTrue: [  
+		^ PPFailure message: 'Start of word expected' context: aPPContext at: aPPContext position 
+	].
+
+	(aPPContext position == 0) ifTrue: [ 
+		(aPPContext peek isAlphaNumeric) ifTrue: [ 
+			^ #startOfWord
+		] ifFalse: [ 
+			^ PPFailure message: 'Start of word expected' context: aPPContext at: aPPContext position 
+	 	]
+	].
+
+	aPPContext back.
+	aPPContext peek isAlphaNumeric ifTrue: [
+		^ PPFailure message: 'Start of word expected' context: aPPContext at: aPPContext position 
+	].
+	aPPContext next.
+	
+	^ aPPContext peek isAlphaNumeric ifTrue: [ #startOfWord ] ifFalse: [ 
+		PPFailure message: 'Start of word expected' context: aPPContext at: aPPContext position 
+	]
+	
+! !
+