68 self compileTree: node. |
68 self compileTree: node. |
69 |
69 |
70 self assert: parser parse: 'foo' to: { $F . $O . $O}. |
70 self assert: parser parse: 'foo' to: { $F . $O . $O}. |
71 self assert: parser parse: 'bar' to: { $B . $A . $R}. |
71 self assert: parser parse: 'bar' to: { $B . $A . $R}. |
72 self assert: parser fail: ''. |
72 self assert: parser fail: ''. |
|
73 ! |
|
74 |
|
75 testActionNode2 |
|
76 node := PPCPlusNode new |
|
77 child: |
|
78 (PPCActionNode new |
|
79 block: [ :res | res asUppercase ]; |
|
80 child: #letter asParser asCompilerTree; |
|
81 yourself); |
|
82 yourself. |
|
83 |
|
84 self compileTree: node. |
|
85 |
|
86 self assert: parser parse: 'foo' to: { $F . $O . $O}. |
|
87 self assert: parser parse: 'bar' to: { $B . $A . $R}. |
|
88 self assert: parser fail: ''. |
|
89 |
|
90 "Created: / 15-06-2015 / 13:57:36 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
73 ! |
91 ! |
74 |
92 |
75 testAnyNode |
93 testAnyNode |
76 node := PPCForwardNode new |
94 node := PPCForwardNode new |
77 child: PPCAnyNode new; |
95 child: PPCAnyNode new; |
423 ! |
441 ! |
424 |
442 |
425 testMappedActionNode1 |
443 testMappedActionNode1 |
426 node := ((#letter asParser , #letter asParser) |
444 node := ((#letter asParser , #letter asParser) |
427 map:[:a :b | String with:a with:b ]) asCompilerTree. |
445 map:[:a :b | String with:a with:b ]) asCompilerTree. |
|
446 |
428 self compileTree:node. |
447 self compileTree:node. |
429 self |
448 |
430 assert:parser |
449 self assert:parser parse:'ab' to:'ab'. |
431 parse:'ab' |
450 self assert:parser parse:'cz' to:'cz'. |
432 to:'ab'. |
|
433 self |
|
434 assert:parser |
|
435 parse:'cz' |
|
436 to:'cz'. |
|
437 self assert:parser fail:''. |
451 self assert:parser fail:''. |
438 self assert:parser fail:'a'. |
452 self assert:parser fail:'a'. |
439 |
453 |
440 "Created: / 02-06-2015 / 17:04:35 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
454 "Created: / 02-06-2015 / 17:04:35 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
441 "Modified: / 04-06-2015 / 22:44:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
455 "Modified: / 04-06-2015 / 22:44:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
456 "Modified (format): / 15-06-2015 / 14:08:11 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
442 ! |
457 ! |
443 |
458 |
444 testMappedActionNode2 |
459 testMappedActionNode2 |
445 node := ((#letter asParser , #letter asParser) |
460 node := ((#letter asParser , #letter asParser) |
446 map:[:a :b | String with:a with:b ]) asCompilerTree. |
461 map:[:a :b | String with:a with:b ]) asCompilerTree. |
447 node child markForInline. |
462 node child markForInline. |
|
463 |
448 self compileTree:node. |
464 self compileTree:node. |
449 self |
465 |
450 assert:parser |
466 self assert:parser parse:'ab' to:'ab'. |
451 parse:'ab' |
467 self assert:parser parse:'cz' to:'cz'. |
452 to:'ab'. |
|
453 self |
|
454 assert:parser |
|
455 parse:'cz' |
|
456 to:'cz'. |
|
457 self assert:parser fail:''. |
468 self assert:parser fail:''. |
458 self assert:parser fail:'a'. |
469 self assert:parser fail:'a'. |
459 |
470 |
460 "Created: / 04-06-2015 / 23:13:37 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
471 "Created: / 04-06-2015 / 23:13:37 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
472 "Modified (format): / 15-06-2015 / 14:08:36 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
473 ! |
|
474 |
|
475 testMappedActionNode3 |
|
476 node := PPCPlusNode new |
|
477 child: |
|
478 (PPCMappedActionNode new |
|
479 block: [ :l | l asUppercase ]; |
|
480 child: #letter asParser asCompilerTree; |
|
481 yourself); |
|
482 yourself. |
|
483 |
|
484 self compileTree:node. |
|
485 |
|
486 self assert:parser parse:'abc' to:#($A $B $C). |
|
487 |
|
488 "Created: / 15-06-2015 / 18:27:18 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
461 ! |
489 ! |
462 |
490 |
463 testMessagePredicate |
491 testMessagePredicate |
464 | messageNode | |
492 | messageNode | |
465 messageNode := PPCMessagePredicateNode new |
493 messageNode := PPCMessagePredicateNode new |