Added benchmarks for Johan's LRP Parser
authorJan Vrany <jan.vrany@fit.cvut.cz>
Tue, 18 Aug 2015 16:57:08 +0100
changeset 520 9ccc84deaea0
parent 519 1563dce3c5b4
child 521 c1a810e250dc
Added benchmarks for Johan's LRP Parser
compiler/benchmarks/Make.proto
compiler/benchmarks/Make.spec
compiler/benchmarks/PPCBenchmark.st
compiler/benchmarks/PPCLRPParser_johanfabry_39.st
compiler/benchmarks/abbrev.stc
compiler/benchmarks/bc.mak
compiler/benchmarks/libInit.cc
compiler/benchmarks/stx_goodies_petitparser_compiler_benchmarks.st
--- a/compiler/benchmarks/Make.proto	Tue Aug 18 13:09:42 2015 +0100
+++ b/compiler/benchmarks/Make.proto	Tue Aug 18 16:57:08 2015 +0100
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/petitparser -I$(INCLUDE_TOP)/stx/goodies/petitparser/compiler -I$(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/java -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/smalltalk -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser -I$(INCLUDE_TOP)/stx/libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)/jv/calipel/s -I$(INCLUDE_TOP)/stx/goodies/liverobotics_parser -I$(INCLUDE_TOP)/stx/goodies/petitparser -I$(INCLUDE_TOP)/stx/goodies/petitparser/compiler -I$(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/java -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/smalltalk -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/smalltalk/tests -I$(INCLUDE_TOP)/stx/goodies/petitparser/tests -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic
 
 
 # if you need any additional defines for embedded C code,
@@ -104,8 +104,13 @@
 	cd ../../../../libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../../refactoryBrowser/parser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../../../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../ && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../parsers/smalltalk && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../../sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../tests && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../parsers/smalltalk/tests && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 
 
 
@@ -126,6 +131,7 @@
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)PPCBenchmark.$(O) PPCBenchmark.$(H): PPCBenchmark.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPParser_johanfabry_39.$(O) PPCLRPParser_johanfabry_39.$(H): PPCLRPParser_johanfabry_39.st $(INCLUDE_TOP)/stx/goodies/petitparser/PPCompositeParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPDelegateParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPParser.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PPCSmalltalkNoopParser.$(O) PPCSmalltalkNoopParser.$(H): PPCSmalltalkNoopParser.st $(INCLUDE_TOP)/stx/goodies/petitparser/PPCompositeParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPDelegateParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/parsers/smalltalk/PPSmalltalkGrammar.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)stx_goodies_petitparser_compiler_benchmarks.$(O) stx_goodies_petitparser_compiler_benchmarks.$(H): stx_goodies_petitparser_compiler_benchmarks.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
 
--- a/compiler/benchmarks/Make.spec	Tue Aug 18 13:09:42 2015 +0100
+++ b/compiler/benchmarks/Make.spec	Tue Aug 18 16:57:08 2015 +0100
@@ -52,6 +52,7 @@
 
 COMMON_CLASSES= \
 	PPCBenchmark \
+	PPCLRPParser_johanfabry_39 \
 	PPCSmalltalkNoopParser \
 	stx_goodies_petitparser_compiler_benchmarks \
 
@@ -60,6 +61,7 @@
 
 COMMON_OBJS= \
     $(OUTDIR_SLASH)PPCBenchmark.$(O) \
+    $(OUTDIR_SLASH)PPCLRPParser_johanfabry_39.$(O) \
     $(OUTDIR_SLASH)PPCSmalltalkNoopParser.$(O) \
     $(OUTDIR_SLASH)stx_goodies_petitparser_compiler_benchmarks.$(O) \
 
--- a/compiler/benchmarks/PPCBenchmark.st	Tue Aug 18 13:09:42 2015 +0100
+++ b/compiler/benchmarks/PPCBenchmark.st	Tue Aug 18 16:57:08 2015 +0100
@@ -35,18 +35,27 @@
     "
 !
 
