diff options
-rw-r--r-- | admin/grammars/README | 13 | ||||
-rw-r--r-- | admin/grammars/bovine-grammar.el | 62 | ||||
-rw-r--r-- | admin/grammars/grammar.wy | 434 | ||||
-rw-r--r-- | admin/grammars/srecode-template.wy | 235 | ||||
-rw-r--r-- | admin/grammars/wisent-grammar.el | 176 | ||||
-rw-r--r-- | lisp/cedet/ChangeLog | 8 | ||||
-rw-r--r-- | lisp/cedet/semantic/bovine/c-by.el | 2 | ||||
-rw-r--r-- | lisp/cedet/semantic/grammar-wy.el | 505 | ||||
-rw-r--r-- | lisp/cedet/semantic/wisent/javat-wy.el | 49 | ||||
-rw-r--r-- | lisp/cedet/semantic/wisent/js-wy.el | 106 | ||||
-rw-r--r-- | lisp/cedet/semantic/wisent/python-wy.el | 87 | ||||
-rw-r--r-- | lisp/cedet/srecode/srt-wy.el | 33 |
12 files changed, 1350 insertions, 360 deletions
diff --git a/admin/grammars/README b/admin/grammars/README index c8328bbc885..419797e0dcb 100644 --- a/admin/grammars/README +++ b/admin/grammars/README @@ -3,17 +3,8 @@ generate the parser data in the lisp/semantic/bovine/ and lisp/semantic/wisent/ directories. You can run the parser generators with -emacs -batch --no-site-file -l bovine-grammar.el -f semantic-mode \ - -f semantic-grammar-batch-build-packages *.by - -emacs -batch --no-site-file -l wisent-grammar.el -f semantic-mode \ - -f semantic-grammar-batch-build-packages *.wy - -The output files were subsequently edited by hand to fix copyright -headers, variable names (to follow library name conventions), and -feature names. These changes do not alter the code logic, and can be -viewed by diffing to the files in lisp/semantic/bovine/ and -lisp/semantic/wisent/. +emacs -batch -Q -l bovine-grammar.el -f bovine-make-parsers +emacs -batch -Q -l wisent-grammar.el -f wisent-make-parsers Currently, the parser files in lisp/ are not generated directly from these grammar files when making Emacs. This state of affairs, and the diff --git a/admin/grammars/bovine-grammar.el b/admin/grammars/bovine-grammar.el index 0e8756e1c5b..3ff15fab66f 100644 --- a/admin/grammars/bovine-grammar.el +++ b/admin/grammars/bovine-grammar.el @@ -454,4 +454,66 @@ Menu items are appended to the common grammar menu.") (provide 'semantic/bovine/grammar) +(defun bovine-make-parsers () + "Generate Emacs' built-in Bovine-based parser files." + (semantic-mode 1) + ;; Loop through each .by file in current directory, and run + ;; `semantic-grammar-batch-build-one-package' to build the grammar. + (dolist (f (directory-files default-directory nil ".by$")) + (let ((packagename + (condition-case err + (with-current-buffer (find-file-noselect f) + (semantic-grammar-create-package)) + (error (message "%s" (error-message-string err)) nil))) + lang) + (when (and packagename + (string-match "^semantic-\\(.*\\)-by.el$" packagename)) + (setq lang (match-string 1 packagename)) + (with-temp-buffer + (insert-file-contents packagename) + (setq buffer-file-name (expand-file-name packagename)) + ;; Fix copyright header: + (goto-char (point-min)) + (re-search-forward "^;; Author:") + (setq copyright-end (match-beginning 0)) + (re-search-forward "^;;; Code:\n") + (delete-region copyright-end (match-end 0)) + (goto-char copyright-end) + (insert ";; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: +;; +;; This file was generated from admin/grammars/" + lang ".by. + +;;; Code: + +\(require 'semantic/lex) +\(eval-when-compile (require 'semantic/bovine))\n") + (goto-char (point-min)) + (delete-region (point-min) (line-end-position)) + (insert ";;; semantic/bovine/" lang + "-by.el --- Generated parser support file") + (delete-trailing-whitespace) + ;; Fix footer: + (goto-char (point-max)) + (re-search-backward ".\n;;; Analyzers") + (delete-region (point) (point-max)) + (insert "(provide 'semantic/bovine/" lang "-by)\n\n") + (insert ";;; semantic/bovine/" lang "-by.el ends here\n") + (save-buffer)))))) + ;;; bovine-grammar.el ends here diff --git a/admin/grammars/grammar.wy b/admin/grammars/grammar.wy new file mode 100644 index 00000000000..18e8b814303 --- /dev/null +++ b/admin/grammars/grammar.wy @@ -0,0 +1,434 @@ +;;; semantic-grammar.wy -- LALR grammar of Semantic input grammars +;; +;; Copyright (C) 2002-2011 Free Software Foundation, Inc. +;; +;; Author: David Ponce <david@dponce.com> +;; Maintainer: David Ponce <david@dponce.com> +;; Created: 26 Aug 2002 +;; Keywords: syntax +;; X-RCS: $Id: semantic-grammar.wy,v 1.16 2005/09/30 20:20:27 zappo Exp $ + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +%{ +(defvar semantic-grammar-lex-c-char-re) + +;; Current parsed nonterminal name. +(defvar semantic-grammar-wy--nterm nil) +;; Index of rule in a nonterminal clause. +(defvar semantic-grammar-wy--rindx nil) +} + +%package semantic-grammar-wy + +%languagemode wy-mode + +;; Main +%start grammar +;; Reparse +%start prologue epilogue declaration nonterminal rule +;; EXPANDFULL +%start put_names put_values use_names + +;; Keywords +%type <keyword> +%keyword DEFAULT-PREC "%default-prec" +%keyword NO-DEFAULT-PREC "%no-default-prec" +%keyword KEYWORD "%keyword" +%keyword LANGUAGEMODE "%languagemode" +%keyword LEFT "%left" +%keyword NONASSOC "%nonassoc" +%keyword PACKAGE "%package" +%keyword PREC "%prec" +%keyword PUT "%put" +%keyword QUOTEMODE "%quotemode" +%keyword RIGHT "%right" +%keyword SCOPESTART "%scopestart" +%keyword START "%start" +%keyword TOKEN "%token" +%keyword TYPE "%type" +%keyword USE-MACROS "%use-macros" + +;; Literals +%type <string> +%token <string> STRING + +%type <symbol> syntax ":?\\(\\sw\\|\\s_\\)+" +%token <symbol> SYMBOL +%token <symbol> PERCENT_PERCENT "\\`%%\\'" + +%type <char> syntax semantic-grammar-lex-c-char-re +%token <char> CHARACTER + +%type <qlist> matchdatatype sexp syntax "\\s'\\s-*(" +%token <qlist> PREFIXED_LIST + +%type <sexp> matchdatatype sexp syntax "\\=" +%token <sexp> SEXP + +;; Don't generate these analyzers which needs special handling code. +%token <code> PROLOGUE "%{...%}" +%token <code> EPILOGUE "%%...EOF" + +;; Blocks & Parenthesis +%type <block> +%token <block> PAREN_BLOCK "(LPAREN RPAREN)" +%token <block> BRACE_BLOCK "(LBRACE RBRACE)" +%token <open-paren> LPAREN "(" +%token <close-paren> RPAREN ")" +%token <open-paren> LBRACE "{" +%token <close-paren> RBRACE "}" + +;; Punctuations +%type <punctuation> +%token <punctuation> COLON ":" +%token <punctuation> SEMI ";" +%token <punctuation> OR "|" +%token <punctuation> LT "<" +%token <punctuation> GT ">" + +%% + +grammar: + prologue + | epilogue + | declaration + | nonterminal + | PERCENT_PERCENT + ; + +;;; Prologue/Epilogue +;; +prologue: + PROLOGUE + (CODE-TAG "prologue" nil) + ; + +epilogue: + EPILOGUE + (CODE-TAG "epilogue" nil) + ; + +;;; Declarations +;; +declaration: + decl + (eval $1) + ; + +decl: + default_prec_decl + | no_default_prec_decl + | languagemode_decl + | package_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 + `(TAG "default-prec" 'assoc :value '("t")) + ; + +no_default_prec_decl: + NO-DEFAULT-PREC + `(TAG "default-prec" 'assoc :value '("nil")) + ; + +languagemode_decl: + LANGUAGEMODE symbols + `(TAG ',(car $2) 'languagemode :rest ',(cdr $2)) + ; + +package_decl: + PACKAGE SYMBOL + `(PACKAGE-TAG ',$2 nil) + ; + +precedence_decl: + associativity token_type_opt items + `(TAG ',$1 'assoc :type ',$2 :value ',$3) + ; + +associativity: + LEFT + (progn "left") + | RIGHT + (progn "right") + | NONASSOC + (progn "nonassoc") + ; + +put_decl: + PUT put_name put_value + `(TAG ',$2 'put :value ',(list $3)) + | PUT put_name put_value_list + `(TAG ',$2 'put :value ',$3) + | PUT put_name_list put_value + `(TAG ',(car $2) 'put :rest ',(cdr $2) :value ',(list $3)) + | PUT put_name_list put_value_list + `(TAG ',(car $2) 'put :rest ',(cdr $2) :value ',$3) + ; + +put_name_list: + BRACE_BLOCK + (mapcar 'semantic-tag-name (EXPANDFULL $1 put_names)) + ; + +put_names: + LBRACE + () + | RBRACE + () + | put_name + ;; Must return a list of Semantic tags to EXPANDFULL! + (TAG $1 'put-name) + ; + +put_name: + SYMBOL + | token_type + ; + +put_value_list: + BRACE_BLOCK + (mapcar 'semantic-tag-code-detail (EXPANDFULL $1 put_values)) + ; + +put_values: + LBRACE + () + | RBRACE + () + | put_value + ;; Must return a list of Semantic tags to EXPANDFULL! + (CODE-TAG "put-value" $1) + ; + +put_value: + SYMBOL any_value + (cons $1 $2) + ; + +scopestart_decl: + SCOPESTART SYMBOL + `(TAG ',$2 'scopestart) + ; + +quotemode_decl: + QUOTEMODE SYMBOL + `(TAG ',$2 'quotemode) + ; + +start_decl: + START symbols + `(TAG ',(car $2) 'start :rest ',(cdr $2)) + ; + +keyword_decl: + KEYWORD SYMBOL string_value + `(TAG ',$2 'keyword :value ',$3) + ; + +token_decl: + TOKEN token_type_opt SYMBOL string_value + `(TAG ',$3 ',(if $2 'token 'keyword) :type ',$2 :value ',$4) + | TOKEN token_type_opt symbols + `(TAG ',(car $3) 'token :type ',$2 :rest ',(cdr $3)) + ; + +token_type_opt: + ;; EMPTY + | token_type + ; + +token_type: + LT SYMBOL GT + (progn $2) + ; + +type_decl: + TYPE token_type plist_opt + `(TAG ',$2 'type :value ',$3) + ; + +plist_opt: + ;;EMPTY + | plist + ; + +plist: + plist put_value + (append (list $2) $1) + | put_value + (list $1) + ; + +use_name_list: + BRACE_BLOCK + (mapcar 'semantic-tag-name (EXPANDFULL $1 use_names)) + ; + +use_names: + LBRACE + () + | RBRACE + () + | SYMBOL + ;; Must return a list of Semantic tags to EXPANDFULL! + (TAG $1 'use-name) + ; + +use_macros_decl: + USE-MACROS SYMBOL use_name_list + `(TAG "macro" 'macro :type ',$2 :value ',$3) + ; + +string_value: + STRING + (read $1) + ; + +;; Return a Lisp readable form +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) + ; + +;;; Grammar rules +;; +nonterminal: + SYMBOL + (setq semantic-grammar-wy--nterm $1 + semantic-grammar-wy--rindx 0) + COLON rules SEMI + (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 + ;; precedence level + ((vectorp elt) + (if prec + (error "Duplicate %%prec in `%s:%d' rule" nterm rindx)) + (setq prec (aref elt 0))) + ;; action + ((consp elt) + ;; don't forget that rhs items are in reverse order, so + ;; the end-of-rule semantic action is the first item. + (if (or action comps) + ;; a mid-rule action + (setq comps (cons elt comps) + ;; keep rule and action index synchronized + semantic-grammar-wy--rindx + (1+ semantic-grammar-wy--rindx)) + ;; the end-of-rule action + (setq action (car elt)))) + ;; item + (t + (setq comps (cons elt comps))))) + (EXPANDTAG + (TAG (format "%s:%d" nterm rindx) 'rule + :type (if comps "group" "empty") + :value comps :prec prec :expr action))) + ; + +rhs: + ;; EMPTY + | 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\t ]*" s) + (setq s (substring s (match-end 0)))) + (if (string-match "[\r\n\t ]*}$" 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.wy ends here diff --git a/admin/grammars/srecode-template.wy b/admin/grammars/srecode-template.wy new file mode 100644 index 00000000000..4ff2d7e4e41 --- /dev/null +++ b/admin/grammars/srecode-template.wy @@ -0,0 +1,235 @@ +;;; srecode-template.wy --- Semantic Recoder Template parser + +;; Copyright (C) 2005-2011 Free Software Foundation, Inc. + +;; Author: Eric Ludlam <zappo@gnu.org> +;; Keywords: syntax +;; X-RCS: $Id: srecode-template.wy,v 1.10 2009-01-09 23:01:54 zappo Exp $ + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: +;; +;; Parser for the Semantic Recoder template language +;; +;; Semantic Recoder templates are based on Google Templates +;; and are at the bottom of the Semantic Recoder API. + +%languagemode srecode-mode + +%start template_file + +;;; KEYWORDS +%type <keyword> +%keyword SET "set" +%put SET summary "set <name> <value>" +%keyword SHOW "show" +%put SHOW summary "show <name> ; to show a section" +%keyword MACRO "macro" +%put MACRO summary "... macro \"string\" ..." +%keyword CONTEXT "context" +%put CONTEXT summary "context <name>" +%keyword TEMPLATE "template" +%put TEMPLATE summary "template <name>\\n <template definition>" +%keyword SECTIONDICTIONARY "sectiondictionary" +%put SECTIONDICTIONARY summary "sectiondictionary <name>\\n <dictionary entries>" +%keyword PROMPT "prompt" +%keyword DEFAULT "default" +%keyword DEFAULTMACRO "defaultmacro" +%keyword READ "read" +%put { PROMPT DEFAULT DEFAULTMACRO READ } summary "prompt <symbol> \"Describe Symbol: \" [default[macro] <lispsym>|\"valuetext\"] [read <lispsym>]" +%keyword BIND "bind" +%put BIND summary "bind \"<letter>\"" + +;;; Punctuation Types +%type <punctuation> syntax "\\s.+" +%type <newline> +%token <newline> newline + +%token <separator> TEMPLATE_BLOCK "^----" + +;;; Bland default types +%type <property> ":\\(\\w\\|\\s_\\)*" +%token <property> property + +%type <symbol> +%token <symbol> symbol + +%type <string> +%token <string> string + +%type <number> +%token <number> number + +%% + +template_file + : newline ( ) + | context + | prompt + | variable + | template + ; + +context + : CONTEXT symbol newline + (TAG $2 'context) + ; + +prompt + : PROMPT symbol string opt-default-fcn opt-read-fcn newline + (TAG $2 'prompt :text (read $3) :default $4 :read $5) + ; + +opt-default-fcn + : DEFAULT symbol + (progn (read $2)) + | DEFAULT string + (progn (read $2)) + | DEFAULTMACRO string + (progn (cons 'macro (read $2))) + | () + ; + +opt-read-fcn + : READ symbol + (progn (read $2)) + | () + ; + +variable + : SET symbol insertable-string-list newline + (VARIABLE-TAG $2 nil $3) + | SHOW symbol newline + (VARIABLE-TAG $2 nil t) + ; + +insertable-string-list + : insertable-string + (list $1) + | insertable-string-list insertable-string + (append $1 (list $2)) + ; + +insertable-string + : string + (read $1) + | MACRO string + (cons 'macro (read $2)) + ; + +template + : TEMPLATE templatename opt-dynamic-arguments newline + opt-string + opt-section-dictionaries + TEMPLATE_BLOCK newline + opt-bind + (FUNCTION-TAG $2 nil $3 :documentation $5 :code $7 + :dictionaries $6 :binding $9 ) + ; + +templatename + : symbol + | PROMPT + | CONTEXT + | TEMPLATE + | DEFAULT + | MACRO + | DEFAULTMACRO + | READ + | SET + ; + +opt-dynamic-arguments + : property opt-dynamic-arguments + (cons $1 $2) + | () + ; + +opt-string + : string newline + ( read $1 ) + | () + ; + +opt-section-dictionaries + : () ;; EMPTY + | section-dictionary-list + ; + +section-dictionary-list + : one-section-dictionary + (list $1) + | section-dictionary-list one-section-dictionary + (append $1 (list $2)) + ; + +one-section-dictionary + : SECTIONDICTIONARY string newline + variable-list + (cons (read $2) $4) + ; + +variable-list + : variable + (EXPANDTAG $1) + | variable-list variable + (append $1 (EXPANDTAG $2)) + ; + +opt-bind + : BIND string newline + ( read $2 ) + | () + ; + +%% +(define-lex-simple-regex-analyzer srecode-template-property-analyzer + "Detect and create a dynamic argument properties." + ":\\(\\w\\|\\s_\\)*" 'property 0) + +(define-lex-regex-analyzer srecode-template-separator-block + "Detect and create a template quote block." + "^----\n" + (semantic-lex-push-token + (semantic-lex-token + 'TEMPLATE_BLOCK + (match-end 0) + (semantic-lex-unterminated-syntax-protection 'TEMPLATE_BLOCK + (goto-char (match-end 0)) + (re-search-forward "^----$") + (match-beginning 0)))) + (setq semantic-lex-end-point (point))) + + +(define-lex wisent-srecode-template-lexer + "Lexical analyzer that handles SRecode Template buffers. +It ignores whitespace, newlines and comments." + semantic-lex-newline + semantic-lex-ignore-whitespace + semantic-lex-ignore-newline + semantic-lex-ignore-comments + srecode-template-separator-block + srecode-template-wy--<keyword>-keyword-analyzer + srecode-template-property-analyzer + srecode-template-wy--<symbol>-regexp-analyzer + srecode-template-wy--<number>-regexp-analyzer + srecode-template-wy--<string>-sexp-analyzer + srecode-template-wy--<punctuation>-string-analyzer + semantic-lex-default-action + ) + +;;; wisent-dot.wy ends here diff --git a/admin/grammars/wisent-grammar.el b/admin/grammars/wisent-grammar.el index d7de1ee6f7b..98b0caee60b 100644 --- a/admin/grammars/wisent-grammar.el +++ b/admin/grammars/wisent-grammar.el @@ -358,4 +358,180 @@ Menu items are appended to the common grammar menu.") ) "Semantic grammar macros used in wisent grammars.") +(defvar wisent-make-parsers--emacs-license + ";; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.") + +(defvar wisent-make-parsers--python-license + ";; It is derived in part from the Python grammar, used under the +;; following license: +;; +;; PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +;; -------------------------------------------- +;; 1. This LICENSE AGREEMENT is between the Python Software Foundation +;; (\"PSF\"), and the Individual or Organization (\"Licensee\") accessing +;; and otherwise using this software (\"Python\") in source or binary +;; form and its associated documentation. +;; +;; 2. Subject to the terms and conditions of this License Agreement, +;; PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide +;; license to reproduce, analyze, test, perform and/or display +;; publicly, prepare derivative works, distribute, and otherwise use +;; Python alone or in any derivative version, provided, however, that +;; PSF's License Agreement and PSF's notice of copyright, i.e., +;; \"Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, +;; 2009, 2010 Python Software Foundation; All Rights Reserved\" are +;; retained in Python alone or in any derivative version prepared by +;; Licensee. +;; +;; 3. In the event Licensee prepares a derivative work that is based +;; on or incorporates Python or any part thereof, and wants to make +;; the derivative work available to others as provided herein, then +;; Licensee hereby agrees to include in any such work a brief summary +;; of the changes made to Python. +;; +;; 4. PSF is making Python available to Licensee on an \"AS IS\" +;; basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +;; IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +;; DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +;; FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +;; INFRINGE ANY THIRD PARTY RIGHTS. +;; +;; 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +;; FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A +;; RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR +;; ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. +;; +;; 6. This License Agreement will automatically terminate upon a +;; material breach of its terms and conditions. +;; +;; 7. Nothing in this License Agreement shall be deemed to create any +;; relationship of agency, partnership, or joint venture between PSF +;; and Licensee. This License Agreement does not grant permission to +;; use PSF trademarks or trade name in a trademark sense to endorse or +;; promote products or services of Licensee, or any third party. +;; +;; 8. By copying, installing or otherwise using Python, Licensee +;; agrees to be bound by the terms and conditions of this License +;; Agreement.") + +(defvar wisent-make-parsers--ecmascript-license + "\n;; It is derived from the grammar in the ECMAScript Language +;; Specification published at +;; +;; http://www.ecma-international.org/publications/standards/Ecma-262.htm +;; +;; and redistributed under the following license: +;; +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following conditions +;; are met: +;; +;; 1. Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; +;; 2. Redistributions in binary form must reproduce the above +;; copyright notice, this list of conditions and the following +;; disclaimer in the documentation and/or other materials provided +;; with the distribution. +;; +;; 3. Neither the name of the authors nor Ecma International may be +;; used to endorse or promote products derived from this software +;; without specific prior written permission. THIS SOFTWARE IS +;; PROVIDED BY THE ECMA INTERNATIONAL \"AS IS\" AND ANY EXPRESS OR +;; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +;; ARE DISCLAIMED. IN NO EVENT SHALL ECMA INTERNATIONAL BE LIABLE FOR +;; ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +;; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +;; OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +;; BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +;; USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +;; DAMAGE.") + +(defvar wisent-make-parsers--parser-file-name + `(("semantic-grammar-wy.el" + "semantic/grammar-wy") + ("srecode-template-wy.el" + "srecode/srt-wy") + ("wisent-javascript-jv-wy.el" + "semantic/wisent/js-wy" + "Copyright (C) 1998-2011 Ecma International" + ,wisent-make-parsers--ecmascript-license) + ("wisent-java-tags-wy.el" + "semantic/wisent/javat-wy") + ("wisent-python-wy.el" + "semantic/wisent/python-wy" + "Copyright (C) 2001-2010 Python Software Foundation" + ,wisent-make-parsers--python-license))) + +(defun wisent-make-parsers () + "Generate Emacs' built-in Wisent-based parser files." + (semantic-mode 1) + ;; Loop through each .wy file in current directory, and run + ;; `semantic-grammar-batch-build-one-package' to build the grammar. + (dolist (f (directory-files default-directory nil ".wy$")) + (let ((packagename + (condition-case err + (with-current-buffer (find-file-noselect f) + (semantic-grammar-create-package)) + (error (message "%s" (error-message-string err)) nil))) + output-data) + (when (setq output-data (assoc packagename wisent-make-parsers--parser-file-name)) + (let ((require-name (nth 1 output-data)) + (additional-copyright (nth 2 output-data)) + (additional-license (nth 3 output-data)) + copyright-end) + ;; Touch up the generated parsers for Emacs integration. + (with-temp-buffer + (insert-file-contents packagename) + ;; Fix copyright header: + (goto-char (point-min)) + (when additional-copyright + (re-search-forward "Copyright (C).*$") + (insert "\n;; " additional-copyright)) + (re-search-forward "^;; Author:") + (setq copyright-end (match-beginning 0)) + (re-search-forward "^;;; Code:\n") + (delete-region copyright-end (match-end 0)) + (goto-char copyright-end) + (insert wisent-make-parsers--emacs-license) + (insert "\n\n;;; Commentary: +;; +;; This file was generated from admin/grammars/" + f ".") + (when additional-license + (insert "\n" additional-license)) + (insert "\n\n;;; Code:\n +\(require 'semantic/lex)\n") + (goto-char (point-min)) + (delete-region (point-min) (line-end-position)) + (insert ";;; " require-name + ".el --- Generated parser support file") + (delete-trailing-whitespace) + (re-search-forward ";;\n(require 'semantic/lex)\n") + (delete-region (match-beginning 0) (match-end 0)) + ;; Fix footer: + (goto-char (point-max)) + (re-search-backward "^(provide") + (delete-region (match-beginning 0) (point-max)) + (goto-char (point-max)) + (insert "(provide '" require-name ")\n\n") + (insert ";;; " require-name ".el ends here\n") + (write-region nil nil (expand-file-name packagename)))))))) + ;;; wisent-grammar.el ends here diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog index 6b56e20df13..f3ff89ddd7f 100644 --- a/lisp/cedet/ChangeLog +++ b/lisp/cedet/ChangeLog @@ -1,3 +1,11 @@ +2011-11-26 Chong Yidong <cyd@gnu.org> + + * semantic/wisent/python-wy.el: + * semantic/wisent/js-wy.el: + * semantic/wisent/javat-wy.el: + * semantic/bovine/c-by.el: + * semantic/grammar-wy.el: Regenerate. + 2011-11-24 Juanma Barranquero <lekktu@gmail.com> * semantic/lex-spp.el (semantic-lex-spp-first-token-arg-list): Fix typo. diff --git a/lisp/cedet/semantic/bovine/c-by.el b/lisp/cedet/semantic/bovine/c-by.el index 31489a4f625..99429f01acd 100644 --- a/lisp/cedet/semantic/bovine/c-by.el +++ b/lisp/cedet/semantic/bovine/c-by.el @@ -1,6 +1,6 @@ ;;; semantic/bovine/c-by.el --- Generated parser support file -;;; Copyright (C) 1999-2011 Free Software Foundation, Inc. +;; Copyright (C) 1999-2011 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/cedet/semantic/grammar-wy.el b/lisp/cedet/semantic/grammar-wy.el index acaad49f6af..879fdd92331 100644 --- a/lisp/cedet/semantic/grammar-wy.el +++ b/lisp/cedet/semantic/grammar-wy.el @@ -22,8 +22,7 @@ ;;; Commentary: ;; -;; This file is generated from the grammar file semantic-grammar.wy in -;; the upstream CEDET repository. +;; This file was generated from admin/grammars/grammar.wy. ;;; Code: @@ -113,296 +112,296 @@ '((DEFAULT-PREC NO-DEFAULT-PREC KEYWORD LANGUAGEMODE LEFT NONASSOC PACKAGE 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 - (semantic-tag-new-code "prologue" nil)))) + ((PROLOGUE) + (wisent-raw-tag + (semantic-tag-new-code "prologue" nil)))) (epilogue - ((EPILOGUE) - (wisent-raw-tag - (semantic-tag-new-code "epilogue" nil)))) + ((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)) - ((package_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)) + ((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"))))) + ((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"))))) + ((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))))) + ((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)))) + ((PACKAGE SYMBOL) + `(wisent-raw-tag + (semantic-tag-new-package ',$2 nil)))) (precedence_decl - ((associativity token_type_opt items) - `(wisent-raw-tag - (semantic-tag ',$1 'assoc :type ',$2 :value ',$3)))) + ((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 - (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 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)))) + ((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)))) + ((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 - (car $region1) - (cdr $region1) - 'put_values 1)))) + ((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)))) + ((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 - (semantic-tag ',$2 'scopestart)))) + ((SCOPESTART SYMBOL) + `(wisent-raw-tag + (semantic-tag ',$2 'scopestart)))) (quotemode_decl - ((QUOTEMODE SYMBOL) - `(wisent-raw-tag - (semantic-tag ',$2 'quotemode)))) + ((QUOTEMODE SYMBOL) + `(wisent-raw-tag + (semantic-tag ',$2 'quotemode)))) (start_decl - ((START symbols) - `(wisent-raw-tag - (semantic-tag ',(car $2) - 'start :rest ',(cdr $2))))) + ((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)))) + ((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 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))) + (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 - (semantic-tag ',$2 'type :value ',$3)))) + ((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 - (list $2) - $1)) - ((put_value) - (list $1))) + ((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)))) + ((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)))) + ((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)))) + ((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 - (setq semantic-grammar-wy--nterm $1 semantic-grammar-wy--rindx 0) - COLON rules SEMI) - (wisent-raw-tag - (semantic-tag $1 'nonterminal :children $4)))) + ((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) + (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* - ((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) + (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))) + (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 "^{[
\n ]*" s) - (setq s - (substring s - (match-end 0)))) - (if - (string-match "[
\n ]*}$" s) - (setq s - (substring s 0 - (match-beginning 0)))) - s)))) + ((PAREN_BLOCK)) + ((PREFIXED_LIST)) + ((BRACE_BLOCK) + (format "(progn\n%s)" + (let + ((s $1)) + (if + (string-match "^{[
\n ]*" s) + (setq s + (substring s + (match-end 0)))) + (if + (string-match "[
\n ]*}$" s) + (setq s + (substring s 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.") @@ -411,10 +410,10 @@ (semantic-install-function-overrides '((parse-stream . wisent-parse-stream))) (setq semantic-parser-name "LALR" - semantic--parse-table semantic-grammar-wy--parse-table - semantic-debug-parser-source "semantic-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 "semantic-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 (semantic-make-local-hook 'wisent-discarding-token-functions) (add-hook 'wisent-discarding-token-functions diff --git a/lisp/cedet/semantic/wisent/javat-wy.el b/lisp/cedet/semantic/wisent/javat-wy.el index 4470b87a1f1..562b0da6caa 100644 --- a/lisp/cedet/semantic/wisent/javat-wy.el +++ b/lisp/cedet/semantic/wisent/javat-wy.el @@ -19,12 +19,11 @@ ;;; Commentary: ;; -;; This file was generated from etc/java-tags.wy. +;; This file was generated from admin/grammars/java-tags.wy. ;;; Code: (require 'semantic/lex) - ;;; Prologue ;; @@ -396,7 +395,7 @@ ((SEMICOLON)) ((block))) (block - ((BRACE_BLOCK))) + ((BRACE_BLOCK))) (formal_parameter_list ((PAREN_BLOCK) (semantic-parse-region @@ -557,7 +556,7 @@ '((parse-stream . wisent-parse-stream))) (setq semantic-parser-name "LALR" semantic--parse-table wisent-java-tags-wy--parse-table - semantic-debug-parser-source "wisent-java-tags.wy" + semantic-debug-parser-source "java-tags.wy" semantic-flex-keywords-obarray wisent-java-tags-wy--keyword-table semantic-lex-types-obarray wisent-java-tags-wy--token-table) ;; Collect unmatched syntax lexical tokens @@ -567,10 +566,6 @@ ;;; Analyzers -;; -(define-lex-keyword-type-analyzer wisent-java-tags-wy--<keyword>-keyword-analyzer - "keyword analyzer for <keyword> tokens." - "\\(\\sw\\|\\s_\\)+") (define-lex-block-type-analyzer wisent-java-tags-wy--<block>-block-analyzer "block analyzer for <block> tokens." @@ -583,23 +578,6 @@ ("]" RBRACK)) ) -(define-lex-regex-type-analyzer wisent-java-tags-wy--<symbol>-regexp-analyzer - "regexp analyzer for <symbol> tokens." - "\\(\\sw\\|\\s_\\)+" - nil - 'IDENTIFIER) - -(define-lex-sexp-type-analyzer wisent-java-tags-wy--<string>-sexp-analyzer - "sexp analyzer for <string> tokens." - "\\s\"" - 'STRING_LITERAL) - -(define-lex-regex-type-analyzer wisent-java-tags-wy--<number>-regexp-analyzer - "regexp analyzer for <number> tokens." - semantic-lex-number-expression - nil - 'NUMBER_LITERAL) - (define-lex-string-type-analyzer wisent-java-tags-wy--<punctuation>-string-analyzer "string analyzer for <punctuation> tokens." "\\(\\s.\\|\\s$\\|\\s'\\)+" @@ -645,12 +623,33 @@ (NOT . "!")) 'punctuation) +(define-lex-regex-type-analyzer wisent-java-tags-wy--<symbol>-regexp-analyzer + "regexp analyzer for <symbol> tokens." + "\\(\\sw\\|\\s_\\)+" + nil + 'IDENTIFIER) + (define-lex-regex-type-analyzer wisent-java-tags-wy--<unicode>-regexp-analyzer "regexp analyzer for <unicode> tokens." "\\\\u[0-9a-f][0-9a-f][0-9a-f][0-9a-f]" nil 'unicodecharacter) +(define-lex-regex-type-analyzer wisent-java-tags-wy--<number>-regexp-analyzer + "regexp analyzer for <number> tokens." + semantic-lex-number-expression + nil + 'NUMBER_LITERAL) + +(define-lex-sexp-type-analyzer wisent-java-tags-wy--<string>-sexp-analyzer + "sexp analyzer for <string> tokens." + "\\s\"" + 'STRING_LITERAL) + +(define-lex-keyword-type-analyzer wisent-java-tags-wy--<keyword>-keyword-analyzer + "keyword analyzer for <keyword> tokens." + "\\(\\sw\\|\\s_\\)+") + ;;; Epilogue ;; diff --git a/lisp/cedet/semantic/wisent/js-wy.el b/lisp/cedet/semantic/wisent/js-wy.el index b523db8771b..c8dded08d1f 100644 --- a/lisp/cedet/semantic/wisent/js-wy.el +++ b/lisp/cedet/semantic/wisent/js-wy.el @@ -1,7 +1,7 @@ ;;; semantic/wisent/js-wy.el --- Generated parser support file ;; Copyright (C) 2005, 2009-2011 Free Software Foundation, Inc. -;; Copyright (C) Ecma International. +;; Copyright (C) 1998-2011 Ecma International ;; This file is part of GNU Emacs. @@ -20,9 +20,45 @@ ;;; Commentary: ;; -;; This file was generated from etc/grammars/javascript-jv.wy. +;; This file was generated from admin/grammars/js.wy. + +;; It is derived from the grammar in the ECMAScript Language +;; Specification published at +;; +;; http://www.ecma-international.org/publications/standards/Ecma-262.htm +;; +;; and redistributed under the following license: +;; +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following conditions +;; are met: +;; +;; 1. Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; +;; 2. Redistributions in binary form must reproduce the above +;; copyright notice, this list of conditions and the following +;; disclaimer in the documentation and/or other materials provided +;; with the distribution. +;; +;; 3. Neither the name of the authors nor Ecma International may be +;; used to endorse or promote products derived from this software +;; without specific prior written permission. THIS SOFTWARE IS +;; PROVIDED BY THE ECMA INTERNATIONAL "AS IS" AND ANY EXPRESS OR +;; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +;; ARE DISCLAIMED. IN NO EVENT SHALL ECMA INTERNATIONAL BE LIABLE FOR +;; ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +;; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +;; OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +;; BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +;; USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +;; DAMAGE. ;;; Code: + (require 'semantic/lex) ;;; Prologue @@ -370,7 +406,7 @@ '((parse-stream . wisent-parse-stream))) (setq semantic-parser-name "LALR" semantic--parse-table wisent-javascript-jv-wy--parse-table - semantic-debug-parser-source "wisent-javascript-jv.wy" + semantic-debug-parser-source "js.wy" semantic-flex-keywords-obarray wisent-javascript-jv-wy--keyword-table semantic-lex-types-obarray wisent-javascript-jv-wy--token-table) ;; Collect unmatched syntax lexical tokens @@ -380,38 +416,6 @@ ;;; Analyzers -;; -(define-lex-keyword-type-analyzer wisent-javascript-jv-wy--<keyword>-keyword-analyzer - "keyword analyzer for <keyword> tokens." - "\\(\\sw\\|\\s_\\)+") - -(define-lex-block-type-analyzer wisent-javascript-jv-wy--<block>-block-analyzer - "block analyzer for <block> tokens." - "\\s(\\|\\s)" - '((("(" OPEN_PARENTHESIS PAREN_BLOCK) - ("{" START_BLOCK BRACE_BLOCK) - ("[" OPEN_SQ_BRACKETS BRACK_BLOCK)) - (")" CLOSE_PARENTHESIS) - ("}" END_BLOCK) - ("]" CLOSE_SQ_BRACKETS)) - ) - -(define-lex-regex-type-analyzer wisent-javascript-jv-wy--<symbol>-regexp-analyzer - "regexp analyzer for <symbol> tokens." - "\\(\\sw\\|\\s_\\)+" - nil - 'VARIABLE) - -(define-lex-sexp-type-analyzer wisent-javascript-jv-wy--<string>-sexp-analyzer - "sexp analyzer for <string> tokens." - "\\s\"" - 'STRING) - -(define-lex-regex-type-analyzer wisent-javascript-jv-wy--<number>-regexp-analyzer - "regexp analyzer for <number> tokens." - semantic-lex-number-expression - nil - 'NUMBER) (define-lex-string-type-analyzer wisent-javascript-jv-wy--<punctuation>-string-analyzer "string analyzer for <punctuation> tokens." @@ -458,6 +462,38 @@ (ASSIGN_SYMBOL . "=")) 'punctuation) +(define-lex-block-type-analyzer wisent-javascript-jv-wy--<block>-block-analyzer + "block analyzer for <block> tokens." + "\\s(\\|\\s)" + '((("(" OPEN_PARENTHESIS PAREN_BLOCK) + ("{" START_BLOCK BRACE_BLOCK) + ("[" OPEN_SQ_BRACKETS BRACK_BLOCK)) + (")" CLOSE_PARENTHESIS) + ("}" END_BLOCK) + ("]" CLOSE_SQ_BRACKETS)) + ) + +(define-lex-regex-type-analyzer wisent-javascript-jv-wy--<symbol>-regexp-analyzer + "regexp analyzer for <symbol> tokens." + "\\(\\sw\\|\\s_\\)+" + nil + 'VARIABLE) + +(define-lex-regex-type-analyzer wisent-javascript-jv-wy--<number>-regexp-analyzer + "regexp analyzer for <number> tokens." + semantic-lex-number-expression + nil + 'NUMBER) + +(define-lex-sexp-type-analyzer wisent-javascript-jv-wy--<string>-sexp-analyzer + "sexp analyzer for <string> tokens." + "\\s\"" + 'STRING) + +(define-lex-keyword-type-analyzer wisent-javascript-jv-wy--<keyword>-keyword-analyzer + "keyword analyzer for <keyword> tokens." + "\\(\\sw\\|\\s_\\)+") + ;;; Epilogue ;; diff --git a/lisp/cedet/semantic/wisent/python-wy.el b/lisp/cedet/semantic/wisent/python-wy.el index 36965757a14..2445d7162a7 100644 --- a/lisp/cedet/semantic/wisent/python-wy.el +++ b/lisp/cedet/semantic/wisent/python-wy.el @@ -20,7 +20,58 @@ ;;; Commentary: ;; -;; This file was generated from etc/grammars/python.wy. +;; This file was generated from admin/grammars/python.wy. +;; It is derived in part from the Python grammar, used under the +;; following license: +;; +;; PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +;; -------------------------------------------- +;; 1. This LICENSE AGREEMENT is between the Python Software Foundation +;; ("PSF"), and the Individual or Organization ("Licensee") accessing +;; and otherwise using this software ("Python") in source or binary +;; form and its associated documentation. +;; +;; 2. Subject to the terms and conditions of this License Agreement, +;; PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide +;; license to reproduce, analyze, test, perform and/or display +;; publicly, prepare derivative works, distribute, and otherwise use +;; Python alone or in any derivative version, provided, however, that +;; PSF's License Agreement and PSF's notice of copyright, i.e., +;; "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, +;; 2009, 2010 Python Software Foundation; All Rights Reserved" are +;; retained in Python alone or in any derivative version prepared by +;; Licensee. +;; +;; 3. In the event Licensee prepares a derivative work that is based +;; on or incorporates Python or any part thereof, and wants to make +;; the derivative work available to others as provided herein, then +;; Licensee hereby agrees to include in any such work a brief summary +;; of the changes made to Python. +;; +;; 4. PSF is making Python available to Licensee on an "AS IS" +;; basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +;; IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +;; DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +;; FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +;; INFRINGE ANY THIRD PARTY RIGHTS. +;; +;; 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +;; FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A +;; RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR +;; ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. +;; +;; 6. This License Agreement will automatically terminate upon a +;; material breach of its terms and conditions. +;; +;; 7. Nothing in this License Agreement shall be deemed to create any +;; relationship of agency, partnership, or joint venture between PSF +;; and Licensee. This License Agreement does not grant permission to +;; use PSF trademarks or trade name in a trademark sense to endorse or +;; promote products or services of Licensee, or any third party. +;; +;; 8. By copying, installing or otherwise using Python, Licensee +;; agrees to be bound by the terms and conditions of this License +;; Agreement. ;;; Code: @@ -664,7 +715,7 @@ '((parse-stream . wisent-parse-stream))) (setq semantic-parser-name "LALR" semantic--parse-table wisent-python-wy--parse-table - semantic-debug-parser-source "wisent-python.wy" + semantic-debug-parser-source "python.wy" semantic-flex-keywords-obarray wisent-python-wy--keyword-table semantic-lex-types-obarray wisent-python-wy--token-table) ;; Collect unmatched syntax lexical tokens @@ -675,10 +726,6 @@ ;;; Analyzers -(define-lex-keyword-type-analyzer wisent-python-wy--<keyword>-keyword-analyzer - "keyword analyzer for <keyword> tokens." - "\\(\\sw\\|\\s_\\)+") - (define-lex-block-type-analyzer wisent-python-wy--<block>-block-analyzer "block analyzer for <block> tokens." "\\s(\\|\\s)" @@ -690,18 +737,6 @@ ("]" RBRACK)) ) -(define-lex-regex-type-analyzer wisent-python-wy--<symbol>-regexp-analyzer - "regexp analyzer for <symbol> tokens." - "\\(\\sw\\|\\s_\\)+" - nil - 'NAME) - -(define-lex-regex-type-analyzer wisent-python-wy--<number>-regexp-analyzer - "regexp analyzer for <number> tokens." - semantic-lex-number-expression - nil - 'NUMBER_LITERAL) - (define-lex-string-type-analyzer wisent-python-wy--<punctuation>-string-analyzer "string analyzer for <punctuation> tokens." "\\(\\s.\\|\\s$\\|\\s'\\)+" @@ -745,6 +780,22 @@ (LTLTEQ . "<<=")) 'punctuation) +(define-lex-regex-type-analyzer wisent-python-wy--<symbol>-regexp-analyzer + "regexp analyzer for <symbol> tokens." + "\\(\\sw\\|\\s_\\)+" + nil + 'NAME) + +(define-lex-regex-type-analyzer wisent-python-wy--<number>-regexp-analyzer + "regexp analyzer for <number> tokens." + semantic-lex-number-expression + nil + 'NUMBER_LITERAL) + +(define-lex-keyword-type-analyzer wisent-python-wy--<keyword>-keyword-analyzer + "keyword analyzer for <keyword> tokens." + "\\(\\sw\\|\\s_\\)+") + ;;; Epilogue ;; diff --git a/lisp/cedet/srecode/srt-wy.el b/lisp/cedet/srecode/srt-wy.el index 2fb8e7665e9..5bd202093e9 100644 --- a/lisp/cedet/srecode/srt-wy.el +++ b/lisp/cedet/srecode/srt-wy.el @@ -18,13 +18,12 @@ ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. ;;; Commentary: - -;; Generated from srecode-template.wy in the CEDET repository. +;; +;; This file was generated from admin/grammars/srecode-template.wy. ;;; Code: (require 'semantic/lex) - ;;; Prologue ;; @@ -206,10 +205,12 @@ ;;; Analyzers -;; -(define-lex-keyword-type-analyzer srecode-template-wy--<keyword>-keyword-analyzer - "keyword analyzer for <keyword> tokens." - "\\(\\sw\\|\\s_\\)+") + +(define-lex-string-type-analyzer srecode-template-wy--<punctuation>-string-analyzer + "string analyzer for <punctuation> tokens." + "\\s.+" + nil + 'punctuation) (define-lex-regex-type-analyzer srecode-template-wy--<symbol>-regexp-analyzer "regexp analyzer for <symbol> tokens." @@ -217,22 +218,20 @@ nil 'symbol) -(define-lex-sexp-type-analyzer srecode-template-wy--<string>-sexp-analyzer - "sexp analyzer for <string> tokens." - "\\s\"" - 'string) - (define-lex-regex-type-analyzer srecode-template-wy--<number>-regexp-analyzer "regexp analyzer for <number> tokens." semantic-lex-number-expression nil 'number) -(define-lex-string-type-analyzer srecode-template-wy--<punctuation>-string-analyzer - "string analyzer for <punctuation> tokens." - "\\s.+" - nil - 'punctuation) +(define-lex-sexp-type-analyzer srecode-template-wy--<string>-sexp-analyzer + "sexp analyzer for <string> tokens." + "\\s\"" + 'string) + +(define-lex-keyword-type-analyzer srecode-template-wy--<keyword>-keyword-analyzer + "keyword analyzer for <keyword> tokens." + "\\(\\sw\\|\\s_\\)+") ;;; Epilogue |