compiler/PPCAbstractPredicateNode.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 30 Jul 2015 08:37:37 +0100
changeset 510 869853decf31
parent 452 9f4558b3be66
child 515 b5316ef15274
permissions -rw-r--r--
Tests refactoring - use generated test cases to make sure all posibilities are tested. Do not generate resource for all combinations, use PPCSetUpBeforeTearDownAfterResource instead that delegates parser compilation to the testcase itself (it calls it's #setUpBefore method).

"{ Package: 'stx:goodies/petitparser/compiler' }"

"{ NameSpace: Smalltalk }"

PPCNode subclass:#PPCAbstractPredicateNode
	instanceVariableNames:'predicate'
	classVariableNames:''
	poolDictionaries:''
	category:'PetitCompiler-Nodes'
!

!PPCAbstractPredicateNode methodsFor:'accessing'!

predicate
    
    ^ predicate
!

predicate: anObject
    
    predicate := anObject
!

prefix
    ^ #predicate
! !

!PPCAbstractPredicateNode methodsFor:'analysis'!

acceptsEpsilon
    ^ false
!

firstCharSet
    ^ PPCharSetPredicate on: predicate
! !

!PPCAbstractPredicateNode methodsFor:'comparing'!

= anotherNode
    super = anotherNode ifFalse: [ ^ false ].
    ^ predicate = anotherNode predicate.
!

hash
    ^ super hash bitXor: predicate hash
!

recognizedSentencesPrim
    | retval |

    retval := OrderedCollection new.
    "TODO JK: Works only for ASCII :("
    1 to: 255 do: [ :i |
        (predicate value: (Character codePoint: i)) ifTrue: [ 
            retval add: (Character codePoint: i) asString 
        ]
    ].
    ^ retval
! !

!PPCAbstractPredicateNode methodsFor:'compiling'!

extendClassification: classification
    ^ (classification asOrderedCollection addLast: false; yourself) asArray
! !