compiler/tests/PPCNodeFirstFollowNextTests.st
changeset 529 439c4057517f
parent 523 09afcf28ed60
child 534 a949c4fe44df
equal deleted inserted replaced
528:ebfddc82b8bb 529:439c4057517f
    23 
    23 
    24 !PPCNodeFirstFollowNextTests methodsFor:'setup'!
    24 !PPCNodeFirstFollowNextTests methodsFor:'setup'!
    25 
    25 
    26 setUp
    26 setUp
    27     configuration := PPCConfiguration default.
    27     configuration := PPCConfiguration default.
    28     configuration arguments generate: false.
    28     configuration options generate: false.
    29 ! !
    29 ! !
    30 
    30 
    31 !PPCNodeFirstFollowNextTests methodsFor:'support'!
    31 !PPCNodeFirstFollowNextTests methodsFor:'support'!
    32 
    32 
    33 assert: set anyMatchesType: whatever
    33 assert: set anyMatchesType: whatever
   160     self assert: first anySatisfy: [:e | (e isKindOf: PPCNotNode) and: [ e child literal = 'c' ]].
   160     self assert: first anySatisfy: [:e | (e isKindOf: PPCNotNode) and: [ e child literal = 'c' ]].
   161     self assert: first noneMatchesType: PPCNilNode.
   161     self assert: first noneMatchesType: PPCNilNode.
   162 !
   162 !
   163 
   163 
   164 testFirstNegate1
   164 testFirstNegate1
   165     configuration arguments specialize: true.
   165     configuration options specialize: true.
   166     tree := self treeFrom: ('a' asParser negate, 'b' asParser).
   166     tree := self treeFrom: ('a' asParser negate, 'b' asParser).
   167     
   167     
   168     first := self first: tree.
   168     first := self first: tree.
   169 
   169 
   170     self assert: first size: 1.
   170     self assert: first size: 1.
   181     self assert: first anyMatchesType: PPCNotNode.
   181     self assert: first anyMatchesType: PPCNotNode.
   182     self assert: first anyMatchesType: PPCLiteralNode.
   182     self assert: first anyMatchesType: PPCLiteralNode.
   183 !
   183 !
   184 
   184 
   185 testFirstNot2
   185 testFirstNot2
   186     configuration arguments specialize: true.
   186     configuration options specialize: true.
   187     tree := self treeFrom: (#letter asParser not star, #letter asParser).
   187     tree := self treeFrom: (#letter asParser not star, #letter asParser).
   188     
   188     
   189     first := self first: tree.
   189     first := self first: tree.
   190         
   190         
   191     self assert: first size: 2.
   191     self assert: first size: 2.
   321     self assert: first anySatisfy: [ :e | e literal = 'b' ].
   321     self assert: first anySatisfy: [ :e | e literal = 'b' ].
   322     self assert: first noneMatchesType: PPCNilNode.
   322     self assert: first noneMatchesType: PPCNilNode.
   323 !
   323 !
   324 
   324 
   325 testFirstSequence6
   325 testFirstSequence6
   326     configuration arguments specialize: true.
   326     configuration options specialize: true.
   327     tree := self treeFrom: #space asParser star, 'a' asParser.
   327     tree := self treeFrom: #space asParser star, 'a' asParser.
   328     
   328     
   329     tree firstFollowCache: nil.
   329     tree firstFollowCache: nil.
   330     self should: [ self first: tree. ] raise: Exception.
   330     self should: [ self first: tree. ] raise: Exception.
   331 !
   331 !
   349     self assert: first anyMatchesType: PPCMessagePredicateNode.
   349     self assert: first anyMatchesType: PPCMessagePredicateNode.
   350     self assert: first anyMatchesType: PPCSentinelNode.
   350     self assert: first anyMatchesType: PPCSentinelNode.
   351 !
   351 !
   352 
   352 
   353 testFirstStarMessagePredicate2
   353 testFirstStarMessagePredicate2
   354     configuration arguments specialize: true.
   354     configuration options specialize: true.
   355     tree := self treeFrom: #space asParser star.
   355     tree := self treeFrom: #space asParser star.
   356     
   356     
   357     first := self first: tree.
   357     first := self first: tree.
   358     
   358     
   359     self assert: first size: 2.
   359     self assert: first size: 2.
   362     
   362     
   363     
   363     
   364 !
   364 !
   365 
   365 
   366 testFirstTerminal
   366 testFirstTerminal
   367     configuration arguments specialize: true.
   367     configuration options specialize: true.
   368     tree := self treeFrom: 'a' asParser not.
   368     tree := self treeFrom: 'a' asParser not.
   369 
   369 
   370     first := self first: tree.
   370     first := self first: tree.
   371     
   371     
   372     self assert: first size: 1.
   372     self assert: first size: 1.
   657     self assert: followSet anyMatchesType: PPCNilNode
   657     self assert: followSet anyMatchesType: PPCNilNode
   658 !
   658 !
   659 
   659 
   660 testFollowTrimmingToken
   660 testFollowTrimmingToken
   661     | token1 token2 |
   661     | token1 token2 |
   662     configuration arguments specialize: false.
   662     configuration options specialize: false.
   663     token1 := #letter asParser plus trimmingToken name: 'token1'; yourself.
   663     token1 := #letter asParser plus trimmingToken name: 'token1'; yourself.
   664     token2 := #letter asParser plus trimmingToken name: 'token2'; yourself.
   664     token2 := #letter asParser plus trimmingToken name: 'token2'; yourself.
   665     
   665     
   666     
   666     
   667     tree := self treeFrom: token1, token2.
   667     tree := self treeFrom: token1, token2.