[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] scratch/last-cedet-merge f11e08f 10/50: semantic: Fix wise
From: |
David Engster |
Subject: |
[Emacs-diffs] scratch/last-cedet-merge f11e08f 10/50: semantic: Fix wisent parser recursion |
Date: |
Wed, 25 Jan 2017 22:15:21 +0000 (UTC) |
branch: scratch/last-cedet-merge
commit f11e08ff7208a8e71962c1cdc569d63fa0b09211
Author: Martin Stein <address@hidden>
Commit: David Engster <address@hidden>
semantic: Fix wisent parser recursion
* lisp/cedet/semantic/wisent/wisent.el (wisent-parse): The semantic
action might be an EXPAND, EXPANDFULL or some similar action calling
the parser recursively. If the last token of the recursively called
parsing step failed to match it ends up in wisent-lookahead, and
function wisent-parse-stream pushs it back onto
wisent-lex-istream. From there on it simply ends up occuring twice on
the unmatched-syntax-cache, or worse might even lead to parse errors
in rare cases.
Copyright-paperwork-exempt: yes
---
lisp/cedet/semantic/wisent/wisent.el | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/lisp/cedet/semantic/wisent/wisent.el
b/lisp/cedet/semantic/wisent/wisent.el
index 36dff01..1958294 100644
--- a/lisp/cedet/semantic/wisent/wisent.el
+++ b/lisp/cedet/semantic/wisent/wisent.el
@@ -377,7 +377,7 @@ automaton has only one entry point."
(wisent-parse-lexer-function lexer)
(wisent-recovering nil)
(wisent-input (wisent-parse-start start starts))
- state tokid choices choice)
+ state tokid choices choice wisent-lookahead-save)
(setq wisent-nerrs 0 ;; Reset parse error counter
wisent-lookahead nil) ;; and lookahead token
(aset stack 0 0) ;; Initial state
@@ -469,7 +469,12 @@ automaton has only one entry point."
;; Reduce by rule (call semantic action)
;; -------------------------------------
(t
+ ;; save the global variable wisent-lookahead,
+ ;; as the semantic action might be an expand or expandfull
+ ;; which calls this function recursively
+ (setq wisent-lookahead-save wisent-lookahead)
(setq sp (funcall wisent-loop stack sp gotos))
+ (setq wisent-lookahead wisent-lookahead-save)
(or wisent-input (setq wisent-input (wisent-lexer))))))
(run-hooks 'wisent-post-parse-hook)
(car (aref stack 1))))
- [Emacs-diffs] scratch/last-cedet-merge 6b57c5b 20/50: semantic: Introduce `semantic-analyze-tag-type-members', (continued)
- [Emacs-diffs] scratch/last-cedet-merge 6b57c5b 20/50: semantic: Introduce `semantic-analyze-tag-type-members', David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge 02644fe 36/50: semantic: Add missing save-excursion for scope calculation, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge 50139fb 45/50: semantic: Fix scope calculation for 'enum', David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge 03bb495 44/50: semantic: Fix for Python lexer, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge 3cbb968 47/50: semantic: Use file name for grammar name instead of %package token, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge 6d6b045 27/50: EDE: Improve Emacs project type, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge 64484cf 43/50: semantic: Set `semantic-type-relation-separator-character' for Emacs Lisp, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge e698dc1 04/50: semantic: Add support for typedef references, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge 783fb86 46/50: semantic: Add 'fromfile' option to grammar package, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge d2a57bd 50/50: CEDET: Fix "unknown slot [...]" warnings, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge f11e08f 10/50: semantic: Fix wisent parser recursion,
David Engster <=
- [Emacs-diffs] scratch/last-cedet-merge e4e864a 39/50: semantic: Properly create canonical name for C++ type tag, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge 8571383 16/50: semantic: Incorporate local scope when finding type, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge ec4505d 17/50: semantic: Accept FLAGS in texinfo-mode for analyzing completions, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge 0a2b38b 26/50: EDE: Expand file name, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge 2b42323 35/50: EDE: Fix for project detection, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge cfd7139 28/50: semantic: Some C grammar optimizations, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge 278c06c 31/50: semantic: Optimize 'typeformbase' in C grammar, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge 8daca76 30/50: semantic: C grammar optimizations, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge 74263b1 37/50: semantic: Change unary expression rule, David Engster, 2017/01/25
- [Emacs-diffs] scratch/last-cedet-merge cfc56f5 38/50: semantic: Fix for db-global, David Engster, 2017/01/25