* lisp/emacs-lisp/smie.el (smie-bnf->prec2): Give more understandable error
messages for adjacent non-terminals.
This commit is contained in:
parent
f444564c73
commit
273d2baf9b
2 changed files with 11 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
|||
2011-06-23 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* emacs-lisp/smie.el (smie-bnf->prec2): Give more understandable error
|
||||
messages for adjacent non-terminals.
|
||||
|
||||
2011-06-23 Richard Stallman <rms@gnu.org>
|
||||
|
||||
* mail/rmail.el (rmail-retry-ignored-headers): Add message-id.
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue