compiler/tests/PPExpressionGrammar.st
changeset 438 20598d7ce9fa
child 452 9f4558b3be66
equal deleted inserted replaced
437:54b3bc9e3987 438:20598d7ce9fa
       
     1 "{ Package: 'stx:goodies/petitparser/compiler/tests' }"
       
     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-Tests-ExpressionGrammar'
       
    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 trim, term , $) asParser 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