]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/cedet/semantic/wisent: Use lexical-binding
authorStefan Monnier <monnier@iro.umontreal.ca>
Sun, 7 Mar 2021 06:58:16 +0000 (01:58 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sun, 7 Mar 2021 06:58:16 +0000 (01:58 -0500)
* lisp/cedet/semantic/wisent/comp.el: lexical-binding.
(wisent-defcontext): Make sure the vars are also dynbound in the files
that `require` us.
(wisent-state-actions, wisent-automaton-lisp-form): Use `obarray-make`.
(wisent--compile-grammar): Rename from `wisent-compile-grammar`.
(wisent-compile-grammar): Redefine as an obsolete function.
(wisent-automaton-lisp-form): Avoid variable `state`.

* lisp/cedet/semantic/grammar.el: Use lexical-binding.
(semantic-grammar-require-form): New var.
(semantic-grammar-header): Use it to provide new element `require-form`.
(semantic-grammar-header-template): Use it.

* lisp/cedet/semantic/wisent.el (wisent-compiled-grammar): New macro.

* lisp/cedet/semantic/wisent/grammar.el (wisent-grammar-parsetable-builder):
Use it in the generated code instead of the `wisent-compile-grammar` function.
(wisent-grammar-mode): Set `semantic-grammar-require-form` so
the generated ELisp files require `semantic/wisent` rather than
`semantic/bovine`.

* lisp/cedet/semantic/wisent/wisent.el: Use lexical-binding.
* lisp/cedet/semantic/wisent/java-tags.el: Use lexical-binding.
* lisp/cedet/semantic/wisent/python.el: Use lexical-binding.
* lisp/cedet/semantic/wisent/javascript.el: Use lexical-binding.
(semantic-ctxt-current-symbol): Remove unused var `symlist`.

* admin/grammars/python.wy (wisent-python-EXPANDING-block):
Declare dynbound var.

* lisp/cedet/semantic/grammar-wy.el: Regenerate.

admin/grammars/grammar.wy
admin/grammars/python.wy
lisp/cedet/semantic/grammar-wy.el
lisp/cedet/semantic/grammar.el
lisp/cedet/semantic/wisent.el
lisp/cedet/semantic/wisent/comp.el
lisp/cedet/semantic/wisent/grammar.el
lisp/cedet/semantic/wisent/java-tags.el
lisp/cedet/semantic/wisent/javascript.el
lisp/cedet/semantic/wisent/python.el
lisp/cedet/semantic/wisent/wisent.el

index 054e85bf70db746487fb9529bf4b8fdc606f603b..35fb7e832e9ae5d1f81dfaeb9d91cbc569ae4dd2 100644 (file)
@@ -128,7 +128,7 @@ epilogue:
 ;;
 declaration:
     decl
-    (eval $1)
+    (eval $1 t)
   ;
 
 decl:
@@ -206,7 +206,7 @@ put_decl:
 
 put_name_list:
     BRACE_BLOCK
-    (mapcar 'semantic-tag-name (EXPANDFULL $1 put_names))
+    (mapcar #'semantic-tag-name (EXPANDFULL $1 put_names))
   ;
 
 put_names:
@@ -226,7 +226,7 @@ put_name:
 
 put_value_list:
     BRACE_BLOCK
-    (mapcar 'semantic-tag-code-detail (EXPANDFULL $1 put_values))
+    (mapcar #'semantic-tag-code-detail (EXPANDFULL $1 put_values))
   ;
 
 put_values:
@@ -300,7 +300,7 @@ plist:
 
 use_name_list:
     BRACE_BLOCK
-    (mapcar 'semantic-tag-name (EXPANDFULL $1 use_names))
+    (mapcar #'semantic-tag-name (EXPANDFULL $1 use_names))
   ;
 
 use_names:
@@ -356,7 +356,7 @@ nonterminal:
 
 rules:
     lifo_rules
-    (apply 'nconc (nreverse $1))
+    (apply #'nconc (nreverse $1))
   ;
 
 lifo_rules:
index 9c8f4ac6a9ca80b7ea701e0379bb7ea63b663737..22e85570dc195ed91b2e136c89c28eb7924fe6cc 100644 (file)
@@ -97,6 +97,7 @@
                  (tag))
 (declare-function semantic-parse-region "semantic"
                  (start end &optional nonterminal depth returnonerror))
+(defvar wisent-python-EXPANDING-block)
 }
 
 %languagemode python-mode
@@ -871,7 +872,7 @@ paren_class_list_opt
 paren_class_list
   : PAREN_BLOCK
     (let ((wisent-python-EXPANDING-block t))
-      (mapcar 'semantic-tag-name (EXPANDFULL $1 paren_classes)))
+      (mapcar #'semantic-tag-name (EXPANDFULL $1 paren_classes)))
   ;
 
 ;; parameters: '(' [varargslist] ')'
index 9a7f393072f68cc9bdb77a991299b7864ed41e5e..b3014034374a3aeb48c7740750407bb20d6fafc7 100644 (file)
@@ -24,7 +24,7 @@
 ;;; Code:
 
 (require 'semantic/lex)
-(eval-when-compile (require 'semantic/bovine))
+(require 'semantic/wisent)
 \f
 ;;; Prologue
 ;;
   "Table of lexical tokens.")
 
 (defconst semantic-grammar-wy--parse-table
-  (progn
-    (eval-when-compile
-      (require 'semantic/wisent/comp))
-    (wisent-compile-grammar
-     '((DEFAULT-PREC NO-DEFAULT-PREC KEYWORD LANGUAGEMODE LEFT NONASSOC PACKAGE EXPECTEDCONFLICTS PROVIDE PREC PUT QUOTEMODE RIGHT SCOPESTART START TOKEN TYPE USE-MACROS STRING SYMBOL PERCENT_PERCENT CHARACTER PREFIXED_LIST SEXP PROLOGUE EPILOGUE PAREN_BLOCK BRACE_BLOCK LPAREN RPAREN LBRACE RBRACE COLON SEMI OR LT GT)
-       nil
-       (grammar
-        ((prologue))
-        ((epilogue))
-        ((declaration))
-        ((nonterminal))
-        ((PERCENT_PERCENT)))
-       (prologue
-        ((PROLOGUE)
+  (wisent-compiled-grammar
+   ((DEFAULT-PREC NO-DEFAULT-PREC KEYWORD LANGUAGEMODE LEFT NONASSOC PACKAGE EXPECTEDCONFLICTS PROVIDE PREC PUT QUOTEMODE RIGHT SCOPESTART START TOKEN TYPE USE-MACROS STRING SYMBOL PERCENT_PERCENT CHARACTER PREFIXED_LIST SEXP PROLOGUE EPILOGUE PAREN_BLOCK BRACE_BLOCK LPAREN RPAREN LBRACE RBRACE COLON SEMI OR LT GT)
+    nil
+    (grammar
+     ((prologue))
+     ((epilogue))
+     ((declaration))
+     ((nonterminal))
+     ((PERCENT_PERCENT)))
+    (prologue
+     ((PROLOGUE)
+      (wisent-raw-tag
+       (semantic-tag-new-code "prologue" nil))))
+    (epilogue
+     ((EPILOGUE)
+      (wisent-raw-tag
+       (semantic-tag-new-code "epilogue" nil))))
+    (declaration
+     ((decl)
+      (eval $1 t)))
+    (decl
+     ((default_prec_decl))
+     ((no_default_prec_decl))
+     ((languagemode_decl))
+     ((package_decl))
+     ((expectedconflicts_decl))
+     ((provide_decl))
+     ((precedence_decl))
+     ((put_decl))
+     ((quotemode_decl))
+     ((scopestart_decl))
+     ((start_decl))
+     ((keyword_decl))
+     ((token_decl))
+     ((type_decl))
+     ((use_macros_decl)))
+    (default_prec_decl
+      ((DEFAULT-PREC)
+       `(wisent-raw-tag
+         (semantic-tag "default-prec" 'assoc :value
+                      '("t")))))
+    (no_default_prec_decl
+     ((NO-DEFAULT-PREC)
+      `(wisent-raw-tag
+        (semantic-tag "default-prec" 'assoc :value
+                     '("nil")))))
+    (languagemode_decl
+     ((LANGUAGEMODE symbols)
+      `(wisent-raw-tag
+        (semantic-tag ',(car $2)
+                     'languagemode :rest ',(cdr $2)))))
+    (package_decl
+     ((PACKAGE SYMBOL)
+      `(wisent-raw-tag
+        (semantic-tag-new-package ',$2 nil))))
+    (expectedconflicts_decl
+     ((EXPECTEDCONFLICTS symbols)
+      `(wisent-raw-tag
+        (semantic-tag ',(car $2)
+                     'expectedconflicts :rest ',(cdr $2)))))
+    (provide_decl
+     ((PROVIDE SYMBOL)
+      `(wisent-raw-tag
+        (semantic-tag ',$2 'provide))))
+    (precedence_decl
+     ((associativity token_type_opt items)
+      `(wisent-raw-tag
+        (semantic-tag ',$1 'assoc :type ',$2 :value ',$3))))
+    (associativity
+     ((LEFT)
+      (progn "left"))
+     ((RIGHT)
+      (progn "right"))
+     ((NONASSOC)
+      (progn "nonassoc")))
+    (put_decl
+     ((PUT put_name put_value)
+      `(wisent-raw-tag
+        (semantic-tag ',$2 'put :value ',(list $3))))
+     ((PUT put_name put_value_list)
+      `(wisent-raw-tag
+        (semantic-tag ',$2 'put :value ',$3)))
+     ((PUT put_name_list put_value)
+      `(wisent-raw-tag
+        (semantic-tag ',(car $2)
+                     'put :rest ',(cdr $2)
+                     :value ',(list $3))))
+     ((PUT put_name_list put_value_list)
+      `(wisent-raw-tag
+        (semantic-tag ',(car $2)
+                     'put :rest ',(cdr $2)
+                     :value ',$3))))
+    (put_name_list
+     ((BRACE_BLOCK)
+      (mapcar #'semantic-tag-name
+             (semantic-parse-region
+              (car $region1)
+              (cdr $region1)
+              'put_names 1))))
+    (put_names
+     ((LBRACE)
+      nil)
+     ((RBRACE)
+      nil)
+     ((put_name)
+      (wisent-raw-tag
+       (semantic-tag $1 'put-name))))
+    (put_name
+     ((SYMBOL))
+     ((token_type)))
+    (put_value_list
+     ((BRACE_BLOCK)
+      (mapcar #'semantic-tag-code-detail
+             (semantic-parse-region
+              (car $region1)
+              (cdr $region1)
+              'put_values 1))))
+    (put_values
+     ((LBRACE)
+      nil)
+     ((RBRACE)
+      nil)
+     ((put_value)
+      (wisent-raw-tag
+       (semantic-tag-new-code "put-value" $1))))
+    (put_value
+     ((SYMBOL any_value)
+      (cons $1 $2)))
+    (scopestart_decl
+     ((SCOPESTART SYMBOL)
+      `(wisent-raw-tag
+        (semantic-tag ',$2 'scopestart))))
+    (quotemode_decl
+     ((QUOTEMODE SYMBOL)
+      `(wisent-raw-tag
+        (semantic-tag ',$2 'quotemode))))
+    (start_decl
+     ((START symbols)
+      `(wisent-raw-tag
+        (semantic-tag ',(car $2)
+                     'start :rest ',(cdr $2)))))
+    (keyword_decl
+     ((KEYWORD SYMBOL string_value)
+      `(wisent-raw-tag
+        (semantic-tag ',$2 'keyword :value ',$3))))
+    (token_decl
+     ((TOKEN token_type_opt SYMBOL string_value)
+      `(wisent-raw-tag
+        (semantic-tag ',$3 ',(if $2 'token 'keyword)
+                     :type ',$2 :value ',$4)))
+     ((TOKEN token_type_opt symbols)
+      `(wisent-raw-tag
+        (semantic-tag ',(car $3)
+                     'token :type ',$2 :rest ',(cdr $3)))))
+    (token_type_opt
+     (nil)
+     ((token_type)))
+    (token_type
+     ((LT SYMBOL GT)
+      (progn $2)))
+    (type_decl
+     ((TYPE token_type plist_opt)
+      `(wisent-raw-tag
+        (semantic-tag ',$2 'type :value ',$3))))
+    (plist_opt
+     (nil)
+     ((plist)))
+    (plist
+     ((plist put_value)
+      (append
+       (list $2)
+       $1))
+     ((put_value)
+      (list $1)))
+    (use_name_list
+     ((BRACE_BLOCK)
+      (mapcar #'semantic-tag-name
+             (semantic-parse-region
+              (car $region1)
+              (cdr $region1)
+              'use_names 1))))
+    (use_names
+     ((LBRACE)
+      nil)
+     ((RBRACE)
+      nil)
+     ((SYMBOL)
+      (wisent-raw-tag
+       (semantic-tag $1 'use-name))))
+    (use_macros_decl
+     ((USE-MACROS SYMBOL use_name_list)
+      `(wisent-raw-tag
+        (semantic-tag "macro" 'macro :type ',$2 :value ',$3))))
+    (string_value
+     ((STRING)
+      (read $1)))
+    (any_value
+     ((SYMBOL))
+     ((STRING))
+     ((PAREN_BLOCK))
+     ((PREFIXED_LIST))
+     ((SEXP)))
+    (symbols
+     ((lifo_symbols)
+      (nreverse $1)))
+    (lifo_symbols
+     ((lifo_symbols SYMBOL)
+      (cons $2 $1))
+     ((SYMBOL)
+      (list $1)))
+    (nonterminal
+     ((SYMBOL
+       (setq semantic-grammar-wy--nterm $1 semantic-grammar-wy--rindx 0)
+       COLON rules SEMI)
+      (wisent-raw-tag
+       (semantic-tag $1 'nonterminal :children $4))))
+    (rules
+     ((lifo_rules)
+      (apply #'nconc
+            (nreverse $1))))
+    (lifo_rules
+     ((lifo_rules OR rule)
+      (cons $3 $1))
+     ((rule)
+      (list $1)))
+    (rule
+     ((rhs)
+      (let*
+         ((nterm semantic-grammar-wy--nterm)
+          (rindx semantic-grammar-wy--rindx)
+          (rhs $1)
+          comps prec action elt)
+        (setq semantic-grammar-wy--rindx
+             (1+ semantic-grammar-wy--rindx))
+        (while rhs
+         (setq elt
+               (car rhs)
+               rhs
+               (cdr rhs))
+         (cond
+          ((vectorp elt)
+           (if prec
+               (error "Duplicate %%prec in `%s:%d' rule" nterm rindx))
+           (setq prec
+                 (aref elt 0)))
+          ((consp elt)
+           (if
+               (or action comps)
+               (setq comps
+                     (cons elt comps)
+                     semantic-grammar-wy--rindx
+                     (1+ semantic-grammar-wy--rindx))
+             (setq action
+                   (car elt))))
+          (t
+           (setq comps
+                 (cons elt comps)))))
+        (wisent-cook-tag
          (wisent-raw-tag
-         (semantic-tag-new-code "prologue" nil))))
-       (epilogue
-        ((EPILOGUE)
-         (wisent-raw-tag
-         (semantic-tag-new-code "epilogue" nil))))
-       (declaration
-        ((decl)
-         (eval $1)))
-       (decl
-        ((default_prec_decl))
-        ((no_default_prec_decl))
-        ((languagemode_decl))
-        ((package_decl))
-        ((expectedconflicts_decl))
-        ((provide_decl))
-        ((precedence_decl))
-        ((put_decl))
-        ((quotemode_decl))
-        ((scopestart_decl))
-        ((start_decl))
-        ((keyword_decl))
-        ((token_decl))
-        ((type_decl))
-        ((use_macros_decl)))
-       (default_prec_decl
-         ((DEFAULT-PREC)
-         `(wisent-raw-tag
-           (semantic-tag "default-prec" 'assoc :value
-                         '("t")))))
-       (no_default_prec_decl
-        ((NO-DEFAULT-PREC)
-         `(wisent-raw-tag
-          (semantic-tag "default-prec" 'assoc :value
-                        '("nil")))))
-       (languagemode_decl
-        ((LANGUAGEMODE symbols)
-         `(wisent-raw-tag
-          (semantic-tag ',(car $2)
-                        'languagemode :rest ',(cdr $2)))))
-       (package_decl
-        ((PACKAGE SYMBOL)
-         `(wisent-raw-tag
-          (semantic-tag-new-package ',$2 nil))))
-       (expectedconflicts_decl
-        ((EXPECTEDCONFLICTS symbols)
-         `(wisent-raw-tag
-          (semantic-tag ',(car $2)
-                        'expectedconflicts :rest ',(cdr $2)))))
-       (provide_decl
-        ((PROVIDE SYMBOL)
-         `(wisent-raw-tag
-          (semantic-tag ',$2 'provide))))
-       (precedence_decl
-        ((associativity token_type_opt items)
-         `(wisent-raw-tag
-          (semantic-tag ',$1 'assoc :type ',$2 :value ',$3))))
-       (associativity
-        ((LEFT)
-         (progn "left"))
-        ((RIGHT)
-         (progn "right"))
-        ((NONASSOC)
-         (progn "nonassoc")))
-       (put_decl
-        ((PUT put_name put_value)
-         `(wisent-raw-tag
-          (semantic-tag ',$2 'put :value ',(list $3))))
-        ((PUT put_name put_value_list)
-         `(wisent-raw-tag
-          (semantic-tag ',$2 'put :value ',$3)))
-        ((PUT put_name_list put_value)
-         `(wisent-raw-tag
-          (semantic-tag ',(car $2)
-                        'put :rest ',(cdr $2)
-                        :value ',(list $3))))
-        ((PUT put_name_list put_value_list)
-         `(wisent-raw-tag
-          (semantic-tag ',(car $2)
-                        'put :rest ',(cdr $2)
-                        :value ',$3))))
-       (put_name_list
-        ((BRACE_BLOCK)
-         (mapcar 'semantic-tag-name
-                (semantic-parse-region
-                 (car $region1)
-                 (cdr $region1)
-                 'put_names 1))))
-       (put_names
-        ((LBRACE)
-         nil)
-        ((RBRACE)
-         nil)
-        ((put_name)
-         (wisent-raw-tag
-         (semantic-tag $1 'put-name))))
-       (put_name
-        ((SYMBOL))
-        ((token_type)))
-       (put_value_list
-        ((BRACE_BLOCK)
-         (mapcar 'semantic-tag-code-detail
-                (semantic-parse-region
-                 (car $region1)
-                 (cdr $region1)
-                 'put_values 1))))
-       (put_values
-        ((LBRACE)
-         nil)
-        ((RBRACE)
-         nil)
-        ((put_value)
-         (wisent-raw-tag
-         (semantic-tag-new-code "put-value" $1))))
-       (put_value
-        ((SYMBOL any_value)
-         (cons $1 $2)))
-       (scopestart_decl
-        ((SCOPESTART SYMBOL)
-         `(wisent-raw-tag
-          (semantic-tag ',$2 'scopestart))))
-       (quotemode_decl
-        ((QUOTEMODE SYMBOL)
-         `(wisent-raw-tag
-          (semantic-tag ',$2 'quotemode))))
-       (start_decl
-        ((START symbols)
-         `(wisent-raw-tag
-          (semantic-tag ',(car $2)
-                        'start :rest ',(cdr $2)))))
-       (keyword_decl
-        ((KEYWORD SYMBOL string_value)
-         `(wisent-raw-tag
-          (semantic-tag ',$2 'keyword :value ',$3))))
-       (token_decl
-        ((TOKEN token_type_opt SYMBOL string_value)
-         `(wisent-raw-tag
-          (semantic-tag ',$3 ',(if $2 'token 'keyword)
-                        :type ',$2 :value ',$4)))
-        ((TOKEN token_type_opt symbols)
-         `(wisent-raw-tag
-          (semantic-tag ',(car $3)
-                        'token :type ',$2 :rest ',(cdr $3)))))
-       (token_type_opt
-        (nil)
-        ((token_type)))
-       (token_type
-        ((LT SYMBOL GT)
-         (progn $2)))
-       (type_decl
-        ((TYPE token_type plist_opt)
-         `(wisent-raw-tag
-          (semantic-tag ',$2 'type :value ',$3))))
-       (plist_opt
-        (nil)
-        ((plist)))
-       (plist
-        ((plist put_value)
-         (append
-         (list $2)
-         $1))
-        ((put_value)
-         (list $1)))
-       (use_name_list
-        ((BRACE_BLOCK)
-         (mapcar 'semantic-tag-name
-                (semantic-parse-region
-                 (car $region1)
-                 (cdr $region1)
-                 'use_names 1))))
-       (use_names
-        ((LBRACE)
-         nil)
-        ((RBRACE)
-         nil)
-        ((SYMBOL)
-         (wisent-raw-tag
-         (semantic-tag $1 'use-name))))
-       (use_macros_decl
-        ((USE-MACROS SYMBOL use_name_list)
-         `(wisent-raw-tag
-          (semantic-tag "macro" 'macro :type ',$2 :value ',$3))))
-       (string_value
-        ((STRING)
-         (read $1)))
-       (any_value
-        ((SYMBOL))
-        ((STRING))
-        ((PAREN_BLOCK))
-        ((PREFIXED_LIST))
-        ((SEXP)))
-       (symbols
-        ((lifo_symbols)
-         (nreverse $1)))
-       (lifo_symbols
-        ((lifo_symbols SYMBOL)
-         (cons $2 $1))
-        ((SYMBOL)
-         (list $1)))
-       (nonterminal
-        ((SYMBOL
-         (setq semantic-grammar-wy--nterm $1 semantic-grammar-wy--rindx 0)
-         COLON rules SEMI)
-         (wisent-raw-tag
-         (semantic-tag $1 'nonterminal :children $4))))
-       (rules
-        ((lifo_rules)
-         (apply 'nconc
-               (nreverse $1))))
-       (lifo_rules
-        ((lifo_rules OR rule)
-         (cons $3 $1))
-        ((rule)
-         (list $1)))
-       (rule
-        ((rhs)
-         (let*
-            ((nterm semantic-grammar-wy--nterm)
-             (rindx semantic-grammar-wy--rindx)
-             (rhs $1)
-             comps prec action elt)
-          (setq semantic-grammar-wy--rindx
-                (1+ semantic-grammar-wy--rindx))
-          (while rhs
-            (setq elt
-                  (car rhs)
-                  rhs
-                  (cdr rhs))
-            (cond
-             ((vectorp elt)
-              (if prec
-                  (error "Duplicate %%prec in `%s:%d' rule" nterm rindx))
-              (setq prec
-                    (aref elt 0)))
-             ((consp elt)
-              (if
-                  (or action comps)
-                  (setq comps
-                        (cons elt comps)
-                        semantic-grammar-wy--rindx
-                        (1+ semantic-grammar-wy--rindx))
-                (setq action
-                      (car elt))))
-             (t
-              (setq comps
-                    (cons elt comps)))))
-          (wisent-cook-tag
-           (wisent-raw-tag
-            (semantic-tag
-             (format "%s:%d" nterm rindx)
-             'rule :type
-             (if comps "group" "empty")
-             :value comps :prec prec :expr action))))))
-       (rhs
-        (nil)
-        ((rhs item)
-         (cons $2 $1))
-        ((rhs action)
-         (cons
-         (list $2)
-         $1))
-        ((rhs PREC item)
-         (cons
-         (vector $3)
-         $1)))
-       (action
-        ((PAREN_BLOCK))
-        ((PREFIXED_LIST))
-        ((BRACE_BLOCK)
-         (format "(progn\n%s)"
-                (let
-                    ((s $1))
-                  (if
-                      (string-match "^{[\r\n     ]*" s)
-                      (setq s
-                            (substring s
-                                       (match-end 0))))
-                  (if
-                      (string-match "[\r\n       ]*}$" s)
-                      (setq s
-                            (substring s 0
-                                       (match-beginning 0))))
-                  s))))
-       (items
-        ((lifo_items)
-         (nreverse $1)))
-       (lifo_items
-        ((lifo_items item)
-         (cons $2 $1))
-        ((item)
-         (list $1)))
-       (item
-        ((SYMBOL))
-        ((CHARACTER))))
-     '(grammar prologue epilogue declaration nonterminal rule put_names put_values use_names)))
+         (semantic-tag
+          (format "%s:%d" nterm rindx)
+          'rule :type
+          (if comps "group" "empty")
+          :value comps :prec prec :expr action))))))
+    (rhs
+     (nil)
+     ((rhs item)
+      (cons $2 $1))
+     ((rhs action)
+      (cons
+       (list $2)
+       $1))
+     ((rhs PREC item)
+      (cons
+       (vector $3)
+       $1)))
+    (action
+     ((PAREN_BLOCK))
+     ((PREFIXED_LIST))
+     ((BRACE_BLOCK)
+      (format "(progn\n%s)"
+             (let
+                 ((s $1))
+               (if
+                   (string-match "^{[\r\n        ]*" s)
+                   (setq s
+                         (substring s
+                                    (match-end 0))))
+               (if
+                   (string-match "[\r\n  ]*}$" s)
+                   (setq s
+                         (substring s 0
+                                    (match-beginning 0))))
+               s))))
+    (items
+     ((lifo_items)
+      (nreverse $1)))
+    (lifo_items
+     ((lifo_items item)
+      (cons $2 $1))
+     ((item)
+      (list $1)))
+    (item
+     ((SYMBOL))
+     ((CHARACTER))))
+   (grammar prologue epilogue declaration nonterminal rule put_names put_values use_names))
   "Parser table.")
 
 (defun semantic-grammar-wy--install-parser ()
         semantic-lex-types-obarray semantic-grammar-wy--token-table)
   ;; Collect unmatched syntax lexical tokens
   (add-hook 'wisent-discarding-token-functions
-            'wisent-collect-unmatched-syntax nil t))
+            #'wisent-collect-unmatched-syntax nil t))
 
 \f
 ;;; Analyzers
index 4551811c235f94e5888c20857457badc9afaf1f4..ca7c273febc7892d4f36e600a5ea3a9ff8ee3f07 100644 (file)
@@ -1,4 +1,4 @@
-;;; semantic/grammar.el --- Major mode framework for Semantic grammars
+;;; semantic/grammar.el --- Major mode framework for Semantic grammars  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2002-2005, 2007-2021 Free Software Foundation, Inc.
 
@@ -191,11 +191,11 @@ Warn if other tags of class CLASS exist."
 That is tag names plus names defined in tag attribute `:rest'."
   (let* ((tags (semantic-find-tags-by-class
                 class (current-buffer))))
-    (apply 'append
+    (apply #'append
            (mapcar
             #'(lambda (tag)
                 (mapcar
-                 'intern
+                 #'intern
                  (cons (semantic-tag-name tag)
                        (semantic-tag-get-attribute tag :rest))))
             tags))))
@@ -312,7 +312,7 @@ the keyword and TOKEN is the terminal symbol identifying the keyword."
       (setq put   (car puts)
             puts  (cdr puts)
             keys  (mapcar
-                   'intern
+                   #'intern
                    (cons (semantic-tag-name put)
                          (semantic-tag-get-attribute put :rest))))
       (while keys
@@ -565,6 +565,10 @@ Typically a DEFINE expression should look like this:
       (goto-char start)
       (indent-sexp))))
 
+(defvar semantic-grammar-require-form
+  '(eval-when-compile (require 'semantic/bovine))
+  "The form to use to load the parser engine.")
+
 (defconst semantic-grammar-header-template
   '("\
 ;;; " file " --- Generated parser support file
@@ -602,7 +606,7 @@ Typically a DEFINE expression should look like this:
 ;;; Code:
 
 (require 'semantic/lex)
-(eval-when-compile (require 'semantic/bovine))
+" require-form "
 ")
   "Generated header template.
 The symbols in the template are local variables in
@@ -651,6 +655,7 @@ The symbols in the list are local variables in
                semantic--grammar-output-buffer))
      (gram . ,(semantic-grammar-buffer-file))
      (date . ,(format-time-string "%Y-%m-%d %T%z"))
+     (require-form . ,(format "%S" semantic-grammar-require-form))
      (vcid . ,(concat "$" "Id" "$")) ;; Avoid expansion
      ;; Try to get the copyright from the input grammar, or
      ;; generate a new one if not found.
@@ -818,7 +823,7 @@ Block definitions are read from the current table of lexical types."
     (let ((semantic-lex-types-obarray
            (semantic-lex-make-type-table tokens props))
           semantic-grammar--lex-block-specs)
-      (mapatoms 'semantic-grammar-insert-defanalyzer
+      (mapatoms #'semantic-grammar-insert-defanalyzer
                 semantic-lex-types-obarray))))
 \f
 ;;; Generation of the grammar support file.
@@ -846,7 +851,8 @@ Lisp code."
          (semantic--grammar-package (semantic-grammar-package))
         (semantic--grammar-provide (semantic-grammar-first-tag-name 'provide))
          (output   (concat (or semantic--grammar-provide
-                              semantic--grammar-package) ".el"))
+                              semantic--grammar-package)
+                          ".el"))
          (semantic--grammar-input-buffer  (current-buffer))
          (semantic--grammar-output-buffer
          (find-file-noselect
@@ -1197,20 +1203,20 @@ END is the limit of the search."
 (defvar semantic-grammar-mode-map
   (let ((km (make-sparse-keymap)))
 
-    (define-key km "|" 'semantic-grammar-electric-punctuation)
-    (define-key km ";" 'semantic-grammar-electric-punctuation)
-    (define-key km "%" 'semantic-grammar-electric-punctuation)
-    (define-key km "(" 'semantic-grammar-electric-punctuation)
-    (define-key km ")" 'semantic-grammar-electric-punctuation)
-    (define-key km ":" 'semantic-grammar-electric-punctuation)
-
-    (define-key km "\t"       'semantic-grammar-indent)
-    (define-key km "\M-\t"    'semantic-grammar-complete)
-    (define-key km "\C-c\C-c" 'semantic-grammar-create-package)
-    (define-key km "\C-cm"    'semantic-grammar-find-macro-expander)
-    (define-key km "\C-cik"    'semantic-grammar-insert-keyword)
-;;  (define-key km "\C-cc"    'semantic-grammar-generate-and-load)
-;;  (define-key km "\C-cr"    'semantic-grammar-generate-one-rule)
+    (define-key km "|" #'semantic-grammar-electric-punctuation)
+    (define-key km ";" #'semantic-grammar-electric-punctuation)
+    (define-key km "%" #'semantic-grammar-electric-punctuation)
+    (define-key km "(" #'semantic-grammar-electric-punctuation)
+    (define-key km ")" #'semantic-grammar-electric-punctuation)
+    (define-key km ":" #'semantic-grammar-electric-punctuation)
+
+    (define-key km "\t"       #'semantic-grammar-indent)
+    (define-key km "\M-\t"    #'semantic-grammar-complete)
+    (define-key km "\C-c\C-c" #'semantic-grammar-create-package)
+    (define-key km "\C-cm"    #'semantic-grammar-find-macro-expander)
+    (define-key km "\C-cik"   #'semantic-grammar-insert-keyword)
+;;  (define-key km "\C-cc"    #'semantic-grammar-generate-and-load)
+;;  (define-key km "\C-cr"    #'semantic-grammar-generate-one-rule)
 
     km)
   "Keymap used in `semantic-grammar-mode'.")
@@ -1322,7 +1328,7 @@ the change bounds to encompass the whole nonterminal tag."
   ;; Setup Semantic to parse grammar
   (semantic-grammar-wy--install-parser)
   (setq semantic-lex-comment-regex ";;"
-        semantic-lex-analyzer 'semantic-grammar-lexer
+        semantic-lex-analyzer #'semantic-grammar-lexer
         semantic-type-relation-separator-character '(":")
         semantic-symbol->name-assoc-list
         '(
@@ -1343,10 +1349,10 @@ the change bounds to encompass the whole nonterminal tag."
   ;; Before each change, clear the cached regexp used to highlight
   ;; macros local in this grammar.
   (add-hook 'before-change-functions
-            'semantic--grammar-clear-macros-regexp-2 nil t)
+            #'semantic--grammar-clear-macros-regexp-2 nil t)
   ;; Handle safe re-parse of grammar rules.
   (add-hook 'semantic-edits-new-change-functions
-            'semantic-grammar-edits-new-change-hook-fcn
+            #'semantic-grammar-edits-new-change-hook-fcn
             nil t))
 \f
 ;;;;
@@ -1876,7 +1882,7 @@ Optional argument COLOR determines if color is added to the text."
             (names (semantic-tag-get-attribute tag :rest))
             (type  (semantic-tag-type tag)))
         (if names
-            (setq name (mapconcat 'identity (cons name names) " ")))
+            (setq name (mapconcat #'identity (cons name names) " ")))
         (setq desc (concat
                     (if type
                         (format " <%s>" type)
@@ -1893,7 +1899,7 @@ Optional argument COLOR determines if color is added to the text."
                         (format " <%s>" type)
                       "")
                     (if val
-                        (concat " " (mapconcat 'identity val " "))
+                        (concat " " (mapconcat #'identity val " "))
                       "")))))
      (t
       (setq desc (semantic-format-tag-abbreviate tag parent color))))
@@ -1944,7 +1950,7 @@ Optional argument COLOR determines if color is added to the text."
       context-return)))
 
 (define-mode-local-override semantic-analyze-possible-completions
-  semantic-grammar-mode (context &rest flags)
+  semantic-grammar-mode (context &rest _flags)
   "Return a list of possible completions based on CONTEXT."
   (require 'semantic/analyze/complete)
   (if (semantic-grammar-in-lisp-p)
index ecd96831352f09c029b1c770a62b8cab9db68e30..f498e7edcc2b31d99d83d777e0e0dec7d45949fd 100644 (file)
@@ -224,7 +224,7 @@ the standard function `semantic-parse-stream'."
                                     (error-message-string error-to-filter))
                            (message "wisent-parse-max-stack-size \
 might need to be increased"))
-                       (apply 'signal error-to-filter))))))
+                       (apply #'signal error-to-filter))))))
     ;; Manage returned lookahead token
     (if wisent-lookahead
         (if (eq (caar la-elt) wisent-lookahead)
@@ -252,6 +252,17 @@ might need to be increased"))
           (if (consp cache) cache '(nil))
           )))
 
+(defmacro wisent-compiled-grammar (grammar &optional start-list)
+  "Return a compiled form of the LALR(1) Wisent GRAMMAR.
+See `wisent--compile-grammar' for a description of the arguments
+and return value."
+  ;; Ensure that the grammar compiler is available.
+  (require 'semantic/wisent/comp)
+  (declare-function wisent-automaton-lisp-form "semantic/wisent/comp" (x))
+  (declare-function wisent--compile-grammar "semantic/wisent/comp" (grm st))
+  (wisent-automaton-lisp-form
+   (wisent--compile-grammar grammar start-list)))
+
 (defun wisent-parse-region (start end &optional goal depth returnonerror)
   "Parse the area between START and END using the Wisent LALR parser.
 Return the list of semantic tags found.
index 7a64fe2fec392ae58d1e477a114a8334c9647fa2..574922049f5c3b3b07deaf1aeb3ffdc1dcb5db1c 100644 (file)
@@ -1,4 +1,4 @@
-;;; semantic/wisent/comp.el --- GNU Bison for Emacs - Grammar compiler
+;;; semantic/wisent/comp.el --- GNU Bison for Emacs - Grammar compiler  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1984, 1986, 1989, 1992, 1995, 2000-2007, 2009-2021 Free
 ;; Software Foundation, Inc.
@@ -71,7 +71,7 @@
          (declarations (mapcar #'(lambda (v) (list 'defvar v)) vars)))
     `(progn
        ,@declarations
-       (eval-when-compile
+       (eval-and-compile
          (defvar ,context ',vars)))))
 
 (defmacro wisent-with-context (name &rest body)
@@ -101,6 +101,8 @@ If optional LEFT is non-nil insert spaces on left."
 ;;;; Environment dependencies
 ;;;; ------------------------
 
+;; FIXME: Use bignums or bool-vectors?
+
 (defconst wisent-BITS-PER-WORD (logcount most-positive-fixnum))
 
 (defsubst wisent-WORDSIZE (n)
@@ -2774,7 +2776,7 @@ that likes a token gets to handle it."
   "Figure out the actions for every state.
 Return the action table."
   ;; Store the semantic action obarray in (unused) RCODE[0].
-  (aset rcode 0 (make-vector 13 0))
+  (aset rcode 0 (obarray-make 13))
   (let (i j action-table actrow action)
     (setq action-table (make-vector nstates nil)
           actrow (make-vector ntokens nil)
@@ -3388,7 +3390,7 @@ NONTERMS is the list of non terminal definitions (see function
 ;;;; Compile input grammar
 ;;;; ---------------------
 
-(defun wisent-compile-grammar (grammar &optional start-list)
+(defun wisent--compile-grammar (grammar start-list)
   "Compile the LALR(1) GRAMMAR.
 
 GRAMMAR is a list (TOKENS ASSOCS . NONTERMS) where:
@@ -3440,7 +3442,7 @@ where:
        (wisent-parser-automaton)))))
 \f
 ;;;; --------------------------
-;;;; Byte compile input grammar
+;;;; Obsolete byte compile support
 ;;;; --------------------------
 
 (require 'bytecomp)
@@ -3449,25 +3451,32 @@ where:
   "Byte compile the `wisent-compile-grammar' FORM.
 Automatically called by the Emacs Lisp byte compiler as a
 `byte-compile' handler."
-  ;; Eval the `wisent-compile-grammar' form to obtain an LALR
-  ;; automaton internal data structure.  Then, because the internal
-  ;; data structure contains an obarray, convert it to a lisp form so
-  ;; it can be byte-compiled.
   (byte-compile-form
-   ;; FIXME: we macroexpand here since `byte-compile-form' expects
-   ;; macroexpanded code, but that's just a workaround: for lexical-binding
-   ;; the lisp form should have to pass through closure-conversion and
-   ;; `wisent-byte-compile-grammar' is called much too late for that.
-   ;; Why isn't this `wisent-automaton-lisp-form' performed at
-   ;; macroexpansion time?  --Stef
    (macroexpand-all
     (wisent-automaton-lisp-form (eval form)))))
 
-;; FIXME: We shouldn't use a `byte-compile' handler.  Maybe using a hash-table
-;; instead of an obarray would work around the problem that obarrays
-;; aren't printable.  Then (put 'wisent-compile-grammar 'side-effect-free t).
-(put 'wisent-compile-grammar 'byte-compile 'wisent-byte-compile-grammar)
+(defun wisent-compile-grammar (grammar &optional start-list)
+  ;; This is kept for compatibility with FOO-wy.el files generated
+  ;; with older Emacsen.
+  (declare (obsolete wisent-compiled-grammar "Mar 2021"))
+  (wisent--compile-grammar grammar start-list))
+
+(put 'wisent-compile-grammar 'byte-compile #'wisent-byte-compile-grammar)
+
+;;;; --------------------------
+;;;; Byte compile input grammar
+;;;; --------------------------
 
+;; `wisent--compile-grammar' generates the actual parse table
+;; we need at run-time, but in order to be able to compile the code it
+;; contains, we need to "reify" it back into a piece of ELisp code
+;; which (re)builds it.
+;; This is needed for 2 reasons:
+;; - The parse tables include an obarray and these don't survive the print+read
+;;   steps involved in generating a `.elc' file and reading it back in.
+;; - Within the parse table vectors/obarrays we have ELisp functions which
+;;   we want to byte-compile, but if we were to just `quote' the table
+;;   we'd get them with the same non-compiled functions.
 (defun wisent-automaton-lisp-form (automaton)
   "Return a Lisp form that produces AUTOMATON.
 See also `wisent-compile-grammar' for more details on AUTOMATON."
@@ -3477,7 +3486,7 @@ See also `wisent-compile-grammar' for more details on AUTOMATON."
   (let ((obn (make-symbol "ob"))        ; Generated obarray name
         (obv (aref automaton 3))        ; Semantic actions obarray
         )
-    `(let ((,obn (make-vector 13 0)))
+    `(let ((,obn (obarray-make 13)))
        ;; Generate code to initialize the semantic actions obarray,
        ;; in local variable OBN.
        ,@(let (obcode)
@@ -3496,7 +3505,9 @@ See also `wisent-compile-grammar' for more details on AUTOMATON."
         ;; obarray.
         (vector
          ,@(mapcar
-            #'(lambda (state) ;; for each state
+            ;; Use name `st' rather than `state' since `state' is
+            ;; defined as dynbound in `semantic-actions' context above :-( !
+            #'(lambda (st) ;; for each state
                 `(list
                   ,@(mapcar
                      #'(lambda (tr) ;; for each transition
@@ -3507,7 +3518,7 @@ See also `wisent-compile-grammar' for more details on AUTOMATON."
                                `(cons ,(if (symbolp k) `(quote ,k) k)
                                       (intern-soft ,(symbol-name a) ,obn))
                              `(quote ,tr))))
-                     state)))
+                     st)))
             (aref automaton 0)))
         ;; The code of the goto table is unchanged.
         ,(aref automaton 1)
index edc5c5c7029af140d134719da6ed95c3c8be9f22..819ebd5dad5a3bfe567a480a19c6a5b80c104318 100644 (file)
@@ -286,12 +286,9 @@ Return the expanded expression."
 
 (defun wisent-grammar-parsetable-builder ()
   "Return the value of the parser table."
-  `(progn
-     ;; Ensure that the grammar [byte-]compiler is available.
-     (eval-when-compile (require 'semantic/wisent/comp))
-     (wisent-compile-grammar
-      ',(wisent-grammar-grammar)
-      ',(semantic-grammar-start))))
+  `(wisent-compiled-grammar
+    ,(wisent-grammar-grammar)
+    ,(semantic-grammar-start)))
 
 (defun wisent-grammar-setupcode-builder ()
   "Return the parser setup code."
@@ -305,7 +302,7 @@ Return the expanded expression."
           semantic-lex-types-obarray %s)\n\
     ;; Collect unmatched syntax lexical tokens\n\
     (add-hook 'wisent-discarding-token-functions\n\
-              'wisent-collect-unmatched-syntax nil t)"
+              #'wisent-collect-unmatched-syntax nil t)"
    (semantic-grammar-parsetable)
    (buffer-name)
    (semantic-grammar-keywordtable)
@@ -325,6 +322,7 @@ Menu items are appended to the common grammar menu.")
 (define-derived-mode wisent-grammar-mode semantic-grammar-mode "WY"
   "Major mode for editing Wisent grammars."
   (semantic-grammar-setup-menu wisent-grammar-menu)
+  (setq-local semantic-grammar-require-form '(require 'semantic/wisent))
   (semantic-install-function-overrides
    '((semantic-grammar-parsetable-builder . wisent-grammar-parsetable-builder)
      (semantic-grammar-setupcode-builder  . wisent-grammar-setupcode-builder))))
index d455c02d1b57ebf5a2a951f178a8a799da381709..adb9a30894e0a8c05989adf5897285a064bff582 100644 (file)
@@ -1,4 +1,4 @@
-;;; semantic/wisent/java-tags.el --- Java LALR parser for Emacs
+;;; semantic/wisent/java-tags.el --- Java LALR parser for Emacs  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2001-2006, 2009-2021 Free Software Foundation, Inc.
 
@@ -92,7 +92,7 @@ This function override `get-local-variables'."
 
 (define-mode-local-override semantic-analyze-unsplit-name java-mode (namelist)
   "Assemble the list of names NAMELIST into a namespace name."
-  (mapconcat 'identity namelist "."))
+  (mapconcat #'identity namelist "."))
 
 
 
index 684eea1d93d254e40edb279697a679b4d15677d1..9db51ad36b617c8c43d4cd938a967d158b03fa52 100644 (file)
@@ -1,4 +1,4 @@
-;;; semantic/wisent/javascript.el --- javascript parser support
+;;; semantic/wisent/javascript.el --- javascript parser support  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2005, 2009-2021 Free Software Foundation, Inc.
 
@@ -70,7 +70,7 @@ This function overrides `get-local-variables'."
   ;; Does javascript have identifiable local variables?
   nil)
 
-(define-mode-local-override semantic-tag-protection js-mode (tag &optional parent)
+(define-mode-local-override semantic-tag-protection js-mode (_tag &optional _parent)
   "Return protection information about TAG with optional PARENT.
 This function returns on of the following symbols:
    nil         - No special protection.  Language dependent.
@@ -85,7 +85,7 @@ The default behavior (if not overridden with `tag-protection'
 is to return a symbol based on type modifiers."
   nil)
 
-(define-mode-local-override semantic-analyze-scope-calculate-access js-mode (type scope)
+(define-mode-local-override semantic-analyze-scope-calculate-access js-mode (_type _scope)
   "Calculate the access class for TYPE as defined by the current SCOPE.
 Access is related to the :parents in SCOPE.  If type is a member of SCOPE
 then access would be `private'.  If TYPE is inherited by a member of SCOPE,
@@ -101,7 +101,7 @@ This is currently needed for the mozrepl omniscient database."
   (save-excursion
     (if point (goto-char point))
     (let* ((case-fold-search semantic-case-fold)
-          symlist tmp end)
+          tmp end) ;; symlist
       (with-syntax-table semantic-lex-syntax-table
        (save-excursion
          (when (looking-at "\\w\\|\\s_")
@@ -110,10 +110,11 @@ This is currently needed for the mozrepl omniscient database."
          (unless (re-search-backward "\\s-" (point-at-bol) t)
            (beginning-of-line))
          (setq tmp (buffer-substring-no-properties (point) end))
+         ;; (setq symlist
          (if (string-match "\\(.+\\)\\." tmp)
-           (setq symlist (list (match-string 1 tmp)
-                               (substring tmp (1+ (match-end 1)) (length tmp))))
-           (setq symlist (list tmp))))))))
+             (list (match-string 1 tmp)
+                   (substring tmp (1+ (match-end 1)) (length tmp)))
+           (list tmp)))))));; )
 
 ;;; Setup Function
 ;;
index 7769ad1961b06d373127a41be4b6a0fbffb8a32c..8732b2e975c26d9a84dc79ca1d41e6aebd6f45f3 100644 (file)
@@ -1,4 +1,4 @@
-;;; wisent-python.el --- Semantic support for Python
+;;; wisent-python.el --- Semantic support for Python  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2002, 2004, 2006-2021 Free Software Foundation, Inc.
 
@@ -464,19 +464,19 @@ To be implemented for Python!  For now just return nil."
 (define-mode-local-override semantic-tag-include-filename python-mode (tag)
   "Return a suitable path for (some) Python imports."
   (let ((name (semantic-tag-name tag)))
-    (concat (mapconcat 'identity (split-string name "\\.") "/") ".py")))
+    (concat (mapconcat #'identity (split-string name "\\.") "/") ".py")))
 
 ;; Override ctxt-current-function/assignment defaults, since they do
 ;; not work properly with Python code, even leading to endless loops
 ;; (see bug #xxxxx).
-(define-mode-local-override semantic-ctxt-current-function python-mode (&optional point)
+(define-mode-local-override semantic-ctxt-current-function python-mode (&optional _point)
   "Return the current function call the cursor is in at POINT.
 The function returned is the one accepting the arguments that
 the cursor is currently in.  It will not return function symbol if the
 cursor is on the text representing that function."
   nil)
 
-(define-mode-local-override semantic-ctxt-current-assignment python-mode (&optional point)
+(define-mode-local-override semantic-ctxt-current-assignment python-mode (&optional _point)
   "Return the current assignment near the cursor at POINT.
 Return a list as per `semantic-ctxt-current-symbol'.
 Return nil if there is nothing relevant."
index 26cf87f8425054d94d756c9e657420c960d050d7..df1fd73e29ee845ca79b749557706b02d7cc55e9 100644 (file)
@@ -1,4 +1,4 @@
-;;; semantic/wisent/wisent.el --- GNU Bison for Emacs - Runtime
+;;; semantic/wisent/wisent.el --- GNU Bison for Emacs - Runtime  -*- lexical-binding: t; -*-
 
 ;;; Copyright (C) 2002-2007, 2009-2021 Free Software Foundation, Inc.
 
@@ -139,7 +139,7 @@ POSITIONS are available."
   "Print a one-line message if `wisent-parse-verbose-flag' is set.
 Pass STRING and ARGS arguments to `message'."
   (and wisent-parse-verbose-flag
-       (apply 'message string args)))
+       (apply #'message string args)))
 \f
 ;;;; --------------------
 ;;;; The LR parser engine
@@ -147,13 +147,11 @@ Pass STRING and ARGS arguments to `message'."
 
 (defcustom wisent-parse-max-stack-size 500
   "The parser stack size."
-  :type 'integer
-  :group 'wisent)
+  :type 'integer)
 
 (defcustom wisent-parse-max-recover 3
   "Number of tokens to shift before turning off error status."
-  :type 'integer
-  :group 'wisent)
+  :type 'integer)
 
 (defvar wisent-discarding-token-functions nil
   "List of functions to be called when discarding a lexical token.
@@ -397,9 +395,9 @@ automaton has only one entry point."
             (wisent-error
              (format "Syntax error, unexpected %s, expecting %s"
                      (wisent-token-to-string wisent-input)
-                     (mapconcat 'wisent-item-to-string
+                     (mapconcat #'wisent-item-to-string
                                 (delq wisent-error-term
-                                      (mapcar 'car (cdr choices)))
+                                      (mapcar #'car (cdr choices)))
                                 ", "))))
         ;; Increment the error counter
         (setq wisent-nerrs (1+ wisent-nerrs))