compiler/tests/FooScannerTest.st
changeset 515 b5316ef15274
parent 502 1e45d3c96ec5
child 534 a949c4fe44df
equal deleted inserted replaced
502:1e45d3c96ec5 515:b5316ef15274
    12 !FooScannerTest methodsFor:'as yet unclassified'!
    12 !FooScannerTest methodsFor:'as yet unclassified'!
    13 
    13 
    14 fail: stream rule: rule 
    14 fail: stream rule: rule 
    15     scanner initialize.
    15     scanner initialize.
    16     scanner stream: stream asPetitStream. 
    16     scanner stream: stream asPetitStream. 
    17     result := scanner perform: rule.
    17     scanner perform: rule.
       
    18     result := scanner polyResult.
    18         
    19         
    19     self assert: result isEmpty
    20     self assert: result isEmpty
    20 !
    21 !
    21 
    22 
    22 fail: stream token: token rule: rule
    23 fail: stream token: token rule: rule
    24 !
    25 !
    25 
    26 
    26 fail: stream token: token rule: rule position: position
    27 fail: stream token: token rule: rule position: position
    27     scanner initialize.
    28     scanner initialize.
    28     scanner stream: stream asPetitStream. 
    29     scanner stream: stream asPetitStream. 
    29     result := scanner perform: rule.
    30     scanner perform: rule.
    30         
    31     
       
    32     result := scanner polyResult.	
    31     self assert: (result at: token ifAbsent: [nil]) isNil.
    33     self assert: (result at: token ifAbsent: [nil]) isNil.
    32 !
    34 !
    33 
    35 
    34 parse: stream token: token rule: rule
    36 parse: stream token: token rule: rule
    35     self parse: stream token: token rule: rule position: stream size.
    37     self parse: stream token: token rule: rule position: stream size.
    36 !
    38 !
    37 
    39 
    38 parse: stream token: token rule: rule position: position
    40 parse: stream token: token rule: rule position: position
    39     scanner initialize.
    41     scanner initialize.
    40     scanner stream: stream asPetitStream. 
    42     scanner stream: stream asPetitStream. 
    41     result := scanner perform: rule.
    43     scanner perform: rule.
       
    44     result := scanner polyResult.
    42     
    45     
    43     self assert: (result includesKey: token).	
    46     self assert: (result includesKey: token).	
    44     self assert: (result at: token) = position.
    47     self assert: (result at: token) = position.
    45 !
    48 !
    46 
    49 
    83     self fail: 'aa' rule: #nextTokenAAstarA.
    86     self fail: 'aa' rule: #nextTokenAAstarA.
    84     self fail: 'aaaa' rule: #nextTokenAAstarA.
    87     self fail: 'aaaa' rule: #nextTokenAAstarA.
    85 !
    88 !
    86 
    89 
    87 testAB
    90 testAB
    88     self parse: 'ab' token: #b rule: #nextTokenAB position: 2.
    91     self parse: 'ab' token: #B rule: #nextTokenAB position: 2.
    89 !
    92 !
    90 
    93 
    91 testABorBC
    94 testABorBC
    92     self parse: 'ab' token: #ab rule: #nextTokenABorBC position: 2.
    95     self parse: 'ab' token: #ab rule: #nextTokenABorBC position: 2.
    93     self parse: 'bc' token: #bc rule: #nextTokenABorBC position: 2.
    96     self parse: 'bc' token: #bc rule: #nextTokenABorBC position: 2.
   149     self parse: 'ab' token: #AstarB rule: #nextTokenAstarB.
   152     self parse: 'ab' token: #AstarB rule: #nextTokenAstarB.
   150     self parse: 'b' token: #AstarB rule: #nextTokenAstarB.
   153     self parse: 'b' token: #AstarB rule: #nextTokenAstarB.
   151     self parse: 'aaab' token: #AstarB rule: #nextTokenAstarB.
   154     self parse: 'aaab' token: #AstarB rule: #nextTokenAstarB.
   152 
   155 
   153     self fail: 'c' rule: #nextTokenAstarB.	
   156     self fail: 'c' rule: #nextTokenAstarB.	
       
   157 ! !
       
   158 
       
   159 !FooScannerTest methodsFor:'multivalues'!
       
   160 
       
   161 testAuorA
       
   162     self parse: 'a' token: #A1 rule: #nextTokenAuorA.
       
   163     self parse: 'a' token: #A2 rule: #nextTokenAuorA.
       
   164 
       
   165     self fail: 'b' rule: #nextTokenAuorA.	
   154 !
   166 !
   155 
   167 
   156 testAuorA
   168 testMultiA
   157     self parse: 'a' token: #a1 rule: #nextTokenAuorA.
   169     self parse: 'a' token: #A1 rule: #nextMultiTokenA position: 1.	
   158     self parse: 'a' token: #a2 rule: #nextTokenAuorA.
   170     self parse: 'a' token: #A2 rule: #nextMultiTokenA position: 1.
   159 
   171     
   160     self fail: 'b' rule: #nextTokenAuorA.	
   172     self fail: 'b' rule: #nextMultiTokenA.
   161 ! !
   173 ! !
   162 
   174