86 self assert: parser parse: 'foo' to: { $F . $O . $O}. |
86 self assert: parser parse: 'foo' to: { $F . $O . $O}. |
87 self assert: parser parse: 'bar' to: { $B . $A . $R}. |
87 self assert: parser parse: 'bar' to: { $B . $A . $R}. |
88 self assert: parser fail: ''. |
88 self assert: parser fail: ''. |
89 |
89 |
90 "Created: / 15-06-2015 / 13:57:36 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
90 "Created: / 15-06-2015 / 13:57:36 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
91 ! |
|
92 |
|
93 testActionNode3 |
|
94 node := ((#letter asParser , #letter asParser) |
|
95 ==> [:nodes | String with:(nodes first) with:(nodes second) ]) asCompilerTree. |
|
96 node child markForInline. |
|
97 |
|
98 self compileTree:node. |
|
99 |
|
100 self assert:parser parse:'ab' to:'ab'. |
|
101 self assert:parser parse:'cz' to:'cz'. |
|
102 self assert:parser fail:''. |
|
103 |
|
104 "Created: / 16-06-2015 / 06:53:17 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
105 ! |
|
106 |
|
107 testActionNode4 |
|
108 node := ((#letter asParser , #letter asParser) |
|
109 ==> [:nodes | String with:(nodes first) with:(nodes second) ]) asCompilerTree. |
|
110 node child markForInline. |
|
111 |
|
112 self compileTree:node. |
|
113 |
|
114 self assert:parser fail:'a'. |
|
115 |
|
116 "Created: / 16-06-2015 / 06:53:09 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
117 ! |
|
118 |
|
119 testActionNode5 |
|
120 node := ((#letter asParser , #letter asParser optional) |
|
121 ==> [:nodes | String with:(nodes first) with:((nodes second) isNil ifTrue:[$?] ifFalse:[nodes second]) ]) asCompilerTree. |
|
122 node child markForInline. |
|
123 |
|
124 self compileTree:node. |
|
125 |
|
126 self assert:parser parse:'cz' to:'cz'. |
|
127 self assert:parser parse:'c' to:'c?'. |
|
128 |
|
129 "Created: / 16-06-2015 / 06:53:03 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
91 ! |
130 ! |
92 |
131 |
93 testAnyNode |
132 testAnyNode |
94 node := PPCForwardNode new |
133 node := PPCForwardNode new |
95 child: PPCAnyNode new; |
134 child: PPCAnyNode new; |
484 self compileTree:node. |
523 self compileTree:node. |
485 |
524 |
486 self assert:parser parse:'abc' to:#($A $B $C). |
525 self assert:parser parse:'abc' to:#($A $B $C). |
487 |
526 |
488 "Created: / 15-06-2015 / 18:27:18 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
527 "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>" |
|
528 ! |
528 ! |
529 |
529 |
530 testMessagePredicate |
530 testMessagePredicate |
531 | messageNode | |
531 | messageNode | |
532 messageNode := PPCMessagePredicateNode new |
532 messageNode := PPCMessagePredicateNode new |