| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
12.6 A simple example
Here is the code for a simple calculator implemented by an Lalr(1) grammar:
(begin
(read/lalrp
(lalr-grammar
(nl plus mult minus div const lpar rpar)
(lines
(())
((lines expression nl) (display "--> ")
(display expression)
(newline))
((lines nl)))
(expression
((expression plus term) (+ expression term))
((expression minus term) (- expression term))
((term) term))
(term
((term mult factor) (* term factor))
((term div factor) (/ term factor))
((factor) factor))
(factor
((lpar expression rpar) expression)
((const) const)))
(regular-grammar ()
((+ (or #\tab #\space)) (ignore))
(#\newline 'nl)
((+ digit) (cons 'const (string->number (the-string))))
(#\+ 'plus)
(#\- 'minus)
(#\* 'mult)
(#\/ 'div)
(#\( 'lpar)
(#\) 'rpar))
(current-input-port))
(reset-eof (current-input-port)))
This document was generated on October 23, 2011 using texi2html 5.0.
