From 273d2baf9bfe78df24047666b7e6cdb52e44e66d Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Thu, 23 Jun 2011 12:55:59 -0400 Subject: [PATCH] * lisp/emacs-lisp/smie.el (smie-bnf->prec2): Give more understandable error messages for adjacent non-terminals. --- lisp/ChangeLog | 5 +++++ lisp/emacs-lisp/smie.el | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6b5f33a778..029003c042 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2011-06-23 Stefan Monnier + + * emacs-lisp/smie.el (smie-bnf->prec2): Give more understandable error + messages for adjacent non-terminals. + 2011-06-23 Richard Stallman * mail/rmail.el (rmail-retry-ignored-headers): Add message-id. diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el index 17cc5668b5..0206abb9f5 100644 --- a/lisp/emacs-lisp/smie.el +++ b/lisp/emacs-lisp/smie.el @@ -229,14 +229,18 @@ one of those elements share the same precedence level and associativity." ;; the trouble, and it lets the writer of the BNF ;; be a bit more sloppy by skipping uninteresting base ;; cases which are terminals but not OPs. - (assert (not (member (cadr rhs) nts))) + (when (member (cadr rhs) nts) + (error "Adjacent non-terminals: %s %s" + (car rhs) (cadr rhs))) (pushnew (cadr rhs) first-ops))) (let ((shr (reverse rhs))) (if (not (member (car shr) nts)) (pushnew (car shr) last-ops) (pushnew (car shr) last-nts) (when (consp (cdr shr)) - (assert (not (member (cadr shr) nts))) + (when (member (cadr rhs) nts) + (error "Adjacent non-terminals: %s %s" + (cadr rhs) (car rhs))) (pushnew (cadr shr) last-ops))))) (push (cons nt first-ops) first-ops-table) (push (cons nt last-ops) last-ops-table) -- 2.20.1