Add a mechanism to specify expected shift/reduce .wy conflicts
* admin/grammars/python.wy: Set the expected number of shift/reduce conflicts to four. * lisp/cedet/semantic/grammar.el (semantic-grammar-expected-conflicts): New function. * lisp/cedet/semantic/wisent/comp.el (wisent-total-conflicts): Use it to suppress warnings about the expected number of shift/reduce conflicts.
This commit is contained in:
parent
90b44f336c
commit
f21ec24524
3 changed files with 20 additions and 8 deletions
|
@ -88,6 +88,7 @@
|
|||
|
||||
%package wisent-python-wy
|
||||
%provide semantic/wisent/python-wy
|
||||
%expectedconflicts 4
|
||||
|
||||
%{
|
||||
(declare-function wisent-python-reconstitute-function-tag
|
||||
|
|
|
@ -277,6 +277,13 @@ foo.by it is foo-by."
|
|||
(i (string-match (format "\\([.]\\)%s\\'" ext) file)))
|
||||
(concat (substring file 0 i) "-" ext))))
|
||||
|
||||
(defun semantic-grammar-expected-conflicts ()
|
||||
"Return the number of expected shift/reduce conflicts in the package."
|
||||
(let ((conflicts (semantic-grammar-tag-symbols 'expectedconflicts)))
|
||||
(if conflicts
|
||||
(string-to-number conflicts)
|
||||
0)))
|
||||
|
||||
(defsubst semantic-grammar-languagemode ()
|
||||
"Return the %languagemode value as a list of symbols or nil."
|
||||
(semantic-grammar-tag-symbols 'languagemode))
|
||||
|
@ -987,7 +994,7 @@ Return non-nil if there were no errors, nil if errors."
|
|||
(vc-handled-backends nil))
|
||||
(setq semanticdb-new-database-class 'semanticdb-project-database)
|
||||
(semantic-mode 1)
|
||||
(semantic-grammar-create-package)))
|
||||
(semantic-grammar-create-package t)))
|
||||
(error
|
||||
(message "%s" (error-message-string err))
|
||||
nil))))
|
||||
|
|
|
@ -2264,24 +2264,28 @@ there are any reduce/reduce conflicts."
|
|||
:group 'wisent
|
||||
:type '(choice (const nil) integer))
|
||||
|
||||
(declare-function semantic-grammar-expected-conflicts "semantic/grammar")
|
||||
|
||||
(defun wisent-total-conflicts ()
|
||||
"Report the total number of conflicts."
|
||||
(require 'semantic/grammar)
|
||||
(unless (and (zerop rrc-total)
|
||||
(or (zerop src-total)
|
||||
(= src-total (or wisent-expected-conflicts 0))))
|
||||
(let* ((src (wisent-source))
|
||||
(src (if src (concat " in " src) ""))
|
||||
(msg (format "Grammar%s contains" src)))
|
||||
(if (> src-total 0)
|
||||
(setq msg (format "%s %d shift/reduce conflict%s"
|
||||
msg src-total (if (> src-total 1)
|
||||
"s" ""))))
|
||||
(when (and (> src-total 0)
|
||||
(not (= rrc-total (semantic-grammar-expected-conflicts))))
|
||||
(setq msg (format "%s %d shift/reduce conflict%s"
|
||||
msg src-total (if (> src-total 1)
|
||||
"s" ""))))
|
||||
(if (and (> src-total 0) (> rrc-total 0))
|
||||
(setq msg (format "%s and" msg)))
|
||||
(if (> rrc-total 0)
|
||||
(setq msg (format "%s %d reduce/reduce conflict%s"
|
||||
msg rrc-total (if (> rrc-total 1)
|
||||
"s" ""))))
|
||||
(setq msg (format "%s %d reduce/reduce conflict%s"
|
||||
msg rrc-total (if (> rrc-total 1)
|
||||
"s" ""))))
|
||||
(message msg))))
|
||||
|
||||
(defun wisent-print-conflicts ()
|
||||
|
|
Loading…
Add table
Reference in a new issue