Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Name: PetitCompiler-JanKurs.100
Author: JanKurs
Time: 30-04-2015, 10:48:52.165 AM
UUID: 80196870-5921-46d9-ac20-a43bf5c2f3c2
Name: PetitCompiler-Tests-JanKurs.44
Author: JanKurs
Time: 30-04-2015, 10:49:22.489 AM
UUID: 348c02e8-18ce-48f6-885d-fcff4516a298
Name: PetitCompiler-Benchmarks-JanKurs.4
Author: JanKurs
Time: 30-04-2015, 10:58:44.890 AM
UUID: 18cadb42-f9ef-45fb-82e9-8469ade56c8b
"{ Package: 'stx:goodies/petitparser/compiler/tests' }"
"{ NameSpace: Smalltalk }"
PPAbstractParserTest subclass:#PPCNodeCompilingTest
instanceVariableNames:'parser context tree result'
classVariableNames:''
poolDictionaries:''
category:'PetitCompiler-Tests-Nodes'
!
!PPCNodeCompilingTest methodsFor:'context'!
context
^ context := PPCProfilingContext new
! !
!PPCNodeCompilingTest methodsFor:'test support'!
assert: whatever parse: input
result := super assert: whatever parse: input.
!
compileTree: root
^ self compileTree: root arguments: PPCArguments default
!
compileTree: root arguments: arguments
| configuration |
arguments profile: true.
configuration := PPCPluggableConfiguration on: [ :_self |
_self specialize.
_self specialize.
_self tokenize.
_self inline.
_self merge.
_self generate.
].
^ configuration compile: root arguments: arguments.
!
tearDown
| class |
class := (Smalltalk at: #PPGeneratedParser ifAbsent: [nil]).
class notNil ifTrue:[
class removeFromSystem
].
! !
!PPCNodeCompilingTest methodsFor:'tests - guard'!
testSequenceTokenGuard
tree := PPCSequenceNode new
children: {
'foo' asParser trimmingToken asCompilerTree optimizeTree.
'bar' asParser trimmingToken asCompilerTree optimizeTree.
}
yourself.
parser := self compileTree: tree.
self assert: parser parse: 'foobar'.
self assert: result first inputValue = 'foo'.
self assert: result second inputValue = 'bar'.
self assert: parser parse: ' foobar'.
self assert: result first inputValue = 'foo'.
self assert: result second inputValue = 'bar'.
self assert: parser fail: ' foo'.
!
testTrimmingTokenGuard
tree := PPCChoiceNode new
children: {
'foo' asParser trimmingToken asCompilerTree optimizeTree.
'bar' asParser trimmingToken asCompilerTree optimizeTree
}
yourself.
parser := self compileTree: tree.
self assert: parser parse: 'foo'.
self assert: result inputValue = 'foo'.
self assert: parser parse: 'bar'.
self assert: result inputValue = 'bar'.
self assert: parser parse: ' foo'.
self assert: result inputValue = 'foo'.
self assert: parser parse: ' bar'.
self assert: result inputValue = 'bar'.
self assert: parser fail: 'zorg'.
self assert: (context invocations noneSatisfy: [ :e | e beginsWith: 'token' ]).
! !
!PPCNodeCompilingTest class methodsFor:'documentation'!
version_HG
^ '$Changeset: <not expanded> $'
! !