equal
deleted
inserted
replaced
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. |