484 self compileTree:node. |
484 self compileTree:node. |
485 |
485 |
486 self assert:parser parse:'abc' to:#($A $B $C). |
486 self assert:parser parse:'abc' to:#($A $B $C). |
487 |
487 |
488 "Created: / 15-06-2015 / 18:27:18 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
488 "Created: / 15-06-2015 / 18:27:18 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
489 ! |
|
490 |
|
491 testMappedNode3 |
|
492 node := ((#letter asParser , #letter asParser) |
|
493 ==> [:nodes | String with:(nodes first) with:(nodes second) ]) asCompilerTree. |
|
494 node child markForInline. |
|
495 |
|
496 self compileTree:node. |
|
497 |
|
498 self assert:parser parse:'ab' to:'ab'. |
|
499 self assert:parser parse:'cz' to:'cz'. |
|
500 self assert:parser fail:''. |
|
501 |
|
502 "Created: / 16-06-2015 / 06:01:53 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
503 ! |
|
504 |
|
505 testMappedNode4 |
|
506 node := ((#letter asParser , #letter asParser) |
|
507 ==> [:nodes | String with:(nodes first) with:(nodes second) ]) asCompilerTree. |
|
508 node child markForInline. |
|
509 |
|
510 self compileTree:node. |
|
511 |
|
512 self assert:parser fail:'a'. |
|
513 |
|
514 "Created: / 16-06-2015 / 06:13:37 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
515 ! |
|
516 |
|
517 testMappedNode5 |
|
518 node := ((#letter asParser , #letter asParser optional) |
|
519 ==> [:nodes | String with:(nodes first) with:((nodes second) isNil ifTrue:[$?] ifFalse:[nodes second]) ]) asCompilerTree. |
|
520 node child markForInline. |
|
521 |
|
522 self compileTree:node. |
|
523 |
|
524 self assert:parser parse:'cz' to:'cz'. |
|
525 self assert:parser parse:'c' to:'c?'. |
|
526 |
|
527 "Created: / 16-06-2015 / 06:32:24 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
489 ! |
528 ! |
490 |
529 |
491 testMessagePredicate |
530 testMessagePredicate |
492 | messageNode | |
531 | messageNode | |
493 messageNode := PPCMessagePredicateNode new |
532 messageNode := PPCMessagePredicateNode new |