-run: selector
-    | benchmarkSuiteClass |
+run: selectorOrSelectors
+    | benchmarkSuiteClass benchmarkSuite |
     
     benchmarkSuiteClass := Smalltalk at: #BenchmarkSuite.
     benchmarkSuiteClass isNil ifTrue:[
         self error: 'CalipeL is not loaded.'
     ].
-    ^ (benchmarkSuiteClass  class:self selector: selector ) run
-    
+    selectorOrSelectors isSymbol ifTrue:[ 
+        benchmarkSuite := (benchmarkSuiteClass  class:self selector: selectorOrSelectors ) run
+    ] ifFalse:[ 
+        benchmarkSuite := benchmarkSuiteClass new.
+        selectorOrSelectors do:[:each | 
+            benchmarkSuite addBenchmark: (BenchmarkInstance class: self selector: each)   
+        ].
+    ].
+    ^ benchmarkSuite run
     "
     PPCBenchmark run: #benchmarkRBParserC
     "
+
+    "Modified: / 18-08-2015 / 16:34:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 spy: benchmark
@@ -359,6 +368,40 @@
     
 !
 
+benchmarkLRPParserC
+    <setup: #setupLRPParser>
+    <benchmark: 'LRP Parser - Standard'>
+
+    1000 timesRepeat:[ 
+        input do: [ :source | parser parse: source withContext: context ]
+    ]
+
+    "Created: / 18-08-2015 / 16:27:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+benchmarkLRPParserCompiledC
+    <setup: #setupLRPParserCompiled>
+    <teardown: #teardownLRPParserCompiled>
+    <benchmark: 'LRP Parser - Compiled'>
+    
+    1000 timesRepeat:[ 
+        input do: [ :source | parser parse: source withContext: context ]
+    ]
+
+    "Created: / 18-08-2015 / 16:26:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+benchmarkLRPParser_johanfabry_39C
+    <setup: #setupLRPParser>
+    <benchmark: 'LRP Parser - Standard johanfabry.39'>
+
+    1000 timesRepeat:[ 
+        input do: [ :source | parser parse: source withContext: context ]
+    ]
+
+    "Created: / 18-08-2015 / 16:49:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 benchmarkRBParserC
     <setup: #setupRBParser>
     <benchmark: 'RB Smalltalk Parser'>
@@ -576,6 +619,37 @@
     input := sources expressionSourcesBig.
 !
 
+setupLRPParser
+    
+    parser := PPCLRPParser new.
+    context := self context.
+    context initializeFor: parser.
+    input := PPCLRPSourcesResource current sources
+
+    "Created: / 18-08-2015 / 16:34:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setupLRPParserCompiled
+
+    configuration := PPCConfiguration universal.
+    parser := PPCLRPParser new compileWithConfiguration: configuration.
+    context := self context.
+    context initializeFor: parser.
+    input := PPCLRPSourcesResource current sources
+
+    "Created: / 18-08-2015 / 16:35:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setupLRPParser_johanfabry_39     
+    
+    parser := PPCLRPParser_johanfabry_39 new.
+    context := self context.
+    context initializeFor: parser.
+    input := PPCLRPSourcesResource current sources
+
+    "Created: / 18-08-2015 / 16:48:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 setupRBParser
     
     input := sources smalltalkSourcesBig.
@@ -685,6 +759,17 @@
 "
 !
 
+teardownLRPParserCompiled
+    parser class removeFromSystem.
+"       
+    size := input inject: 0 into: [:r :e | r + e size  ].
+    Transcript crShow: 'Compiled Grammar time: ', time asString.
+    Transcript crShow: 'Time per character: ', (time / size * 1000.0) asString, ' microseconds'.
+"
+
+    "Created: / 18-08-2015 / 16:36:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 teardownSmalltalkGrammarCompiled
     parser class removeFromSystem.
 "	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/benchmarks/PPCLRPParser_johanfabry_39.st	Tue Aug 18 16:57:08 2015 +0100
