compiler/tests/extras/PPExpressionGrammar.st
changeset 464 f6d77fee9811
equal deleted inserted replaced
459:4751c407bb40 464:f6d77fee9811
       
     1 "{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
       
     2 
       
     3 "{ NameSpace: Smalltalk }"
       
     4 
       
     5 PPCompositeParser subclass:#PPExpressionGrammar
       
     6 	instanceVariableNames:'add prod term mul prim parens number'
       
     7 	classVariableNames:''
       
     8 	poolDictionaries:''
       
     9 	category:'PetitCompiler-Extras-Tests-Expressions'
       
    10 !
       
    11 
       
    12 !PPExpressionGrammar methodsFor:'as yet unclassified'!
       
    13 
       
    14 add
       
    15    ^ prod , $+ asParser trimmingToken , term
       
    16 !
       
    17 
       
    18 mul
       
    19    ^ prim , $* asParser trimmingToken , prod
       
    20 !
       
    21 
       
    22 number
       
    23    ^ #digit asParser plus trimmingToken ==> [ :token | token inputValue asNumber ]
       
    24 !
       
    25 
       
    26 parens
       
    27    ^ ($( asParser token trim), term , ($) asParser token trim)
       
    28 !
       
    29 
       
    30 prim
       
    31    ^ parens / number
       
    32 !
       
    33 
       
    34 prod
       
    35    ^ mul / prim
       
    36 !
       
    37 
       
    38 start
       
    39    ^ term end
       
    40 !
       
    41 
       
    42 term
       
    43    ^ add / prod
       
    44 ! !
       
    45