PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 26 Aug 2015 23:01:00 +0100
changeset 532 132d7898a2a1
parent 531 dc3d13c2837d
child 533 666372dbe307
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass ... representing a compilation pass over the PPCNode tree. The pass has a common api method: #run:in: which is not used in PPCConfiguration. This simplifed the code and removed some code duplication.
compiler/Make.proto
compiler/Make.spec
compiler/PEGFsaGenerator.st
compiler/PPCCodeGenerator.st
compiler/PPCConfiguration.st
compiler/PPCFSAVisitor.st
compiler/PPCInliningVisitor.st
compiler/PPCNodeVisitor.st
compiler/PPCPass.st
compiler/PPCRewritingVisitor.st
compiler/PPCTokenCodeGenerator.st
compiler/PPCTokenizingConfiguration.st
compiler/PPCTrimmingTokenNode.st
compiler/PPCUniversalConfiguration.st
compiler/abbrev.stc
compiler/bc.mak
compiler/benchmarks/PPCSmalltalkNoopParser.st
compiler/libInit.cc
compiler/stx_goodies_petitparser_compiler.st
--- a/compiler/Make.proto	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/Make.proto	Wed Aug 26 23:01:00 2015 +0100
@@ -168,7 +168,6 @@
 $(OUTDIR)PEGFsaChoiceDeterminizator.$(O) PEGFsaChoiceDeterminizator.$(H): PEGFsaChoiceDeterminizator.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PEGFsaAbstractDeterminizator.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaDeterminizator.$(O) PEGFsaDeterminizator.$(H): PEGFsaDeterminizator.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PEGFsaAbstractDeterminizator.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaEpsilonTransition.$(O) PEGFsaEpsilonTransition.$(H): PEGFsaEpsilonTransition.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PEGFsaTransition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PEGFsaGenerator.$(O) PEGFsaGenerator.$(H): PEGFsaGenerator.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaParserState.$(O) PEGFsaParserState.$(H): PEGFsaParserState.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PEGFsaState.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaPredicateTransition.$(O) PEGFsaPredicateTransition.$(H): PEGFsaPredicateTransition.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PEGFsaTransition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaSequenceDeterminizator.$(O) PEGFsaSequenceDeterminizator.$(H): PEGFsaSequenceDeterminizator.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PEGFsaAbstractDeterminizator.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -177,21 +176,17 @@
 $(OUTDIR)PPCAbstractPredicateNode.$(O) PPCAbstractPredicateNode.$(H): PPCAbstractPredicateNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCAnyNode.$(O) PPCAnyNode.$(H): PPCAnyNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCCharacterNode.$(O) PPCCharacterNode.$(H): PPCCharacterNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCCodeGenerator.$(O) PPCCodeGenerator.$(H): PPCCodeGenerator.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCDelegateNode.$(O) PPCDelegateNode.$(H): PPCDelegateNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCDistinctResultStrategy.$(O) PPCDistinctResultStrategy.$(H): PPCDistinctResultStrategy.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCScannerResultStrategy.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCEndOfFileNode.$(O) PPCEndOfFileNode.$(H): PPCEndOfFileNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCFSACodeGen.$(O) PPCFSACodeGen.$(H): PPCFSACodeGen.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCCodeGen.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCFSAVisitor.$(O) PPCFSAVisitor.$(H): PPCFSAVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCInlinedMethod.$(O) PPCInlinedMethod.$(H): PPCInlinedMethod.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCMethod.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCInliningVisitor.$(O) PPCInliningVisitor.$(H): PPCInliningVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCListNode.$(O) PPCListNode.$(H): PPCListNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCNilNode.$(O) PPCNilNode.$(H): PPCNilNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCNoResultStrategy.$(O) PPCNoResultStrategy.$(H): PPCNoResultStrategy.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCScannerResultStrategy.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCPass.$(O) PPCPass.$(H): PPCPass.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCPluggableNode.$(O) PPCPluggableNode.$(H): PPCPluggableNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCProfilingContext.$(O) PPCProfilingContext.$(H): PPCProfilingContext.st $(INCLUDE_TOP)/stx/goodies/petitparser/PPStream.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCContext.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/PeekableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PositionableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(STCHDR)
-$(OUTDIR)PPCRewritingVisitor.$(O) PPCRewritingVisitor.$(H): PPCRewritingVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCTokenCodeGenerator.$(O) PPCTokenCodeGenerator.$(H): PPCTokenCodeGenerator.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenizingCodeGen.$(O) PPCTokenizingCodeGen.$(H): PPCTokenizingCodeGen.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCCodeGen.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenizingConfiguration.$(O) PPCTokenizingConfiguration.$(H): PPCTokenizingConfiguration.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCConfiguration.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCUniversalCodeGen.$(O) PPCUniversalCodeGen.$(H): PPCUniversalCodeGen.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCCodeGen.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -200,17 +195,18 @@
 $(OUTDIR)PPCUnknownNode.$(O) PPCUnknownNode.$(H): PPCUnknownNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPTokenizingCompiledParser.$(O) PPTokenizingCompiledParser.$(H): PPTokenizingCompiledParser.st $(INCLUDE_TOP)/stx/goodies/petitparser/PPParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCompiledParser.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaEOFTransition.$(O) PEGFsaEOFTransition.$(H): PEGFsaEOFTransition.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PEGFsaPredicateTransition.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PEGFsaTransition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PEGFsaGenerator.$(O) PEGFsaGenerator.$(H): PEGFsaGenerator.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaParserTransition.$(O) PEGFsaParserTransition.$(H): PEGFsaParserTransition.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PEGFsaPredicateTransition.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PEGFsaTransition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCAbstractActionNode.$(O) PPCAbstractActionNode.$(H): PPCAbstractActionNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCAndNode.$(O) PPCAndNode.$(H): PPCAndNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCCharSetPredicateNode.$(O) PPCCharSetPredicateNode.$(H): PPCCharSetPredicateNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCAbstractPredicateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCChoiceNode.$(O) PPCChoiceNode.$(H): PPCChoiceNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCListNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCCopyVisitor.$(O) PPCCopyVisitor.$(H): PPCCopyVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCCodeGenerator.$(O) PPCCodeGenerator.$(H): PPCCodeGenerator.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCEndOfInputNode.$(O) PPCEndOfInputNode.$(H): PPCEndOfInputNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCFSAVisitor.$(O) PPCFSAVisitor.$(H): PPCFSAVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCForwardNode.$(O) PPCForwardNode.$(H): PPCForwardNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCLL1Visitor.$(O) PPCLL1Visitor.$(H): PPCLL1Visitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCInliningVisitor.$(O) PPCInliningVisitor.$(H): PPCInliningVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCLiteralNode.$(O) PPCLiteralNode.$(H): PPCLiteralNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCAbstractLiteralNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCMergingVisitor.$(O) PPCMergingVisitor.$(H): PPCMergingVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCMessagePredicateNode.$(O) PPCMessagePredicateNode.$(H): PPCMessagePredicateNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCAbstractPredicateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCNegateNode.$(O) PPCNegateNode.$(H): PPCNegateNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCNotCharSetPredicateNode.$(O) PPCNotCharSetPredicateNode.$(H): PPCNotCharSetPredicateNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCAbstractPredicateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -218,36 +214,41 @@
 $(OUTDIR)PPCNotLiteralNode.$(O) PPCNotLiteralNode.$(H): PPCNotLiteralNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCAbstractLiteralNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCNotMessagePredicateNode.$(O) PPCNotMessagePredicateNode.$(H): PPCNotMessagePredicateNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCAbstractPredicateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCNotNode.$(O) PPCNotNode.$(H): PPCNotNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCOptimizeChoices.$(O) PPCOptimizeChoices.$(H): PPCOptimizeChoices.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCOptionalNode.$(O) PPCOptionalNode.$(H): PPCOptionalNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCPlusNode.$(O) PPCPlusNode.$(H): PPCPlusNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCPredicateNode.$(O) PPCPredicateNode.$(H): PPCPredicateNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCAbstractPredicateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCRecognizerComponentDetector.$(O) PPCRecognizerComponentDetector.$(H): PPCRecognizerComponentDetector.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCRecognizerComponentVisitor.$(O) PPCRecognizerComponentVisitor.$(H): PPCRecognizerComponentVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCRewritingVisitor.$(O) PPCRewritingVisitor.$(H): PPCRewritingVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCSentinelNode.$(O) PPCSentinelNode.$(H): PPCSentinelNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNilNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCSequenceNode.$(O) PPCSequenceNode.$(H): PPCSequenceNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCListNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCSpecializingVisitor.$(O) PPCSpecializingVisitor.$(H): PPCSpecializingVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCStarNode.$(O) PPCStarNode.$(H): PPCStarNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCTokenCodeGenerator.$(O) PPCTokenCodeGenerator.$(H): PPCTokenCodeGenerator.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenConsumeNode.$(O) PPCTokenConsumeNode.$(H): PPCTokenConsumeNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCTokenDetector.$(O) PPCTokenDetector.$(H): PPCTokenDetector.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenNode.$(O) PPCTokenNode.$(H): PPCTokenNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCTokenVisitor.$(O) PPCTokenVisitor.$(H): PPCTokenVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenWhitespaceNode.$(O) PPCTokenWhitespaceNode.$(H): PPCTokenWhitespaceNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCTokenizingCodeGenerator.$(O) PPCTokenizingCodeGenerator.$(H): PPCTokenizingCodeGenerator.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCCodeGenerator.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenizingParserNode.$(O) PPCTokenizingParserNode.$(H): PPCTokenizingParserNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCListNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCTokenizingVisitor.$(O) PPCTokenizingVisitor.$(H): PPCTokenizingVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTrimmingTokenNode.$(O) PPCTrimmingTokenNode.$(H): PPCTrimmingTokenNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCListNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)PPCUniversalCodeGenerator.$(O) PPCUniversalCodeGenerator.$(H): PPCUniversalCodeGenerator.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCCodeGenerator.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCActionNode.$(O) PPCActionNode.$(H): PPCActionNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCAbstractActionNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCCopyVisitor.$(O) PPCCopyVisitor.$(H): PPCCopyVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCDeterministicChoiceNode.$(O) PPCDeterministicChoiceNode.$(H): PPCDeterministicChoiceNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCChoiceNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCListNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLL1Visitor.$(O) PPCLL1Visitor.$(H): PPCLL1Visitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCMergingVisitor.$(O) PPCMergingVisitor.$(H): PPCMergingVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCOptimizeChoices.$(O) PPCOptimizeChoices.$(H): PPCOptimizeChoices.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCRecognizerComponentDetector.$(O) PPCRecognizerComponentDetector.$(H): PPCRecognizerComponentDetector.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCRecognizerComponentVisitor.$(O) PPCRecognizerComponentVisitor.$(H): PPCRecognizerComponentVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCRecognizingSequenceNode.$(O) PPCRecognizingSequenceNode.$(H): PPCRecognizingSequenceNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCListNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCSequenceNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCSpecializingVisitor.$(O) PPCSpecializingVisitor.$(H): PPCSpecializingVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCStarAnyNode.$(O) PPCStarAnyNode.$(H): PPCStarAnyNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCStarNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCStarCharSetPredicateNode.$(O) PPCStarCharSetPredicateNode.$(H): PPCStarCharSetPredicateNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCStarNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCStarMessagePredicateNode.$(O) PPCStarMessagePredicateNode.$(H): PPCStarMessagePredicateNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCStarNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCSymbolActionNode.$(O) PPCSymbolActionNode.$(H): PPCSymbolActionNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCAbstractActionNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenChoiceNode.$(O) PPCTokenChoiceNode.$(H): PPCTokenChoiceNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCChoiceNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCListNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCTokenDetector.$(O) PPCTokenDetector.$(H): PPCTokenDetector.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCTokenVisitor.$(O) PPCTokenVisitor.$(H): PPCTokenVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCTokenizingCodeGenerator.$(O) PPCTokenizingCodeGenerator.$(H): PPCTokenizingCodeGenerator.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCCodeGenerator.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCTokenizingVisitor.$(O) PPCTokenizingVisitor.$(H): PPCTokenizingVisitor.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCRewritingVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTrimNode.$(O) PPCTrimNode.$(H): PPCTrimNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCListNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCSequenceNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTrimmingCharacterTokenNode.$(O) PPCTrimmingCharacterTokenNode.$(H): PPCTrimmingCharacterTokenNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCListNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCTrimmingTokenNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCUniversalCodeGenerator.$(O) PPCUniversalCodeGenerator.$(H): PPCUniversalCodeGenerator.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCCodeGenerator.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCPass.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCMappedActionNode.$(O) PPCMappedActionNode.$(H): PPCMappedActionNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCAbstractActionNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCActionNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenStarMessagePredicateNode.$(O) PPCTokenStarMessagePredicateNode.$(H): PPCTokenStarMessagePredicateNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCStarMessagePredicateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCStarNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenStarSeparatorNode.$(O) PPCTokenStarSeparatorNode.$(H): PPCTokenStarSeparatorNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCStarMessagePredicateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCStarNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCTokenStarMessagePredicateNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/compiler/Make.spec	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/Make.spec	Wed Aug 26 23:01:00 2015 +0100
