compiler/tests/PPExpressionGrammar.st
changeset 438 20598d7ce9fa
child 452 9f4558b3be66
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/PPExpressionGrammar.st	Thu Apr 30 23:43:14 2015 +0200
@@ -0,0 +1,45 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPCompositeParser subclass:#PPExpressionGrammar
+	instanceVariableNames:'add prod term mul prim parens number'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Tests-ExpressionGrammar'
+!
+
+!PPExpressionGrammar methodsFor:'as yet unclassified'!
+
+add
+   ^ prod , $+ asParser trimmingToken , term
+!
+
+mul
+   ^ prim , $* asParser trimmingToken , prod
+!
+
+number
+   ^ #digit asParser plus trimmingToken ==> [ :token | token inputValue asNumber ]
+!
+
+parens
+   ^ $( asParser trim, term , $) asParser trim
+!
+
+prim
+   ^ parens / number
+!
+
+prod
+   ^ mul / prim
+!
+
+start
+   ^ term end
+!
+
+term
+   ^ add / prod
+! !
+