--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/PPLiteralSequenceParser.st Thu Aug 18 20:56:17 2011 +0200
@@ -0,0 +1,53 @@
+"{ Package: 'squeak:petitparser' }"
+
+PPLiteralParser subclass:#PPLiteralSequenceParser
+ instanceVariableNames:'size'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'PetitParser-Parsers'
+!
+
+PPLiteralSequenceParser comment:'A parser accepts a sequence of literal objects, such as a String. This is an optimization to avoid having to compose longer sequences from PPSequenceParser.'
+!
+
+
+!PPLiteralSequenceParser methodsFor:'accessing'!
+
+size
+ "Answer the sequence size of the receiver."
+
+ ^ size
+! !
+
+!PPLiteralSequenceParser methodsFor:'initialization'!
+
+initializeOn: anObject message: aString
+ super initializeOn: anObject message: aString.
+ size := literal size
+! !
+
+!PPLiteralSequenceParser methodsFor:'operators'!
+
+caseInsensitive
+ "Answer a parser that can parse the receiver case-insensitive."
+
+ literal asUppercase = literal asLowercase ifTrue: [ ^ self ].
+ ^ PPPredicateSequenceParser on: [ :value | literal sameAs: value ] message: message size: size
+! !
+
+!PPLiteralSequenceParser methodsFor:'parsing'!
+
+parseOn: aStream
+ | position result |
+ position := aStream position.
+ result := aStream next: size.
+ literal = result ifTrue: [ ^ result ].
+ aStream position: position.
+ ^ PPFailure message: message at: aStream position
+! !
+
+!PPLiteralSequenceParser class methodsFor:'documentation'!
+
+version_SVN
+ ^ '$Id: PPLiteralSequenceParser.st,v 1.1 2011-08-18 18:56:17 cg Exp $'
+! !