;
; this grammar recognises integer
; expressions involving +,-,*,/ and unary -
;
(
(lines		(expr "PRINT" \n lines)
		(\n lines)
		()
		)
(expr		(term + term "ADD")
		(term - term "SUBTRACT")
		(term)
		)
(term		(fact * fact "MULTIPLY")
		(fact / fact "DIVIDE")
		(fact)
		)
(fact		(|(| expr |)|)
		(int "PUSH")
		(- fact "NEGATE")
		)
(int		("CLEAR" "ADD-DIGIT" digit digits)
		)
(digits		("ADD-DIGIT" digit digits)
		()
		)
(digit		(|0|) (|1|) (|2|) (|3|) (|4|) (|5|) (|6|) (|7|) (|8|) (|9|)
		)
)