@@ -94,7 +94,6 @@
 	PEGFsaChoiceDeterminizator \
 	PEGFsaDeterminizator \
 	PEGFsaEpsilonTransition \
-	PEGFsaGenerator \
 	PEGFsaParserState \
 	PEGFsaPredicateTransition \
 	PEGFsaSequenceDeterminizator \
@@ -103,21 +102,17 @@
 	PPCAbstractPredicateNode \
 	PPCAnyNode \
 	PPCCharacterNode \
-	PPCCodeGenerator \
 	PPCDelegateNode \
 	PPCDistinctResultStrategy \
 	PPCEndOfFileNode \
 	PPCFSACodeGen \
-	PPCFSAVisitor \
 	PPCInlinedMethod \
-	PPCInliningVisitor \
 	PPCListNode \
 	PPCNilNode \
 	PPCNoResultStrategy \
+	PPCPass \
 	PPCPluggableNode \
 	PPCProfilingContext \
-	PPCRewritingVisitor \
-	PPCTokenCodeGenerator \
 	PPCTokenizingCodeGen \
 	PPCTokenizingConfiguration \
 	PPCUniversalCodeGen \
@@ -126,17 +121,18 @@
 	PPCUnknownNode \
 	PPTokenizingCompiledParser \
 	PEGFsaEOFTransition \
+	PEGFsaGenerator \
 	PEGFsaParserTransition \
 	PPCAbstractActionNode \
 	PPCAndNode \
 	PPCCharSetPredicateNode \
 	PPCChoiceNode \
-	PPCCopyVisitor \
+	PPCCodeGenerator \
 	PPCEndOfInputNode \
+	PPCFSAVisitor \
 	PPCForwardNode \
-	PPCLL1Visitor \
+	PPCInliningVisitor \
 	PPCLiteralNode \
-	PPCMergingVisitor \
 	PPCMessagePredicateNode \
 	PPCNegateNode \
 	PPCNotCharSetPredicateNode \
@@ -144,36 +140,41 @@
 	PPCNotLiteralNode \
 	PPCNotMessagePredicateNode \
 	PPCNotNode \
-	PPCOptimizeChoices \
 	PPCOptionalNode \
 	PPCPlusNode \
 	PPCPredicateNode \
-	PPCRecognizerComponentDetector \
-	PPCRecognizerComponentVisitor \
+	PPCRewritingVisitor \
 	PPCSentinelNode \
 	PPCSequenceNode \
-	PPCSpecializingVisitor \
 	PPCStarNode \
+	PPCTokenCodeGenerator \
 	PPCTokenConsumeNode \
-	PPCTokenDetector \
 	PPCTokenNode \
-	PPCTokenVisitor \
 	PPCTokenWhitespaceNode \
-	PPCTokenizingCodeGenerator \
 	PPCTokenizingParserNode \
-	PPCTokenizingVisitor \
 	PPCTrimmingTokenNode \
-	PPCUniversalCodeGenerator \
 	PPCActionNode \
+	PPCCopyVisitor \
 	PPCDeterministicChoiceNode \
+	PPCLL1Visitor \
+	PPCMergingVisitor \
+	PPCOptimizeChoices \
+	PPCRecognizerComponentDetector \
+	PPCRecognizerComponentVisitor \
 	PPCRecognizingSequenceNode \
+	PPCSpecializingVisitor \
 	PPCStarAnyNode \
 	PPCStarCharSetPredicateNode \
 	PPCStarMessagePredicateNode \
 	PPCSymbolActionNode \
 	PPCTokenChoiceNode \
+	PPCTokenDetector \
+	PPCTokenVisitor \
+	PPCTokenizingCodeGenerator \
+	PPCTokenizingVisitor \
 	PPCTrimNode \
 	PPCTrimmingCharacterTokenNode \
+	PPCUniversalCodeGenerator \
 	PPCMappedActionNode \
 	PPCTokenStarMessagePredicateNode \
 	PPCTokenStarSeparatorNode \
@@ -225,7 +226,6 @@
     $(OUTDIR_SLASH)PEGFsaChoiceDeterminizator.$(O) \
     $(OUTDIR_SLASH)PEGFsaDeterminizator.$(O) \
     $(OUTDIR_SLASH)PEGFsaEpsilonTransition.$(O) \
-    $(OUTDIR_SLASH)PEGFsaGenerator.$(O) \
     $(OUTDIR_SLASH)PEGFsaParserState.$(O) \
     $(OUTDIR_SLASH)PEGFsaPredicateTransition.$(O) \
     $(OUTDIR_SLASH)PEGFsaSequenceDeterminizator.$(O) \
@@ -234,21 +234,17 @@
     $(OUTDIR_SLASH)PPCAbstractPredicateNode.$(O) \
     $(OUTDIR_SLASH)PPCAnyNode.$(O) \
     $(OUTDIR_SLASH)PPCCharacterNode.$(O) \
