;;; c-parser (define (c-parse c-file-name) (call-with-input-file c-file-name (lambda (port) (let ((scanned (scan-c port))) (begin (clear-typename-table) (parse scanned)))))) ;====================================================================== ;; Unscan a stream of tokens (lexed) ;,open enumerated ;(define (name-of-token num) ; (if (not num) ; "BAD TOKEN" ; (enumerand->name num c-grammar-symbol))) ;(define (unscan scanned) ; (map (lambda (x) ; (let ((name (name-of-token (car x))) ; (attrib (cdr x))) ; (cond ((not attrib) name) ; ((integral-literal? attrib) ; (list (name-of-token (car x)) ; (integral-literal-text attrib))) ; (#t (list (name-of-token (car x)) attrib))))) ; (stream->list scanned))) ;(unscan scanned) ;======================================================================