compiler/PPCNotCharacterNode.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 30 Jul 2015 08:37:37 +0100
changeset 510 869853decf31
parent 464 f6d77fee9811
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 }"

PPCCharacterNode subclass:#PPCNotCharacterNode
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'PetitCompiler-Nodes'
!

!PPCNotCharacterNode methodsFor:'accessing'!

prefix
    ^ #notChar
! !

!PPCNotCharacterNode methodsFor:'as yet unclassified'!

accept: visitor
    ^ visitor visitNotCharacterNode: self
!

firstCharSet
    ^ PPCharSetPredicate on: [:e | (e = character) not ]
!

recognizedSentencesPrim
    | retval |

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