Portability fixes
* do not use Object>>asString. Not all Smalltalks implement it.
* do not use Object>>name. Not all Smalltalks implement it.
* do not use Dictionary keysAndValuesRemove:. Not all Smalltalks implement it.
* do not use Class>>methods The semantics is different among Smalltalks.
Use `Class methodDictionary values` instead.
* do not modify dictionary in #at:ifAbsentPut: block!
"{ Package: 'stx:goodies/petitparser/compiler' }"
"{ NameSpace: Smalltalk }"
Object subclass:#PPCTokenGuard
instanceVariableNames:'node'
classVariableNames:''
poolDictionaries:''
category:'PetitCompiler-Guards'
!
!PPCTokenGuard class methodsFor:'as yet unclassified'!
on: node
^ self new
node: node;
yourself
! !
!PPCTokenGuard methodsFor:'as yet unclassified'!
firstToken
self assert: node firstSetWithTokens size = 1.
^ node firstSetWithTokens anyOne
!
makesSense
^ node firstSetWithTokens size = 1 and: [ node firstSetWithTokens anyOne isTokenNode ]
!
node
^ node
!
node: aPPCNode
node := aPPCNode
! !