@@ -0,0 +1,398 @@
+"{ Package: 'stx:goodies/petitparser/compiler/benchmarks' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCompositeParser subclass:#PPCLRPParser_johanfabry_39
+	instanceVariableNames:'program variable block bra ket identifier machine body event
+		transition epsilon wildcard state onentry running onexit comment
+		lineTerminator statebody spawn integer errorNode success failed
+		lastError styler timeoutIdentifier timeoutInteger endOfComment
+		error'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Benchmarks-Core'
+!
+
+!PPCLRPParser_johanfabry_39 class methodsFor:'accessing'!
+
+ignoredNames
+
+    ^super ignoredNames , #(styler failed lastError)
+! !
+
+!PPCLRPParser_johanfabry_39 methodsFor:'accessing'!
+
+error
+    ^error
+
+    "Modified (format): / 18-08-2015 / 16:56:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+failed
+    ^failed
+!
+
+lastError
+    ^lastError
+!
+
+start
+    ^program end
+!
+
+styler
+    ^styler ifNil:[styler := PPCLRPRubricStyler new]
+!
+
+styler: aSHStyler
+
+    styler := aSHStyler.
+!
+
+success
+    ^success
+! !
+
+!PPCLRPParser_johanfabry_39 methodsFor:'block creation'!
+
+createSTBlockFrom: aBlockNode withVariables: aDictionary
+    |compiled retval keys|
+    
+    keys := OrderedCollection new: aDictionary size.
+    aDictionary associations do: [:asoc|
+        keys add: asoc key.
+    ].
+
+    compiled := (self methodizeBlock: aBlockNode withArguments: keys) compiledMethod.
+    retval := compiled valueWithReceiver: Object new arguments: {aDictionary}.
+
+    ^retval.
+!
+
+methodizeBlock: parsedBlock withArguments: anArray
+    
+    |method retval inspoint|
+    
+    method := 'captureV: PPCLRPScopeVariables'.
+     
+    retval := PPSmalltalkParser new method parse: method , '^[1]'.
+    inspoint := retval body statements first.
+    parsedBlock scope: inspoint value scope.
+    parsedBlock parent: inspoint.
+    inspoint value: parsedBlock.
+    retval source: retval asString.
+    
+    anArray do: [:aVarName|
+        retval := retval rewriteLRPVarNamedWrite: aVarName.
+        retval := retval rewriteLRPVarNamedRead: aVarName.
+    ].
+    ^retval
+! !
+
+!PPCLRPParser_johanfabry_39 methodsFor:'error handing'!
+
+failWithValue: anObject
+
+    failed := true.
+    lastError := anObject.
+! !
+
+!PPCLRPParser_johanfabry_39 methodsFor:'grammar'!
+
+body
+    ^(variable / event / state / transition / timeoutIdentifier / timeoutInteger / epsilon / wildcard / comment / errorNode) star
+!
+
+errorNode
+    ^(bra,  (bra/ket)negate star , ket) token
+        ==> [ :token |  
+                PPCLRPErrorNode new start: token start stop: token stop; yourself.
+            ]
+!
+
+event
+    ^ (bra, 'event' asParser trim, identifier, block,  ket) token 
+        ==> [:token | | ident |
+                ident := (token parsedValue at: 3).
+                (LRPEvent named: ident parsedValue
+                     trigger: (token parsedValue at: 4))
+                start: token start stop: token stop;
+                nameRange: (ident start to: ident stop);
+                yourself.
+            ]
+!
+
+integer 
+    ^(#digit asParser) plus flatten trim token
+!
+
+machine
+    ^(bra , 'machine' asParser trim , identifier , body , ket) token
+        ==> [:token | | ident bod stop |
+                ident := (token parsedValue at: 3).
+                bod := (token parsedValue at: 4).
+                bod isEmpty
+                    ifTrue: [ stop := token stop - 1 ]
+                 	ifFalse: [ stop := (bod at: 1) start - 1 ].
+                (LRPMachine name: ident parsedValue body: bod)
+                    start: token start stop: token stop;
+                    nameRange: (ident start to: stop);
+                    yourself.
+            ]
+!
+
+onentry
+    ^ (bra, 'onentry' asParser trim, (block/spawn) ,  ket ) token
+        ==> [:token | 
+                (LRPOnEntry block: (token parsedValue at: 3))
+                start: token start stop: token stop;
+                keywordEnd: (token parsedValue at: 3) start -1;
+                yourself.
+            ]
+!
+
+onexit
+    ^ (bra, 'onexit' asParser trim, (block/spawn),  ket) token 
+        ==> [:token | 
+                (LRPOnExit block: (token parsedValue at: 3))
+                start: token start stop: token stop;
+                keywordEnd: (token parsedValue at: 3) start -1;
+                yourself.
+            ]
+!
+
+program
+    ^ (variable / machine / comment / spawn / errorNode) star
+!
+
+running
+    ^ (bra, 'running' asParser trim, (block/spawn),  ket) token 
+        ==> [:token | 
+                (LRPRunning block: (token parsedValue at: 3))
+                start: token start stop: token stop;
+                keywordEnd: (token parsedValue at: 3) start -1;
+                yourself.
+            ]
+!
+
+spawn
+    ^(bra , 'spawn' asParser trim , identifier , identifier , ket) token
+        ==> [ :token |  
+                (LRPSpawn
+                    machine: (token parsedValue at: 3) parsedValue
+                    state: (token parsedValue at: 4) parsedValue)
+                start: token start stop: token stop;
+                nameRange: ((token parsedValue at: 3) start to: (token parsedValue at: 4) stop)
+                yourself.
+            ]
+        
+!
+
+state
+    ^(bra , 'state' asParser trim , identifier , statebody , ket) token
+        ==> [ :token | | ident |
+                ident := (token parsedValue at: 3).
+                (LRPState name: ident parsedValue
+                    body: (token parsedValue at: 4))
+                start: token start stop: token stop;
+                nameRange: (ident start to: ident stop);
+                yourself.
+            ]
+        
+!
+
+statebody
+    ^(onentry / running / onexit / machine / comment / errorNode) star
+        
+!
+
+variable
+    ^ (bra , 'var' asParser trim , identifier , ':=' asParser trim , block , ket) token 
+        ==> [ :token | |ident|
+            ident := (token parsedValue at: 3).
+            (LRPVariable name: ident parsedValue
+                value: (token parsedValue at: 5))
+            start: token start stop: token stop;
+            nameRange: (ident start to: ident stop);
+            yourself.
+        ]
+! !
+
+!PPCLRPParser_johanfabry_39 methodsFor:'grammar-comments'!
+
+comment
+    ^ ((PPPredicateObjectParser blank / lineTerminator) star,  ( $; asParser , (endOfComment negate star) flatten,  endOfComment)) token
+    ==> [ :token |  |text|
+            text := token parsedValue at: 2.
+                (LRPComment text: (text copyFrom: 2 to: text size -1))
+                start: token start stop: token stop;
+                yourself.
+        ]
+!
+
+endOfComment
+    ^ #eof asParser / lineTerminator
+!
+
+lineTerminator
+
+    ^ (Character lf asParser) / (Character cr asParser , (Character lf asParser ) optional )
+! !
+
+!PPCLRPParser_johanfabry_39 methodsFor:'grammar-common'!
+
+block
+    ^PPSmalltalkParser new block
+!
+
+bra
+    ^ $( asParser trim
+!
+
+identifier 
+    ^(#letter asParser ,(#letter asParser / #digit asParser /  $_ asParser) star)  flatten trim token
+!
+
+ket
+    ^ $) asParser trim
+! !
+
+!PPCLRPParser_johanfabry_39 methodsFor:'grammar-transitions'!
+
+epsilon
+    ^ (bra, 'eps' asParser trim, identifier, '->' asParser trim, identifier,  identifier optional, ket) token
+        ==> [ :token |  | trans name |
+                name := (token parsedValue at: 6).
+                name ifNil: [name := '' ] ifNotNil: [ name := name parsedValue ].
+                trans := 
+                    (LRPEpsilonTransition
+                        from: (token parsedValue at: 3) parsedValue
+                        to: (token parsedValue at: 5) parsedValue
+                        name: name).
+                self setTransitionRangesIn: trans for: token withArrowAt: 3. 
+                trans
+        ]
+!
+
+timeoutIdentifier
+    ^ (bra, 'ontime' asParser trim, identifier , identifier, '->' asParser trim, identifier,  identifier optional, ket) token
+        ==> (self transitionActionHandlerFor: PPCLRPTimeoutTransition).
+!
+
+timeoutInteger
+    ^ (bra, 'ontime' asParser trim,  integer, identifier, '->' asParser trim, identifier,  identifier optional, ket) token
+        ==> [ :token | | trans name |
+        name := (token parsedValue at: 7).
+        name ifNil: [name := '' ] ifNotNil: [ name := name parsedValue ].
+        trans :=
+            (LRPTimeoutTransition
+                on: (Integer readFrom: (token parsedValue at: 3) parsedValue)
+                from: (token parsedValue at: 4) parsedValue
+                to: (token parsedValue at: 6) parsedValue
+                name: name).
+        self setTransitionRangesIn: trans for: token withArrowAt: 4.
+        trans.
+    ]
+!
+
+transition
+    ^ (bra, 'on' asParser trim, identifier, identifier, '->' asParser trim, identifier,  identifier optional , ket) token
+        ==> (self transitionActionHandlerFor: PPCLRPTransition).
+!
+
+wildcard
+    ^ (bra, 'on' asParser trim, identifier,  '*->' asParser trim, identifier,  identifier optional, ket) token
+        ==> [ :token |  | trans name |
+                name := (token parsedValue at: 6).
+                name ifNil: [name := '' ] ifNotNil: [ name := name parsedValue ].
+                trans :=
+                    (LRPWildcardTransition
+                        on: (token parsedValue at: 3) parsedValue
+                        to: (token parsedValue at: 5) parsedValue
+                        name: name ).
+                self setTransitionRangesIn: trans for: token withArrowAt: 3. 
+                trans
+            ]
+        
+! !
+
+!PPCLRPParser_johanfabry_39 methodsFor:'parsing'!
+
+parse: aString
+
+    |parsedProgram |
+    failed := false.
+    parsedProgram := super parse: aString.
+    
+    parsedProgram isPetitFailure ifTrue:[
+        parsedProgram := 
+            {LRPErrorNode new 
+                start: 1;
+                stop: aString size; 
+                yourself.
+            }
+    ].
+    
+    "visit pattern?"
+    parsedProgram do:[:aNode|
+        (aNode onErrorNode: [:anErrorNode| ] parser: self)
+    ].
+    
+    ^parsedProgram.
+!
+
+parse: aString onError: aBlock
+    |parsedProgram|
+    
+    parsedProgram := self parse: aString.
+    
+    failed ifTrue:[
+        "visit pattern?"
+        parsedProgram do:[:aNode|
+            (aNode onErrorNode: aBlock parser: self)
+        ].
+    ].
+
+    ^parsedProgram.
+!
+
+parse: aText styleOn: aViewOrMorph
+    |parsedProgram|
+    
+    parsedProgram := self parse: aText.
+    self styler view: aViewOrMorph; parser: self; nodes: parsedProgram; style: aText.
+    
+    ^parsedProgram.
+! !
+
+!PPCLRPParser_johanfabry_39 methodsFor:'transitions'!
+
+setTransitionRangesIn: aTransition for: aToken withArrowAt: index
+    | ident |
+    ident := (aToken parsedValue at: index + 3).
+    ident
+        ifNil: [ aTransition nameRange: (1 to: 1) ]
+        ifNotNil: [ aTransition nameRange: (ident start to: ident stop) ].
+    aTransition
+        start: aToken start stop: aToken stop;
+        arrowRange:
+                    ((aToken parsedValue at: index) stop + 1
+                        to: (aToken parsedValue at: index + 2) start -1);
+        keywordEnd: (aToken parsedValue at: 3) start -1
+!
+
+transitionActionHandlerFor: aTransitionClass
+    ^[ :token | | trans name|
+        name := (token parsedValue at: 7).
+        name ifNil: [name := '' ] ifNotNil: [ name := name parsedValue ].
+        trans :=
+            (aTransitionClass
+                on: (token parsedValue at: 3) parsedValue
+                from: (token parsedValue at: 4) parsedValue
+                to: (token parsedValue at: 6) parsedValue
+                name: name).
+        self setTransitionRangesIn: trans for: token withArrowAt: 4.
+        trans.
+    ]
+! !
+
--- a/compiler/benchmarks/abbrev.stc	Tue Aug 18 13:09:42 2015 +0100
+++ b/compiler/benchmarks/abbrev.stc	Tue Aug 18 16:57:08 2015 +0100
@@ -2,6 +2,7 @@
 # this file is needed for stc to be able to compile modules independently.
 # it provides information about a classes filename, category and especially namespace.
 PPCBenchmark PPCBenchmark stx:goodies/petitparser/compiler/benchmarks 'PetitCompiler-Benchmarks-Core' 0
+PPCLRPParser_johanfabry_39 PPCLRPParser_johanfabry_39 stx:goodies/petitparser/compiler/benchmarks 'PetitCompiler-Benchmarks-Core' 0
 PPCSmalltalkNoopParser PPCSmalltalkNoopParser stx:goodies/petitparser/compiler/benchmarks 'PetitCompiler-Benchmarks-Parsers' 0
+PPCSmalltalkNoopParserTests PPCSmalltalkNoopParserTests stx:goodies/petitparser/compiler/benchmarks 'PetitCompiler-Benchmarks-Parsers-Tests' 1
 stx_goodies_petitparser_compiler_benchmarks stx_goodies_petitparser_compiler_benchmarks stx:goodies/petitparser/compiler/benchmarks '* Projects & Packages *' 3
-PPCSmalltalkNoopParserTests PPCSmalltalkNoopParserTests stx:goodies/petitparser/compiler/benchmarks 'PetitCompiler-Benchmarks-Parsers-Tests' 1
--- a/compiler/benchmarks/bc.mak	Tue Aug 18 13:09:42 2015 +0100
+++ b/compiler/benchmarks/bc.mak	Tue Aug 18 16:57:08 2015 +0100
@@ -35,7 +35,7 @@
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\petitparser -I$(INCLUDE_TOP)\stx\goodies\petitparser\compiler -I$(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\java -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\smalltalk -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser -I$(INCLUDE_TOP)\stx\libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)\jv\calipel\s -I$(INCLUDE_TOP)\stx\goodies\liverobotics_parser -I$(INCLUDE_TOP)\stx\goodies\petitparser -I$(INCLUDE_TOP)\stx\goodies\petitparser\compiler -I$(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\java -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\smalltalk -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\smalltalk\tests -I$(INCLUDE_TOP)\stx\goodies\petitparser\tests -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
@@ -54,8 +54,13 @@
 	pushd ..\..\..\..\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\..\refactoryBrowser\parser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\..\..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\..\..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\.. & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\parsers\smalltalk & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\..\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\tests & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\parsers\smalltalk\tests & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 
 
 
@@ -73,6 +78,7 @@
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)PPCBenchmark.$(O) PPCBenchmark.$(H): PPCBenchmark.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PPCLRPParser_johanfabry_39.$(O) PPCLRPParser_johanfabry_39.$(H): PPCLRPParser_johanfabry_39.st $(INCLUDE_TOP)\stx\goodies\petitparser\PPCompositeParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPDelegateParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPParser.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PPCSmalltalkNoopParser.$(O) PPCSmalltalkNoopParser.$(H): PPCSmalltalkNoopParser.st $(INCLUDE_TOP)\stx\goodies\petitparser\PPCompositeParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPDelegateParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\parsers\smalltalk\PPSmalltalkGrammar.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)stx_goodies_petitparser_compiler_benchmarks.$(O) stx_goodies_petitparser_compiler_benchmarks.$(H): stx_goodies_petitparser_compiler_benchmarks.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
 
--- a/compiler/benchmarks/libInit.cc	Tue Aug 18 13:09:42 2015 +0100
+++ b/compiler/benchmarks/libInit.cc	Tue Aug 18 16:57:08 2015 +0100
@@ -28,6 +28,7 @@
 OBJ snd; struct __vmData__ *__pRT__; {
 __BEGIN_PACKAGE2__("libstx_goodies_petitparser_compiler_benchmarks", _libstx_goodies_petitparser_compiler_benchmarks_Init, "stx:goodies/petitparser/compiler/benchmarks");
 _PPCBenchmark_Init(pass,__pRT__,snd);
+_PPCLRPParser_137johanfabry_13739_Init(pass,__pRT__,snd);
 _PPCSmalltalkNoopParser_Init(pass,__pRT__,snd);
 _stx_137goodies_137petitparser_137compiler_137benchmarks_Init(pass,__pRT__,snd);
 
--- a/compiler/benchmarks/stx_goodies_petitparser_compiler_benchmarks.st	Tue Aug 18 13:09:42 2015 +0100
+++ b/compiler/benchmarks/stx_goodies_petitparser_compiler_benchmarks.st	Tue Aug 18 16:57:08 2015 +0100
@@ -59,9 +59,12 @@
      by searching along the inheritance chain of all of my classes."
 
     ^ #(
-        #'stx:goodies/petitparser'    "PPCompositeParser - superclass of PPCSmalltalkNoopParser"
+        #'stx:goodies/petitparser'    "PPCompositeParser - superclass of PPCLRPParser_johanfabry_39"
         #'stx:goodies/petitparser/parsers/smalltalk'    "PPSmalltalkGrammar - superclass of PPCSmalltalkNoopParser"
-        #'stx:libbasic'    "Autoload - superclass of PPCSmalltalkNoopParserTests"
+        #'stx:goodies/petitparser/parsers/smalltalk/tests'    "PPSmalltalkGrammarTests - superclass of PPCSmalltalkNoopParserTests"
+        #'stx:goodies/petitparser/tests'    "PPAbstractParserTest - superclass of PPCSmalltalkNoopParserTests"
+        #'stx:goodies/sunit'    "TestAsserter - superclass of PPCSmalltalkNoopParserTests"
+        #'stx:libbasic'    "LibraryDefinition - superclass of stx_goodies_petitparser_compiler_benchmarks"
     )
 !
 
@@ -76,8 +79,9 @@
      by searching all classes (and their packages) which are referenced by my classes."
 
     ^ #(
+        #'jv:calipel/s'    "BenchmarkInstance - referenced by PPCBenchmark class>>run:"    
         #'stx:goodies/petitparser/compiler'    "PPCConfiguration - referenced by PPCBenchmark>>benchmarkSmalltalkParserCompiled"
-        #'stx:goodies/petitparser/compiler/tests/extras'    "PPCResources - referenced by PPCBenchmark>>initialize"
+        #'stx:goodies/petitparser/compiler/tests/extras'    "PPCLRPParser - referenced by PPCBenchmark>>setupLRPParser"
         #'stx:goodies/petitparser/parsers/java'    "PPJavaSyntax - referenced by PPCBenchmark>>benchmarkJavaSyntax"
         #'stx:goodies/refactoryBrowser/parser'    "RBArrayNode - referenced by PPCSmalltalkNoopParser>>buildArray:"
     )
@@ -104,9 +108,10 @@
     ^ #(
         "<className> or (<className> attributes...) in load order"
         PPCBenchmark
+        #'PPCLRPParser_johanfabry_39'
         PPCSmalltalkNoopParser
+        (PPCSmalltalkNoopParserTests autoload)
         #'stx_goodies_petitparser_compiler_benchmarks'
-        (PPCSmalltalkNoopParserTests autoload)
     )
 !