* * lisp/cedet/semantic: Use lexical-binding in the generated grammars
* admin/grammars/c.by (typesimple): Bind `semantic-c-classname` dynamically. * lisp/cedet/semantic/bovine.el: Use lexical-binding. (semantic-lambda): Silence warnings if the `vals` arg is not used. * lisp/cedet/semantic/grammar-wy.el: Re-generate. * lisp/cedet/semantic/bovine/grammar.el: Use lexical-binding. (bovine-grammar-expand-action): Silence warnings if some of the `vals`, `start`, or `end` args is not used. (bovine--make-parser-1): Use lexical-binding in the generated files. * lisp/cedet/semantic/wisent/grammar.el: Use lexical-binding. (wisent--make-parser-1): Use lexical-binding in the generated files.
This commit is contained in:
parent
4b5155673d
commit
6d580dee30
7 changed files with 236 additions and 222 deletions
|
@ -415,7 +415,7 @@ typesimple
|
|||
: struct-or-class opt-class opt-name opt-template-specifier
|
||||
opt-class-parents semantic-list
|
||||
(TYPE-TAG (car $3) (car $1)
|
||||
(let ((semantic-c-classname (cons (car ,$3) (car ,$1))))
|
||||
(dlet ((semantic-c-classname (cons (car ,$3) (car ,$1))))
|
||||
(EXPANDFULL $6 classsubparts))
|
||||
$5
|
||||
:template-specifier $4
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
(setq-local eieio-ede-old-variables ov)))
|
||||
|
||||
;;;###autoload
|
||||
(defalias 'customize-project 'ede-customize-project)
|
||||
(defalias 'customize-project #'ede-customize-project)
|
||||
|
||||
;;;###autoload
|
||||
(defun ede-customize-current-target()
|
||||
|
@ -65,7 +65,7 @@
|
|||
(ede-customize-target ede-object))
|
||||
|
||||
;;;###autoload
|
||||
(defalias 'customize-target 'ede-customize-current-target)
|
||||
(defalias 'customize-target #'ede-customize-current-target)
|
||||
|
||||
(defun ede-customize-target (obj)
|
||||
"Edit fields of the current target through EIEIO & Custom.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; semantic/bovine.el --- LL Parser/Analyzer core.
|
||||
;;; semantic/bovine.el --- LL Parser/Analyzer core -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 1999-2004, 2006-2007, 2009-2021 Free Software
|
||||
;; Foundation, Inc.
|
||||
|
@ -54,6 +54,7 @@ Use this to detect infinite recursion during a parse.")
|
|||
"Create a lambda expression to return a list including RETURN-VAL.
|
||||
The return list is a lambda expression to be used in a bovine table."
|
||||
`(lambda (vals start end)
|
||||
(ignore vals)
|
||||
(append ,@return-val (list start end))))
|
||||
|
||||
;;; Semantic Bovination
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; semantic/bovine/grammar.el --- Bovine's input grammar mode
|
||||
;;; semantic/bovine/grammar.el --- Bovine's input grammar mode -*- lexical-binding: t; -*-
|
||||
;;
|
||||
;; Copyright (C) 2002-2021 Free Software Foundation, Inc.
|
||||
;;
|
||||
|
@ -243,7 +243,8 @@ QUOTEMODE is the mode in which quoted symbols are slurred."
|
|||
(insert "\n")
|
||||
(cond
|
||||
((eq (car sexp) 'EXPAND)
|
||||
(insert ",(lambda (vals start end)")
|
||||
(insert ",(lambda (vals start end)"
|
||||
"\n(ignore vals start end)")
|
||||
;; The EXPAND macro definition is mandatory
|
||||
(bovine-grammar-expand-form
|
||||
(apply (cdr (assq 'EXPAND bovine--grammar-macros)) (cdr sexp))
|
||||
|
@ -520,7 +521,8 @@ Menu items are appended to the common grammar menu.")
|
|||
(goto-char (point-min))
|
||||
(delete-region (point-min) (line-end-position))
|
||||
(insert ";;; " packagename
|
||||
" --- Generated parser support file")
|
||||
" --- Generated parser support file "
|
||||
"-*- lexical-binding:t -*-")
|
||||
(delete-trailing-whitespace)
|
||||
(re-search-forward ";;; \\(.*\\) ends here")
|
||||
(replace-match packagename nil nil nil 1)))))
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; semantic/grammar-wy.el --- Generated parser support file
|
||||
;;; semantic/grammar-wy.el --- Generated parser support file -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2002-2004, 2009-2021 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2002-2021 Free Software Foundation, Inc.
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
|
@ -23,8 +23,9 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
(require 'semantic)
|
||||
|
||||
(require 'semantic/lex)
|
||||
(eval-when-compile (require 'semantic/bovine))
|
||||
|
||||
;;; Prologue
|
||||
;;
|
||||
(defvar semantic-grammar-lex-c-char-re)
|
||||
|
@ -36,16 +37,20 @@
|
|||
|
||||
;;; Declarations
|
||||
;;
|
||||
(eval-and-compile (defconst semantic-grammar-wy--expected-conflicts
|
||||
nil
|
||||
"The number of expected shift/reduce conflicts in this grammar."))
|
||||
|
||||
(defconst semantic-grammar-wy--keyword-table
|
||||
(semantic-lex-make-keyword-table
|
||||
'(("%default-prec" . DEFAULT-PREC)
|
||||
("%no-default-prec" . NO-DEFAULT-PREC)
|
||||
("%keyword" . KEYWORD)
|
||||
("%expectedconflicts" . EXPECTEDCONFLICTS)
|
||||
("%languagemode" . LANGUAGEMODE)
|
||||
("%left" . LEFT)
|
||||
("%nonassoc" . NONASSOC)
|
||||
("%package" . PACKAGE)
|
||||
("%expectedconflicts" . EXPECTEDCONFLICTS)
|
||||
("%provide" . PROVIDE)
|
||||
("%prec" . PREC)
|
||||
("%put" . PUT)
|
||||
|
@ -111,239 +116,239 @@
|
|||
(eval-when-compile
|
||||
(require 'semantic/wisent/comp))
|
||||
(wisent-compile-grammar
|
||||
'((DEFAULT-PREC NO-DEFAULT-PREC KEYWORD LANGUAGEMODE EXPECTEDCONFLICTS LEFT NONASSOC PACKAGE 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)
|
||||
'((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))
|
||||
((epilogue))
|
||||
((declaration))
|
||||
((nonterminal))
|
||||
((PERCENT_PERCENT)))
|
||||
(prologue
|
||||
((PROLOGUE)
|
||||
(wisent-raw-tag
|
||||
((PROLOGUE)
|
||||
(wisent-raw-tag
|
||||
(semantic-tag-new-code "prologue" nil))))
|
||||
(epilogue
|
||||
((EPILOGUE)
|
||||
(wisent-raw-tag
|
||||
((EPILOGUE)
|
||||
(wisent-raw-tag
|
||||
(semantic-tag-new-code "epilogue" nil))))
|
||||
(declaration
|
||||
((decl)
|
||||
(eval $1)))
|
||||
((decl)
|
||||
(eval $1)))
|
||||
(decl
|
||||
((default_prec_decl))
|
||||
((no_default_prec_decl))
|
||||
((languagemode_decl))
|
||||
((expectedconflicts_decl))
|
||||
((package_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))
|
||||
((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)
|
||||
((DEFAULT-PREC)
|
||||
`(wisent-raw-tag
|
||||
(semantic-tag "default-prec" 'assoc :value
|
||||
'("t")))))
|
||||
(no_default_prec_decl
|
||||
((NO-DEFAULT-PREC)
|
||||
`(wisent-raw-tag
|
||||
((NO-DEFAULT-PREC)
|
||||
`(wisent-raw-tag
|
||||
(semantic-tag "default-prec" 'assoc :value
|
||||
'("nil")))))
|
||||
'("nil")))))
|
||||
(languagemode_decl
|
||||
((LANGUAGEMODE symbols)
|
||||
`(wisent-raw-tag
|
||||
((LANGUAGEMODE symbols)
|
||||
`(wisent-raw-tag
|
||||
(semantic-tag ',(car $2)
|
||||
'languagemode :rest ',(cdr $2)))))
|
||||
(expectedconflicts_decl
|
||||
((EXPECTEDCONFLICTS symbols)
|
||||
`(wisent-raw-tag
|
||||
(semantic-tag ',(car $2)
|
||||
'expectedconflicts :rest ',(cdr $2)))))
|
||||
'languagemode :rest ',(cdr $2)))))
|
||||
(package_decl
|
||||
((PACKAGE SYMBOL)
|
||||
`(wisent-raw-tag
|
||||
((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
|
||||
((PROVIDE SYMBOL)
|
||||
`(wisent-raw-tag
|
||||
(semantic-tag ',$2 'provide))))
|
||||
(precedence_decl
|
||||
((associativity token_type_opt items)
|
||||
`(wisent-raw-tag
|
||||
((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")))
|
||||
((LEFT)
|
||||
(progn "left"))
|
||||
((RIGHT)
|
||||
(progn "right"))
|
||||
((NONASSOC)
|
||||
(progn "nonassoc")))
|
||||
(put_decl
|
||||
((PUT put_name put_value)
|
||||
`(wisent-raw-tag
|
||||
((PUT put_name put_value)
|
||||
`(wisent-raw-tag
|
||||
(semantic-tag ',$2 'put :value ',(list $3))))
|
||||
((PUT put_name put_value_list)
|
||||
`(wisent-raw-tag
|
||||
((PUT put_name put_value_list)
|
||||
`(wisent-raw-tag
|
||||
(semantic-tag ',$2 'put :value ',$3)))
|
||||
((PUT put_name_list put_value)
|
||||
`(wisent-raw-tag
|
||||
((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
|
||||
'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 :rest ',(cdr $2)
|
||||
:value ',$3))))
|
||||
(put_name_list
|
||||
((BRACE_BLOCK)
|
||||
(mapcar 'semantic-tag-name
|
||||
(semantic-parse-region
|
||||
((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
|
||||
((LBRACE)
|
||||
nil)
|
||||
((RBRACE)
|
||||
nil)
|
||||
((put_name)
|
||||
(wisent-raw-tag
|
||||
(semantic-tag $1 'put-name))))
|
||||
(put_name
|
||||
((SYMBOL))
|
||||
((token_type)))
|
||||
((SYMBOL))
|
||||
((token_type)))
|
||||
(put_value_list
|
||||
((BRACE_BLOCK)
|
||||
(mapcar 'semantic-tag-code-detail
|
||||
(semantic-parse-region
|
||||
((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
|
||||
((LBRACE)
|
||||
nil)
|
||||
((RBRACE)
|
||||
nil)
|
||||
((put_value)
|
||||
(wisent-raw-tag
|
||||
(semantic-tag-new-code "put-value" $1))))
|
||||
(put_value
|
||||
((SYMBOL any_value)
|
||||
(cons $1 $2)))
|
||||
((SYMBOL any_value)
|
||||
(cons $1 $2)))
|
||||
(scopestart_decl
|
||||
((SCOPESTART SYMBOL)
|
||||
`(wisent-raw-tag
|
||||
((SCOPESTART SYMBOL)
|
||||
`(wisent-raw-tag
|
||||
(semantic-tag ',$2 'scopestart))))
|
||||
(quotemode_decl
|
||||
((QUOTEMODE SYMBOL)
|
||||
`(wisent-raw-tag
|
||||
((QUOTEMODE SYMBOL)
|
||||
`(wisent-raw-tag
|
||||
(semantic-tag ',$2 'quotemode))))
|
||||
(start_decl
|
||||
((START symbols)
|
||||
`(wisent-raw-tag
|
||||
((START symbols)
|
||||
`(wisent-raw-tag
|
||||
(semantic-tag ',(car $2)
|
||||
'start :rest ',(cdr $2)))))
|
||||
'start :rest ',(cdr $2)))))
|
||||
(keyword_decl
|
||||
((KEYWORD SYMBOL string_value)
|
||||
`(wisent-raw-tag
|
||||
((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
|
||||
((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
|
||||
:type ',$2 :value ',$4)))
|
||||
((TOKEN token_type_opt symbols)
|
||||
`(wisent-raw-tag
|
||||
(semantic-tag ',(car $3)
|
||||
'token :type ',$2 :rest ',(cdr $3)))))
|
||||
'token :type ',$2 :rest ',(cdr $3)))))
|
||||
(token_type_opt
|
||||
(nil)
|
||||
((token_type)))
|
||||
(nil)
|
||||
((token_type)))
|
||||
(token_type
|
||||
((LT SYMBOL GT)
|
||||
(progn $2)))
|
||||
((LT SYMBOL GT)
|
||||
(progn $2)))
|
||||
(type_decl
|
||||
((TYPE token_type plist_opt)
|
||||
`(wisent-raw-tag
|
||||
((TYPE token_type plist_opt)
|
||||
`(wisent-raw-tag
|
||||
(semantic-tag ',$2 'type :value ',$3))))
|
||||
(plist_opt
|
||||
(nil)
|
||||
((plist)))
|
||||
(nil)
|
||||
((plist)))
|
||||
(plist
|
||||
((plist put_value)
|
||||
(append
|
||||
((plist put_value)
|
||||
(append
|
||||
(list $2)
|
||||
$1))
|
||||
((put_value)
|
||||
(list $1)))
|
||||
((put_value)
|
||||
(list $1)))
|
||||
(use_name_list
|
||||
((BRACE_BLOCK)
|
||||
(mapcar 'semantic-tag-name
|
||||
(semantic-parse-region
|
||||
((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
|
||||
((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
|
||||
((USE-MACROS SYMBOL use_name_list)
|
||||
`(wisent-raw-tag
|
||||
(semantic-tag "macro" 'macro :type ',$2 :value ',$3))))
|
||||
(string_value
|
||||
((STRING)
|
||||
(read $1)))
|
||||
((STRING)
|
||||
(read $1)))
|
||||
(any_value
|
||||
((SYMBOL))
|
||||
((STRING))
|
||||
((PAREN_BLOCK))
|
||||
((PREFIXED_LIST))
|
||||
((SEXP)))
|
||||
((SYMBOL))
|
||||
((STRING))
|
||||
((PAREN_BLOCK))
|
||||
((PREFIXED_LIST))
|
||||
((SEXP)))
|
||||
(symbols
|
||||
((lifo_symbols)
|
||||
(nreverse $1)))
|
||||
((lifo_symbols)
|
||||
(nreverse $1)))
|
||||
(lifo_symbols
|
||||
((lifo_symbols SYMBOL)
|
||||
(cons $2 $1))
|
||||
((SYMBOL)
|
||||
(list $1)))
|
||||
((lifo_symbols SYMBOL)
|
||||
(cons $2 $1))
|
||||
((SYMBOL)
|
||||
(list $1)))
|
||||
(nonterminal
|
||||
((SYMBOL
|
||||
((SYMBOL
|
||||
(setq semantic-grammar-wy--nterm $1 semantic-grammar-wy--rindx 0)
|
||||
COLON rules SEMI)
|
||||
(wisent-raw-tag
|
||||
(wisent-raw-tag
|
||||
(semantic-tag $1 'nonterminal :children $4))))
|
||||
(rules
|
||||
((lifo_rules)
|
||||
(apply 'nconc
|
||||
(nreverse $1))))
|
||||
((lifo_rules)
|
||||
(apply 'nconc
|
||||
(nreverse $1))))
|
||||
(lifo_rules
|
||||
((lifo_rules OR rule)
|
||||
(cons $3 $1))
|
||||
((rule)
|
||||
(list $1)))
|
||||
((lifo_rules OR rule)
|
||||
(cons $3 $1))
|
||||
((rule)
|
||||
(list $1)))
|
||||
(rule
|
||||
((rhs)
|
||||
(let*
|
||||
((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))
|
||||
(1+ semantic-grammar-wy--rindx))
|
||||
(while rhs
|
||||
(setq elt
|
||||
(car rhs)
|
||||
|
@ -359,10 +364,10 @@
|
|||
(if
|
||||
(or action comps)
|
||||
(setq comps
|
||||
(cons elt comps)
|
||||
semantic-grammar-wy--rindx
|
||||
(1+ semantic-grammar-wy--rindx))
|
||||
(setq action
|
||||
(cons elt comps)
|
||||
semantic-grammar-wy--rindx
|
||||
(1+ semantic-grammar-wy--rindx))
|
||||
(setq action
|
||||
(car elt))))
|
||||
(t
|
||||
(setq comps
|
||||
|
@ -375,46 +380,46 @@
|
|||
(if comps "group" "empty")
|
||||
:value comps :prec prec :expr action))))))
|
||||
(rhs
|
||||
(nil)
|
||||
((rhs item)
|
||||
(cons $2 $1))
|
||||
((rhs action)
|
||||
(cons
|
||||
(nil)
|
||||
((rhs item)
|
||||
(cons $2 $1))
|
||||
((rhs action)
|
||||
(cons
|
||||
(list $2)
|
||||
$1))
|
||||
((rhs PREC item)
|
||||
(cons
|
||||
((rhs PREC item)
|
||||
(cons
|
||||
(vector $3)
|
||||
$1)))
|
||||
(action
|
||||
((PAREN_BLOCK))
|
||||
((PREFIXED_LIST))
|
||||
((BRACE_BLOCK)
|
||||
(format "(progn\n%s)"
|
||||
(let
|
||||
((PAREN_BLOCK))
|
||||
((PREFIXED_LIST))
|
||||
((BRACE_BLOCK)
|
||||
(format "(progn\n%s)"
|
||||
(let
|
||||
((s $1))
|
||||
(if
|
||||
(string-match "^{[\r\n\t ]*" s)
|
||||
(string-match "^{[
\n ]*" s)
|
||||
(setq s
|
||||
(substring s
|
||||
(match-end 0))))
|
||||
(match-end 0))))
|
||||
(if
|
||||
(string-match "[\r\n\t ]*}$" s)
|
||||
(string-match "[
\n ]*}$" s)
|
||||
(setq s
|
||||
(substring s 0
|
||||
(match-beginning 0))))
|
||||
(match-beginning 0))))
|
||||
s))))
|
||||
(items
|
||||
((lifo_items)
|
||||
(nreverse $1)))
|
||||
((lifo_items)
|
||||
(nreverse $1)))
|
||||
(lifo_items
|
||||
((lifo_items item)
|
||||
(cons $2 $1))
|
||||
((item)
|
||||
(list $1)))
|
||||
((lifo_items item)
|
||||
(cons $2 $1))
|
||||
((item)
|
||||
(list $1)))
|
||||
(item
|
||||
((SYMBOL))
|
||||
((CHARACTER))))
|
||||
((SYMBOL))
|
||||
((CHARACTER))))
|
||||
'(grammar prologue epilogue declaration nonterminal rule put_names put_values use_names)))
|
||||
"Parser table.")
|
||||
|
||||
|
@ -423,17 +428,38 @@
|
|||
(semantic-install-function-overrides
|
||||
'((semantic-parse-stream . wisent-parse-stream)))
|
||||
(setq semantic-parser-name "LALR"
|
||||
semantic--parse-table semantic-grammar-wy--parse-table
|
||||
semantic-debug-parser-source "grammar.wy"
|
||||
semantic-flex-keywords-obarray semantic-grammar-wy--keyword-table
|
||||
semantic-lex-types-obarray semantic-grammar-wy--token-table)
|
||||
semantic--parse-table semantic-grammar-wy--parse-table
|
||||
semantic-debug-parser-source "grammar.wy"
|
||||
semantic-flex-keywords-obarray semantic-grammar-wy--keyword-table
|
||||
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))
|
||||
|
||||
|
||||
;;; Analyzers
|
||||
;;
|
||||
(define-lex-regex-type-analyzer semantic-grammar-wy--<symbol>-regexp-analyzer
|
||||
"regexp analyzer for <symbol> tokens."
|
||||
":?\\(\\sw\\|\\s_\\)+"
|
||||
'((PERCENT_PERCENT . "\\`%%\\'"))
|
||||
'SYMBOL)
|
||||
|
||||
(define-lex-keyword-type-analyzer semantic-grammar-wy--<keyword>-keyword-analyzer
|
||||
"keyword analyzer for <keyword> tokens."
|
||||
"\\(\\sw\\|\\s_\\)+")
|
||||
|
||||
(define-lex-regex-type-analyzer semantic-grammar-wy--<char>-regexp-analyzer
|
||||
"regexp analyzer for <char> tokens."
|
||||
semantic-grammar-lex-c-char-re
|
||||
nil
|
||||
'CHARACTER)
|
||||
|
||||
(define-lex-sexp-type-analyzer semantic-grammar-wy--<qlist>-sexp-analyzer
|
||||
"sexp analyzer for <qlist> tokens."
|
||||
"\\s'\\s-*("
|
||||
'PREFIXED_LIST)
|
||||
|
||||
(define-lex-block-type-analyzer semantic-grammar-wy--<block>-block-analyzer
|
||||
"block analyzer for <block> tokens."
|
||||
"\\s(\\|\\s)"
|
||||
|
@ -443,28 +469,6 @@
|
|||
("}" RBRACE))
|
||||
)
|
||||
|
||||
(define-lex-regex-type-analyzer semantic-grammar-wy--<char>-regexp-analyzer
|
||||
"regexp analyzer for <char> tokens."
|
||||
semantic-grammar-lex-c-char-re
|
||||
nil
|
||||
'CHARACTER)
|
||||
|
||||
(define-lex-regex-type-analyzer semantic-grammar-wy--<symbol>-regexp-analyzer
|
||||
"regexp analyzer for <symbol> tokens."
|
||||
":?\\(\\sw\\|\\s_\\)+"
|
||||
'((PERCENT_PERCENT . "\\`%%\\'"))
|
||||
'SYMBOL)
|
||||
|
||||
(define-lex-sexp-type-analyzer semantic-grammar-wy--<qlist>-sexp-analyzer
|
||||
"sexp analyzer for <qlist> tokens."
|
||||
"\\s'\\s-*("
|
||||
'PREFIXED_LIST)
|
||||
|
||||
(define-lex-sexp-type-analyzer semantic-grammar-wy--<string>-sexp-analyzer
|
||||
"sexp analyzer for <string> tokens."
|
||||
"\\s\""
|
||||
'STRING)
|
||||
|
||||
(define-lex-string-type-analyzer semantic-grammar-wy--<punctuation>-string-analyzer
|
||||
"string analyzer for <punctuation> tokens."
|
||||
"\\(\\s.\\|\\s$\\|\\s'\\)+"
|
||||
|
@ -475,9 +479,10 @@
|
|||
(COLON . ":"))
|
||||
'punctuation)
|
||||
|
||||
(define-lex-keyword-type-analyzer semantic-grammar-wy--<keyword>-keyword-analyzer
|
||||
"keyword analyzer for <keyword> tokens."
|
||||
"\\(\\sw\\|\\s_\\)+")
|
||||
(define-lex-sexp-type-analyzer semantic-grammar-wy--<string>-sexp-analyzer
|
||||
"sexp analyzer for <string> tokens."
|
||||
"\\s\""
|
||||
'STRING)
|
||||
|
||||
(define-lex-sexp-type-analyzer semantic-grammar-wy--<sexp>-sexp-analyzer
|
||||
"sexp analyzer for <sexp> tokens."
|
||||
|
@ -493,4 +498,9 @@
|
|||
|
||||
(provide 'semantic/grammar-wy)
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-update-autoloads: t
|
||||
;; End:
|
||||
|
||||
;;; semantic/grammar-wy.el ends here
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; semantic/wisent/grammar.el --- Wisent's input grammar mode
|
||||
;;; semantic/wisent/grammar.el --- Wisent's input grammar mode -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2002-2021 Free Software Foundation, Inc.
|
||||
;;
|
||||
|
@ -228,7 +228,7 @@ Keep order of declaration in the WY file without duplicates."
|
|||
Return the expanded expression."
|
||||
(if (or (atom expr) (semantic-grammar-quote-p (car expr)))
|
||||
expr ;; Just return atom or quoted expression.
|
||||
(let* ((expr (mapcar 'wisent-grammar-expand-macros expr))
|
||||
(let* ((expr (mapcar #'wisent-grammar-expand-macros expr))
|
||||
(macro (assq (car expr) wisent--grammar-macros)))
|
||||
(if macro ;; Expand Semantic built-in.
|
||||
(apply (cdr macro) (cdr expr))
|
||||
|
@ -514,7 +514,8 @@ Menu items are appended to the common grammar menu.")
|
|||
(goto-char (point-min))
|
||||
(delete-region (point-min) (line-end-position))
|
||||
(insert ";;; " packagename
|
||||
" --- Generated parser support file")
|
||||
" --- Generated parser support file "
|
||||
"-*- lexical-binding:t -*-")
|
||||
(re-search-forward ";;; \\(.*\\) ends here")
|
||||
(replace-match packagename nil nil nil 1)
|
||||
(delete-trailing-whitespace))))))
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
(defun minibuffer-prompt-properties--setter (symbol value)
|
||||
(set-default symbol value)
|
||||
(if (memq 'cursor-intangible value)
|
||||
(add-hook 'minibuffer-setup-hook 'cursor-intangible-mode)
|
||||
(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)
|
||||
;; Removing it is a bit trickier since it could have been added by someone
|
||||
;; else as well, so let's just not bother.
|
||||
))
|
||||
|
|
Loading…
Add table
Reference in a new issue