--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPLL1ExpressionGrammar.st Thu May 21 14:12:22 2015 +0100
@@ -0,0 +1,82 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCompositeParser subclass:#PPLL1ExpressionGrammar
+ instanceVariableNames:'add prod term mul prim parens number mulPrime addPrime termPrime'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'PetitCompiler-Extras-Tests-Expressions'
+!
+
+
+!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
+! !
+
+!PPLL1ExpressionGrammar class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+