compiler/tests/PPCCodeGeneratorTest.st
changeset 490 a836cbc0d8df
parent 489 0ca7a70db0f5
child 491 82b272c7dc37
equal deleted inserted replaced
489:0ca7a70db0f5 490:a836cbc0d8df
    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