Added LRPParser from Live Robots Prograaming project
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 30 Jul 2015 17:31:18 +0100
changeset 511 527038bc8edf
parent 510 869853decf31
child 512 694a247a12ba
Added LRPParser from Live Robots Prograaming project
compiler/tests/extras/Make.proto
compiler/tests/extras/Make.spec
compiler/tests/extras/PPCLRPAction.st
compiler/tests/extras/PPCLRPComment.st
compiler/tests/extras/PPCLRPContainedElement.st
compiler/tests/extras/PPCLRPEpsilonTransition.st
compiler/tests/extras/PPCLRPEvent.st
compiler/tests/extras/PPCLRPMachine.st
compiler/tests/extras/PPCLRPNode.st
compiler/tests/extras/PPCLRPOnEntry.st
compiler/tests/extras/PPCLRPOnExit.st
compiler/tests/extras/PPCLRPParser.st
compiler/tests/extras/PPCLRPRunning.st
compiler/tests/extras/PPCLRPSpawn.st
compiler/tests/extras/PPCLRPState.st
compiler/tests/extras/PPCLRPTimeoutTransition.st
compiler/tests/extras/PPCLRPTransition.st
compiler/tests/extras/PPCLRPVariable.st
compiler/tests/extras/PPCLRPWildcardTransition.st
compiler/tests/extras/abbrev.stc
compiler/tests/extras/bc.mak
compiler/tests/extras/extensions.st
compiler/tests/extras/libInit.cc
compiler/tests/extras/stx_goodies_petitparser_compiler_tests_extras.st
--- a/compiler/tests/extras/Make.proto	Thu Jul 30 08:37:37 2015 +0100
+++ b/compiler/tests/extras/Make.proto	Thu Jul 30 17:31:18 2015 +0100
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/petitparser -I$(INCLUDE_TOP)/stx/goodies/petitparser/compiler -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/java -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/smalltalk -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/smalltalk/tests -I$(INCLUDE_TOP)/stx/goodies/petitparser/tests -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic2
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/petitparser -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/smalltalk -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic
 
 
 # if you need any additional defines for embedded C code,
@@ -103,13 +103,7 @@
 prereq:
 	cd ../../../../../libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../../../../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../../../../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../../ && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../../../../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../../../../sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../../../tests && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../../../parsers/java && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../../../parsers/smalltalk/tests && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 
 
 
@@ -129,7 +123,23 @@
 
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/goodies/sunit/TestAsserter.$(H) $(INCLUDE_TOP)/stx/goodies/sunit/TestResource.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPNode.$(O) PPCLRPNode.$(H): PPCLRPNode.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPParser.$(O) PPCLRPParser.$(H): PPCLRPParser.st $(INCLUDE_TOP)/stx/goodies/petitparser/PPCompositeParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPDelegateParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPParser.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPAction.$(O) PPCLRPAction.$(H): PPCLRPAction.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPContainedElement.$(O) PPCLRPContainedElement.$(H): PPCLRPContainedElement.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPSpawn.$(O) PPCLRPSpawn.$(H): PPCLRPSpawn.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPComment.$(O) PPCLRPComment.$(H): PPCLRPComment.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPContainedElement.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPEvent.$(O) PPCLRPEvent.$(H): PPCLRPEvent.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPContainedElement.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPMachine.$(O) PPCLRPMachine.$(H): PPCLRPMachine.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPContainedElement.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPOnEntry.$(O) PPCLRPOnEntry.$(H): PPCLRPOnEntry.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPAction.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPOnExit.$(O) PPCLRPOnExit.$(H): PPCLRPOnExit.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPAction.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPRunning.$(O) PPCLRPRunning.$(H): PPCLRPRunning.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPAction.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPState.$(O) PPCLRPState.$(H): PPCLRPState.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPContainedElement.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPTransition.$(O) PPCLRPTransition.$(H): PPCLRPTransition.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPContainedElement.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPVariable.$(O) PPCLRPVariable.$(H): PPCLRPVariable.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPContainedElement.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPEpsilonTransition.$(O) PPCLRPEpsilonTransition.$(H): PPCLRPEpsilonTransition.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPContainedElement.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPTransition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPTimeoutTransition.$(O) PPCLRPTimeoutTransition.$(H): PPCLRPTimeoutTransition.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPContainedElement.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPTransition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPWildcardTransition.$(O) PPCLRPWildcardTransition.$(H): PPCLRPWildcardTransition.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPContainedElement.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras/PPCLRPTransition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/compiler/tests/extras/Make.spec	Thu Jul 30 08:37:37 2015 +0100
+++ b/compiler/tests/extras/Make.spec	Thu Jul 30 17:31:18 2015 +0100
@@ -51,12 +51,45 @@
 STCWARNINGS=-warnNonStandard
 
 COMMON_CLASSES= \
+	PPCLRPNode \
+	PPCLRPParser \
+	PPCLRPAction \
+	PPCLRPContainedElement \
+	PPCLRPSpawn \
+	PPCLRPComment \
+	PPCLRPEvent \
+	PPCLRPMachine \
+	PPCLRPOnEntry \
+	PPCLRPOnExit \
+	PPCLRPRunning \
+	PPCLRPState \
+	PPCLRPTransition \
+	PPCLRPVariable \
+	PPCLRPEpsilonTransition \
+	PPCLRPTimeoutTransition \
+	PPCLRPWildcardTransition \
 
 
 
 
 COMMON_OBJS= \
