compiler/tests/PPCLL1OptimizingTest.st
changeset 464 f6d77fee9811
parent 459 4751c407bb40
child 465 f729f6cd3c76
child 502 1e45d3c96ec5
equal deleted inserted replaced
459:4751c407bb40 464:f6d77fee9811
     1 "{ Package: 'stx:goodies/petitparser/compiler/tests' }"
       
     2 
       
     3 "{ NameSpace: Smalltalk }"
       
     4 
       
     5 TestCase subclass:#PPCLL1OptimizingTest
       
     6 	instanceVariableNames:'configuration parser result'
       
     7 	classVariableNames:''
       
     8 	poolDictionaries:''
       
     9 	category:'PetitCompiler-Tests-Core'
       
    10 !
       
    11 
       
    12 !PPCLL1OptimizingTest methodsFor:'as yet unclassified'!
       
    13 
       
    14 assert: object type: class
       
    15     self assert: (object isKindOf: class)
       
    16 !
       
    17 
       
    18 configuration
       
    19     configuration := PPCLL1Configuration new.
       
    20     configuration arguments generate: false.
       
    21     ^ configuration
       
    22 !
       
    23 
       
    24 optimize: aPPParser
       
    25     ^ self configuration compile: aPPParser.
       
    26 !
       
    27 
       
    28 testCompileToken
       
    29     parser := 'foo' asParser token.
       
    30     result := self optimize: parser.
       
    31     
       
    32     self assert: result type: PPCTokenizingParserNode.
       
    33     self assert: result parser type: PPCTokenConsumeNode.
       
    34     self assert: result parser child type: PPCTokenNode.
       
    35     self assert: result parser child child literal = 'foo'.
       
    36 !
       
    37 
       
    38 testCompileTrim
       
    39     parser := 'foo' asParser token trim.
       
    40     result := self optimize: parser.
       
    41     
       
    42     self assert: result type: PPCTokenizingParserNode.
       
    43     self assert: result parser type: PPCTokenConsumeNode.
       
    44     self assert: result parser child type: PPCTrimmingTokenNode.
       
    45     self assert: result parser child whitespace type: PPCTokenStarSeparatorNode.
       
    46 !
       
    47 
       
    48 testCompileTrimmingToken
       
    49     parser := 'foo' asParser trimmingToken.
       
    50     result := self optimize: parser.
       
    51     
       
    52     self assert: result type: PPCTokenizingParserNode.
       
    53     self assert: result parser type: PPCTokenConsumeNode.
       
    54     self assert: result parser child type: PPCTrimmingTokenNode.
       
    55     self assert: result parser child whitespace type: PPCTokenStarSeparatorNode.
       
    56     
       
    57     self assert: result tokenizer children size = 2.
       
    58     self assert: (result tokenizer children anySatisfy: [ :e | e isKindOf: PPCTrimmingTokenNode ])
       
    59 !
       
    60 
       
    61 testCompileTrimmingToken2
       
    62     | token |
       
    63     token := 'foo' asParser trimmingToken.
       
    64     parser := token wrapped
       
    65         name: 'fooToken';
       
    66         yourself.
       
    67     result := self optimize: parser.
       
    68     
       
    69     self assert: result type: PPCTokenizingParserNode.
       
    70     self assert: result parser type: PPCTokenConsumeNode.
       
    71     self assert: result parser name = 'fooToken'.
       
    72     self assert: result parser child name = 'token_fooToken'.
       
    73     
       
    74     self assert: result tokenizer children size = 2.
       
    75     self assert: (result tokenizer children anySatisfy: [ :e | e isKindOf: PPCTrimmingTokenNode ]).
       
    76     self assert: (result tokenizer children anySatisfy: [ :e | e name = 'token_fooToken']).
       
    77 ! !
       
    78