compiler/tests/extras/PPCLRPMachine.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 30 Jul 2015 17:31:18 +0100
changeset 511 527038bc8edf
child 516 3b81c9e53352
permissions -rw-r--r--
Added LRPParser from Live Robots Prograaming project
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
511
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Smalltalk }"
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
PPCLRPContainedElement subclass:#PPCLRPMachine
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:'initState name body currentState scope triggeredTransition
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
		compareStates compareTransitions'
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	classVariableNames:''
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	poolDictionaries:''
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
	category:'PetitCompiler-Extras-Tests-LRP'
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
!PPCLRPMachine class methodsFor:'instance creation'!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
name: aString body: anArray
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
    |retval|
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    retval := self new.
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
    retval name: aString.
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
    retval body: anArray.
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
    ^retval
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
! !
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
!PPCLRPMachine methodsFor:'accessing'!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
allTransitions
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
    ^self body select:[:item | item isKindOf: PPCLRPTransition]
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
body
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
    ^ body
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
body: anObject
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
    body := anObject.
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    body do: [ :aBodyElement| aBodyElement container: self ].
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
containerMachine
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
    self container isNil
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
        ifTrue: [ ^nil ]
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
        ifFalse: [ ^self container container ]
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
eps
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    ^self body select:[:item | item isMemberOf: PPCLRPEpsilonTransition]
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
events
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    ^self body select:[:item | item class = PPCLRPEvent]
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
machines
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    ^self body select:[:item | item class = PPCLRPMachine]
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
myVarsAndParentVars
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    |recblock |
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    recblock := [  ].
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    recblock := [ :aMachine| |variables|
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
        aMachine ifNil:[
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
            OrderedCollection new.	
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
        ] ifNotNil: [
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
            variables := recblock value: aMachine containerMachine.
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
            variables addAll: (aMachine variables collect:[:aVarNode| aVarNode name]).
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
            variables
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
        ]
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    ].
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    ^recblock value: self.
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
name
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    ^ name
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
name: anObject
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    name := anObject
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
ontime
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    ^self body select:[:item | item isMemberOf: PPCLRPTimeoutTransition]
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
states
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    ^self body select:[:item | item class = PPCLRPState]
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
transitions
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    ^self body select:[:item | item isMemberOf: PPCLRPTransition]
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
variables
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    ^self body select:[:item | item class = PPCLRPVariable]
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
wildtrans
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    ^self body select:[:item | item class = PPCLRPWildcardTransition]
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
! !
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
!PPCLRPMachine methodsFor:'error handing'!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
onErrorNode: aBlock parser: aPPCLRPParser
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    ^body do: [ :aNode| aNode onErrorNode: aBlock parser: aPPCLRPParser]
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
! !
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
!PPCLRPMachine methodsFor:'printing'!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
printOn: aStream
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    aStream nextPutAll: 'PPCLRPMachine '.
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
    aStream nextPutAll: self name.
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    aStream nextPutAll: ' : '.
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
    aStream nextPutAll: self body asString.
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
    
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
! !
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
!PPCLRPMachine methodsFor:'visiting'!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
acceptVisitor: aPPCLRPNodeVisitor
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
    aPPCLRPNodeVisitor visitMachineNode: self.
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
! !
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
!PPCLRPMachine class methodsFor:'documentation'!
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
version_HG
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
    ^ '$Changeset: <not expanded> $'
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
! !
527038bc8edf Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132