Skip to content

Instantly share code, notes, and snippets.

@m2ym
Created May 18, 2012 09:22
Show Gist options
  • Select an option

  • Save m2ym/2724226 to your computer and use it in GitHub Desktop.

Select an option

Save m2ym/2724226 to your computer and use it in GitHub Desktop.
Epsilon-production bug of CL-YACC
;; BUG1: Unnecessary readin tokens
(in-package :cl-user)
(yacc:define-parser *parser*
(:start-symbol start)
(:terminals ())
(start))
(yacc:parse-with-lexer (lambda () (error "BUG")) *parser*)
;; BUG2: Handling epsilon production
(in-package :cl-user)
(yacc:define-parser *parser*
(:start-symbol start)
(:terminals (:foo :bar))
(start (optional1 optional2))
(optional1 (:foo)
;())
(none))
(optional2 (:bar)
())
(none ()))
(defun list-lexer (list) (lambda () (pop list)))
(yacc:parse-with-lexer (list-lexer '(:bar)) *parser*)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment