tests/PPScriptingTest.st
changeset 380 8fe3cb4e607f
parent 379 451b5ae38b72
child 382 1825151d6455
equal deleted inserted replaced
379:451b5ae38b72 380:8fe3cb4e607f
    19         
    19         
    20         | mul prim add dec |
    20         | mul prim add dec |
    21         add := PPUnresolvedParser new.
    21         add := PPUnresolvedParser new.
    22         mul := PPUnresolvedParser new.
    22         mul := PPUnresolvedParser new.
    23         prim := PPUnresolvedParser new.
    23         prim := PPUnresolvedParser new.
    24         dec := ($0 to: $9) asParser ==> [ :token | token codePoint - $0 codePoint ].
    24         dec := (Interval from: $0 to: $9) asParser ==> [ :token | token codePoint - $0 codePoint ].
    25         add def: ((mul , $+ asParser , add) ==> [ :nodes | (nodes at: 1) + (nodes at: 3) ])
    25         add def: ((mul , $+ asParser , add) ==> [ :nodes | (nodes at: 1) + (nodes at: 3) ])
    26                 / mul.
    26                 / mul.
    27         mul def: ((prim , $* asParser , mul) ==> [ :nodes | (nodes at: 1) * (nodes at: 3) ])
    27         mul def: ((prim , $* asParser , mul) ==> [ :nodes | (nodes at: 1) * (nodes at: 3) ])
    28                 / prim.
    28                 / prim.
    29         prim def: (($( asParser , add , $) asParser) ==> [ :nodes | nodes at: 2 ])
    29         prim def: (($( asParser , add , $) asParser) ==> [ :nodes | nodes at: 2 ])
    30                 / dec.
    30                 / dec.
    31         ^ add end
    31         ^ add end
    32 
    32 
    33     "Modified: / 03-10-2014 / 02:54:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    33     "Modified: / 05-10-2014 / 00:02:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    34 !
    34 !
    35 
    35 
    36 expressionParser
    36 expressionParser
    37         "Simple demo of scripting an expression parser."
    37         "Simple demo of scripting an expression parser."
    38         
    38         
    39         | mul prim add dec |
    39         | mul prim add dec |
    40         add := PPUnresolvedParser new.
    40         add := PPUnresolvedParser new.
    41         mul := PPUnresolvedParser new.
    41         mul := PPUnresolvedParser new.
    42         prim := PPUnresolvedParser new.
    42         prim := PPUnresolvedParser new.
    43         dec := ($0 to: $9) asParser.
    43         dec := (Interval from: $0 to: $9) asParser.
    44         add def: (mul , $+ asParser , add)
    44         add def: (mul , $+ asParser , add)
    45                 / mul.
    45                 / mul.
    46         mul def: (prim , $* asParser , mul)
    46         mul def: (prim , $* asParser , mul)
    47                 / prim.
    47                 / prim.
    48         prim def: ($( asParser , add , $) asParser)
    48         prim def: ($( asParser , add , $) asParser)
    49                 / dec.
    49                 / dec.
    50         ^ add end
    50         ^ add end
    51 
    51 
    52     "Modified: / 03-10-2014 / 02:54:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    52     "Modified: / 05-10-2014 / 00:03:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    53 !
    53 !
    54 
    54 
    55 straightLineParser
    55 straightLineParser
    56         | goal stm stmList id char dec exp expList mulExp primExp nonzero num lower upper |
    56         | goal stm stmList id char dec exp expList mulExp primExp nonzero num lower upper |
    57         goal := PPUnresolvedParser new.
    57         goal := PPUnresolvedParser new.
    60         exp := PPUnresolvedParser new.
    60         exp := PPUnresolvedParser new.
    61         expList := PPUnresolvedParser new.
    61         expList := PPUnresolvedParser new.
    62         mulExp := PPUnresolvedParser new.
    62         mulExp := PPUnresolvedParser new.
    63         primExp := PPUnresolvedParser new.
    63         primExp := PPUnresolvedParser new.
    64         
    64         
    65         lower := ($a to: $z) asParser.
    65         lower := (Interval from: $a to: $z) asParser.
    66         upper := ($A to: $Z) asParser.
    66         upper := (Interval from: $A to: $Z) asParser.
    67         char := lower / upper.
    67         char := lower / upper.
    68         nonzero := ($1 to: $9) asParser.
    68         nonzero := (Interval from: $1 to: $9) asParser.
    69         dec := ($0 to: $9) asParser.
    69         dec := (Interval from: $0 to: $9) asParser.
    70         id := char, ( char / dec ) star.
    70         id := char, ( char / dec ) star.
    71         num := $0 asParser / ( nonzero, dec star).
    71         num := $0 asParser / ( nonzero, dec star).
    72 
    72 
    73         goal def: stmList end.
    73         goal def: stmList end.
    74         stmList def: stm , ( $; asParser, stm ) star.
    74         stmList def: stm , ( $; asParser, stm ) star.
    80         primExp def: id
    80         primExp def: id
    81                 / num
    81                 / num
    82                 / ( $( asParser, stmList, $, asParser, exp, $) asParser ).
    82                 / ( $( asParser, stmList, $, asParser, exp, $) asParser ).
    83         ^ goal
    83         ^ goal
    84 
    84 
    85     "Modified: / 03-10-2014 / 02:56:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    85     "Modified: / 05-10-2014 / 00:03:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    86 ! !
    86 ! !
    87 
    87 
    88 !PPScriptingTest methodsFor:'tests'!
    88 !PPScriptingTest methodsFor:'tests'!
    89 
    89 
    90 testExpressionInterpreter
    90 testExpressionInterpreter