-    $(OUTDIR_SLASH)PPCCodeGenerator.$(O) \
     $(OUTDIR_SLASH)PPCDelegateNode.$(O) \
     $(OUTDIR_SLASH)PPCDistinctResultStrategy.$(O) \
     $(OUTDIR_SLASH)PPCEndOfFileNode.$(O) \
     $(OUTDIR_SLASH)PPCFSACodeGen.$(O) \
-    $(OUTDIR_SLASH)PPCFSAVisitor.$(O) \
     $(OUTDIR_SLASH)PPCInlinedMethod.$(O) \
-    $(OUTDIR_SLASH)PPCInliningVisitor.$(O) \
     $(OUTDIR_SLASH)PPCListNode.$(O) \
     $(OUTDIR_SLASH)PPCNilNode.$(O) \
     $(OUTDIR_SLASH)PPCNoResultStrategy.$(O) \
+    $(OUTDIR_SLASH)PPCPass.$(O) \
     $(OUTDIR_SLASH)PPCPluggableNode.$(O) \
     $(OUTDIR_SLASH)PPCProfilingContext.$(O) \
-    $(OUTDIR_SLASH)PPCRewritingVisitor.$(O) \
-    $(OUTDIR_SLASH)PPCTokenCodeGenerator.$(O) \
     $(OUTDIR_SLASH)PPCTokenizingCodeGen.$(O) \
     $(OUTDIR_SLASH)PPCTokenizingConfiguration.$(O) \
     $(OUTDIR_SLASH)PPCUniversalCodeGen.$(O) \
@@ -257,17 +253,18 @@
     $(OUTDIR_SLASH)PPCUnknownNode.$(O) \
     $(OUTDIR_SLASH)PPTokenizingCompiledParser.$(O) \
     $(OUTDIR_SLASH)PEGFsaEOFTransition.$(O) \
+    $(OUTDIR_SLASH)PEGFsaGenerator.$(O) \
     $(OUTDIR_SLASH)PEGFsaParserTransition.$(O) \
     $(OUTDIR_SLASH)PPCAbstractActionNode.$(O) \
     $(OUTDIR_SLASH)PPCAndNode.$(O) \
     $(OUTDIR_SLASH)PPCCharSetPredicateNode.$(O) \
     $(OUTDIR_SLASH)PPCChoiceNode.$(O) \
-    $(OUTDIR_SLASH)PPCCopyVisitor.$(O) \
+    $(OUTDIR_SLASH)PPCCodeGenerator.$(O) \
     $(OUTDIR_SLASH)PPCEndOfInputNode.$(O) \
+    $(OUTDIR_SLASH)PPCFSAVisitor.$(O) \
     $(OUTDIR_SLASH)PPCForwardNode.$(O) \
-    $(OUTDIR_SLASH)PPCLL1Visitor.$(O) \
+    $(OUTDIR_SLASH)PPCInliningVisitor.$(O) \
     $(OUTDIR_SLASH)PPCLiteralNode.$(O) \
-    $(OUTDIR_SLASH)PPCMergingVisitor.$(O) \
     $(OUTDIR_SLASH)PPCMessagePredicateNode.$(O) \
     $(OUTDIR_SLASH)PPCNegateNode.$(O) \
     $(OUTDIR_SLASH)PPCNotCharSetPredicateNode.$(O) \
@@ -275,36 +272,41 @@
     $(OUTDIR_SLASH)PPCNotLiteralNode.$(O) \
     $(OUTDIR_SLASH)PPCNotMessagePredicateNode.$(O) \
     $(OUTDIR_SLASH)PPCNotNode.$(O) \
-    $(OUTDIR_SLASH)PPCOptimizeChoices.$(O) \
     $(OUTDIR_SLASH)PPCOptionalNode.$(O) \
     $(OUTDIR_SLASH)PPCPlusNode.$(O) \
     $(OUTDIR_SLASH)PPCPredicateNode.$(O) \
-    $(OUTDIR_SLASH)PPCRecognizerComponentDetector.$(O) \
-    $(OUTDIR_SLASH)PPCRecognizerComponentVisitor.$(O) \
+    $(OUTDIR_SLASH)PPCRewritingVisitor.$(O) \
     $(OUTDIR_SLASH)PPCSentinelNode.$(O) \
     $(OUTDIR_SLASH)PPCSequenceNode.$(O) \
-    $(OUTDIR_SLASH)PPCSpecializingVisitor.$(O) \
     $(OUTDIR_SLASH)PPCStarNode.$(O) \
+    $(OUTDIR_SLASH)PPCTokenCodeGenerator.$(O) \
     $(OUTDIR_SLASH)PPCTokenConsumeNode.$(O) \
-    $(OUTDIR_SLASH)PPCTokenDetector.$(O) \
     $(OUTDIR_SLASH)PPCTokenNode.$(O) \
-    $(OUTDIR_SLASH)PPCTokenVisitor.$(O) \
     $(OUTDIR_SLASH)PPCTokenWhitespaceNode.$(O) \
-    $(OUTDIR_SLASH)PPCTokenizingCodeGenerator.$(O) \
     $(OUTDIR_SLASH)PPCTokenizingParserNode.$(O) \
-    $(OUTDIR_SLASH)PPCTokenizingVisitor.$(O) \
     $(OUTDIR_SLASH)PPCTrimmingTokenNode.$(O) \
-    $(OUTDIR_SLASH)PPCUniversalCodeGenerator.$(O) \
     $(OUTDIR_SLASH)PPCActionNode.$(O) \
+    $(OUTDIR_SLASH)PPCCopyVisitor.$(O) \
     $(OUTDIR_SLASH)PPCDeterministicChoiceNode.$(O) \
+    $(OUTDIR_SLASH)PPCLL1Visitor.$(O) \
+    $(OUTDIR_SLASH)PPCMergingVisitor.$(O) \
+    $(OUTDIR_SLASH)PPCOptimizeChoices.$(O) \
+    $(OUTDIR_SLASH)PPCRecognizerComponentDetector.$(O) \
+    $(OUTDIR_SLASH)PPCRecognizerComponentVisitor.$(O) \
     $(OUTDIR_SLASH)PPCRecognizingSequenceNode.$(O) \
+    $(OUTDIR_SLASH)PPCSpecializingVisitor.$(O) \
     $(OUTDIR_SLASH)PPCStarAnyNode.$(O) \
     $(OUTDIR_SLASH)PPCStarCharSetPredicateNode.$(O) \
     $(OUTDIR_SLASH)PPCStarMessagePredicateNode.$(O) \
     $(OUTDIR_SLASH)PPCSymbolActionNode.$(O) \
     $(OUTDIR_SLASH)PPCTokenChoiceNode.$(O) \
+    $(OUTDIR_SLASH)PPCTokenDetector.$(O) \
+    $(OUTDIR_SLASH)PPCTokenVisitor.$(O) \
+    $(OUTDIR_SLASH)PPCTokenizingCodeGenerator.$(O) \
+    $(OUTDIR_SLASH)PPCTokenizingVisitor.$(O) \
     $(OUTDIR_SLASH)PPCTrimNode.$(O) \
     $(OUTDIR_SLASH)PPCTrimmingCharacterTokenNode.$(O) \
+    $(OUTDIR_SLASH)PPCUniversalCodeGenerator.$(O) \
     $(OUTDIR_SLASH)PPCMappedActionNode.$(O) \
     $(OUTDIR_SLASH)PPCTokenStarMessagePredicateNode.$(O) \
     $(OUTDIR_SLASH)PPCTokenStarSeparatorNode.$(O) \
--- a/compiler/PEGFsaGenerator.st	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/PEGFsaGenerator.st	Wed Aug 26 23:01:00 2015 +0100
@@ -2,7 +2,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-PPCNodeVisitor subclass:#PEGFsaGenerator
+PPCPass subclass:#PEGFsaGenerator
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
--- a/compiler/PPCCodeGenerator.st	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/PPCCodeGenerator.st	Wed Aug 26 23:01:00 2015 +0100
@@ -2,7 +2,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-PPCNodeVisitor subclass:#PPCCodeGenerator
+PPCPass subclass:#PPCCodeGenerator
 	instanceVariableNames:'codeGen'
 	classVariableNames:''
 	poolDictionaries:''
@@ -25,15 +25,6 @@
 
 !PPCCodeGenerator methodsFor:'accessing'!
 
-options: args
-    super options: args.
-    codeGen options: args.
-!
-
-clazz: aPPCClass
-    codeGen clazz: aPPCClass
-!
-
 codeGen
     ^ codeGen
 !
@@ -43,7 +34,9 @@
 !
 
 guards
-    ^ options guards
+    ^ context options guards
+
+    "Modified: / 26-08-2015 / 22:17:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !PPCCodeGenerator methodsFor:'code generation'!
@@ -206,6 +199,26 @@
     "Created: / 27-07-2015 / 14:50:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!PPCCodeGenerator methodsFor:'running'!
