; COSC 152 ; Fall 2005 ; Dennis Brylow ; ; Lecture 20 Demo ; Scanner specification and grammer for a parser. (define scanner-spec-lec20 '((white-sp (whitespace) skip) (comment (";" (arbno (not #\newline))) skip) (identifier (letter (arbno (or letter digit "?" "*" "_"))) symbol) (number (digit (arbno digit)) number)) ) (define grammar-lec20 '((expr (number) lit-expr) (expr (identifier) var-expr) (expr ("(" subexpr ")") sub-expr) (subexpr ("if" expr expr expr) if-expr) (subexpr ("lambda" "(" (arbno identifier) ")" expr) lambda-expr) (subexpr (expr (arbno expr)) app-expr) )) (define scan&parse (sllgen:make-string-parser scanner-spec-lec20 grammar-lec20)) (sllgen:make-define-datatypes scanner-spec-lec20 grammar-lec20)