-    $(OUTDIR_SLASH)extensions.$(O) \
+    $(OUTDIR_SLASH)PPCLRPNode.$(O) \
+    $(OUTDIR_SLASH)PPCLRPParser.$(O) \
+    $(OUTDIR_SLASH)PPCLRPAction.$(O) \
+    $(OUTDIR_SLASH)PPCLRPContainedElement.$(O) \
+    $(OUTDIR_SLASH)PPCLRPSpawn.$(O) \
+    $(OUTDIR_SLASH)PPCLRPComment.$(O) \
+    $(OUTDIR_SLASH)PPCLRPEvent.$(O) \
+    $(OUTDIR_SLASH)PPCLRPMachine.$(O) \
+    $(OUTDIR_SLASH)PPCLRPOnEntry.$(O) \
+    $(OUTDIR_SLASH)PPCLRPOnExit.$(O) \
+    $(OUTDIR_SLASH)PPCLRPRunning.$(O) \
+    $(OUTDIR_SLASH)PPCLRPState.$(O) \
+    $(OUTDIR_SLASH)PPCLRPTransition.$(O) \
+    $(OUTDIR_SLASH)PPCLRPVariable.$(O) \
+    $(OUTDIR_SLASH)PPCLRPEpsilonTransition.$(O) \
+    $(OUTDIR_SLASH)PPCLRPTimeoutTransition.$(O) \
+    $(OUTDIR_SLASH)PPCLRPWildcardTransition.$(O) \
 
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPAction.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,63 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPNode subclass:#PPCLRPAction
+	instanceVariableNames:'block textBlock interpretedBlock keywordEnd'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
+!PPCLRPAction class methodsFor:'instance creation'!
+
+block: aBlock
+    |retval|
+    retval := self new.
+    retval block: aBlock.
+    retval textBlock: aBlock copy. 
+    ^ retval
+! !
+
+!PPCLRPAction methodsFor:'accessing'!
+
+block
+    ^ block
+!
+
+block: anObject
+    block := anObject
+!
+
+keywordEnd
+    keywordEnd ifNil: [ self halt: 'Error in setting up range info for styling' ].
+    ^ keywordEnd
+!
+
+keywordEnd: anObject
+    keywordEnd := anObject
+!
+
+textBlock
+    ^ textBlock
+!
+
+textBlock: anObject
+    textBlock := anObject
+! !
+
+!PPCLRPAction methodsFor:'printing'!
+
+printOn: aStream
+
+    aStream nextPutAll: self class name.
+    aStream nextPutAll: ' : '.
+    aStream nextPutAll: self block asString.
+! !
+
+!PPCLRPAction methodsFor:'visiting'!
+
+acceptVisitor: aLRPNodeVisitor
+    aLRPNodeVisitor visitActionNode: self.
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPComment.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,34 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPContainedElement subclass:#PPCLRPComment
+	instanceVariableNames:'text'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
+!PPCLRPComment class methodsFor:'instance creation'!
+
+text: aString
+    ^ self new text: aString
+! !
+
+!PPCLRPComment methodsFor:'accessing'!
+
+text
+    ^ text
+!
+
+text: anObject
+    text := anObject
+! !
+
+!PPCLRPComment methodsFor:'as yet unclassified'!
+
+printOn: aStream
+    aStream nextPutAll: 'PPCLRPComment : '.
+    aStream nextPutAll: self text asString.
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPContainedElement.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,21 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPNode subclass:#PPCLRPContainedElement
+	instanceVariableNames:'container'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
+!PPCLRPContainedElement methodsFor:'accessing'!
+
+container
+    ^ container
+!
+
+container: anObject
+    container := anObject
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPEpsilonTransition.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,39 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPTransition subclass:#PPCLRPEpsilonTransition
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
+!PPCLRPEpsilonTransition class methodsFor:'instance creation'!
+
+from: startState to: endState name: aString
+    |retval|
+    retval := self new.
+    retval from: startState.
+    retval to: endState.
+    retval name: aString.
+    ^ retval.
+!
+
+on: anEvent from: startState to: endState name: aString
+
+    self error: 'Epsilon Transitions have no events. Use from:to:name: instead.'
+! !
+
+!PPCLRPEpsilonTransition methodsFor:'printing'!
+
+printOn: aStream
+
+    aStream nextPutAll: 'PPCLRPEpsilonTransition '.
+    aStream nextPutAll: self name.
+    aStream nextPutAll: ' : '.
+    aStream nextPutAll: self from.
+    aStream nextPutAll: '->'.
+    aStream nextPutAll: self to.
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPEvent.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,55 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPContainedElement subclass:#PPCLRPEvent
+	instanceVariableNames:'name trigger triggerBlock'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
+!PPCLRPEvent class methodsFor:'instance creation'!
+
+named: aString trigger: aBlock
+    |retval|
+    retval := self new.
+    retval name: aString.
+    retval trigger: aBlock.
+    ^ retval
+! !
+
+!PPCLRPEvent methodsFor:'accessing'!
+
+name
+    ^ name
+!
+
+name: anObject
+    name := anObject
+!
+
+trigger
+    ^ trigger
+!
+
+trigger: anObject
+    trigger := anObject
+! !
+
+!PPCLRPEvent methodsFor:'printing'!
+
+printOn: aStream
+    aStream nextPutAll: 'PPCLRPEvent '.
+    aStream nextPutAll: self name.
+    aStream nextPutAll: ' : '.
+    aStream nextPutAll: self trigger asString.
+    
+! !
+
+!PPCLRPEvent methodsFor:'visiting'!
+
+acceptVisitor: aPPCLRPNodeVisitor
+    aPPCLRPNodeVisitor visitEventNode: self
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPMachine.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,132 @@
+"{ 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.
+! !
+
+!PPCLRPMachine class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPNode.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,63 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+Object subclass:#PPCLRPNode
+	instanceVariableNames:'start stop nameRange'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
+!PPCLRPNode methodsFor:'accessing'!
+
+nameRange
+    nameRange ifNil: [self halt: 'Error in setting up range info for styling.' ].
+    ^ nameRange
+!
+
+nameRange: anObject
+    nameRange := anObject
+!
+
+start
+    ^ start
+!
+
+start: anObject
+    start := anObject
+!
+
+start: aNumber stop: anotherNumber
+    
+    start := aNumber.
+    stop := anotherNumber.
+!
+
+stop
+    ^ stop
+!
+
+stop: anObject
+    stop := anObject
+! !
+
+!PPCLRPNode methodsFor:'error handing'!
+
+onErrorNode: aBlock parser: aPPCLRPParser
+    "do nothing"
+! !
+
+!PPCLRPNode methodsFor:'testing'!
+
+isError
+
+    ^false.
+! !
+
+!PPCLRPNode methodsFor:'visiting'!
+
+acceptVisitor: aPPCLRPNodeVisitor
+    aPPCLRPNodeVisitor visitAnyNode: self.
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPOnEntry.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,11 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPAction subclass:#PPCLRPOnEntry
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPOnExit.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,11 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPAction subclass:#PPCLRPOnExit
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPParser.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,382 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCompositeParser subclass:#PPCLRPParser
+	instanceVariableNames:'program variable block bra ket identifier machine body event
+		transition epsilon wildcard state onentry running onexit comment
+		lineTerminator statebody spawn integer errorNode success failed
+		lastError styler timeoutIdentifier timeoutInteger endOfComment'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
+!PPCLRPParser class methodsFor:'accessing'!
+
+ignoredNames
+
+    ^super ignoredNames , #(styler failed lastError)
+! !
+
+!PPCLRPParser methodsFor:'accessing'!
+
+error
+    ^super error
+
+    "Modified: / 30-07-2015 / 17:12:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+failed
+    ^failed
+!
+
+lastError
+    ^lastError
+!
+
+start
+    ^program end
+!
+
+styler: aSHStyler
+
+    styler := aSHStyler.
+!
+
+success
+    ^success
+! !
+
+!PPCLRPParser methodsFor:'block creation'!
+
+createSTBlockFrom: aBlockNode withVariables: aDictionary
+    |compiled retval keys|
+    
+    keys := OrderedCollection new: aDictionary size.
+    aDictionary associations do: [:asoc|
+        keys add: asoc key.
+    ].
+
+    compiled := (self methodizeBlock: aBlockNode withArguments: keys) compiledMethod.
+    retval := compiled valueWithReceiver: Object new arguments: {aDictionary}.
+
+    ^retval.
+!
+
+methodizeBlock: parsedBlock withArguments: anArray
+    
+    |method retval inspoint|
+    
+    method := 'captureV: PPCLRPScopeVariables'.
+     
+    retval := PPSmalltalkParser new method parse: method , '^[1]'.
+    inspoint := retval body statements first.
+    parsedBlock scope: inspoint value scope.
+    parsedBlock parent: inspoint.
+    inspoint value: parsedBlock.
+    retval source: retval asString.
+    
+    anArray do: [:aVarName|
+        retval := retval rewritePPCLRPVarNamedWrite: aVarName.
+        retval := retval rewritePPCLRPVarNamedRead: aVarName.
+    ].
+    ^retval
+! !
+
+!PPCLRPParser methodsFor:'error handing'!
+
+failWithValue: anObject
+
+    failed := true.
+    lastError := anObject.
+! !
+
+!PPCLRPParser methodsFor:'grammar'!
+
+body
+    ^(variable / event / state / transition / timeoutIdentifier / timeoutInteger / epsilon / wildcard / comment / errorNode) star
+!
+
+errorNode
+    ^(bra,  (bra/ket)negate star , ket) 
+        ==> [ :tokens |  
+                PPCLRPErrorNode new start: tokens first start stop: tokens last stop; yourself.
+            ]
+!
+
+event
+    ^ (bra, 'event' asParser trim, identifier, block,  ket)  
+        ==> [:tokens | | ident |
+                ident := (tokens at: 3).
+                (PPCLRPEvent named: ident inputValue 
+                     trigger: (tokens  at: 4))
+                start: tokens first start stop: tokens last stop;
+                nameRange: (ident start to: ident stop);
+                yourself.
+            ]
+!
+
+integer 
+    ^(#digit asParser) plus flatten trim token
+!
+
+machine
+    ^(bra , 'machine' asParser trim , identifier , body , ket) 
+        ==> [:tokens | | ident bod stop |
+                ident := (tokens at: 3).
+                bod := (tokens at: 4).
+                bod isEmpty
+                    ifTrue: [ stop := tokens last stop - 1 ]
+                 	ifFalse: [ stop := (bod at: 1) start - 1 ].
+                (PPCLRPMachine name: ident inputValue body: bod)
+                    start: (tokens first start) stop: (tokens last stop);
+                    nameRange: (ident start to: stop);
+                    yourself.
+            ]
+!
+
+onentry
+    ^ (bra, 'onentry' asParser trim, (block/spawn) ,  ket ) 
+        ==> [:tokens | 
+                (PPCLRPOnEntry block: (tokens at: 3))
+                start: (tokens first start) stop: (tokens last stop);
+                keywordEnd: (tokens at: 3) start -1;
+                yourself.
+            ]
+!
+
+onexit
+    ^ (bra, 'onexit' asParser trim, (block/spawn),  ket)  
+        ==> [:tokens | 
+                (PPCLRPOnExit block: (tokens at: 3))
+                start: (tokens first start) stop: (tokens last stop);
+                keywordEnd: (tokens at: 3) start -1;
+                yourself.
+            ]
+!
+
+program
+    ^ (variable / machine / comment / spawn / errorNode) star
+!
+
+running
+    ^ (bra, 'running' asParser trim, (block/spawn),  ket)  
+        ==> [:tokens | 
+                (PPCLRPRunning block: (tokens at: 3))
+                start: (tokens first start) stop: (tokens last stop);
+                keywordEnd: (tokens at: 3) start -1;
+                yourself.
+            ]
+!
+
+spawn
+    ^(bra , 'spawn' asParser trim , identifier , identifier , ket) 
+        ==> [ :tokens |  
+                (PPCLRPSpawn
+                    machine: (tokens at: 3) parsedValue
+                    state: (tokens at: 4) parsedValue)
+                start: (tokens first start) stop: (tokens last stop);
+                nameRange: ((tokens at: 3) start to: (tokens at: 4) stop)
+                yourself.
+            ]
+        
+!
+
+state
+    ^(bra , 'state' asParser trim , identifier , statebody , ket) 
+        ==> [ :tokens | | ident |
+                ident := (tokens at: 3).
+                (PPCLRPState name: ident inputValue
+                    body: (tokens at: 4))
+                start: (tokens first start) stop: (tokens last stop);
+                nameRange: (ident start to: ident stop);
+                yourself.
+            ]
+        
+!
+
+statebody
+    ^(onentry / running / onexit / machine / comment / errorNode) star
+        
+!
+
+variable
+    ^ (bra , 'var' asParser trim , identifier , ':=' asParser trim , block , ket) 
+        ==> [ :tokens | |ident|
+            ident := (tokens at: 3).
+            (PPCLRPVariable name: ident inputValue value: (tokens at: 5))
+                start: (tokens first start) stop: (tokens last stop);
+                nameRange: (ident start to: ident stop);
+                yourself.
+        ]
+! !
+
+!PPCLRPParser methodsFor:'grammar-comments'!
+
+comment
+    ^ ( $; asParser token , (endOfComment negate star) flatten,  endOfComment token) trim 
+    ==> [ :tokens |  |text|
+            text := tokens  at: 2.
+                (PPCLRPComment text: (text copyFrom: 1 to: text size -1))
+                start: (tokens first start) stop: (tokens last stop);
+                yourself.
+        ]
+!
+
+endOfComment
+    ^ #eof asParser / lineTerminator
+!
+
+lineTerminator
+
+    ^ (Character lf asParser) / (Character cr asParser , (Character lf asParser ) optional )
+! !
+
+!PPCLRPParser methodsFor:'grammar-common'!
+
+block
+    ^PPSmalltalkParser new block
+!
+
+bra
+    ^ $( asParser token trim
+!
+
+identifier 
+    ^(#letter asParser , (#word asParser /  $_ asParser) star) flatten token trim
+!
+
+ket
+    ^ $) asParser token trim
+! !
+
+!PPCLRPParser methodsFor:'grammar-transitions'!
+
+epsilon
+    ^ (bra, 'eps' asParser trim, identifier, '->' asParser trim, identifier,  identifier optional, ket) 
+        ==> [ :tokens |  | trans name |
+                name := (tokens at: 6).
+                name ifNil: [name := '' ] ifNotNil: [ name := name inputValue ].
+                trans := 
+                    (PPCLRPEpsilonTransition
+                        from: (tokens at: 3) inputValue
+                        to: (tokens at: 5) inputValue
+                        name: name).
+                self setTransitionRangesIn: trans for: tokens withArrowAt: 3. 
+                trans
+        ]
+!
+
+timeoutIdentifier
+    ^ (bra, 'ontime' asParser trim, identifier , identifier, '->' asParser trim, identifier,  identifier optional, ket)
+        ==> [:tokens | self transitionActionHandlerFor: PPCLRPTimeoutTransition tokens: tokens ].
+
+    "Modified: / 30-07-2015 / 17:14:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+timeoutInteger
+    ^ (bra, 'ontime' asParser trim,  integer, identifier, '->' asParser trim, identifier,  identifier optional, ket)
+        ==> [ :tokens | | trans name |
+        name := (tokens at: 7).
+        name ifNil: [name := '' ] ifNotNil: [ name := name inputValue ].
+        trans :=
+            (PPCLRPTimeoutTransition
+                on: (Integer readFrom: (tokens at: 3) inputValue)
+                from: (tokens at: 4) inputValue
+                to: (tokens at: 6) inputValue
+                name: name).
+        self setTransitionRangesIn: trans for: tokens withArrowAt: 4.
+        trans.
+    ]
+!
+
+transition
+    ^ (bra, 'on' asParser trim, identifier, identifier, '->' asParser trim, identifier,  identifier optional , ket) 
+        ==> [ :tokens | self transitionActionHandlerFor: PPCLRPTransition tokens: tokens ]
+
+    "Modified: / 30-07-2015 / 17:15:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+wildcard
+    ^ (bra, 'on' asParser trim, identifier,  '*->' asParser trim, identifier,  identifier optional, ket) 
+        ==> [ :tokens |  | trans name |
+                name := (tokens at: 6).
+                name ifNil: [name := '' ] ifNotNil: [ name := name inputValue ].
+                trans :=
+                    (PPCLRPWildcardTransition
+                        on: (tokens at: 3) inputValue
+                        to: (tokens at: 5) inputValue
+                        name: name ).
+                self setTransitionRangesIn: trans for: tokens withArrowAt: 3. 
+                trans
+            ]
+        
+! !
+
+!PPCLRPParser methodsFor:'parsing'!
+
+parse: aText styleOn: aViewOrMorph
+    |parsedProgram|
+    
+    parsedProgram := self parsePPCLRP: aText.
+    self styler view: aViewOrMorph; parser: self; nodes: parsedProgram; style: aText.
+    
+    ^parsedProgram.
+!
+
+parsePPCLRP: aString
+
+    |parsedProgram |
+    failed := false.
+    parsedProgram := self parse: aString.
+    
+    parsedProgram isPetitFailure ifTrue:[
+        parsedProgram := 
+            {PPCLRPErrorNode new 
+                start: 1;
+                stop: aString size; 
+                yourself.
+            }
+    ].
+    
+    "visit pattern?"
+    parsedProgram do:[:aNode|
+        (aNode onErrorNode: [:anErrorNode| ] parser: self)
+    ].
+    
+    ^parsedProgram.
+! !
+
+!PPCLRPParser methodsFor:'transitions'!
+
+setTransitionRangesIn: aTransition for: aTokenArray withArrowAt: index
+    | ident |
+    ident := (aTokenArray at: index + 3).
+    ident
+        ifNil: [ aTransition nameRange: (1 to: 1) ]
+        ifNotNil: [ aTransition nameRange: (ident start to: ident stop) ].
+    aTransition
+        start: (aTokenArray first start) stop: (aTokenArray last stop);
+        arrowRange:
+                    ((aTokenArray at: index) stop + 1
+                        to: (aTokenArray at: index + 2) start -1);
+        keywordEnd: (aTokenArray at: 3) start -1
+!
+
+transitionActionHandlerFor: class tokens: tokens
+    | trans name|
+    name := (tokens  at: 7).
+    name isNil ifTrue:[ name := '' ] ifFalse:[ name := name inputValue ].
+    trans :=
+        (class
+            on: (tokens at: 3) inputValue
+            from: (tokens at: 4) inputValue
+            to: (tokens at: 6) inputValue
+            name: name).
+    self setTransitionRangesIn: trans for: tokens withArrowAt: 4.
+    ^ trans.
+
+    "Created: / 30-07-2015 / 17:12:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPRunning.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,11 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPAction subclass:#PPCLRPRunning
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPSpawn.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,48 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPNode subclass:#PPCLRPSpawn
+	instanceVariableNames:'machine state'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
+!PPCLRPSpawn class methodsFor:'instance creation'!
+
+machine: machineName state: stateName
+    |retval|
+    retval := self new.
+    retval machine: machineName.
+    retval state: stateName.
+    ^retval
+! !
+
+!PPCLRPSpawn methodsFor:'accessing'!
+
+machine
+    ^ machine
+!
+
+machine: anObject
+    machine := anObject
+!
+
+state
+    ^ state
+!
+
+state: anObject
+    state := anObject
+! !
+
+!PPCLRPSpawn methodsFor:'printing'!
+
+printOn: aStream
+    aStream nextPutAll: 'PPCLRPSpawn '.
+    aStream nextPutAll: machine asString.
+    aStream nextPutAll: ' : '.
+    aStream nextPutAll: state asString.
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPState.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,73 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPContainedElement subclass:#PPCLRPState
+	instanceVariableNames:'name body nestedMachine startTime compareMachines'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
+!PPCLRPState class methodsFor:'instance creation'!
+
+name: aString body: anArray
+    |retval|
+    retval := self new.
+    retval name: aString.
+    retval body: anArray.
+    ^retval
+! !
+
+!PPCLRPState methodsFor:'accessing'!
+
+body
+    ^ body
+!
+
+body: anObject
+    body := anObject.
+    body do: [ :aBodyElement|
+        (aBodyElement isKindOf: PPCLRPContainedElement)
+            ifTrue: [aBodyElement container: self] ].
+!
+
+fullName
+    ^self container fullName, '/', self name 
+!
+
+machines
+    ^self body select:[:item | item class = PPCLRPMachine]
+!
+
+name
+    ^ name
+!
+
+name: anObject
+    name := anObject
+! !
+
+!PPCLRPState methodsFor:'error handing'!
+
+onErrorNode: aBlock parser: aPPCLRPParser
+
+    ^body do:[:aNode| aNode onErrorNode: aBlock parser: aPPCLRPParser]
+! !
+
+!PPCLRPState methodsFor:'printing'!
+
+printOn: aStream
+    aStream nextPutAll: 'PPCLRPState '.
+    aStream nextPutAll: self name.
+    aStream nextPutAll: ' : '.
+    aStream nextPutAll: self body asString.
+    
+! !
+
+!PPCLRPState methodsFor:'visiting'!
+
+acceptVisitor: aPPCLRPNodeVisitor
+    aPPCLRPNodeVisitor visitStateNode: self.
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPTimeoutTransition.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,25 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPTransition subclass:#PPCLRPTimeoutTransition
+	instanceVariableNames:'maxTime'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
+!PPCLRPTimeoutTransition methodsFor:'printing'!
+
+printOn: aStream
+
+    aStream nextPutAll: 'PPCLRPTimeoutTransition '.
+    aStream nextPutAll: self name.
+    aStream nextPutAll: ' : '.
+    aStream nextPutAll: self from.
+    aStream nextPutAll: '->'.
+    aStream nextPutAll: self to.
+    aStream nextPutAll: ' on '.
+    aStream nextPutAll: self eventname asString.
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPTransition.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,99 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPContainedElement subclass:#PPCLRPTransition
+	instanceVariableNames:'name from to eventname arrowRange keywordEnd'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
+!PPCLRPTransition class methodsFor:'instance creation'!
+
+on: anEvent from: startState to: endState name: aString
+    |retval|
+    retval := self new.
+    retval eventname: anEvent.
+    retval from: startState.
+    retval to: endState.
+    retval name: aString.
+    ^ retval.
+! !
+
+!PPCLRPTransition methodsFor:'accessing'!
+
+arrowRange
+    arrowRange ifNil: [ self halt: 'Error in setting up range info for styling' ].
+    ^ arrowRange
+!
+
+arrowRange: anObject
+    arrowRange := anObject
+!
+
+eventname
+    ^ eventname
+!
+
+eventname: anObject
+    eventname := anObject
+!
+
+from
+    ^ from
+!
+
+from: anObject
+    from := anObject
+!
+
+identifier
+    ^self className , self from , self to , self name.
+!
+
+keywordEnd
+    ^ keywordEnd
+!
+
+keywordEnd: anObject
+    keywordEnd := anObject
+!
+
+name
+    ^ name
+!
+
+name: anObject
+    name := anObject
+!
+
+to
+    ^ to
+!
+
+to: anObject
+    to := anObject
+! !
+
+!PPCLRPTransition methodsFor:'printing'!
+
+printOn: aStream
+
+    aStream nextPutAll: 'PPCLRPTransition '.
+    aStream nextPutAll: self name.
+    aStream nextPutAll: ' : '.
+    aStream nextPutAll: self from.
+    aStream nextPutAll: '->'.
+    aStream nextPutAll: self to.
+    aStream nextPutAll: ' on '.
+    aStream nextPutAll: self eventname.
+    
+! !
+
+!PPCLRPTransition methodsFor:'visiting'!
+
+acceptVisitor: aPPCLRPNodeVisitor
+    aPPCLRPNodeVisitor visitTransitionNode: self.
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPVariable.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,55 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPContainedElement subclass:#PPCLRPVariable
+	instanceVariableNames:'name value'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
+!PPCLRPVariable class methodsFor:'installation'!
+
+name: aString value: aValue
+    |retval|
+    retval := self new.
+    retval name: aString.
+    retval value: aValue.
+    ^retval
+! !
+
+!PPCLRPVariable methodsFor:'accessing'!
+
+name
+    ^ name
+!
+
+name: anObject
+    name := anObject
+!
+
+value
+    ^ value
+!
+
+value: anObject
+    value := anObject
+! !
+
+!PPCLRPVariable methodsFor:'printing'!
+
+printOn: aStream
+    aStream nextPutAll: 'PPCLRPVariable '.
+    aStream nextPutAll: self name.
+    aStream nextPutAll: ' : '.
+    aStream nextPutAll: self value asString.
+    
+! !
+
+!PPCLRPVariable methodsFor:'visiting'!
+
+acceptVisitor: aPPCLRPNodeVisitor
+    aPPCLRPNodeVisitor visitVariableNode: self
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCLRPWildcardTransition.st	Thu Jul 30 17:31:18 2015 +0100
@@ -0,0 +1,41 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCLRPTransition subclass:#PPCLRPWildcardTransition
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-LRP'
+!
+
+!PPCLRPWildcardTransition class methodsFor:'instance creation'!
+
+on: anEvent from: startState to: endState name: aString
+
+    self error: 'Wildcard transitions have no from state. Use on:to:name: instead.'
+!
+
+on: anEvent to: endState name: aString
+    |retval|
+    retval := self new.
+    retval eventname: anEvent.
+    retval from: '*'.
+    retval to: endState.
+    retval name: aString.
+    ^ retval.
+! !
+
+!PPCLRPWildcardTransition methodsFor:'printing'!
+
+printOn: aStream
+
+    aStream nextPutAll: 'PPCLRPWildcardTransition '.
+    aStream nextPutAll: self name.
+    aStream nextPutAll: ' : *->'.
+    aStream nextPutAll: self to.
+    aStream nextPutAll: ' on '.
+    aStream nextPutAll: self eventname.
+    
+! !
+
--- a/compiler/tests/extras/abbrev.stc	Thu Jul 30 08:37:37 2015 +0100
+++ b/compiler/tests/extras/abbrev.stc	Thu Jul 30 17:31:18 2015 +0100
@@ -1,37 +1,54 @@
 # automagically generated by the project definition
 # this file is needed for stc to be able to compile modules independently.
 # it provides information about a classes filename, category and especially namespace.
+PPCLRPNode PPCLRPNode stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPParser PPCLRPParser stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+stx_goodies_petitparser_compiler_tests_extras stx_goodies_petitparser_compiler_tests_extras stx:goodies/petitparser/compiler/tests/extras '* Projects & Packages *' 3
+PPCLRPAction PPCLRPAction stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPContainedElement PPCLRPContainedElement stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPSpawn PPCLRPSpawn stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPComment PPCLRPComment stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPEvent PPCLRPEvent stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPMachine PPCLRPMachine stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPOnEntry PPCLRPOnEntry stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPOnExit PPCLRPOnExit stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPRunning PPCLRPRunning stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPState PPCLRPState stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPTransition PPCLRPTransition stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPVariable PPCLRPVariable stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPEpsilonTransition PPCLRPEpsilonTransition stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPTimeoutTransition PPCLRPTimeoutTransition stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
+PPCLRPWildcardTransition PPCLRPWildcardTransition stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-LRP' 0
 PPCAbstractParserTest PPCAbstractParserTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Support' 1
 PPCCompiledJavaVerificationTest PPCCompiledJavaVerificationTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Java' 1
 PPCCompositeParserTest PPCCompositeParserTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Support' 1
+PPCExpressionGrammarTest PPCExpressionGrammarTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
+PPCExpressionGrammarTest_Tokenized PPCExpressionGrammarTest_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
+PPCExpressionGrammarTest_Universal PPCExpressionGrammarTest_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
+PPCExpressionGrammarVerificationTest PPCExpressionGrammarVerificationTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
+PPCLL1ExpressionGrammarTest PPCLL1ExpressionGrammarTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
+PPCLL1ExpressionGrammarTest_Tokenized PPCLL1ExpressionGrammarTest_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
+PPCLL1ExpressionGrammarTest_Universal PPCLL1ExpressionGrammarTest_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
 PPCResources PPCResources stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Support' 1
 PPCSetUpBeforeTearDownAfterResource PPCSetUpBeforeTearDownAfterResource stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Support' 2
 PPCSmalltalkGrammarTests PPCSmalltalkGrammarTests stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
+PPCSmalltalkGrammarTests_Tokenized PPCSmalltalkGrammarTests_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
+PPCSmalltalkGrammarTests_Universal PPCSmalltalkGrammarTests_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
+PPCSmalltalkGrammarVerificationTest PPCSmalltalkGrammarVerificationTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
+PPCSmalltalkGrammarVerificationTest_Tokenized PPCSmalltalkGrammarVerificationTest_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
+PPCSmalltalkGrammarVerificationTest_Universal PPCSmalltalkGrammarVerificationTest_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
 PPCSmalltalkParserTests PPCSmalltalkParserTests stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
+PPCSmalltalkParserTests_Tokenized PPCSmalltalkParserTests_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
+PPCSmalltalkParserTests_Universal PPCSmalltalkParserTests_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
+PPCSmalltalkParserVerificationTest PPCSmalltalkParserVerificationTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
+PPCSmalltalkParserVerificationTest_Tokenized PPCSmalltalkParserVerificationTest_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
+PPCSmalltalkParserVerificationTest_Universal PPCSmalltalkParserVerificationTest_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
 PPCSmalltalkTests PPCSmalltalkTests stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
 PPCompiledJavaResource PPCompiledJavaResource stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Java' 1
 PPCompiledJavaSyntaxTest PPCompiledJavaSyntaxTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Java' 1
 PPExpressionGrammar PPExpressionGrammar stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 0
 PPExpressionGrammarTest PPExpressionGrammarTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
+PPExpressionGrammarVerificationTest_Tokenized PPExpressionGrammarVerificationTest_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
+PPExpressionGrammarVerificationTest_Universal PPExpressionGrammarVerificationTest_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
 PPLL1ExpressionGrammar PPLL1ExpressionGrammar stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 0
 PPLL1ExpressionGrammarTest PPLL1ExpressionGrammarTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
-stx_goodies_petitparser_compiler_tests_extras stx_goodies_petitparser_compiler_tests_extras stx:goodies/petitparser/compiler/tests/extras '* Projects & Packages *' 3
-PPCExpressionGrammarTest PPCExpressionGrammarTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
-PPCExpressionGrammarVerificationTest PPCExpressionGrammarVerificationTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
-PPCLL1ExpressionGrammarTest PPCLL1ExpressionGrammarTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
-PPCSmalltalkGrammarTests_Tokenized PPCSmalltalkGrammarTests_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
-PPCSmalltalkGrammarTests_Universal PPCSmalltalkGrammarTests_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
-PPCSmalltalkGrammarVerificationTest PPCSmalltalkGrammarVerificationTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
-PPCSmalltalkParserTests_Tokenized PPCSmalltalkParserTests_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
-PPCSmalltalkParserTests_Universal PPCSmalltalkParserTests_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
-PPCSmalltalkParserVerificationTest PPCSmalltalkParserVerificationTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
-PPCExpressionGrammarTest_Tokenized PPCExpressionGrammarTest_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
-PPCExpressionGrammarTest_Universal PPCExpressionGrammarTest_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
-PPCLL1ExpressionGrammarTest_Tokenized PPCLL1ExpressionGrammarTest_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
-PPCLL1ExpressionGrammarTest_Universal PPCLL1ExpressionGrammarTest_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
-PPCSmalltalkGrammarVerificationTest_Tokenized PPCSmalltalkGrammarVerificationTest_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
-PPCSmalltalkGrammarVerificationTest_Universal PPCSmalltalkGrammarVerificationTest_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
-PPCSmalltalkParserVerificationTest_Tokenized PPCSmalltalkParserVerificationTest_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
-PPCSmalltalkParserVerificationTest_Universal PPCSmalltalkParserVerificationTest_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1
-PPExpressionGrammarVerificationTest_Tokenized PPExpressionGrammarVerificationTest_Tokenized stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
-PPExpressionGrammarVerificationTest_Universal PPExpressionGrammarVerificationTest_Universal stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1
--- a/compiler/tests/extras/bc.mak	Thu Jul 30 08:37:37 2015 +0100
+++ b/compiler/tests/extras/bc.mak	Thu Jul 30 17:31:18 2015 +0100
@@ -35,7 +35,7 @@
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\petitparser -I$(INCLUDE_TOP)\stx\goodies\petitparser\compiler -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\java -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\smalltalk -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\smalltalk\tests -I$(INCLUDE_TOP)\stx\goodies\petitparser\tests -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\petitparser -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\smalltalk -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
@@ -53,13 +53,7 @@
 prereq:
 	pushd ..\..\..\..\..\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\..\..\..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\..\..\..\..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\.. & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\..\..\..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\..\..\..\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\..\..\tests & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\..\..\parsers\java & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\..\..\parsers\smalltalk\tests & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 
 
 
@@ -76,7 +70,23 @@
 
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\goodies\sunit\TestAsserter.$(H) $(INCLUDE_TOP)\stx\goodies\sunit\TestResource.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPNode.$(O) PPCLRPNode.$(H): PPCLRPNode.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPParser.$(O) PPCLRPParser.$(H): PPCLRPParser.st $(INCLUDE_TOP)\stx\goodies\petitparser\PPCompositeParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPDelegateParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPParser.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPAction.$(O) PPCLRPAction.$(H): PPCLRPAction.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPContainedElement.$(O) PPCLRPContainedElement.$(H): PPCLRPContainedElement.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPSpawn.$(O) PPCLRPSpawn.$(H): PPCLRPSpawn.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPComment.$(O) PPCLRPComment.$(H): PPCLRPComment.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPContainedElement.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPEvent.$(O) PPCLRPEvent.$(H): PPCLRPEvent.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPContainedElement.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPMachine.$(O) PPCLRPMachine.$(H): PPCLRPMachine.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPContainedElement.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPOnEntry.$(O) PPCLRPOnEntry.$(H): PPCLRPOnEntry.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPAction.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPOnExit.$(O) PPCLRPOnExit.$(H): PPCLRPOnExit.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPAction.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPRunning.$(O) PPCLRPRunning.$(H): PPCLRPRunning.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPAction.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPState.$(O) PPCLRPState.$(H): PPCLRPState.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPContainedElement.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPTransition.$(O) PPCLRPTransition.$(H): PPCLRPTransition.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPContainedElement.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPVariable.$(O) PPCLRPVariable.$(H): PPCLRPVariable.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPContainedElement.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPEpsilonTransition.$(O) PPCLRPEpsilonTransition.$(H): PPCLRPEpsilonTransition.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPContainedElement.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPTransition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPTimeoutTransition.$(O) PPCLRPTimeoutTransition.$(H): PPCLRPTimeoutTransition.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPContainedElement.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPTransition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPWildcardTransition.$(O) PPCLRPWildcardTransition.$(H): PPCLRPWildcardTransition.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPContainedElement.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras\PPCLRPTransition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/compiler/tests/extras/extensions.st	Thu Jul 30 08:37:37 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"!
-
-!TestResource class methodsFor:'running'!
-
-availableFor: aTestAsserter
-        aTestAsserter
-                assert: self isAvailable
-                description: 'Unavailable resource ' , self name , ' requested by ', aTestAsserter printString.
-! !
-
-!stx_goodies_petitparser_compiler_tests_extras class methodsFor:'documentation'!
-
-extensionsVersion_HG
-
-    ^ '$Changeset: <not expanded> $'
-! !
--- a/compiler/tests/extras/libInit.cc	Thu Jul 30 08:37:37 2015 +0100
+++ b/compiler/tests/extras/libInit.cc	Thu Jul 30 17:31:18 2015 +0100
@@ -27,7 +27,24 @@
 void _libstx_goodies_petitparser_compiler_tests_extras_Init(pass, __pRT__, snd)
 OBJ snd; struct __vmData__ *__pRT__; {
 __BEGIN_PACKAGE2__("libstx_goodies_petitparser_compiler_tests_extras", _libstx_goodies_petitparser_compiler_tests_extras_Init, "stx:goodies/petitparser/compiler/tests/extras");
+_PPCLRPNode_Init(pass,__pRT__,snd);
+_PPCLRPParser_Init(pass,__pRT__,snd);
+_PPCLRPAction_Init(pass,__pRT__,snd);
+_PPCLRPContainedElement_Init(pass,__pRT__,snd);
+_PPCLRPSpawn_Init(pass,__pRT__,snd);
+_PPCLRPComment_Init(pass,__pRT__,snd);
+_PPCLRPEvent_Init(pass,__pRT__,snd);
+_PPCLRPMachine_Init(pass,__pRT__,snd);
+_PPCLRPOnEntry_Init(pass,__pRT__,snd);
+_PPCLRPOnExit_Init(pass,__pRT__,snd);
+_PPCLRPRunning_Init(pass,__pRT__,snd);
+_PPCLRPState_Init(pass,__pRT__,snd);
+_PPCLRPTransition_Init(pass,__pRT__,snd);
+_PPCLRPVariable_Init(pass,__pRT__,snd);
+_PPCLRPEpsilonTransition_Init(pass,__pRT__,snd);
+_PPCLRPTimeoutTransition_Init(pass,__pRT__,snd);
+_PPCLRPWildcardTransition_Init(pass,__pRT__,snd);
 
-_stx_137goodies_137petitparser_137compiler_137tests_137extras_extensions_Init(pass,__pRT__,snd);
+
 __END_PACKAGE__();
 }
--- a/compiler/tests/extras/stx_goodies_petitparser_compiler_tests_extras.st	Thu Jul 30 08:37:37 2015 +0100
+++ b/compiler/tests/extras/stx_goodies_petitparser_compiler_tests_extras.st	Thu Jul 30 17:31:18 2015 +0100
@@ -83,12 +83,8 @@
      by searching along the inheritance chain of all of my classes."
 
     ^ #(
-        #'stx:goodies/petitparser'    "PPCompositeParser - superclass of PPExpressionGrammar"
-        #'stx:goodies/petitparser/parsers/java'    "PPJavaLexiconTest - superclass of PPCompiledJavaSyntaxTest"
-        #'stx:goodies/petitparser/parsers/smalltalk/tests'    "PPSmalltalkGrammarTests - superclass of PPCSmalltalkGrammarTests"
-        #'stx:goodies/petitparser/tests'    "PPAbstractParserTest - superclass of PPCAbstractParserTest"
-        #'stx:goodies/sunit'    "TestAsserter - extended"
-        #'stx:libbasic'    "LibraryDefinition - superclass of stx_goodies_petitparser_compiler_tests_extras"
+        #'stx:goodies/petitparser'    "PPCompositeParser - superclass of PPCLRPParser"
+        #'stx:libbasic'    "Autoload - superclass of PPCAbstractParserTest"
     )
 !
 
@@ -103,9 +99,8 @@
      by searching all classes (and their packages) which are referenced by my classes."
 
     ^ #(
-        #'stx:goodies/petitparser/compiler'    "PPCArguments - referenced by PPCSmalltalkTests>>setUp"
-        #'stx:goodies/petitparser/parsers/smalltalk'    "PPSmalltalkGrammar - referenced by PPCSmalltalkGrammarTests>>petitParserClass"
-        #'stx:libbasic2'    "Random - referenced by PPCResources>>expressionOfSize:stream:"
+        #'stx:goodies/petitparser/parsers/smalltalk'    "PPSmalltalkParser - referenced by PPCLRPParser>>block"
+        #'stx:goodies/sunit'    "TestCase - referenced by stx_goodies_petitparser_compiler_tests_extras class>>additionalClassAttributesFor:"
     )
 !
 