+
+run: ir
+    "Actually run the pass on given IR (tree of PPCNode) and return
+     (possibly transformed or completely new) another IR."
+
+    | entry |
+
+    context isNil ifTrue:[ 
+        PPCCompilationError new signal: 'oops, no context set, use #context: before running a pass!!'.
+    ].
+    codeGen options: context options.
+    codeGen clazz: context parserClass.  
+    entry := self visit: ir.
+    context parserClass propertyAt:#rootMethod put:entry. 
+    ^ ir
+
+    "Created: / 26-08-2015 / 22:38:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !PPCCodeGenerator methodsFor:'support'!
 
 compileTokenWhitespace: node
@@ -951,7 +964,7 @@
     
     self compileTokenWhitespace: node.
 
-    (options guards and: [(guard := PPCGuard on: node) makesSense]) ifTrue: [ 
+    (context options guards and: [(guard := PPCGuard on: node) makesSense]) ifTrue: [ 
         guard id: id, '_guard'.
         codeGen code: 'context atEnd ifTrue: [ self error ].'.
         guard compileGuard: codeGen.
@@ -963,14 +976,14 @@
     codeGen codeAssign: 'context position + 1.' to: startVar.
     codeGen codeEvaluateAndAssign:[ self visit:node child ] to:#whatever.
 
-    (options guards and: [(guard := PPCGuard on: node) makesSense]) ifTrue: [ 
+    (context options guards and: [(guard := PPCGuard on: node) makesSense]) ifTrue: [ 
         codeGen dedent.
         codeGen code: '].'.
     ].
 
     codeGen codeIf: 'error' then: nil else: [
         codeGen codeAssign: 'context position.' to: endVar.
-        "	self compileSecondWhitespace: compiler."
+        "       self compileSecondWhitespace: compiler."
         self compileTokenWhitespace: node.
 
         codeGen codeReturn: node tokenClass asString, ' on: (context collection) 
@@ -978,6 +991,8 @@
                                                                     stop: ', endVar, '
                                                                     value: nil'.
     ]
+
+    "Modified: / 26-08-2015 / 22:18:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 visitUnknownNode: node
--- a/compiler/PPCConfiguration.st	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/PPCConfiguration.st	Wed Aug 26 23:01:00 2015 +0100
@@ -188,30 +188,27 @@
     context options recognizingComponents ifFalse:[
         ^ self
     ].
-    ir := (PPCRecognizerComponentDetector new)
-            options:context options;
-            visit:ir.
-    self remember:(self copyTree:ir) as:#recognizingComponents
+    self runPass: PPCRecognizerComponentDetector
+
+    "Modified: / 26-08-2015 / 22:36:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 createTokens
     context options detectTokens ifFalse:[
         ^ self
     ].
-    ir := (PPCTokenDetector new)
-            options:context options;
-            visit:ir.
-    self remember:(self copyTree:ir) as:#createTokens
+    self runPass: PPCTokenDetector
+
+    "Modified: / 26-08-2015 / 22:36:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 inline
     context options inline ifFalse:[
         ^ self
     ].
-    ir := (PPCInliningVisitor new)
-            options:context options;
-            visit:ir.
-    self remember:(self copyTree:ir) as:#inline.
+    self runPass: PPCInliningVisitor
+
+    "Modified: / 26-08-2015 / 22:36:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 merge
@@ -220,26 +217,24 @@
     context options merge ifFalse:[
         ^ self
     ].
-    ir := (PPCMergingVisitor new)
-            options:context options;
-            visit:ir.
-    self remember:(self copyTree:ir) as:#merge
+    self runPass: PPCMergingVisitor
+
+    "Modified: / 26-08-2015 / 22:36:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 specialize
     context options specialize ifFalse:[
         ^ self
     ].
-     "
+    "
      Invokes a visitor that creates specialized nodes
      for some patterns of PPCNodes,
      
      e.g. $a astar can be represented by PPCCharacterStarNode
     "
-    ir := ((PPCSpecializingVisitor new)
-            options:context options;
-            visit:ir).
-    self remember:(self copyTree:ir) as:#specialize
+   self runPass: PPCSpecializingVisitor
+
+    "Modified: / 26-08-2015 / 22:36:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 toPPCIr
@@ -259,3 +254,12 @@
     "Modified: / 26-08-2015 / 16:35:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!PPCConfiguration methodsFor:'running'!
+
+runPass: passClassOrAlike
+    ir := passClassOrAlike run: ir in: context.
+    self remember:(self copyTree:ir) as:passClassOrAlike name
+
+    "Created: / 26-08-2015 / 22:35:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/compiler/PPCFSAVisitor.st	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/PPCFSAVisitor.st	Wed Aug 26 23:01:00 2015 +0100
@@ -2,7 +2,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-PPCNodeVisitor subclass:#PPCFSAVisitor
+PPCPass subclass:#PPCFSAVisitor
 	instanceVariableNames:'fsaCache idGen'
 	classVariableNames:''
 	poolDictionaries:''
--- a/compiler/PPCInliningVisitor.st	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/PPCInliningVisitor.st	Wed Aug 26 23:01:00 2015 +0100
@@ -2,7 +2,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-PPCNodeVisitor subclass:#PPCInliningVisitor
+PPCPass subclass:#PPCInliningVisitor
 	instanceVariableNames:'canInline acceptedNodes'
 	classVariableNames:''
 	poolDictionaries:''
--- a/compiler/PPCNodeVisitor.st	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/PPCNodeVisitor.st	Wed Aug 26 23:01:00 2015 +0100
@@ -3,7 +3,7 @@
 "{ NameSpace: Smalltalk }"
 
 Object subclass:#PPCNodeVisitor
-	instanceVariableNames:'openSet closeSet cache options'
+	instanceVariableNames:'openSet closeSet cache'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'PetitCompiler-Visitors'
@@ -15,12 +15,6 @@
     ^ self basicNew initialize
 ! !
 
-!PPCNodeVisitor methodsFor:'accessing'!
-
-options: args
-    options := args
-! !
-
 !PPCNodeVisitor methodsFor:'hooks'!
 
 afterAccept: node retval: retval
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/PPCPass.st	Wed Aug 26 23:01:00 2015 +0100
@@ -0,0 +1,55 @@
+"{ Package: 'stx:goodies/petitparser/compiler' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCNodeVisitor subclass:#PPCPass
+	instanceVariableNames:'context'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Visitors'
+!
+
+!PPCPass class methodsFor:'running'!
+
+run: ir in: context
+    "Run the pass on passed IR in given compilation context.
+     Return (possibly transformed or completely new) IR."
+
+    ^ self new run: ir in: context
+
+    "Created: / 26-08-2015 / 22:31:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!PPCPass methodsFor:'accessing'!
+
+context: aPPCCompilationContext
+    context := aPPCCompilationContext.
+
+    "Created: / 26-08-2015 / 22:05:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!PPCPass methodsFor:'running'!
+
+run: ir
+    "Actually run the pass on given IR (tree of PPCNode) and return
+     (possibly transformed or completely new) another IR."
+
+    context isNil ifTrue:[ 
+        PPCCompilationError new signal: 'oops, no context set, use #context: before running a pass!!'.
+    ].
+    ^ self visit: ir.
+
+    "Created: / 26-08-2015 / 22:30:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+run: ir in: ctx
+    "Actually run the pass on given IR (tree of PPCNode) in given
+     compilation context and return (possibly transformed or completely 
+     new) another IR."
+
+    context := ctx.
+    ^ self run: ir.
+
+    "Created: / 26-08-2015 / 22:33:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/compiler/PPCRewritingVisitor.st	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/PPCRewritingVisitor.st	Wed Aug 26 23:01:00 2015 +0100
@@ -2,7 +2,7 @@
 
 "{ NameSpace: Smalltalk }"
 
-PPCNodeVisitor subclass:#PPCRewritingVisitor
+PPCPass subclass:#PPCRewritingVisitor
 	instanceVariableNames:'change'
 	classVariableNames:''
 	poolDictionaries:''
--- a/compiler/PPCTokenCodeGenerator.st	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/PPCTokenCodeGenerator.st	Wed Aug 26 23:01:00 2015 +0100
@@ -2,24 +2,13 @@
 
 "{ NameSpace: Smalltalk }"
 
-PPCNodeVisitor subclass:#PPCTokenCodeGenerator
+PPCPass subclass:#PPCTokenCodeGenerator
 	instanceVariableNames:'codeGen'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'PetitCompiler-Visitors-CodeGenerators'
 !
 
-!PPCTokenCodeGenerator methodsFor:'accessing'!
-
-options: args
-    super options: args.
-    codeGen options: args.
-!
-
-clazz: aPPCClass
-    codeGen clazz: aPPCClass
-! !
-
 !PPCTokenCodeGenerator methodsFor:'code support'!
 
 consumeWhitespace: node
@@ -88,6 +77,23 @@
     codeGen := PPCCodeGen new.
 ! !
 
+!PPCTokenCodeGenerator methodsFor:'running'!
+
+run: ir
+    "Actually run the pass on given IR (tree of PPCNode) and return
+     (possibly transformed or completely new) another IR."
+
+    context isNil ifTrue:[ 
+        PPCCompilationError new signal: 'oops, no context set, use #context: before running a pass!!'.
+    ].
+    codeGen options: context options.
+    codeGen clazz: context scannerClass.  
+    self visit: ir.
+    ^ ir
+
+    "Created: / 26-08-2015 / 22:39:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !PPCTokenCodeGenerator methodsFor:'visiting'!
 
 visitToken: tokenNode
--- a/compiler/PPCTokenizingConfiguration.st	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/PPCTokenizingConfiguration.st	Wed Aug 26 23:01:00 2015 +0100
@@ -49,16 +49,10 @@
 !PPCTokenizingConfiguration methodsFor:'error handling'!
 
 buildParserClazz
-    | rootMethod |
-
-    rootMethod := (PPCTokenizingCodeGenerator new)
-            clazz:context parserClass;
-            options:context options;
-            visit:ir.
-    context parserClass propertyAt:#rootMethod put:rootMethod
+    self runPass: PPCTokenizingCodeGenerator.
 
     "Modified: / 25-08-2015 / 00:07:38 / Jan Vrany <jan.vrany@fit."
-    "Modified: / 26-08-2015 / 19:57:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 26-08-2015 / 22:47:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 buildScannerScans
@@ -86,16 +80,10 @@
 !
 
 buildScannerTokens
-    | generator |
-
-    generator := (PPCTokenCodeGenerator new)
-            clazz:context scannerClass;
-            options:context options;
-            yourself.
-    generator visit:ir.
+    self runPass: PPCTokenCodeGenerator
 
     "Modified: / 25-08-2015 / 00:04:46 / Jan Vrany <jan.vrany@fit."
-    "Modified: / 26-08-2015 / 19:57:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 26-08-2015 / 22:53:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 generateParser
@@ -147,10 +135,9 @@
 
 createLL1Choices
     self flag:'This phase needs revisit and update'.
-    ir := (PPCLL1Visitor new)
-            options:context options;
-            visit:ir.
-    self remember:(self copyTree:ir) as:#LL1
+    self runPass: PPCLL1Visitor
+
+    "Modified: / 26-08-2015 / 22:52:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 tokenize
@@ -160,10 +147,9 @@
     context options tokenize ifFalse:[
         ^ self
     ].
-    ir := (PPCTokenizingVisitor new)
-            options:context options;
-            visit:ir.
-    self remember:(self copyTree:ir) as:#tokenize
+    self runPass: PPCTokenizingVisitor
+
+    "Modified: / 26-08-2015 / 22:48:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 unmarkConsumeTokensForInline
--- a/compiler/PPCTrimmingTokenNode.st	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/PPCTrimmingTokenNode.st	Wed Aug 26 23:01:00 2015 +0100
@@ -9,6 +9,7 @@
 	category:'PetitCompiler-Nodes'
 !
 
+
 !PPCTrimmingTokenNode methodsFor:'accessing'!
 
 child
@@ -118,3 +119,10 @@
     ^ visitor visitTrimmingTokenNode: self
 ! !
 
+!PPCTrimmingTokenNode class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/compiler/PPCUniversalConfiguration.st	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/PPCUniversalConfiguration.st	Wed Aug 26 23:01:00 2015 +0100
@@ -49,28 +49,20 @@
 !
 
 generate
-    | rootMethod  compiledParser |
+    | compiledParser |
 
     context options generate ifFalse:[
         ^ self
     ].
-    rootMethod := (self codeGenerator)
-            options:context options;
-            clazz:context parserClass;
-            visit:ir.
+    self runPass: PPCUniversalCodeGenerator.
+
     compiledParser := self buildClass.
-    compiledParser startSymbol:rootMethod methodName.
+    compiledParser startSymbol:(context parserClass propertyAt:#rootMethod) methodName.
     compiledParser := compiledParser new.
     ir := compiledParser.
 
     "Modified: / 25-08-2015 / 00:03:46 / Jan Vrany <jan.vr"
-    "Modified: / 26-08-2015 / 20:00:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!PPCUniversalConfiguration methodsFor:'hooks'!
-
-codeGenerator
-    ^ PPCUniversalCodeGenerator new options:context options
+    "Modified: / 26-08-2015 / 22:50:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !PPCUniversalConfiguration class methodsFor:'documentation'!
--- a/compiler/abbrev.stc	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/abbrev.stc	Wed Aug 26 23:01:00 2015 +0100
@@ -44,7 +44,6 @@
 PEGFsaChoiceDeterminizator PEGFsaChoiceDeterminizator stx:goodies/petitparser/compiler 'PetitCompiler-FSA' 0
 PEGFsaDeterminizator PEGFsaDeterminizator stx:goodies/petitparser/compiler 'PetitCompiler-FSA' 0
 PEGFsaEpsilonTransition PEGFsaEpsilonTransition stx:goodies/petitparser/compiler 'PetitCompiler-FSA' 0
-PEGFsaGenerator PEGFsaGenerator stx:goodies/petitparser/compiler 'PetitCompiler-FSA' 0
 PEGFsaParserState PEGFsaParserState stx:goodies/petitparser/compiler 'PetitCompiler-FSA' 0
 PEGFsaPredicateTransition PEGFsaPredicateTransition stx:goodies/petitparser/compiler 'PetitCompiler-FSA' 0
 PEGFsaSequenceDeterminizator PEGFsaSequenceDeterminizator stx:goodies/petitparser/compiler 'PetitCompiler-FSA' 0
@@ -53,21 +52,17 @@
 PPCAbstractPredicateNode PPCAbstractPredicateNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCAnyNode PPCAnyNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCCharacterNode PPCCharacterNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
-PPCCodeGenerator PPCCodeGenerator stx:goodies/petitparser/compiler 'PetitCompiler-Visitors-CodeGenerators' 0
 PPCDelegateNode PPCDelegateNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCDistinctResultStrategy PPCDistinctResultStrategy stx:goodies/petitparser/compiler 'PetitCompiler-Scanner' 0
 PPCEndOfFileNode PPCEndOfFileNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 1
 PPCFSACodeGen PPCFSACodeGen stx:goodies/petitparser/compiler 'PetitCompiler-Scanner' 0
-PPCFSAVisitor PPCFSAVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCInlinedMethod PPCInlinedMethod stx:goodies/petitparser/compiler 'PetitCompiler-Compiler-Codegen' 0
-PPCInliningVisitor PPCInliningVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCListNode PPCListNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCNilNode PPCNilNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCNoResultStrategy PPCNoResultStrategy stx:goodies/petitparser/compiler 'PetitCompiler-Scanner' 0
+PPCPass PPCPass stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCPluggableNode PPCPluggableNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCProfilingContext PPCProfilingContext stx:goodies/petitparser/compiler 'PetitCompiler-Context' 0
-PPCRewritingVisitor PPCRewritingVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
-PPCTokenCodeGenerator PPCTokenCodeGenerator stx:goodies/petitparser/compiler 'PetitCompiler-Visitors-CodeGenerators' 0
 PPCTokenizingCodeGen PPCTokenizingCodeGen stx:goodies/petitparser/compiler 'PetitCompiler-Compiler-Codegen' 0
 PPCTokenizingConfiguration PPCTokenizingConfiguration stx:goodies/petitparser/compiler 'PetitCompiler-Core' 0
 PPCUniversalCodeGen PPCUniversalCodeGen stx:goodies/petitparser/compiler 'PetitCompiler-Compiler-Codegen' 0
@@ -76,17 +71,18 @@
 PPCUnknownNode PPCUnknownNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPTokenizingCompiledParser PPTokenizingCompiledParser stx:goodies/petitparser/compiler 'PetitCompiler-Parsers' 4
 PEGFsaEOFTransition PEGFsaEOFTransition stx:goodies/petitparser/compiler 'PetitCompiler-FSA' 0
+PEGFsaGenerator PEGFsaGenerator stx:goodies/petitparser/compiler 'PetitCompiler-FSA' 0
 PEGFsaParserTransition PEGFsaParserTransition stx:goodies/petitparser/compiler 'PetitCompiler-FSA' 0
 PPCAbstractActionNode PPCAbstractActionNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCAndNode PPCAndNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCCharSetPredicateNode PPCCharSetPredicateNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCChoiceNode PPCChoiceNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
-PPCCopyVisitor PPCCopyVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
+PPCCodeGenerator PPCCodeGenerator stx:goodies/petitparser/compiler 'PetitCompiler-Visitors-CodeGenerators' 0
 PPCEndOfInputNode PPCEndOfInputNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
+PPCFSAVisitor PPCFSAVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCForwardNode PPCForwardNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
-PPCLL1Visitor PPCLL1Visitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
+PPCInliningVisitor PPCInliningVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCLiteralNode PPCLiteralNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
-PPCMergingVisitor PPCMergingVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCMessagePredicateNode PPCMessagePredicateNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCNegateNode PPCNegateNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCNotCharSetPredicateNode PPCNotCharSetPredicateNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
@@ -94,36 +90,41 @@
 PPCNotLiteralNode PPCNotLiteralNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCNotMessagePredicateNode PPCNotMessagePredicateNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCNotNode PPCNotNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
-PPCOptimizeChoices PPCOptimizeChoices stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCOptionalNode PPCOptionalNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCPlusNode PPCPlusNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCPredicateNode PPCPredicateNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
-PPCRecognizerComponentDetector PPCRecognizerComponentDetector stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
-PPCRecognizerComponentVisitor PPCRecognizerComponentVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
+PPCRewritingVisitor PPCRewritingVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCSentinelNode PPCSentinelNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 1
 PPCSequenceNode PPCSequenceNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
-PPCSpecializingVisitor PPCSpecializingVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCStarNode PPCStarNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
+PPCTokenCodeGenerator PPCTokenCodeGenerator stx:goodies/petitparser/compiler 'PetitCompiler-Visitors-CodeGenerators' 0
 PPCTokenConsumeNode PPCTokenConsumeNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
-PPCTokenDetector PPCTokenDetector stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCTokenNode PPCTokenNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
-PPCTokenVisitor PPCTokenVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCTokenWhitespaceNode PPCTokenWhitespaceNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
-PPCTokenizingCodeGenerator PPCTokenizingCodeGenerator stx:goodies/petitparser/compiler 'PetitCompiler-Visitors-CodeGenerators' 0
 PPCTokenizingParserNode PPCTokenizingParserNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
-PPCTokenizingVisitor PPCTokenizingVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCTrimmingTokenNode PPCTrimmingTokenNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
-PPCUniversalCodeGenerator PPCUniversalCodeGenerator stx:goodies/petitparser/compiler 'PetitCompiler-Visitors-CodeGenerators' 0
 PPCActionNode PPCActionNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
+PPCCopyVisitor PPCCopyVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCDeterministicChoiceNode PPCDeterministicChoiceNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
+PPCLL1Visitor PPCLL1Visitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
+PPCMergingVisitor PPCMergingVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
+PPCOptimizeChoices PPCOptimizeChoices stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
+PPCRecognizerComponentDetector PPCRecognizerComponentDetector stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
+PPCRecognizerComponentVisitor PPCRecognizerComponentVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCRecognizingSequenceNode PPCRecognizingSequenceNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
+PPCSpecializingVisitor PPCSpecializingVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCStarAnyNode PPCStarAnyNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCStarCharSetPredicateNode PPCStarCharSetPredicateNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCStarMessagePredicateNode PPCStarMessagePredicateNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCSymbolActionNode PPCSymbolActionNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCTokenChoiceNode PPCTokenChoiceNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
+PPCTokenDetector PPCTokenDetector stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
+PPCTokenVisitor PPCTokenVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
+PPCTokenizingCodeGenerator PPCTokenizingCodeGenerator stx:goodies/petitparser/compiler 'PetitCompiler-Visitors-CodeGenerators' 0
+PPCTokenizingVisitor PPCTokenizingVisitor stx:goodies/petitparser/compiler 'PetitCompiler-Visitors' 0
 PPCTrimNode PPCTrimNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCTrimmingCharacterTokenNode PPCTrimmingCharacterTokenNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
+PPCUniversalCodeGenerator PPCUniversalCodeGenerator stx:goodies/petitparser/compiler 'PetitCompiler-Visitors-CodeGenerators' 0
 PPCMappedActionNode PPCMappedActionNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCTokenStarMessagePredicateNode PPCTokenStarMessagePredicateNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
 PPCTokenStarSeparatorNode PPCTokenStarSeparatorNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0
--- a/compiler/bc.mak	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/bc.mak	Wed Aug 26 23:01:00 2015 +0100
@@ -115,7 +115,6 @@
 $(OUTDIR)PEGFsaChoiceDeterminizator.$(O) PEGFsaChoiceDeterminizator.$(H): PEGFsaChoiceDeterminizator.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PEGFsaAbstractDeterminizator.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaDeterminizator.$(O) PEGFsaDeterminizator.$(H): PEGFsaDeterminizator.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PEGFsaAbstractDeterminizator.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaEpsilonTransition.$(O) PEGFsaEpsilonTransition.$(H): PEGFsaEpsilonTransition.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PEGFsaTransition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PEGFsaGenerator.$(O) PEGFsaGenerator.$(H): PEGFsaGenerator.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaParserState.$(O) PEGFsaParserState.$(H): PEGFsaParserState.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PEGFsaState.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaPredicateTransition.$(O) PEGFsaPredicateTransition.$(H): PEGFsaPredicateTransition.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PEGFsaTransition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaSequenceDeterminizator.$(O) PEGFsaSequenceDeterminizator.$(H): PEGFsaSequenceDeterminizator.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PEGFsaAbstractDeterminizator.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -124,21 +123,17 @@
 $(OUTDIR)PPCAbstractPredicateNode.$(O) PPCAbstractPredicateNode.$(H): PPCAbstractPredicateNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCAnyNode.$(O) PPCAnyNode.$(H): PPCAnyNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCCharacterNode.$(O) PPCCharacterNode.$(H): PPCCharacterNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCCodeGenerator.$(O) PPCCodeGenerator.$(H): PPCCodeGenerator.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCDelegateNode.$(O) PPCDelegateNode.$(H): PPCDelegateNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCDistinctResultStrategy.$(O) PPCDistinctResultStrategy.$(H): PPCDistinctResultStrategy.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCScannerResultStrategy.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCEndOfFileNode.$(O) PPCEndOfFileNode.$(H): PPCEndOfFileNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCFSACodeGen.$(O) PPCFSACodeGen.$(H): PPCFSACodeGen.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCCodeGen.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCFSAVisitor.$(O) PPCFSAVisitor.$(H): PPCFSAVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCInlinedMethod.$(O) PPCInlinedMethod.$(H): PPCInlinedMethod.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCMethod.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCInliningVisitor.$(O) PPCInliningVisitor.$(H): PPCInliningVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCListNode.$(O) PPCListNode.$(H): PPCListNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCNilNode.$(O) PPCNilNode.$(H): PPCNilNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCNoResultStrategy.$(O) PPCNoResultStrategy.$(H): PPCNoResultStrategy.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCScannerResultStrategy.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCPass.$(O) PPCPass.$(H): PPCPass.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCPluggableNode.$(O) PPCPluggableNode.$(H): PPCPluggableNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCProfilingContext.$(O) PPCProfilingContext.$(H): PPCProfilingContext.st $(INCLUDE_TOP)\stx\goodies\petitparser\PPStream.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCContext.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\PeekableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PositionableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(STCHDR)
-$(OUTDIR)PPCRewritingVisitor.$(O) PPCRewritingVisitor.$(H): PPCRewritingVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCTokenCodeGenerator.$(O) PPCTokenCodeGenerator.$(H): PPCTokenCodeGenerator.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenizingCodeGen.$(O) PPCTokenizingCodeGen.$(H): PPCTokenizingCodeGen.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCCodeGen.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenizingConfiguration.$(O) PPCTokenizingConfiguration.$(H): PPCTokenizingConfiguration.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCConfiguration.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCUniversalCodeGen.$(O) PPCUniversalCodeGen.$(H): PPCUniversalCodeGen.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCCodeGen.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -147,17 +142,18 @@
 $(OUTDIR)PPCUnknownNode.$(O) PPCUnknownNode.$(H): PPCUnknownNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPTokenizingCompiledParser.$(O) PPTokenizingCompiledParser.$(H): PPTokenizingCompiledParser.st $(INCLUDE_TOP)\stx\goodies\petitparser\PPParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCompiledParser.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaEOFTransition.$(O) PEGFsaEOFTransition.$(H): PEGFsaEOFTransition.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PEGFsaPredicateTransition.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PEGFsaTransition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PEGFsaGenerator.$(O) PEGFsaGenerator.$(H): PEGFsaGenerator.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PEGFsaParserTransition.$(O) PEGFsaParserTransition.$(H): PEGFsaParserTransition.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PEGFsaPredicateTransition.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PEGFsaTransition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCAbstractActionNode.$(O) PPCAbstractActionNode.$(H): PPCAbstractActionNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCAndNode.$(O) PPCAndNode.$(H): PPCAndNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCCharSetPredicateNode.$(O) PPCCharSetPredicateNode.$(H): PPCCharSetPredicateNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCAbstractPredicateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCChoiceNode.$(O) PPCChoiceNode.$(H): PPCChoiceNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCListNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCCopyVisitor.$(O) PPCCopyVisitor.$(H): PPCCopyVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCCodeGenerator.$(O) PPCCodeGenerator.$(H): PPCCodeGenerator.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCEndOfInputNode.$(O) PPCEndOfInputNode.$(H): PPCEndOfInputNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCFSAVisitor.$(O) PPCFSAVisitor.$(H): PPCFSAVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCForwardNode.$(O) PPCForwardNode.$(H): PPCForwardNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCLL1Visitor.$(O) PPCLL1Visitor.$(H): PPCLL1Visitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCInliningVisitor.$(O) PPCInliningVisitor.$(H): PPCInliningVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCLiteralNode.$(O) PPCLiteralNode.$(H): PPCLiteralNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCAbstractLiteralNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCMergingVisitor.$(O) PPCMergingVisitor.$(H): PPCMergingVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCMessagePredicateNode.$(O) PPCMessagePredicateNode.$(H): PPCMessagePredicateNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCAbstractPredicateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCNegateNode.$(O) PPCNegateNode.$(H): PPCNegateNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCNotCharSetPredicateNode.$(O) PPCNotCharSetPredicateNode.$(H): PPCNotCharSetPredicateNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCAbstractPredicateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -165,36 +161,41 @@
 $(OUTDIR)PPCNotLiteralNode.$(O) PPCNotLiteralNode.$(H): PPCNotLiteralNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCAbstractLiteralNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCNotMessagePredicateNode.$(O) PPCNotMessagePredicateNode.$(H): PPCNotMessagePredicateNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCAbstractPredicateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCNotNode.$(O) PPCNotNode.$(H): PPCNotNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCOptimizeChoices.$(O) PPCOptimizeChoices.$(H): PPCOptimizeChoices.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCOptionalNode.$(O) PPCOptionalNode.$(H): PPCOptionalNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCPlusNode.$(O) PPCPlusNode.$(H): PPCPlusNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCPredicateNode.$(O) PPCPredicateNode.$(H): PPCPredicateNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCAbstractPredicateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCRecognizerComponentDetector.$(O) PPCRecognizerComponentDetector.$(H): PPCRecognizerComponentDetector.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCRecognizerComponentVisitor.$(O) PPCRecognizerComponentVisitor.$(H): PPCRecognizerComponentVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCRewritingVisitor.$(O) PPCRewritingVisitor.$(H): PPCRewritingVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCSentinelNode.$(O) PPCSentinelNode.$(H): PPCSentinelNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNilNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCSequenceNode.$(O) PPCSequenceNode.$(H): PPCSequenceNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCListNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCSpecializingVisitor.$(O) PPCSpecializingVisitor.$(H): PPCSpecializingVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCStarNode.$(O) PPCStarNode.$(H): PPCStarNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCTokenCodeGenerator.$(O) PPCTokenCodeGenerator.$(H): PPCTokenCodeGenerator.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenConsumeNode.$(O) PPCTokenConsumeNode.$(H): PPCTokenConsumeNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCTokenDetector.$(O) PPCTokenDetector.$(H): PPCTokenDetector.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenNode.$(O) PPCTokenNode.$(H): PPCTokenNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCTokenVisitor.$(O) PPCTokenVisitor.$(H): PPCTokenVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenWhitespaceNode.$(O) PPCTokenWhitespaceNode.$(H): PPCTokenWhitespaceNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCTokenizingCodeGenerator.$(O) PPCTokenizingCodeGenerator.$(H): PPCTokenizingCodeGenerator.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCCodeGenerator.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenizingParserNode.$(O) PPCTokenizingParserNode.$(H): PPCTokenizingParserNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCListNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCTokenizingVisitor.$(O) PPCTokenizingVisitor.$(H): PPCTokenizingVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTrimmingTokenNode.$(O) PPCTrimmingTokenNode.$(H): PPCTrimmingTokenNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCListNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)PPCUniversalCodeGenerator.$(O) PPCUniversalCodeGenerator.$(H): PPCUniversalCodeGenerator.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCCodeGenerator.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCActionNode.$(O) PPCActionNode.$(H): PPCActionNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCAbstractActionNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCCopyVisitor.$(O) PPCCopyVisitor.$(H): PPCCopyVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCDeterministicChoiceNode.$(O) PPCDeterministicChoiceNode.$(H): PPCDeterministicChoiceNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCChoiceNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCListNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLL1Visitor.$(O) PPCLL1Visitor.$(H): PPCLL1Visitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCMergingVisitor.$(O) PPCMergingVisitor.$(H): PPCMergingVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCOptimizeChoices.$(O) PPCOptimizeChoices.$(H): PPCOptimizeChoices.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCRecognizerComponentDetector.$(O) PPCRecognizerComponentDetector.$(H): PPCRecognizerComponentDetector.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCRecognizerComponentVisitor.$(O) PPCRecognizerComponentVisitor.$(H): PPCRecognizerComponentVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCRecognizingSequenceNode.$(O) PPCRecognizingSequenceNode.$(H): PPCRecognizingSequenceNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCListNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCSequenceNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCSpecializingVisitor.$(O) PPCSpecializingVisitor.$(H): PPCSpecializingVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCStarAnyNode.$(O) PPCStarAnyNode.$(H): PPCStarAnyNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCStarNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCStarCharSetPredicateNode.$(O) PPCStarCharSetPredicateNode.$(H): PPCStarCharSetPredicateNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCStarNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCStarMessagePredicateNode.$(O) PPCStarMessagePredicateNode.$(H): PPCStarMessagePredicateNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCStarNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCSymbolActionNode.$(O) PPCSymbolActionNode.$(H): PPCSymbolActionNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCAbstractActionNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenChoiceNode.$(O) PPCTokenChoiceNode.$(H): PPCTokenChoiceNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCChoiceNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCListNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCTokenDetector.$(O) PPCTokenDetector.$(H): PPCTokenDetector.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCTokenVisitor.$(O) PPCTokenVisitor.$(H): PPCTokenVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCTokenizingCodeGenerator.$(O) PPCTokenizingCodeGenerator.$(H): PPCTokenizingCodeGenerator.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCCodeGenerator.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCTokenizingVisitor.$(O) PPCTokenizingVisitor.$(H): PPCTokenizingVisitor.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCRewritingVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTrimNode.$(O) PPCTrimNode.$(H): PPCTrimNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCListNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCSequenceNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTrimmingCharacterTokenNode.$(O) PPCTrimmingCharacterTokenNode.$(H): PPCTrimmingCharacterTokenNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCListNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCTrimmingTokenNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCUniversalCodeGenerator.$(O) PPCUniversalCodeGenerator.$(H): PPCUniversalCodeGenerator.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCCodeGenerator.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCPass.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCMappedActionNode.$(O) PPCMappedActionNode.$(H): PPCMappedActionNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCAbstractActionNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCActionNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenStarMessagePredicateNode.$(O) PPCTokenStarMessagePredicateNode.$(H): PPCTokenStarMessagePredicateNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCStarMessagePredicateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCStarNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCTokenStarSeparatorNode.$(O) PPCTokenStarSeparatorNode.$(H): PPCTokenStarSeparatorNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCStarMessagePredicateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCStarNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCTokenStarMessagePredicateNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/compiler/benchmarks/PPCSmalltalkNoopParser.st	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/benchmarks/PPCSmalltalkNoopParser.st	Wed Aug 26 23:01:00 2015 +0100
@@ -9,7 +9,6 @@
 	category:'PetitCompiler-Benchmarks-Parsers'
 !
 
-
 !PPCSmalltalkNoopParser methodsFor:'accessing'!
 
 startExpression
@@ -343,10 +342,3 @@
     "Modified: / 15-05-2015 / 08:54:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!PPCSmalltalkNoopParser class methodsFor:'documentation'!
-
-version_HG
-
-    ^ '$Changeset: <not expanded> $'
-! !
-
--- a/compiler/libInit.cc	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/libInit.cc	Wed Aug 26 23:01:00 2015 +0100
@@ -70,7 +70,6 @@
 _PEGFsaChoiceDeterminizator_Init(pass,__pRT__,snd);
 _PEGFsaDeterminizator_Init(pass,__pRT__,snd);
 _PEGFsaEpsilonTransition_Init(pass,__pRT__,snd);
-_PEGFsaGenerator_Init(pass,__pRT__,snd);
 _PEGFsaParserState_Init(pass,__pRT__,snd);
 _PEGFsaPredicateTransition_Init(pass,__pRT__,snd);
 _PEGFsaSequenceDeterminizator_Init(pass,__pRT__,snd);
@@ -79,21 +78,17 @@
 _PPCAbstractPredicateNode_Init(pass,__pRT__,snd);
 _PPCAnyNode_Init(pass,__pRT__,snd);
 _PPCCharacterNode_Init(pass,__pRT__,snd);
-_PPCCodeGenerator_Init(pass,__pRT__,snd);
 _PPCDelegateNode_Init(pass,__pRT__,snd);
 _PPCDistinctResultStrategy_Init(pass,__pRT__,snd);
 _PPCEndOfFileNode_Init(pass,__pRT__,snd);
 _PPCFSACodeGen_Init(pass,__pRT__,snd);
-_PPCFSAVisitor_Init(pass,__pRT__,snd);
 _PPCInlinedMethod_Init(pass,__pRT__,snd);
-_PPCInliningVisitor_Init(pass,__pRT__,snd);
 _PPCListNode_Init(pass,__pRT__,snd);
 _PPCNilNode_Init(pass,__pRT__,snd);
 _PPCNoResultStrategy_Init(pass,__pRT__,snd);
+_PPCPass_Init(pass,__pRT__,snd);
 _PPCPluggableNode_Init(pass,__pRT__,snd);
 _PPCProfilingContext_Init(pass,__pRT__,snd);
-_PPCRewritingVisitor_Init(pass,__pRT__,snd);
-_PPCTokenCodeGenerator_Init(pass,__pRT__,snd);
 _PPCTokenizingCodeGen_Init(pass,__pRT__,snd);
 _PPCTokenizingConfiguration_Init(pass,__pRT__,snd);
 _PPCUniversalCodeGen_Init(pass,__pRT__,snd);
@@ -102,17 +97,18 @@
 _PPCUnknownNode_Init(pass,__pRT__,snd);
 _PPTokenizingCompiledParser_Init(pass,__pRT__,snd);
 _PEGFsaEOFTransition_Init(pass,__pRT__,snd);
+_PEGFsaGenerator_Init(pass,__pRT__,snd);
 _PEGFsaParserTransition_Init(pass,__pRT__,snd);
 _PPCAbstractActionNode_Init(pass,__pRT__,snd);
 _PPCAndNode_Init(pass,__pRT__,snd);
 _PPCCharSetPredicateNode_Init(pass,__pRT__,snd);
 _PPCChoiceNode_Init(pass,__pRT__,snd);
-_PPCCopyVisitor_Init(pass,__pRT__,snd);
+_PPCCodeGenerator_Init(pass,__pRT__,snd);
 _PPCEndOfInputNode_Init(pass,__pRT__,snd);
+_PPCFSAVisitor_Init(pass,__pRT__,snd);
 _PPCForwardNode_Init(pass,__pRT__,snd);
-_PPCLL1Visitor_Init(pass,__pRT__,snd);
+_PPCInliningVisitor_Init(pass,__pRT__,snd);
 _PPCLiteralNode_Init(pass,__pRT__,snd);
-_PPCMergingVisitor_Init(pass,__pRT__,snd);
 _PPCMessagePredicateNode_Init(pass,__pRT__,snd);
 _PPCNegateNode_Init(pass,__pRT__,snd);
 _PPCNotCharSetPredicateNode_Init(pass,__pRT__,snd);
@@ -120,36 +116,41 @@
 _PPCNotLiteralNode_Init(pass,__pRT__,snd);
 _PPCNotMessagePredicateNode_Init(pass,__pRT__,snd);
 _PPCNotNode_Init(pass,__pRT__,snd);
-_PPCOptimizeChoices_Init(pass,__pRT__,snd);
 _PPCOptionalNode_Init(pass,__pRT__,snd);
 _PPCPlusNode_Init(pass,__pRT__,snd);
 _PPCPredicateNode_Init(pass,__pRT__,snd);
-_PPCRecognizerComponentDetector_Init(pass,__pRT__,snd);
-_PPCRecognizerComponentVisitor_Init(pass,__pRT__,snd);
+_PPCRewritingVisitor_Init(pass,__pRT__,snd);
 _PPCSentinelNode_Init(pass,__pRT__,snd);
 _PPCSequenceNode_Init(pass,__pRT__,snd);
-_PPCSpecializingVisitor_Init(pass,__pRT__,snd);
 _PPCStarNode_Init(pass,__pRT__,snd);
+_PPCTokenCodeGenerator_Init(pass,__pRT__,snd);
 _PPCTokenConsumeNode_Init(pass,__pRT__,snd);
-_PPCTokenDetector_Init(pass,__pRT__,snd);
 _PPCTokenNode_Init(pass,__pRT__,snd);
-_PPCTokenVisitor_Init(pass,__pRT__,snd);
 _PPCTokenWhitespaceNode_Init(pass,__pRT__,snd);
-_PPCTokenizingCodeGenerator_Init(pass,__pRT__,snd);
 _PPCTokenizingParserNode_Init(pass,__pRT__,snd);
-_PPCTokenizingVisitor_Init(pass,__pRT__,snd);
 _PPCTrimmingTokenNode_Init(pass,__pRT__,snd);
-_PPCUniversalCodeGenerator_Init(pass,__pRT__,snd);
 _PPCActionNode_Init(pass,__pRT__,snd);
+_PPCCopyVisitor_Init(pass,__pRT__,snd);
 _PPCDeterministicChoiceNode_Init(pass,__pRT__,snd);
+_PPCLL1Visitor_Init(pass,__pRT__,snd);
+_PPCMergingVisitor_Init(pass,__pRT__,snd);
+_PPCOptimizeChoices_Init(pass,__pRT__,snd);
+_PPCRecognizerComponentDetector_Init(pass,__pRT__,snd);
+_PPCRecognizerComponentVisitor_Init(pass,__pRT__,snd);
 _PPCRecognizingSequenceNode_Init(pass,__pRT__,snd);
+_PPCSpecializingVisitor_Init(pass,__pRT__,snd);
 _PPCStarAnyNode_Init(pass,__pRT__,snd);
 _PPCStarCharSetPredicateNode_Init(pass,__pRT__,snd);
 _PPCStarMessagePredicateNode_Init(pass,__pRT__,snd);
 _PPCSymbolActionNode_Init(pass,__pRT__,snd);
 _PPCTokenChoiceNode_Init(pass,__pRT__,snd);
+_PPCTokenDetector_Init(pass,__pRT__,snd);
+_PPCTokenVisitor_Init(pass,__pRT__,snd);
+_PPCTokenizingCodeGenerator_Init(pass,__pRT__,snd);
+_PPCTokenizingVisitor_Init(pass,__pRT__,snd);
 _PPCTrimNode_Init(pass,__pRT__,snd);
 _PPCTrimmingCharacterTokenNode_Init(pass,__pRT__,snd);
+_PPCUniversalCodeGenerator_Init(pass,__pRT__,snd);
 _PPCMappedActionNode_Init(pass,__pRT__,snd);
 _PPCTokenStarMessagePredicateNode_Init(pass,__pRT__,snd);
 _PPCTokenStarSeparatorNode_Init(pass,__pRT__,snd);
--- a/compiler/stx_goodies_petitparser_compiler.st	Wed Aug 26 21:41:20 2015 +0100
+++ b/compiler/stx_goodies_petitparser_compiler.st	Wed Aug 26 23:01:00 2015 +0100
@@ -153,7 +153,6 @@
         PEGFsaChoiceDeterminizator
         PEGFsaDeterminizator
         PEGFsaEpsilonTransition
-        PEGFsaGenerator
         PEGFsaParserState
         PEGFsaPredicateTransition
         PEGFsaSequenceDeterminizator
@@ -162,21 +161,17 @@
         PPCAbstractPredicateNode
         PPCAnyNode
         PPCCharacterNode
-        PPCCodeGenerator
         PPCDelegateNode
         PPCDistinctResultStrategy
         PPCEndOfFileNode
         PPCFSACodeGen
-        PPCFSAVisitor
         PPCInlinedMethod
-        PPCInliningVisitor
         PPCListNode
         PPCNilNode
         PPCNoResultStrategy
+        PPCPass
         PPCPluggableNode
         PPCProfilingContext
-        PPCRewritingVisitor
-        PPCTokenCodeGenerator
         PPCTokenizingCodeGen
         PPCTokenizingConfiguration
         PPCUniversalCodeGen
@@ -185,17 +180,18 @@
         PPCUnknownNode
         PPTokenizingCompiledParser
         PEGFsaEOFTransition
+        PEGFsaGenerator
         PEGFsaParserTransition
         PPCAbstractActionNode
         PPCAndNode
         PPCCharSetPredicateNode
         PPCChoiceNode
-        PPCCopyVisitor
+        PPCCodeGenerator
         PPCEndOfInputNode
+        PPCFSAVisitor
         PPCForwardNode
-        PPCLL1Visitor
+        PPCInliningVisitor
         PPCLiteralNode
-        PPCMergingVisitor
         PPCMessagePredicateNode
         PPCNegateNode
         PPCNotCharSetPredicateNode
@@ -203,36 +199,41 @@
         PPCNotLiteralNode
         PPCNotMessagePredicateNode
         PPCNotNode
-        PPCOptimizeChoices
         PPCOptionalNode
         PPCPlusNode
         PPCPredicateNode
-        PPCRecognizerComponentDetector
-        PPCRecognizerComponentVisitor
+        PPCRewritingVisitor
         PPCSentinelNode
         PPCSequenceNode
-        PPCSpecializingVisitor
         PPCStarNode
+        PPCTokenCodeGenerator
         PPCTokenConsumeNode
-        PPCTokenDetector
         PPCTokenNode
-        PPCTokenVisitor
         PPCTokenWhitespaceNode
-        PPCTokenizingCodeGenerator
         PPCTokenizingParserNode
-        PPCTokenizingVisitor
         PPCTrimmingTokenNode
-        PPCUniversalCodeGenerator
         PPCActionNode
+        PPCCopyVisitor
         PPCDeterministicChoiceNode
+        PPCLL1Visitor
+        PPCMergingVisitor
+        PPCOptimizeChoices
+        PPCRecognizerComponentDetector
+        PPCRecognizerComponentVisitor
         PPCRecognizingSequenceNode
+        PPCSpecializingVisitor
         PPCStarAnyNode
         PPCStarCharSetPredicateNode
         PPCStarMessagePredicateNode
         PPCSymbolActionNode
         PPCTokenChoiceNode
+        PPCTokenDetector
+        PPCTokenVisitor
+        PPCTokenizingCodeGenerator
+        PPCTokenizingVisitor
         PPCTrimNode
         PPCTrimmingCharacterTokenNode
+        PPCUniversalCodeGenerator
         PPCMappedActionNode
         PPCTokenStarMessagePredicateNode
         PPCTokenStarSeparatorNode