Merged with PetitCompiler-JanKurs.20150510144201, PetitCompiler-Tests-JanKurs.20150510144201, PetitCompiler-Extras-Tests-JanKurs.20150510144201, PetitCompiler-Benchmarks-JanKurs.20150510144201
Name: PetitCompiler-JanKurs.20150510144201
Author: JanKurs
Time: 10-05-2015, 04:42:29.192 PM
UUID: 58a4786b-1182-4904-8b44-a13d3918f244
Name: PetitCompiler-Tests-JanKurs.20150510144201
Author: JanKurs
Time: 10-05-2015, 04:32:12.870 PM
UUID: 2a8fd41a-331b-4dcf-a7a3-752a50ce86e7
Name: PetitCompiler-Extras-Tests-JanKurs.20150510144201
Author: JanKurs
Time: 10-05-2015, 04:59:25.308 PM
UUID: ef43bd1a-be60-4e88-b749-8b635622c969
Name: PetitCompiler-Benchmarks-JanKurs.20150510144201
Author: JanKurs
Time: 10-05-2015, 05:04:54.561 PM
UUID: d8e764fd-016b-46e2-9fc1-17c38c18f0e5
"{ Package: 'stx:goodies/petitparser/compiler/tests' }"
"{ NameSpace: Smalltalk }"
PPCompositeParser subclass:#PPLL1ExpressionGrammar
instanceVariableNames:'add prod term mul prim parens number mulPrime addPrime termPrime'
classVariableNames:''
poolDictionaries:''
category:'PetitCompiler-Tests-ExpressionGrammar'
!
!PPLL1ExpressionGrammar methodsFor:'as yet unclassified'!
add
^ prod, addPrime optional
map: [ :_prod :_addPrime |
_addPrime isNil
ifTrue: [ _prod ]
ifFalse: [ Array with: _prod withAll: _addPrime ]
]
!
addPrime
^ $+ asParser trimmingToken , term
!
mul
^ prim, mulPrime optional
map: [ :_prim :_mulPrime |
_mulPrime isNil
ifTrue: [ _prim ]
ifFalse: [ Array with: _prim withAll: _mulPrime ]
]
!
mulPrime
^ $* asParser trimmingToken, prod
!
number
^ #digit asParser plus trimmingToken ==> [ :token | token inputValue asNumber ]
!
parens
^ ($( asParser token trim), term , ($) asParser token trim)
!
prim
^ parens / number
!
prod
^ mul
!
start
^ term end
!
term
^ prod, termPrime optional
map: [ :_prod :_termPrime |
_termPrime isNil
ifTrue: [ _prod ]
ifFalse: [ Array with: _prod withAll: _termPrime ]
]
!
termPrime
^ $+ asParser trimmingToken, term
! !