Updated to PetitCompiler-JanKurs.160, PetitCompiler-Tests-JanKurs.112, PetitCompiler-Extras-Tests-JanKurs.25, PetitCompiler-Benchmarks-JanKurs.17
Name: PetitCompiler-JanKurs.160
Author: JanKurs
Time: 17-08-2015, 09:52:26.291 AM
UUID: 3b4bfc98-8098-4951-af83-a59e2585b121
Name: PetitCompiler-Tests-JanKurs.112
Author: JanKurs
Time: 16-08-2015, 05:00:32.936 PM
UUID: 85613d47-08f3-406f-9823-9cdab451e805
Name: PetitCompiler-Extras-Tests-JanKurs.25
Author: JanKurs
Time: 16-08-2015, 05:00:10.328 PM
UUID: 09731810-51a1-4151-8d3a-56b636fbd1f7
Name: PetitCompiler-Benchmarks-JanKurs.17
Author: JanKurs
Time: 05-08-2015, 05:29:32.407 PM
UUID: e544b5f1-bcf8-470b-93a6-d2363e4dfc8a
"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
"{ NameSpace: Smalltalk }"
PPCLRPContainedElement subclass:#PPCLRPMachine
instanceVariableNames:'initState name body currentState scope triggeredTransition
compareStates compareTransitions'
classVariableNames:''
poolDictionaries:''
category:'PetitCompiler-Extras-Tests-LRP'
!
!PPCLRPMachine class methodsFor:'instance creation'!
name: aString body: anArray
|retval|
retval := self new.
retval name: aString.
retval body: anArray.
^retval
! !
!PPCLRPMachine methodsFor:'accessing'!
allTransitions
^self body select:[:item | item isKindOf: PPCLRPTransition]
!
body
^ body
!
body: anObject
body := anObject.
body do: [ :aBodyElement| aBodyElement container: self ].
!
containerMachine
self container isNil
ifTrue: [ ^nil ]
ifFalse: [ ^self container container ]
!
eps
^self body select:[:item | item isMemberOf: PPCLRPEpsilonTransition]
!
events
^self body select:[:item | item class = PPCLRPEvent]
!
machines
^self body select:[:item | item class = PPCLRPMachine]
!
myVarsAndParentVars
|recblock |
recblock := [ ].
recblock := [ :aMachine| |variables|
aMachine ifNil:[
OrderedCollection new.
] ifNotNil: [
variables := recblock value: aMachine containerMachine.
variables addAll: (aMachine variables collect:[:aVarNode| aVarNode name]).
variables
]
].
^recblock value: self.
!
name
^ name
!
name: anObject
name := anObject
!
ontime
^self body select:[:item | item isMemberOf: PPCLRPTimeoutTransition]
!
states
^self body select:[:item | item class = PPCLRPState]
!
transitions
^self body select:[:item | item isMemberOf: PPCLRPTransition]
!
variables
^self body select:[:item | item class = PPCLRPVariable]
!
wildtrans
^self body select:[:item | item class = PPCLRPWildcardTransition]
! !
!PPCLRPMachine methodsFor:'error handing'!
onErrorNode: aBlock parser: aPPCLRPParser
^body do: [ :aNode| aNode onErrorNode: aBlock parser: aPPCLRPParser]
! !
!PPCLRPMachine methodsFor:'printing'!
printOn: aStream
aStream nextPutAll: 'PPCLRPMachine '.
aStream nextPutAll: self name.
aStream nextPutAll: ' : '.
aStream nextPutAll: self body asString.
! !
!PPCLRPMachine methodsFor:'visiting'!
acceptVisitor: aPPCLRPNodeVisitor
aPPCLRPNodeVisitor visitMachineNode: self.
! !