tests/PPArithmeticParser.st
changeset 427 a7f5e6de19d2
parent 376 a2656b27cace
child 502 1e45d3c96ec5
equal deleted inserted replaced
426:2a65c972b937 427:a7f5e6de19d2
     1 "{ Package: 'stx:goodies/petitparser/tests' }"
     1 "{ Package: 'stx:goodies/petitparser/tests' }"
       
     2 
       
     3 "{ NameSpace: Smalltalk }"
     2 
     4 
     3 PPCompositeParser subclass:#PPArithmeticParser
     5 PPCompositeParser subclass:#PPArithmeticParser
     4 	instanceVariableNames:'terms addition factors multiplication power primary parentheses
     6 	instanceVariableNames:'terms addition factors multiplication power primary parentheses
     5 		number'
     7 		number'
     6 	classVariableNames:''
     8 	classVariableNames:''
    36 		==> [ :value | value asNumber ]
    38 		==> [ :value | value asNumber ]
    37 !
    39 !
    38 
    40 
    39 parentheses
    41 parentheses
    40 	^ $( asParser trim , terms , $) asParser trim
    42 	^ $( asParser trim , terms , $) asParser trim
    41 		==> [ :nodes | nodes second ]
    43 		==> [ :nodes | nodes at: 2 ]
    42 !
    44 !
    43 
    45 
    44 power
    46 power
    45 	^ (primary separatedBy: $^ asParser trim)
    47 	^ (primary separatedBy: $^ asParser trim)
    46 		foldRight: [ :a :op :b | a raisedTo: b ]
    48 		foldRight: [ :a :op :b | a raisedTo: b ]