@@ -129,40 +124,57 @@
 
     ^ #(
         "<className> or (<className> attributes...) in load order"
+        PPCLRPNode
+        PPCLRPParser
+        (#'stx_goodies_petitparser_compiler_tests_extras' autoload)
+        PPCLRPAction
+        PPCLRPContainedElement
+        PPCLRPSpawn
+        PPCLRPComment
+        PPCLRPEvent
+        PPCLRPMachine
+        PPCLRPOnEntry
+        PPCLRPOnExit
+        PPCLRPRunning
+        PPCLRPState
+        PPCLRPTransition
+        PPCLRPVariable
+        PPCLRPEpsilonTransition
+        PPCLRPTimeoutTransition
+        PPCLRPWildcardTransition
         (PPCAbstractParserTest autoload)
         (PPCCompiledJavaVerificationTest autoload)
         (PPCCompositeParserTest autoload)
+        (PPCExpressionGrammarTest autoload)
+        (#'PPCExpressionGrammarTest_Tokenized' autoload)
+        (#'PPCExpressionGrammarTest_Universal' autoload)
+        (PPCExpressionGrammarVerificationTest autoload)
+        (PPCLL1ExpressionGrammarTest autoload)
+        (#'PPCLL1ExpressionGrammarTest_Tokenized' autoload)
+        (#'PPCLL1ExpressionGrammarTest_Universal' autoload)
         (PPCResources autoload)
         (PPCSetUpBeforeTearDownAfterResource autoload)
         (PPCSmalltalkGrammarTests autoload)
+        (#'PPCSmalltalkGrammarTests_Tokenized' autoload)
+        (#'PPCSmalltalkGrammarTests_Universal' autoload)
+        (PPCSmalltalkGrammarVerificationTest autoload)
+        (#'PPCSmalltalkGrammarVerificationTest_Tokenized' autoload)
+        (#'PPCSmalltalkGrammarVerificationTest_Universal' autoload)
         (PPCSmalltalkParserTests autoload)
+        (#'PPCSmalltalkParserTests_Tokenized' autoload)
+        (#'PPCSmalltalkParserTests_Universal' autoload)
+        (PPCSmalltalkParserVerificationTest autoload)
+        (#'PPCSmalltalkParserVerificationTest_Tokenized' autoload)
+        (#'PPCSmalltalkParserVerificationTest_Universal' autoload)
         (PPCSmalltalkTests autoload)
         (PPCompiledJavaResource autoload)
         (PPCompiledJavaSyntaxTest autoload)
         (PPExpressionGrammar autoload)
         (PPExpressionGrammarTest autoload)
+        (#'PPExpressionGrammarVerificationTest_Tokenized' autoload)
+        (#'PPExpressionGrammarVerificationTest_Universal' autoload)
         (PPLL1ExpressionGrammar autoload)
         (PPLL1ExpressionGrammarTest autoload)
-        (#'stx_goodies_petitparser_compiler_tests_extras' autoload)
-        (PPCExpressionGrammarTest autoload)
-        (PPCExpressionGrammarVerificationTest autoload)
-        (PPCLL1ExpressionGrammarTest autoload)
-        (#'PPCSmalltalkGrammarTests_Tokenized' autoload)
-        (#'PPCSmalltalkGrammarTests_Universal' autoload)
-        (PPCSmalltalkGrammarVerificationTest autoload)
-        (#'PPCSmalltalkParserTests_Tokenized' autoload)
-        (#'PPCSmalltalkParserTests_Universal' autoload)
-        (PPCSmalltalkParserVerificationTest autoload)
-        (#'PPCExpressionGrammarTest_Tokenized' autoload)
-        (#'PPCExpressionGrammarTest_Universal' autoload)
-        (#'PPCLL1ExpressionGrammarTest_Tokenized' autoload)
-        (#'PPCLL1ExpressionGrammarTest_Universal' autoload)
-        (#'PPCSmalltalkGrammarVerificationTest_Tokenized' autoload)
-        (#'PPCSmalltalkGrammarVerificationTest_Universal' autoload)
-        (#'PPCSmalltalkParserVerificationTest_Tokenized' autoload)
-        (#'PPCSmalltalkParserVerificationTest_Universal' autoload)
-        (#'PPExpressionGrammarVerificationTest_Tokenized' autoload)
-        (#'PPExpressionGrammarVerificationTest_Universal' autoload)
     )
 !
 
@@ -171,7 +183,6 @@
      A correponding method with real names must be present in my concrete subclasses"
 
     ^ #(
-        'TestResource class' availableFor:
     )
 ! !