PPLiteralObjectParser.st
changeset 0 739fe9b7253e
child 4 90de244a7fa2
equal deleted inserted replaced
-1:000000000000 0:739fe9b7253e
       
     1 "{ Package: 'squeak:petitparser' }"
       
     2 
       
     3 PPLiteralParser subclass:#PPLiteralObjectParser
       
     4 	instanceVariableNames:''
       
     5 	classVariableNames:''
       
     6 	poolDictionaries:''
       
     7 	category:'PetitParser-Parsers'
       
     8 !
       
     9 
       
    10 PPLiteralObjectParser comment:'A parser that accepts a single literal object, such as a character. This is the same as the predicate parser ''PPPredicateParser expect: literal'' but slightly more efficient.'
       
    11 !
       
    12 
       
    13 
       
    14 !PPLiteralObjectParser methodsFor:'operators'!
       
    15 
       
    16 caseInsensitive
       
    17 	"Answer a parser that can parse the receiver case-insensitive."
       
    18 	
       
    19 	literal asUppercase = literal asLowercase ifTrue: [ ^ self ].
       
    20 	^ PPPredicateObjectParser on: [ :value | literal sameAs: value ] message: message
       
    21 ! !
       
    22 
       
    23 !PPLiteralObjectParser methodsFor:'parsing'!
       
    24 
       
    25 parseOn: aStream
       
    26 	^ (aStream atEnd not and: [ literal = aStream uncheckedPeek ])
       
    27 		ifFalse: [ PPFailure message: message at: aStream position ]
       
    28 		ifTrue: [ aStream next ]
       
    29 ! !
       
    30 
       
    31 !PPLiteralObjectParser class methodsFor:'documentation'!
       
    32 
       
    33 version_SVN
       
    34     ^ '$Id: PPLiteralObjectParser.st,v 1.1 2011-08-18 18:56:17 cg Exp $'
       
    35 ! !