]> git.eshelyaron.com Git - emacs.git/commitdiff
Stop keeping (all but one) generated cedet grammar files in the repository
authorGlenn Morris <rgm@gnu.org>
Sat, 30 Nov 2013 02:06:34 +0000 (18:06 -0800)
committerGlenn Morris <rgm@gnu.org>
Sat, 30 Nov 2013 02:06:34 +0000 (18:06 -0800)
* configure.ac (SUBDIR_MAKEFILES, AC_CONFIG_FILES):
Add admin/grammars Makefile.

* Makefile.in (distclean, bootstrap-clean, maintainer-clean):
Also clean admin/grammars, if present.

* admin/grammars/README: Remove.

* admin/grammars/Makefile.in: New file.

* admin/grammars/c.by, admin/grammars/java-tags.wy, admin/grammars/js.wy:
* admin/grammars/python.wy: Update declarations to match generated outputs.

* lisp/Makefile.in (semantic): New.
(compile-main): Depend on semantic.

* lisp/cedet/semantic/bovine/grammar.el (bovine--make-parser-1):
New function, split from bovine-make-parsers.
(bovine-make-parsers): Use bovine--make-parser-1.
(bovine-batch-make-parser): New function.

* lisp/cedet/semantic/wisent/grammar.el (wisent--make-parser-1):
New function, split from wisent-make-parsers.
(wisent-make-parsers): Use wisent--make-parser-1.
(wisent-batch-make-parser): New function.

* lisp/cedet/semantic/db.el (semanticdb-save-all-db):
Avoid prompting in batch mode.

* lisp/cedet/semantic/grammar.el (semantic-grammar-footer-template):
Disable version-control and autoloads in the output.
(semantic-grammar-create-package):
Add option to return nil if output is up-to-date.

* lisp/cedet/semantic/bovine/c-by.el, lisp/cedet/semantic/bovine/make-by.el:
* lisp/cedet/semantic/bovine/scm-by.el, lisp/cedet/semantic/wisent/javat-wy.el:
* lisp/cedet/semantic/wisent/js-wy.el, lisp/cedet/semantic/wisent/python-wy.el:
* lisp/cedet/srecode/srt-wy.el: Remove generated files from repository.

* .bzrignore: Update for this.

24 files changed:
ChangeLog
Makefile.in
admin/ChangeLog
admin/grammars/Makefile.in [new file with mode: 0644]
admin/grammars/README [deleted file]
admin/grammars/c.by
admin/grammars/java-tags.wy
admin/grammars/js.wy
admin/grammars/python.wy
configure.ac
lisp/ChangeLog
lisp/Makefile.in
lisp/cedet/ChangeLog
lisp/cedet/semantic/bovine/c-by.el [deleted file]
lisp/cedet/semantic/bovine/grammar.el
lisp/cedet/semantic/bovine/make-by.el [deleted file]
lisp/cedet/semantic/bovine/scm-by.el [deleted file]
lisp/cedet/semantic/db.el
lisp/cedet/semantic/grammar.el
lisp/cedet/semantic/wisent/grammar.el
lisp/cedet/semantic/wisent/javat-wy.el [deleted file]
lisp/cedet/semantic/wisent/js-wy.el [deleted file]
lisp/cedet/semantic/wisent/python-wy.el [deleted file]
lisp/cedet/srecode/srt-wy.el [deleted file]

index 6a34a8f9cf0ebe2378eb42167801209ee266189e..28d67634c7990dbccb1d3a3f08b4c392263a851b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-11-30  Glenn Morris  <rgm@gnu.org>
+
+       Stop keeping (most) generated cedet grammar files in the repository.
+       * configure.ac (SUBDIR_MAKEFILES, AC_CONFIG_FILES):
+       Add admin/grammars Makefile.
+       * Makefile.in (distclean, bootstrap-clean, maintainer-clean):
+       Also clean admin/grammars, if present.
+
 2013-11-29  Dani Moncayo  <dmoncayo@gmail.com>
 
        * Makefile.in (epaths-force-w32): Fix 2013-11-20 typo.
index 065168bbce54a86504167b466406a120829f2da4..aedb9acff0d3afa1dca5352af553c7f595acff1f 100644 (file)
@@ -857,7 +857,7 @@ distclean: FRC
        cd leim     && $(MAKE) $(MFLAGS) distclean
        cd lisp     && $(MAKE) $(MFLAGS) distclean
        cd nextstep && $(MAKE) $(MFLAGS) distclean
-       for dir in test/automated admin/unidata; do \
+       for dir in test/automated admin/grammars admin/unidata; do \
          [ ! -d $$dir ] || (cd $$dir && $(MAKE) $(MFLAGS) distclean); \
        done
        ${top_distclean}
@@ -879,7 +879,7 @@ bootstrap-clean: FRC
        cd leim     && $(MAKE) $(MFLAGS) bootstrap-clean
        cd lisp     && $(MAKE) $(MFLAGS) bootstrap-clean
        cd nextstep && $(MAKE) $(MFLAGS) maintainer-clean
-       for dir in test/automated admin/unidata; do \
+       for dir in test/automated admin/grammars admin/unidata; do \
          [ ! -d $$dir ] || (cd $$dir && $(MAKE) $(MFLAGS) bootstrap-clean); \
        done
        [ ! -f config.log ] || mv -f config.log config.log~
@@ -903,7 +903,7 @@ maintainer-clean: bootstrap-clean FRC
        cd src  && $(MAKE) $(MFLAGS) maintainer-clean
        cd leim && $(MAKE) $(MFLAGS) maintainer-clean
        cd lisp && $(MAKE) $(MFLAGS) maintainer-clean
-       for dir in test/automated admin/unidata; do \
+       for dir in test/automated admin/grammars admin/unidata; do \
          [ ! -d $$dir ] || (cd $$dir && $(MAKE) $(MFLAGS) maintainer-clean); \
        done
        ${top_maintainer_clean}
index c9930c7023a665079ba9916e851c1ca6f96cd5d6..d70056f001eef655d3f20ba65c30e03ab9975556 100644 (file)
@@ -1,3 +1,11 @@
+2013-11-30  Glenn Morris  <rgm@gnu.org>
+
+       Stop keeping (most) generated cedet grammar files in the repository.
+       * grammars/README: Remove.
+       * grammars/Makefile.in: New file.
+       * grammars/c.by, grammars/java-tags.wy, grammars/js.wy:
+       * grammars/python.wy: Update declarations to match generated outputs.
+
 2013-11-28  Glenn Morris  <rgm@gnu.org>
 
        * unidata/unidata-gen.el (unidata-gen-files):
diff --git a/admin/grammars/Makefile.in b/admin/grammars/Makefile.in
new file mode 100644 (file)
index 0000000..94c2e9a
--- /dev/null
@@ -0,0 +1,105 @@
+### @configure_input@
+
+## Copyright (C) 2013 Free Software Foundation, Inc.
+
+## 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 directory contains grammar files in Bison and Wisent,
+## used to generate the parser data in the lisp/cedet directory.
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = @top_builddir@
+
+EMACS = ${top_builddir}/src/emacs
+emacs = EMACSLOADPATH= "${EMACS}" -batch --no-site-file --no-site-lisp
+
+make_bovine = ${emacs} -l semantic/bovine/grammar -f bovine-batch-make-parser
+make_wisent = ${emacs} -l semantic/wisent/grammar -f wisent-batch-make-parser
+
+cedetdir = ${top_srcdir}/lisp/cedet
+bovinedir = ${cedetdir}/semantic/bovine
+wisentdir = ${cedetdir}/semantic/wisent
+
+BOVINE = \
+       ${bovinedir}/c-by.el \
+       ${bovinedir}/make-by.el \
+       ${bovinedir}/scm-by.el
+
+## FIXME Should include this one too:
+##     ${cedetdir}/semantic/grammar-wy.el
+## but semantic/grammar.el (which is what we use to generate grammar-wy.el)
+## requires it!
+WISENT = \
+       ${wisentdir}/javat-wy.el \
+       ${wisentdir}/js-wy.el \
+       ${wisentdir}/python-wy.el \
+       ${cedetdir}/srecode/srt-wy.el
+
+ALL = ${BOVINE} ${WISENT}
+
+.PHONY: all bovine wisent
+
+all: ${ALL}
+
+bovine: ${BOVINE}
+
+wisent: ${WISENT}
+
+
+${bovinedir}/c-by.el: ${srcdir}/c.by
+       ${make_bovine} -o "$@" ${srcdir}/c.by
+
+${bovinedir}/make-by.el: ${srcdir}/make.by
+       ${make_bovine} -o "$@" ${srcdir}/make.by
+
+${bovinedir}/scm-by.el: ${srcdir}/scheme.by
+       ${make_bovine} -o "$@" ${srcdir}/scheme.by
+
+
+${cedetdir}/semantic/grammar-wy.el: ${srcdir}/grammar.wy
+       ${make_wisent} -o "$@" ${srcdir}/grammar.wy
+
+${wisentdir}/javat-wy.el: ${srcdir}/java-tags.wy
+       ${make_wisent} -o "$@" ${srcdir}/java-tags.wy
+
+${wisentdir}/js-wy.el: ${srcdir}/js.wy
+       ${make_wisent} -o "$@" ${srcdir}/js.wy
+
+${wisentdir}/python-wy.el: ${srcdir}/python.wy
+       ${make_wisent} -o "$@" ${srcdir}/python.wy
+
+${cedetdir}/srecode/srt-wy.el: ${srcdir}/srecode-template.wy
+       ${make_wisent} -o "$@" ${srcdir}/srecode-template.wy
+
+
+.PHONY: distclean bootstrap-clean maintainer-clean extraclean
+
+distclean:
+       rm -f Makefile
+
+bootstrap-clean maintainer-clean: distclean
+
+## We do not normally delete the generated files, even in bootstrap.
+## Creating them does not take long, so we could easily change this.
+extraclean:
+       rm -f ${ALL}
+
+# Makefile.in ends here
diff --git a/admin/grammars/README b/admin/grammars/README
deleted file mode 100644 (file)
index e382609..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-This directory contains grammar files in Bison and Wisent, used to
-generate the parser data in the lisp/semantic/bovine/ and
-lisp/semantic/wisent/ directories.  You can run the parser generators
-with
-
-emacs -batch -Q -l semantic/bovine/grammar -f bovine-make-parsers
-emacs -batch -Q -l semantic/wisent/grammar -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
-contents of this directory, will change in a future version of Emacs.
index 5d2f407e8e38969adcc60d0d13dce4de1797c967..55ec0fbaf0106553b2a54c4a9e76bf8f4d9f1b53 100644 (file)
 %provide semantic/bovine/c-by
 
 %{
-(declare-function semantic-c-reconstitute-token "semantic/bovine/c")
-(declare-function semantic-c-reconstitute-template "semantic/bovine/c")
-(declare-function semantic-expand-c-tag "semantic/bovine/c")
+(declare-function semantic-c-reconstitute-token "semantic/bovine/c"
+                 (tokenpart declmods typedecl))
+(declare-function semantic-c-reconstitute-template "semantic/bovine/c"
+                 (tag specifier))
+(declare-function semantic-expand-c-tag "semantic/bovine/c" (tag))
+(declare-function semantic-parse-region "semantic"
+                 (start end &optional nonterminal depth returnonerror))
 }
 
 %languagemode  c-mode c++-mode
index 71607f452a0d2372b7d175742b082b961592e591..3f5c3ad04c6beeae67035aba5ccd7a30f85fa703 100644 (file)
 %package wisent-java-tags-wy
 %provide semantic/wisent/javat-wy
 
+%{
+(declare-function semantic-parse-region "semantic"
+                 (start end &optional nonterminal depth returnonerror))
+}
+
 %languagemode  java-mode
 
 ;; The default start symbol
index 3b6022965522cac9d1021677a226e82f497651d8..a6a358a0ee7bd076f50930ab0f552ca415faa87e 100644 (file)
 
 %package wisent-javascript-jv-wy
 %provide semantic/wisent/js-wy
+
+%{
+(declare-function semantic-parse-region "semantic"
+                 (start end &optional nonterminal depth returnonerror))
+}
+
 ;; JAVE I prefere ecmascript-mode
 %languagemode ecmascript-mode javascript-mode
 
index 02fb7390b010e1354f07868a5635aad228e633a9..b82125d2bc32ee94ef0c7bdaaadae28d7d8d31fe 100644 (file)
 %provide semantic/wisent/python-wy
 
 %{
-(declare-function wisent-python-reconstitute-function-tag "semantic/wisent/python")
-(declare-function wisent-python-reconstitute-class-tag "semantic/wisent/python")
+(declare-function wisent-python-reconstitute-function-tag
+                 "semantic/wisent/python" (tag suite))
+(declare-function wisent-python-reconstitute-class-tag "semantic/wisent/python"
+                 (tag))
+(declare-function semantic-parse-region "semantic"
+                 (start end &optional nonterminal depth returnonerror))
 }
 
 %languagemode python-mode
index 0d07d56394641637e2678d75b17d1f1be67f3ae5..a2e4cd9e159833539cb743c8d4f54cf257287401 100644 (file)
@@ -4971,13 +4971,12 @@ if test -f "$srcdir/$opt_makefile.in"; then
 fi
 
 
-dnl admin/ may or may not be present.
-opt_makefile=admin/unidata/Makefile
-
-if test -f "$srcdir/$opt_makefile.in"; then
-  SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
+dnl The admin/ directory used to be excluded from tarfiles.
+if test -d $srcdir/admin; then
+  SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES admin/unidata/Makefile admin/grammars/Makefile"
   AC_CONFIG_FILES([admin/unidata/Makefile])
-fi
+  AC_CONFIG_FILES([admin/grammars/Makefile])
+fi                              dnl -d admin
 
 
 SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'`
index 26c0f50233404cbaa98943d03589a5ca873bf1b0..2455b9a10b64e71ea531713e1114c158881dbb71 100644 (file)
@@ -1,3 +1,9 @@
+2013-11-30  Glenn Morris  <rgm@gnu.org>
+
+       Stop keeping (most) generated cedet grammar files in the repository.
+       * Makefile.in (semantic): New.
+       (compile-main): Depend on semantic.
+
 2013-11-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * net/newst-reader.el (newsticker-html-renderer): Default to SHR if
index 391e50c8b7d65901a4e89b7a8032eb9d33e9199d..9c9eacfd3862064e06027586e693aa9ffe5904b7 100644 (file)
@@ -296,7 +296,7 @@ compile-targets: $(TARGETS)
 
 # Compile all the Elisp files that need it.  Beware: it approximates
 # `no-byte-compile', so watch out for false-positives!
-compile-main: leim compile-clean
+compile-main: leim semantic compile-clean
        @(cd $(lisp) && $(setwins); \
        els=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.el |g'`; \
        for el in $$els; do \
@@ -320,10 +320,18 @@ compile-clean:
          fi \
        done
 
-.PHONY: leim
+.PHONY: leim semantic
 leim:
        cd ../leim && $(MAKE) $(MFLAGS) all EMACS="$(EMACS)"
 
+# FIXME.  Yuck.
+semantic:
+       case ${EMACS} in \
+         .*) EMACS="../${EMACS}" ;; \
+          *) EMACS="${EMACS}" ;; \
+       esac; \
+       cd ../admin/grammars && $(MAKE) $(MFLAGS) all EMACS="$${EMACS}"
+
 # Compile all Lisp files, but don't recompile those that are up to
 # date.  Some .el files don't get compiled because they set the
 # local variable no-byte-compile.
index ecdebe0363cb2e5c7b2fca563730927a3b0e27a3..1a4a658000725dd44a62001a353758614702a860 100644 (file)
@@ -1,3 +1,25 @@
+2013-11-30  Glenn Morris  <rgm@gnu.org>
+
+       Stop keeping (most) generated cedet grammar files in the repository.
+       * semantic/bovine/grammar.el (bovine--make-parser-1):
+       New function, split from bovine-make-parsers.
+       (bovine-make-parsers): Use bovine--make-parser-1.
+       (bovine-batch-make-parser): New function.
+       * semantic/wisent/grammar.el (wisent--make-parser-1):
+       New function, split from wisent-make-parsers.
+       (wisent-make-parsers): Use wisent--make-parser-1.
+       (wisent-batch-make-parser): New function.
+       * semantic/db.el (semanticdb-save-all-db):
+       Avoid prompting in batch mode.
+       * semantic/grammar.el (semantic-grammar-footer-template):
+       Disable version-control and autoloads in the output.
+       (semantic-grammar-create-package):
+       Add option to return nil if output is up-to-date.
+       * semantic/bovine/c-by.el, semantic/bovine/make-by.el:
+       * semantic/bovine/scm-by.el, semantic/wisent/javat-wy.el:
+       * semantic/wisent/js-wy.el, semantic/wisent/python-wy.el:
+       * srecode/srt-wy.el: Remove generated files from repository.
+
 2013-11-16  Barry O'Reilly  <gundaetiapo@gmail.com>
 
        * semantic/fw.el (semantic-exit-on-input)
diff --git a/lisp/cedet/semantic/bovine/c-by.el b/lisp/cedet/semantic/bovine/c-by.el
deleted file mode 100644 (file)
index af3724a..0000000
+++ /dev/null
@@ -1,2224 +0,0 @@
-;;; semantic/bovine/c-by.el --- Generated parser support file
-
-;; Copyright (C) 1999-2013 Free Software Foundation, Inc.
-
-;; 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/c.by.
-
-;;; Code:
-
-(require 'semantic/lex)
-(eval-when-compile (require 'semantic/bovine))
-\f
-;;; Prologue
-;;
-(declare-function semantic-c-reconstitute-token "semantic/bovine/c"
-                 (tokenpart declmods typedecl))
-(declare-function semantic-c-reconstitute-template "semantic/bovine/c"
-                 (tag specifier))
-(declare-function semantic-expand-c-tag "semantic/bovine/c" (tag))
-(declare-function semantic-parse-region "semantic"
-                 (start end &optional nonterminal depth returnonerror))
-\f
-;;; Declarations
-;;
-(defconst semantic-c-by--keyword-table
-  (semantic-lex-make-keyword-table
-   '(("extern" . EXTERN)
-     ("static" . STATIC)
-     ("const" . CONST)
-     ("volatile" . VOLATILE)
-     ("register" . REGISTER)
-     ("signed" . SIGNED)
-     ("unsigned" . UNSIGNED)
-     ("inline" . INLINE)
-     ("virtual" . VIRTUAL)
-     ("mutable" . MUTABLE)
-     ("explicit" . EXPLICIT)
-     ("struct" . STRUCT)
-     ("union" . UNION)
-     ("enum" . ENUM)
-     ("typedef" . TYPEDEF)
-     ("class" . CLASS)
-     ("typename" . TYPENAME)
-     ("namespace" . NAMESPACE)
-     ("using" . USING)
-     ("new" . NEW)
-     ("delete" . DELETE)
-     ("template" . TEMPLATE)
-     ("throw" . THROW)
-     ("reentrant" . REENTRANT)
-     ("try" . TRY)
-     ("catch" . CATCH)
-     ("operator" . OPERATOR)
-     ("public" . PUBLIC)
-     ("private" . PRIVATE)
-     ("protected" . PROTECTED)
-     ("friend" . FRIEND)
-     ("if" . IF)
-     ("else" . ELSE)
-     ("do" . DO)
-     ("while" . WHILE)
-     ("for" . FOR)
-     ("switch" . SWITCH)
-     ("case" . CASE)
-     ("default" . DEFAULT)
-     ("return" . RETURN)
-     ("break" . BREAK)
-     ("continue" . CONTINUE)
-     ("sizeof" . SIZEOF)
-     ("void" . VOID)
-     ("char" . CHAR)
-     ("wchar_t" . WCHAR)
-     ("short" . SHORT)
-     ("int" . INT)
-     ("long" . LONG)
-     ("float" . FLOAT)
-     ("double" . DOUBLE)
-     ("bool" . BOOL)
-     ("_P" . UNDERP)
-     ("__P" . UNDERUNDERP))
-   '(("__P" summary "Common macro to eliminate prototype compatibility on some compilers")
-     ("_P" summary "Common macro to eliminate prototype compatibility on some compilers")
-     ("bool" summary "Primitive boolean type")
-     ("double" summary "Primitive floating-point type (double-precision 64-bit IEEE 754)")
-     ("float" summary "Primitive floating-point type (single-precision 32-bit IEEE 754)")
-     ("long" summary "Integral primitive type (-9223372036854775808 to 9223372036854775807)")
-     ("int" summary "Integral Primitive Type: (-2147483648 to 2147483647)")
-     ("short" summary "Integral Primitive Type: (-32768 to 32767)")
-     ("wchar_t" summary "Wide Character Type")
-     ("char" summary "Integral Character Type: (0 to 256)")
-     ("void" summary "Built in typeless type: void")
-     ("sizeof" summary "Compile time macro: sizeof(<type or variable>) // size in bytes")
-     ("continue" summary "Non-local continue within a loop (for, do/while): continue;")
-     ("break" summary "Non-local exit within a loop or switch (for, do/while, switch): break;")
-     ("return" summary "return <value>;")
-     ("default" summary "switch (<variable>) { case <constvalue>: code; ... default: code; }")
-     ("case" summary "switch (<variable>) { case <constvalue>: code; ... default: code; }")
-     ("switch" summary "switch (<variable>) { case <constvalue>: code; ... default: code; }")
-     ("for" summary "for(<init>; <condition>; <increment>) { code }")
-     ("while" summary "do { code } while (<condition>); or while (<condition>) { code };")
-     ("do" summary " do { code } while (<condition>);")
-     ("else" summary "if (<condition>) { code } [ else { code } ]")
-     ("if" summary "if (<condition>) { code } [ else { code } ]")
-     ("friend" summary "friend class <CLASSNAME>")
-     ("catch" summary "try { <body> } catch { <catch code> }")
-     ("try" summary "try { <body> } catch { <catch code> }")
-     ("reentrant" summary "<type> <methoddef> (<method args>) reentrant ...")
-     ("throw" summary "<type> <methoddef> (<method args>) throw (<exception>) ...")
-     ("template" summary "template <class TYPE ...> TYPE_OR_FUNCTION")
-     ("delete" summary "delete <object>;")
-     ("new" summary "new <classname>();")
-     ("using" summary "using <namespace>;")
-     ("namespace" summary "Namespace Declaration: namespace <name> { ... };")
-     ("typename" summary "typename is used to handle a qualified name as a typename;")
-     ("class" summary "Class Declaration: class <name>[:parents] { ... };")
-     ("typedef" summary "Arbitrary Type Declaration: typedef <typedeclaration> <name>;")
-     ("enum" summary "Enumeration Type Declaration: enum [name] { ... };")
-     ("union" summary "Union Type Declaration: union [name] { ... };")
-     ("struct" summary "Structure Type Declaration: struct [name] { ... };")
-     ("explicit" summary "Forbids implicit type conversion: explicit <constructor>")
-     ("mutable" summary "Member Declaration Modifier: mutable <type> <name> ...")
-     ("virtual" summary "Method Modifier: virtual <type> <name>(...) ...")
-     ("inline" summary "Function Modifier: inline <return  type> <name>(...) {...};")
-     ("unsigned" summary "Numeric Type Modifier: unsigned <numeric type> <name> ...")
-     ("signed" summary "Numeric Type Modifier: signed <numeric type> <name> ...")
-     ("register" summary "Declaration Modifier: register <type> <name> ...")
-     ("volatile" summary "Declaration Modifier: volatile <type> <name> ...")
-     ("const" summary "Declaration Modifier: const <type> <name> ...")
-     ("static" summary "Declaration Modifier: static <type> <name> ...")
-     ("extern" summary "Declaration Modifier: extern <type> <name> ...")))
-  "Table of language keywords.")
-
-(defconst semantic-c-by--token-table
-  (semantic-lex-make-type-table
-   '(("semantic-list"
-      (BRACKETS . "\\[\\]")
-      (PARENS . "()")
-      (VOID_BLCK . "^(void)$")
-      (BRACE_BLCK . "^{")
-      (PAREN_BLCK . "^(")
-      (BRACK_BLCK . "\\[.*\\]$"))
-     ("close-paren"
-      (RBRACE . "}")
-      (RPAREN . ")"))
-     ("open-paren"
-      (LBRACE . "{")
-      (LPAREN . "("))
-     ("symbol"
-      (RESTRICT . "\\<\\(__\\)?restrict\\>"))
-     ("number"
-      (ZERO . "^0$"))
-     ("string"
-      (CPP . "\"C\\+\\+\"")
-      (C . "\"C\""))
-     ("punctuation"
-      (OR . "\\`[|]\\'")
-      (HAT . "\\`\\^\\'")
-      (MOD . "\\`[%]\\'")
-      (TILDE . "\\`[~]\\'")
-      (COMA . "\\`[,]\\'")
-      (GREATER . "\\`[>]\\'")
-      (LESS . "\\`[<]\\'")
-      (EQUAL . "\\`[=]\\'")
-      (BANG . "\\`[!]\\'")
-      (MINUS . "\\`[-]\\'")
-      (PLUS . "\\`[+]\\'")
-      (DIVIDE . "\\`[/]\\'")
-      (AMPERSAND . "\\`[&]\\'")
-      (STAR . "\\`[*]\\'")
-      (SEMICOLON . "\\`[;]\\'")
-      (COLON . "\\`[:]\\'")
-      (PERIOD . "\\`[.]\\'")
-      (HASH . "\\`[#]\\'")))
-   'nil)
-  "Table of lexical tokens.")
-
-(defconst semantic-c-by--parse-table
-  `(
-    (bovine-toplevel
-     (declaration)
-     ) ;; end bovine-toplevel
-
-    (bovine-inner-scope
-     (codeblock)
-     ) ;; end bovine-inner-scope
-
-    (declaration
-     (macro)
-     (type)
-     (define)
-     (var-or-fun)
-     (extern-c)
-     (template)
-     (using)
-     ) ;; end declaration
-
-    (codeblock
-     (define)
-     (codeblock-var-or-fun)
-     (type)
-     (using)
-     ) ;; end codeblock
-
-    (extern-c-contents
-     (open-paren
-      ,(semantic-lambda
-       (list nil))
-      )
-     (declaration)
-     (close-paren
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end extern-c-contents
-
-    (extern-c
-     (EXTERN
-      string
-      "\"C\""
-      semantic-list
-      ,(semantic-lambda
-       (semantic-tag
-        "C"
-        'extern :members
-        (semantic-parse-region
-         (car
-          (nth 2 vals))
-         (cdr
-          (nth 2 vals))
-         'extern-c-contents
-         1)))
-      )
-     (EXTERN
-      string
-      "\"C\\+\\+\""
-      semantic-list
-      ,(semantic-lambda
-       (semantic-tag
-        "C"
-        'extern :members
-        (semantic-parse-region
-         (car
-          (nth 2 vals))
-         (cdr
-          (nth 2 vals))
-         'extern-c-contents
-         1)))
-      )
-     (EXTERN
-      string
-      "\"C\""
-      ,(semantic-lambda
-       (list nil))
-      )
-     (EXTERN
-      string
-      "\"C\\+\\+\""
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end extern-c
-
-    (macro
-     (spp-macro-def
-      ,(semantic-lambda
-       (semantic-tag-new-variable
-        (nth 0 vals) nil nil :constant-flag t))
-      )
-     (spp-system-include
-      ,(semantic-lambda
-       (semantic-tag-new-include
-        (nth 0 vals) t))
-      )
-     (spp-include
-      ,(semantic-lambda
-       (semantic-tag-new-include
-        (nth 0 vals) nil))
-      )
-     ) ;; end macro
-
-    (define
-      (spp-macro-def
-       ,(semantic-lambda
-        (semantic-tag-new-variable
-         (nth 0 vals) nil nil :constant-flag t))
-       )
-      (spp-macro-undef
-       ,(semantic-lambda
-        (list nil))
-       )
-      ) ;; end define
-
-    (unionparts
-     (semantic-list
-      ,(semantic-lambda
-       (semantic-parse-region
-        (car
-         (nth 0 vals))
-        (cdr
-         (nth 0 vals))
-        'classsubparts
-        1))
-      )
-     ) ;; end unionparts
-
-    (opt-symbol
-     (symbol)
-     ( ;;EMPTY
-      )
-     ) ;; end opt-symbol
-
-    (classsubparts
-     (open-paren
-      "{"
-      ,(semantic-lambda
-       (list nil))
-      )
-     (close-paren
-      "}"
-      ,(semantic-lambda
-       (list nil))
-      )
-     (class-protection
-      opt-symbol
-      punctuation
-      "\\`[:]\\'"
-      ,(semantic-lambda
-       (semantic-tag
-        (car
-         (nth 0 vals))
-        'label))
-      )
-     (var-or-fun)
-     (FRIEND
-      func-decl
-      ,(semantic-lambda
-       (semantic-tag
-        (car
-         (nth 1 vals))
-        'friend))
-      )
-     (FRIEND
-      CLASS
-      symbol
-      ,(semantic-lambda
-       (semantic-tag
-        (nth 2 vals)
-        'friend))
-      )
-     (type)
-     (define)
-     (template)
-     ( ;;EMPTY
-      )
-     ) ;; end classsubparts
-
-    (opt-class-parents
-     (punctuation
-      "\\`[:]\\'"
-      class-parents
-      opt-template-specifier
-      ,(semantic-lambda
-       (list
-        (nth 1 vals)))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda)
-      )
-     ) ;; end opt-class-parents
-
-    (one-class-parent
-     (opt-class-protection
-      opt-class-declmods
-      namespace-symbol
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (car
-         (nth 2 vals))
-        "class" nil nil :protection
-        (car
-         (nth 0 vals))))
-      )
-     (opt-class-declmods
-      opt-class-protection
-      namespace-symbol
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (car
-         (nth 2 vals))
-        "class" nil nil :protection
-        (car
-         (nth 1 vals))))
-      )
-     ) ;; end one-class-parent
-
-    (class-parents
-     (one-class-parent
-      punctuation
-      "\\`[,]\\'"
-      class-parents
-      ,(semantic-lambda
-       (cons
-        (nth 0 vals)
-        (nth 2 vals)))
-      )
-     (one-class-parent
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)))
-      )
-     ) ;; end class-parents
-
-    (opt-class-declmods
-     (class-declmods
-      opt-class-declmods
-      ,(semantic-lambda
-       (list nil))
-      )
-     ( ;;EMPTY
-      )
-     ) ;; end opt-class-declmods
-
-    (class-declmods
-     (VIRTUAL)
-     ) ;; end class-declmods
-
-    (class-protection
-     (PUBLIC)
-     (PRIVATE)
-     (PROTECTED)
-     ) ;; end class-protection
-
-    (opt-class-protection
-     (class-protection
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda
-       (list
-        "unspecified"))
-      )
-     ) ;; end opt-class-protection
-
-    (namespaceparts
-     (semantic-list
-      ,(semantic-lambda
-       (semantic-parse-region
-        (car
-         (nth 0 vals))
-        (cdr
-         (nth 0 vals))
-        'namespacesubparts
-        1))
-      )
-     ) ;; end namespaceparts
-
-    (namespacesubparts
-     (open-paren
-      "{"
-      ,(semantic-lambda
-       (list nil))
-      )
-     (close-paren
-      "}"
-      ,(semantic-lambda
-       (list nil))
-      )
-     (type)
-     (var-or-fun)
-     (define)
-     (class-protection
-      punctuation
-      "\\`[:]\\'"
-      ,(semantic-lambda
-       (semantic-tag
-        (car
-         (nth 0 vals))
-        'label))
-      )
-     (template)
-     (using)
-     (spp-include
-      ,(semantic-lambda
-       (semantic-tag
-        (nth 0 vals)
-        'include :inside-ns t))
-      )
-     ( ;;EMPTY
-      )
-     ) ;; end namespacesubparts
-
-    (enumparts
-     (semantic-list
-      ,(semantic-lambda
-       (semantic-parse-region
-        (car
-         (nth 0 vals))
-        (cdr
-         (nth 0 vals))
-        'enumsubparts
-        1))
-      )
-     ) ;; end enumparts
-
-    (enumsubparts
-     (symbol
-      opt-assign
-      ,(semantic-lambda
-       (semantic-tag-new-variable
-        (nth 0 vals)
-        "int"
-        (car
-         (nth 1 vals)) :constant-flag t))
-      )
-     (open-paren
-      "{"
-      ,(semantic-lambda
-       (list nil))
-      )
-     (close-paren
-      "}"
-      ,(semantic-lambda
-       (list nil))
-      )
-     (punctuation
-      "\\`[,]\\'"
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end enumsubparts
-
-    (opt-name
-     (symbol)
-     ( ;;EMPTY
-      ,(semantic-lambda
-       (list
-        ""))
-      )
-     ) ;; end opt-name
-
-    (typesimple
-     (struct-or-class
-      opt-class
-      opt-name
-      opt-template-specifier
-      opt-class-parents
-      semantic-list
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (car
-         (nth 2 vals))
-        (car
-         (nth 0 vals))
-        (let
-            (
-             (semantic-c-classname
-              (cons
-               (car
-                (nth 2 vals))
-               (car
-                (nth 0 vals)))))
-          (semantic-parse-region
-           (car
-            (nth 5 vals))
-           (cdr
-            (nth 5 vals))
-           'classsubparts
-           1))
-        (nth 4 vals) :template-specifier
-        (nth 3 vals) :parent
-        (car
-         (nth 1 vals))))
-      )
-     (struct-or-class
-      opt-class
-      opt-name
-      opt-template-specifier
-      opt-class-parents
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (car
-         (nth 2 vals))
-        (car
-         (nth 0 vals)) nil
-        (nth 4 vals) :template-specifier
-        (nth 3 vals) :prototype t :parent
-        (car
-         (nth 1 vals))))
-      )
-     (UNION
-      opt-class
-      opt-name
-      unionparts
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (car
-         (nth 2 vals))
-        (nth 0 vals)
-        (nth 3 vals) nil :parent
-        (car
-         (nth 1 vals))))
-      )
-     (ENUM
-      opt-class
-      opt-name
-      enumparts
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (car
-         (nth 2 vals))
-        (nth 0 vals)
-        (nth 3 vals) nil :parent
-        (car
-         (nth 1 vals))))
-      )
-     (TYPEDEF
-      declmods
-      typeformbase
-      cv-declmods
-      typedef-symbol-list
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (nth 4 vals)
-        (nth 0 vals) nil
-        (list
-         (nth 2 vals))))
-      )
-     ) ;; end typesimple
-
-    (typedef-symbol-list
-     (typedefname
-      punctuation
-      "\\`[,]\\'"
-      typedef-symbol-list
-      ,(semantic-lambda
-       (cons
-        (nth 0 vals)
-        (nth 2 vals)))
-      )
-     (typedefname
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)))
-      )
-     ) ;; end typedef-symbol-list
-
-    (typedefname
-     (opt-stars
-      symbol
-      opt-bits
-      opt-array
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)
-        (nth 1 vals)))
-      )
-     ) ;; end typedefname
-
-    (struct-or-class
-     (STRUCT)
-     (CLASS)
-     ) ;; end struct-or-class
-
-    (type
-     (typesimple
-      punctuation
-      "\\`[;]\\'"
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     (NAMESPACE
-      symbol
-      namespaceparts
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (nth 1 vals)
-        (nth 0 vals)
-        (nth 2 vals) nil))
-      )
-     (NAMESPACE
-      namespaceparts
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        "unnamed"
-        (nth 0 vals)
-        (nth 1 vals) nil))
-      )
-     (NAMESPACE
-      symbol
-      punctuation
-      "\\`[=]\\'"
-      typeformbase
-      punctuation
-      "\\`[;]\\'"
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (nth 1 vals)
-        (nth 0 vals)
-        (list
-         (semantic-tag-new-type
-          (car
-           (nth 3 vals))
-          (nth 0 vals) nil nil)) nil :kind
-        'alias))
-      )
-     ) ;; end type
-
-    (using
-     (USING
-      usingname
-      punctuation
-      "\\`[;]\\'"
-      ,(semantic-lambda
-       (semantic-tag
-        (car
-         (nth 1 vals))
-        'using :type
-        (nth 1 vals)))
-      )
-     ) ;; end using
-
-    (usingname
-     (typeformbase
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (car
-         (nth 0 vals))
-        "class" nil nil :prototype t))
-      )
-     (NAMESPACE
-      typeformbase
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (car
-         (nth 1 vals))
-        "namespace" nil nil :prototype t))
-      )
-     ) ;; end usingname
-
-    (template
-     (TEMPLATE
-      template-specifier
-      opt-friend
-      template-definition
-      ,(semantic-lambda
-       (semantic-c-reconstitute-template
-        (nth 3 vals)
-        (nth 1 vals)))
-      )
-     ) ;; end template
-
-    (opt-friend
-     (FRIEND)
-     ( ;;EMPTY
-      )
-     ) ;; end opt-friend
-
-    (opt-template-specifier
-     (template-specifier
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda)
-      )
-     ) ;; end opt-template-specifier
-
-    (template-specifier
-     (punctuation
-      "\\`[<]\\'"
-      template-specifier-types
-      punctuation
-      "\\`[>]\\'"
-      ,(semantic-lambda
-       (nth 1 vals))
-      )
-     ) ;; end template-specifier
-
-    (template-specifier-types
-     (template-var
-      template-specifier-type-list
-      ,(semantic-lambda
-       (cons
-        (nth 0 vals)
-        (nth 1 vals)))
-      )
-     ( ;;EMPTY
-      )
-     ) ;; end template-specifier-types
-
-    (template-specifier-type-list
-     (punctuation
-      "\\`[,]\\'"
-      template-specifier-types
-      ,(semantic-lambda
-       (nth 1 vals))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda)
-      )
-     ) ;; end template-specifier-type-list
-
-    (template-var
-     (template-type
-      opt-template-equal
-      ,(semantic-lambda
-       (cons
-        (car
-         (nth 0 vals))
-        (cdr
-         (nth 0 vals))))
-      )
-     (string
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)))
-      )
-     (number
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)))
-      )
-     (opt-stars
-      opt-ref
-      namespace-symbol
-      ,(semantic-lambda
-       (nth 2 vals))
-      )
-     (semantic-list
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)))
-      )
-     (SIZEOF
-      semantic-list
-      ,(semantic-lambda
-       (list
-        (nth 1 vals)))
-      )
-     ) ;; end template-var
-
-    (opt-template-equal
-     (punctuation
-      "\\`[=]\\'"
-      symbol
-      punctuation
-      "\\`[<]\\'"
-      template-specifier-types
-      punctuation
-      "\\`[>]\\'"
-      ,(semantic-lambda
-       (list
-        (nth 1 vals)))
-      )
-     (punctuation
-      "\\`[=]\\'"
-      symbol
-      ,(semantic-lambda
-       (list
-        (nth 1 vals)))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda)
-      )
-     ) ;; end opt-template-equal
-
-    (template-type
-     (CLASS
-      symbol
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (nth 1 vals)
-        "class" nil nil))
-      )
-     (STRUCT
-      symbol
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (nth 1 vals)
-        "struct" nil nil))
-      )
-     (TYPENAME
-      symbol
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (nth 1 vals)
-        "class" nil nil))
-      )
-     (declmods
-      typeformbase
-      cv-declmods
-      opt-stars
-      opt-ref
-      variablearg-opt-name
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (car
-         (nth 1 vals)) nil nil nil :constant-flag
-        (if
-            (member
-             "const"
-             (append
-              (nth 0 vals)
-              (nth 2 vals))) t nil) :typemodifiers
-        (delete
-         "const"
-         (append
-          (nth 0 vals)
-          (nth 2 vals))) :reference
-        (car
-         (nth 4 vals)) :pointer
-        (car
-         (nth 3 vals))))
-      )
-     ) ;; end template-type
-
-    (template-definition
-     (type
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     (var-or-fun
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     ) ;; end template-definition
-
-    (opt-stars
-     (punctuation
-      "\\`[*]\\'"
-      opt-starmod
-      opt-stars
-      ,(semantic-lambda
-       (list
-        (1+
-         (car
-          (nth 2 vals)))))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda
-       (list
-        0))
-      )
-     ) ;; end opt-stars
-
-    (opt-starmod
-     (STARMOD
-      opt-starmod
-      ,(semantic-lambda
-       (cons
-        (car
-         (nth 0 vals))
-        (nth 1 vals)))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda)
-      )
-     ) ;; end opt-starmod
-
-    (STARMOD
-     (CONST)
-     ) ;; end STARMOD
-
-    (declmods
-     (DECLMOD
-      declmods
-      ,(semantic-lambda
-       (cons
-        (car
-         (nth 0 vals))
-        (nth 1 vals)))
-      )
-     (DECLMOD
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda)
-      )
-     ) ;; end declmods
-
-    (DECLMOD
-     (EXTERN)
-     (STATIC)
-     (CVDECLMOD)
-     (INLINE)
-     (REGISTER)
-     (FRIEND)
-     (TYPENAME)
-     (METADECLMOD)
-     (VIRTUAL)
-     ) ;; end DECLMOD
-
-    (metadeclmod
-     (METADECLMOD
-      ,(semantic-lambda)
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda)
-      )
-     ) ;; end metadeclmod
-
-    (CVDECLMOD
-     (CONST)
-     (VOLATILE)
-     ) ;; end CVDECLMOD
-
-    (cv-declmods
-     (CVDECLMOD
-      cv-declmods
-      ,(semantic-lambda
-       (cons
-        (car
-         (nth 0 vals))
-        (nth 1 vals)))
-      )
-     (CVDECLMOD
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda)
-      )
-     ) ;; end cv-declmods
-
-    (METADECLMOD
-     (VIRTUAL)
-     (MUTABLE)
-     ) ;; end METADECLMOD
-
-    (opt-ref
-     (punctuation
-      "\\`[&]\\'"
-      ,(semantic-lambda
-       (list
-        1))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda
-       (list
-        0))
-      )
-     ) ;; end opt-ref
-
-    (typeformbase
-     (typesimple
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     (STRUCT
-      symbol
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (nth 1 vals)
-        (nth 0 vals) nil nil))
-      )
-     (UNION
-      symbol
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (nth 1 vals)
-        (nth 0 vals) nil nil))
-      )
-     (ENUM
-      symbol
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (nth 1 vals)
-        (nth 0 vals) nil nil))
-      )
-     (builtintype
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     (symbol
-      template-specifier
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (nth 0 vals)
-        "class" nil nil :template-specifier
-        (nth 1 vals)))
-      )
-     (namespace-symbol-for-typeformbase
-      opt-template-specifier
-      ,(semantic-lambda
-       (semantic-tag-new-type
-        (car
-         (nth 0 vals))
-        "class" nil nil :template-specifier
-        (nth 1 vals)))
-      )
-     (symbol
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)))
-      )
-     ) ;; end typeformbase
-
-    (signedmod
-     (UNSIGNED)
-     (SIGNED)
-     ) ;; end signedmod
-
-    (builtintype-types
-     (VOID)
-     (CHAR)
-     (WCHAR)
-     (SHORT
-      INT
-      ,(semantic-lambda
-       (list
-        (concat
-         (nth 0 vals)
-         " "
-         (nth 1 vals))))
-      )
-     (SHORT)
-     (INT)
-     (LONG
-      INT
-      ,(semantic-lambda
-       (list
-        (concat
-         (nth 0 vals)
-         " "
-         (nth 1 vals))))
-      )
-     (FLOAT)
-     (DOUBLE)
-     (BOOL)
-     (LONG
-      DOUBLE
-      ,(semantic-lambda
-       (list
-        (concat
-         (nth 0 vals)
-         " "
-         (nth 1 vals))))
-      )
-     (LONG
-      LONG
-      ,(semantic-lambda
-       (list
-        (concat
-         (nth 0 vals)
-         " "
-         (nth 1 vals))))
-      )
-     (LONG)
-     ) ;; end builtintype-types
-
-    (builtintype
-     (signedmod
-      builtintype-types
-      ,(semantic-lambda
-       (list
-        (concat
-         (car
-          (nth 0 vals))
-         " "
-         (car
-          (nth 1 vals)))))
-      )
-     (builtintype-types
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     (signedmod
-      ,(semantic-lambda
-       (list
-        (concat
-         (car
-          (nth 0 vals))
-         " int")))
-      )
-     ) ;; end builtintype
-
-    (codeblock-var-or-fun
-     (declmods
-      typeformbase
-      declmods
-      opt-ref
-      var-or-func-decl
-      ,(semantic-lambda
-       (semantic-c-reconstitute-token
-        (nth 4 vals)
-        (nth 0 vals)
-        (nth 1 vals)))
-      )
-     ) ;; end codeblock-var-or-fun
-
-    (var-or-fun
-     (codeblock-var-or-fun
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     (declmods
-      var-or-func-decl
-      ,(semantic-lambda
-       (semantic-c-reconstitute-token
-        (nth 1 vals)
-        (nth 0 vals) nil))
-      )
-     ) ;; end var-or-fun
-
-    (var-or-func-decl
-     (func-decl
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     (var-decl
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     ) ;; end var-or-func-decl
-
-    (func-decl
-     (opt-stars
-      opt-class
-      opt-destructor
-      functionname
-      opt-template-specifier
-      opt-under-p
-      arg-list
-      opt-post-fcn-modifiers
-      opt-throw
-      opt-initializers
-      fun-or-proto-end
-      ,(semantic-lambda
-       (nth 3 vals)
-       (list
-        'function
-        (nth 1 vals)
-        (nth 2 vals)
-        (nth 6 vals)
-        (nth 8 vals)
-        (nth 7 vals))
-       (nth 0 vals)
-       (nth 10 vals)
-       (list
-        (nth 4 vals))
-       (nth 9 vals))
-      )
-     (opt-stars
-      opt-class
-      opt-destructor
-      functionname
-      opt-template-specifier
-      opt-under-p
-      opt-post-fcn-modifiers
-      opt-throw
-      opt-initializers
-      fun-try-end
-      ,(semantic-lambda
-       (nth 3 vals)
-       (list
-        'function
-        (nth 1 vals)
-        (nth 2 vals) nil
-        (nth 7 vals)
-        (nth 6 vals))
-       (nth 0 vals)
-       (nth 9 vals)
-       (list
-        (nth 4 vals))
-       (nth 8 vals))
-      )
-     ) ;; end func-decl
-
-    (var-decl
-     (varnamelist
-      punctuation
-      "\\`[;]\\'"
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)
-        'variable))
-      )
-     ) ;; end var-decl
-
-    (opt-under-p
-     (UNDERP
-      ,(semantic-lambda
-       (list nil))
-      )
-     (UNDERUNDERP
-      ,(semantic-lambda
-       (list nil))
-      )
-     ( ;;EMPTY
-      )
-     ) ;; end opt-under-p
-
-    (opt-initializers
-     (punctuation
-      "\\`[:]\\'"
-      namespace-symbol
-      semantic-list
-      opt-initializers)
-     (punctuation
-      "\\`[,]\\'"
-      namespace-symbol
-      semantic-list
-      opt-initializers)
-     ( ;;EMPTY
-      )
-     ) ;; end opt-initializers
-
-    (opt-post-fcn-modifiers
-     (post-fcn-modifiers
-      opt-post-fcn-modifiers
-      ,(semantic-lambda
-       (cons
-        (nth 0 vals)
-        (nth 1 vals)))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end opt-post-fcn-modifiers
-
-    (post-fcn-modifiers
-     (REENTRANT)
-     (CONST)
-     ) ;; end post-fcn-modifiers
-
-    (opt-throw
-     (THROW
-      semantic-list
-      ,(lambda (vals start end)
-        (semantic-bovinate-from-nonterminal
-         (car
-          (nth 1 vals))
-         (cdr
-          (nth 1 vals))
-         'throw-exception-list))
-      )
-     ( ;;EMPTY
-      )
-     ) ;; end opt-throw
-
-    (throw-exception-list
-     (namespace-symbol
-      punctuation
-      "\\`[,]\\'"
-      throw-exception-list
-      ,(semantic-lambda
-       (cons
-        (car
-         (nth 0 vals))
-        (nth 2 vals)))
-      )
-     (namespace-symbol
-      close-paren
-      ")"
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     (symbol
-      close-paren
-      ")"
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)))
-      )
-     (open-paren
-      "("
-      throw-exception-list
-      ,(semantic-lambda
-       (nth 1 vals))
-      )
-     (close-paren
-      ")"
-      ,(semantic-lambda)
-      )
-     ) ;; end throw-exception-list
-
-    (opt-bits
-     (punctuation
-      "\\`[:]\\'"
-      number
-      ,(semantic-lambda
-       (list
-        (nth 1 vals)))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end opt-bits
-
-    (opt-array
-     (semantic-list
-      "\\[.*\\]$"
-      opt-array
-      ,(semantic-lambda
-       (list
-        (cons
-         1
-         (car
-          (nth 1 vals)))))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end opt-array
-
-    (opt-assign
-     (punctuation
-      "\\`[=]\\'"
-      expression
-      ,(semantic-lambda
-       (list
-        (nth 1 vals)))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end opt-assign
-
-    (opt-restrict
-     (symbol
-      "\\<\\(__\\)?restrict\\>")
-     ( ;;EMPTY
-      )
-     ) ;; end opt-restrict
-
-    (varname
-     (opt-stars
-      opt-restrict
-      namespace-symbol
-      opt-bits
-      opt-array
-      ,(semantic-lambda
-       (nth 2 vals)
-       (nth 0 vals)
-       (nth 3 vals)
-       (nth 4 vals))
-      )
-     ) ;; end varname
-
-    (variablearg
-     (declmods
-      typeformbase
-      cv-declmods
-      opt-ref
-      variablearg-opt-name
-      ,(semantic-lambda
-       (semantic-tag-new-variable
-        (list
-         (nth 4 vals))
-        (nth 1 vals) nil :constant-flag
-        (if
-            (member
-             "const"
-             (append
-              (nth 0 vals)
-              (nth 2 vals))) t nil) :typemodifiers
-        (delete
-         "const"
-         (append
-          (nth 0 vals)
-          (nth 2 vals))) :reference
-        (car
-         (nth 3 vals))))
-      )
-     ) ;; end variablearg
-
-    (variablearg-opt-name
-     (varname
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     (opt-stars
-      ,(semantic-lambda
-       (list
-        "")
-       (nth 0 vals)
-       (list nil nil nil))
-      )
-     ) ;; end variablearg-opt-name
-
-    (varname-opt-initializer
-     (semantic-list)
-     (opt-assign)
-     ( ;;EMPTY
-      )
-     ) ;; end varname-opt-initializer
-
-    (varnamelist
-     (opt-ref
-      varname
-      varname-opt-initializer
-      punctuation
-      "\\`[,]\\'"
-      varnamelist
-      ,(semantic-lambda
-       (cons
-        (nth 1 vals)
-        (nth 4 vals)))
-      )
-     (opt-ref
-      varname
-      varname-opt-initializer
-      ,(semantic-lambda
-       (list
-        (nth 1 vals)))
-      )
-     ) ;; end varnamelist
-
-    (namespace-symbol
-     (symbol
-      opt-template-specifier
-      punctuation
-      "\\`[:]\\'"
-      punctuation
-      "\\`[:]\\'"
-      namespace-symbol
-      ,(semantic-lambda
-       (list
-        (concat
-         (nth 0 vals)
-         "::"
-         (car
-          (nth 4 vals)))))
-      )
-     (symbol
-      opt-template-specifier
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)))
-      )
-     ) ;; end namespace-symbol
-
-    (namespace-symbol-for-typeformbase
-     (symbol
-      opt-template-specifier
-      punctuation
-      "\\`[:]\\'"
-      punctuation
-      "\\`[:]\\'"
-      namespace-symbol-for-typeformbase
-      ,(semantic-lambda
-       (list
-        (concat
-         (nth 0 vals)
-         "::"
-         (car
-          (nth 4 vals)))))
-      )
-     (symbol
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)))
-      )
-     ) ;; end namespace-symbol-for-typeformbase
-
-    (namespace-opt-class
-     (symbol
-      punctuation
-      "\\`[:]\\'"
-      punctuation
-      "\\`[:]\\'"
-      namespace-opt-class
-      ,(semantic-lambda
-       (list
-        (concat
-         (nth 0 vals)
-         "::"
-         (car
-          (nth 3 vals)))))
-      )
-     (symbol
-      opt-template-specifier
-      punctuation
-      "\\`[:]\\'"
-      punctuation
-      "\\`[:]\\'"
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)))
-      )
-     ) ;; end namespace-opt-class
-
-    (opt-class
-     (namespace-opt-class
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end opt-class
-
-    (opt-destructor
-     (punctuation
-      "\\`[~]\\'"
-      ,(semantic-lambda
-       (list t))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end opt-destructor
-
-    (arg-list
-     (semantic-list
-      "^("
-      knr-arguments
-      ,(semantic-lambda
-       (nth 1 vals))
-      )
-     (semantic-list
-      "^("
-      ,(semantic-lambda
-       (semantic-parse-region
-        (car
-         (nth 0 vals))
-        (cdr
-         (nth 0 vals))
-        'arg-sub-list
-        1))
-      )
-     (semantic-list
-      "^(void)$"
-      ,(semantic-lambda)
-      )
-     ) ;; end arg-list
-
-    (knr-varnamelist
-     (varname
-      punctuation
-      "\\`[,]\\'"
-      knr-varnamelist
-      ,(semantic-lambda
-       (cons
-        (nth 0 vals)
-        (nth 2 vals)))
-      )
-     (varname
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)))
-      )
-     ) ;; end knr-varnamelist
-
-    (knr-one-variable-decl
-     (declmods
-      typeformbase
-      cv-declmods
-      knr-varnamelist
-      ,(semantic-lambda
-       (semantic-tag-new-variable
-        (nreverse
-         (nth 3 vals))
-        (nth 1 vals) nil :constant-flag
-        (if
-            (member
-             "const"
-             (append
-              (nth 2 vals))) t nil) :typemodifiers
-        (delete
-         "const"
-         (nth 2 vals))))
-      )
-     ) ;; end knr-one-variable-decl
-
-    (knr-arguments
-     (knr-one-variable-decl
-      punctuation
-      "\\`[;]\\'"
-      knr-arguments
-      ,(semantic-lambda
-       (append
-        (semantic-expand-c-tag
-         (nth 0 vals))
-        (nth 2 vals)))
-      )
-     (knr-one-variable-decl
-      punctuation
-      "\\`[;]\\'"
-      ,(semantic-lambda
-       (semantic-expand-c-tag
-        (nth 0 vals)))
-      )
-     ) ;; end knr-arguments
-
-    (arg-sub-list
-     (variablearg
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     (punctuation
-      "\\`[.]\\'"
-      punctuation
-      "\\`[.]\\'"
-      punctuation
-      "\\`[.]\\'"
-      close-paren
-      ")"
-      ,(semantic-lambda
-       (semantic-tag-new-variable
-        "..."
-        "vararg" nil))
-      )
-     (punctuation
-      "\\`[,]\\'"
-      ,(semantic-lambda
-       (list nil))
-      )
-     (open-paren
-      "("
-      ,(semantic-lambda
-       (list nil))
-      )
-     (close-paren
-      ")"
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end arg-sub-list
-
-    (operatorsym
-     (punctuation
-      "\\`[<]\\'"
-      punctuation
-      "\\`[<]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        "<<="))
-      )
-     (punctuation
-      "\\`[>]\\'"
-      punctuation
-      "\\`[>]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        ">>="))
-      )
-     (punctuation
-      "\\`[<]\\'"
-      punctuation
-      "\\`[<]\\'"
-      ,(semantic-lambda
-       (list
-        "<<"))
-      )
-     (punctuation
-      "\\`[>]\\'"
-      punctuation
-      "\\`[>]\\'"
-      ,(semantic-lambda
-       (list
-        ">>"))
-      )
-     (punctuation
-      "\\`[=]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        "=="))
-      )
-     (punctuation
-      "\\`[<]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        "<="))
-      )
-     (punctuation
-      "\\`[>]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        ">="))
-      )
-     (punctuation
-      "\\`[!]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        "!="))
-      )
-     (punctuation
-      "\\`[+]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        "+="))
-      )
-     (punctuation
-      "\\`[-]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        "-="))
-      )
-     (punctuation
-      "\\`[*]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        "*="))
-      )
-     (punctuation
-      "\\`[/]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        "/="))
-      )
-     (punctuation
-      "\\`[%]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        "%="))
-      )
-     (punctuation
-      "\\`[&]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        "&="))
-      )
-     (punctuation
-      "\\`[|]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        "|="))
-      )
-     (punctuation
-      "\\`[-]\\'"
-      punctuation
-      "\\`[>]\\'"
-      punctuation
-      "\\`[*]\\'"
-      ,(semantic-lambda
-       (list
-        "->*"))
-      )
-     (punctuation
-      "\\`[-]\\'"
-      punctuation
-      "\\`[>]\\'"
-      ,(semantic-lambda
-       (list
-        "->"))
-      )
-     (semantic-list
-      "()"
-      ,(semantic-lambda
-       (list
-        "()"))
-      )
-     (semantic-list
-      "\\[\\]"
-      ,(semantic-lambda
-       (list
-        "[]"))
-      )
-     (punctuation
-      "\\`[<]\\'")
-     (punctuation
-      "\\`[>]\\'")
-     (punctuation
-      "\\`[*]\\'")
-     (punctuation
-      "\\`[+]\\'"
-      punctuation
-      "\\`[+]\\'"
-      ,(semantic-lambda
-       (list
-        "++"))
-      )
-     (punctuation
-      "\\`[+]\\'")
-     (punctuation
-      "\\`[-]\\'"
-      punctuation
-      "\\`[-]\\'"
-      ,(semantic-lambda
-       (list
-        "--"))
-      )
-     (punctuation
-      "\\`[-]\\'")
-     (punctuation
-      "\\`[&]\\'"
-      punctuation
-      "\\`[&]\\'"
-      ,(semantic-lambda
-       (list
-        "&&"))
-      )
-     (punctuation
-      "\\`[&]\\'")
-     (punctuation
-      "\\`[|]\\'"
-      punctuation
-      "\\`[|]\\'"
-      ,(semantic-lambda
-       (list
-        "||"))
-      )
-     (punctuation
-      "\\`[|]\\'")
-     (punctuation
-      "\\`[/]\\'")
-     (punctuation
-      "\\`[=]\\'")
-     (punctuation
-      "\\`[!]\\'")
-     (punctuation
-      "\\`[~]\\'")
-     (punctuation
-      "\\`[%]\\'")
-     (punctuation
-      "\\`[,]\\'")
-     (punctuation
-      "\\`\\^\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda
-       (list
-        "^="))
-      )
-     (punctuation
-      "\\`\\^\\'")
-     ) ;; end operatorsym
-
-    (functionname
-     (OPERATOR
-      operatorsym
-      ,(semantic-lambda
-       (nth 1 vals))
-      )
-     (semantic-list
-      ,(lambda (vals start end)
-        (semantic-bovinate-from-nonterminal
-         (car
-          (nth 0 vals))
-         (cdr
-          (nth 0 vals))
-         'function-pointer))
-      )
-     (symbol
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)))
-      )
-     ) ;; end functionname
-
-    (function-pointer
-     (open-paren
-      "("
-      punctuation
-      "\\`[*]\\'"
-      symbol
-      close-paren
-      ")"
-      ,(semantic-lambda
-       (list
-        (concat
-         "*"
-         (nth 2 vals))))
-      )
-     (open-paren
-      "("
-      symbol
-      close-paren
-      ")"
-      ,(semantic-lambda
-       (list
-        (nth 1 vals)))
-      )
-     ) ;; end function-pointer
-
-    (fun-or-proto-end
-     (punctuation
-      "\\`[;]\\'"
-      ,(semantic-lambda
-       (list t))
-      )
-     (semantic-list
-      ,(semantic-lambda
-       (list nil))
-      )
-     (punctuation
-      "\\`[=]\\'"
-      number
-      "^0$"
-      punctuation
-      "\\`[;]\\'"
-      ,(semantic-lambda
-       (list ':pure-virtual-flag))
-      )
-     (fun-try-end
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end fun-or-proto-end
-
-    (fun-try-end
-     (TRY
-      opt-initializers
-      semantic-list
-      "^{"
-      fun-try-several-catches
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end fun-try-end
-
-    (fun-try-several-catches
-     (CATCH
-      semantic-list
-      "^("
-      semantic-list
-      "^{"
-      fun-try-several-catches
-      ,(semantic-lambda)
-      )
-     (CATCH
-      semantic-list
-      "^{"
-      fun-try-several-catches
-      ,(semantic-lambda)
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda)
-      )
-     ) ;; end fun-try-several-catches
-
-    (type-cast
-     (semantic-list
-      ,(lambda (vals start end)
-        (semantic-bovinate-from-nonterminal
-         (car
-          (nth 0 vals))
-         (cdr
-          (nth 0 vals))
-         'type-cast-list))
-      )
-     ) ;; end type-cast
-
-    (type-cast-list
-     (open-paren
-      typeformbase
-      close-paren)
-     ) ;; end type-cast-list
-
-    (opt-stuff-after-symbol
-     (semantic-list
-      "^(")
-     (semantic-list
-      "\\[.*\\]$")
-     ( ;;EMPTY
-      )
-     ) ;; end opt-stuff-after-symbol
-
-    (multi-stage-dereference
-     (namespace-symbol
-      opt-stuff-after-symbol
-      punctuation
-      "\\`[.]\\'"
-      multi-stage-dereference)
-     (namespace-symbol
-      opt-stuff-after-symbol
-      punctuation
-      "\\`[-]\\'"
-      punctuation
-      "\\`[>]\\'"
-      multi-stage-dereference)
-     (namespace-symbol
-      opt-stuff-after-symbol)
-     ) ;; end multi-stage-dereference
-
-    (string-seq
-     (string
-      string-seq
-      ,(semantic-lambda
-       (list
-        (concat
-         (nth 0 vals)
-         (car
-          (nth 1 vals)))))
-      )
-     (string
-      ,(semantic-lambda
-       (list
-        (nth 0 vals)))
-      )
-     ) ;; end string-seq
-
-    (expr-start
-     (punctuation
-      "\\`[-]\\'")
-     (punctuation
-      "\\`[+]\\'")
-     (punctuation
-      "\\`[*]\\'")
-     (punctuation
-      "\\`[&]\\'")
-     ) ;; end expr-start
-
-    (expr-binop
-     (punctuation
-      "\\`[-]\\'")
-     (punctuation
-      "\\`[+]\\'")
-     (punctuation
-      "\\`[*]\\'")
-     (punctuation
-      "\\`[/]\\'")
-     (punctuation
-      "\\`[&]\\'"
-      punctuation
-      "\\`[&]\\'")
-     (punctuation
-      "\\`[&]\\'")
-     (punctuation
-      "\\`[|]\\'"
-      punctuation
-      "\\`[|]\\'")
-     (punctuation
-      "\\`[|]\\'")
-     ) ;; end expr-binop
-
-    (expression
-     (unaryexpression
-      expr-binop
-      unaryexpression
-      ,(semantic-lambda
-       (list
-        (identity start)
-        (identity end)))
-      )
-     (unaryexpression
-      ,(semantic-lambda
-       (list
-        (identity start)
-        (identity end)))
-      )
-     ) ;; end expression
-
-    (unaryexpression
-     (number)
-     (multi-stage-dereference)
-     (NEW
-      multi-stage-dereference)
-     (NEW
-      builtintype-types
-      semantic-list)
-     (namespace-symbol)
-     (string-seq)
-     (type-cast
-      expression)
-     (semantic-list
-      expression)
-     (semantic-list)
-     (expr-start
-      expression)
-     ) ;; end unaryexpression
-    )
-  "Parser table.")
-
-(defun semantic-c-by--install-parser ()
-  "Setup the Semantic Parser."
-  (setq semantic--parse-table semantic-c-by--parse-table
-       semantic-debug-parser-source "c.by"
-       semantic-debug-parser-class 'semantic-bovine-debug-parser
-       semantic-flex-keywords-obarray semantic-c-by--keyword-table
-       semantic-equivalent-major-modes '(c-mode c++-mode)
-       ))
-
-\f
-;;; Analyzers
-;;
-\f
-;;; Epilogue
-;;
-
-(provide 'semantic/bovine/c-by)
-
-;;; semantic/bovine/c-by.el ends here
index 0133ee72b1811769e31e8717b5b0538b01cd1fbc..8a87fa9170e84017fbf6696217ae17fedddbae81 100644 (file)
@@ -443,34 +443,39 @@ Menu items are appended to the common grammar menu.")
     )
   "Semantic grammar macros used in bovine grammars.")
 
-(defun bovine-make-parsers ()
-  "Generate Emacs' built-in Bovine-based parser files."
-  (interactive)
-  (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 filename copyright-end)
-      (when (and packagename
-                (string-match "^.*/\\(.*\\)-by\\.el\\'" packagename))
-       (setq lang (match-string 1 packagename))
-       (setq filename (concat lang "-by.el"))
-       (with-temp-buffer
-         (insert-file-contents filename)
-         (setq buffer-file-name (expand-file-name filename))
-         ;; 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.
+(defun bovine--make-parser-1 (infile &optional outdir)
+  (if outdir (setq outdir (file-name-directory (expand-file-name outdir))))
+  ;; It would be nicer to use a temp-buffer rather than find-file-noselect.
+  ;; The only thing stopping us is bovine-grammar-setupcode-builder's
+  ;; use of (buffer-name).  Perhaps that could be changed to
+  ;; (file-name-nondirectory (buffer-file-name)) ?
+;;  (with-temp-buffer
+;;    (insert-file-contents infile)
+;;    (bovine-grammar-mode)
+;;    (setq buffer-file-name (expand-file-name infile))
+;;    (if outdir (setq default-directory outdir))
+  (let ((packagename
+        ;; This is with-demoted-errors.
+        (condition-case err
+            (with-current-buffer (find-file-noselect infile)
+              (if outdir (setq default-directory outdir))
+              (semantic-grammar-create-package nil t))
+          (error (message "%s" (error-message-string err)) nil)))
+       lang filename copyright-end)
+    (when (and packagename
+              (string-match "^.*/\\(.*\\)-by\\.el\\'" packagename))
+      (setq lang (match-string 1 packagename))
+      (setq filename (expand-file-name (concat lang "-by.el") outdir))
+      (with-temp-file filename
+       (insert-file-contents filename)
+       ;; 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
@@ -488,18 +493,50 @@ Menu items are appended to the common grammar menu.")
 ;;; Commentary:
 ;;
 ;; This file was generated from admin/grammars/"
-                 lang ".by.
+               lang ".by.
 
 ;;; Code:
 ")
-         (goto-char (point-min))
-         (delete-region (point-min) (line-end-position))
-         (insert ";;; " packagename
-                 " --- Generated parser support file")
-         (delete-trailing-whitespace)
-         (re-search-forward ";;; \\(.*\\) ends here")
-         (replace-match packagename nil nil nil 1)
-         (save-buffer))))))
+       (goto-char (point-min))
+       (delete-region (point-min) (line-end-position))
+       (insert ";;; " packagename
+               " --- Generated parser support file")
+       (delete-trailing-whitespace)
+       (re-search-forward ";;; \\(.*\\) ends here")
+       (replace-match packagename nil nil nil 1)))))
+
+(defun bovine-make-parsers ()
+  "Generate Emacs's built-in Bovine-based parser files."
+  (interactive)
+  (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\\'"))
+    (bovine--make-parser-1 f)))
+
+
+(defun bovine-batch-make-parser (&optional infile outdir)
+  "Generate a Bovine parser from input INFILE, writing to OUTDIR.
+This is mainly intended for use in batch mode:
+
+emacs -batch -l semantic/bovine/grammar -f bovine-make-parser-batch \\
+   [-dir output-dir | -o output-file] file.by
+
+If -o is supplied, only the directory part is used."
+  (semantic-mode 1)
+  (when (and noninteractive (not infile))
+    (let (arg)
+      (while command-line-args-left
+       (setq arg (pop command-line-args-left))
+       (cond ((string-equal arg "-dir")
+              (setq outdir (pop command-line-args-left)))
+             ((string-equal arg "-o")
+              (setq outdir (file-name-directory (pop command-line-args-left))))
+             (t (setq infile arg))))))
+  (or infile (error "No input file specified"))
+  (or (file-readable-p infile)
+      (error "Input file `%s' not readable" infile))
+  (bovine--make-parser-1 infile outdir))
 
 (provide 'semantic/bovine/grammar)
 
diff --git a/lisp/cedet/semantic/bovine/make-by.el b/lisp/cedet/semantic/bovine/make-by.el
deleted file mode 100644 (file)
index b94cfa4..0000000
+++ /dev/null
@@ -1,391 +0,0 @@
-;;; semantic/bovine/make-by.el --- Generated parser support file
-
-;; Copyright (C) 1999-2004, 2008-2013 Free Software Foundation, Inc.
-
-;; 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/make.by.
-
-;;; Code:
-
-(require 'semantic/lex)
-(eval-when-compile (require 'semantic/bovine))
-\f
-;;; Prologue
-;;
-\f
-;;; Declarations
-;;
-(defconst semantic-make-by--keyword-table
-  (semantic-lex-make-keyword-table
-   '(("if" . IF)
-     ("ifdef" . IFDEF)
-     ("ifndef" . IFNDEF)
-     ("ifeq" . IFEQ)
-     ("ifneq" . IFNEQ)
-     ("else" . ELSE)
-     ("endif" . ENDIF)
-     ("include" . INCLUDE))
-   '(("include" summary "Macro: include filename1 filename2 ...")
-     ("ifneq" summary "Conditional: ifneq (expression) ... else ... endif")
-     ("ifeq" summary "Conditional: ifeq (expression) ... else ... endif")
-     ("ifndef" summary "Conditional: ifndef (expression) ... else ... endif")
-     ("ifdef" summary "Conditional: ifdef (expression) ... else ... endif")
-     ("endif" summary "Conditional: if (expression) ... else ... endif")
-     ("else" summary "Conditional: if (expression) ... else ... endif")
-     ("if" summary "Conditional: if (expression) ... else ... endif")))
-  "Table of language keywords.")
-
-(defconst semantic-make-by--token-table
-  (semantic-lex-make-type-table
-   '(("punctuation"
-      (BACKSLASH . "\\`[\\]\\'")
-      (DOLLAR . "\\`[$]\\'")
-      (EQUAL . "\\`[=]\\'")
-      (PLUS . "\\`[+]\\'")
-      (COLON . "\\`[:]\\'")))
-   'nil)
-  "Table of lexical tokens.")
-
-(defconst semantic-make-by--parse-table
-  `(
-    (bovine-toplevel
-     (Makefile)
-     ) ;; end bovine-toplevel
-
-    (Makefile
-     (bol
-      newline
-      ,(semantic-lambda
-       (list nil))
-      )
-     (bol
-      variable
-      ,(semantic-lambda
-       (nth 1 vals))
-      )
-     (bol
-      rule
-      ,(semantic-lambda
-       (nth 1 vals))
-      )
-     (bol
-      conditional
-      ,(semantic-lambda
-       (nth 1 vals))
-      )
-     (bol
-      include
-      ,(semantic-lambda
-       (nth 1 vals))
-      )
-     (whitespace
-      ,(semantic-lambda
-       (list nil))
-      )
-     (newline
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end Makefile
-
-    (variable
-     (symbol
-      opt-whitespace
-      equals
-      opt-whitespace
-      element-list
-      ,(semantic-lambda
-       (semantic-tag-new-variable
-        (nth 0 vals) nil
-        (nth 4 vals)))
-      )
-     ) ;; end variable
-
-    (rule
-     (targets
-      opt-whitespace
-      colons
-      opt-whitespace
-      element-list
-      commands
-      ,(semantic-lambda
-       (semantic-tag-new-function
-        (nth 0 vals) nil
-        (nth 4 vals)))
-      )
-     ) ;; end rule
-
-    (targets
-     (target
-      opt-whitespace
-      targets
-      ,(semantic-lambda
-       (list
-        (car
-         (nth 0 vals))
-        (car
-         (nth 2 vals))))
-      )
-     (target
-      ,(semantic-lambda
-       (list
-        (car
-         (nth 0 vals))))
-      )
-     ) ;; end targets
-
-    (target
-     (sub-target
-      target
-      ,(semantic-lambda
-       (list
-        (concat
-         (car
-          (nth 0 vals))
-         (car
-          (nth 2 vals)))))
-      )
-     (sub-target
-      ,(semantic-lambda
-       (list
-        (car
-         (nth 0 vals))))
-      )
-     ) ;; end target
-
-    (sub-target
-     (symbol)
-     (string)
-     (varref)
-     ) ;; end sub-target
-
-    (conditional
-     (IF
-      some-whitespace
-      symbol
-      newline
-      ,(semantic-lambda
-       (list nil))
-      )
-     (IFDEF
-      some-whitespace
-      symbol
-      newline
-      ,(semantic-lambda
-       (list nil))
-      )
-     (IFNDEF
-      some-whitespace
-      symbol
-      newline
-      ,(semantic-lambda
-       (list nil))
-      )
-     (IFEQ
-      some-whitespace
-      expression
-      newline
-      ,(semantic-lambda
-       (list nil))
-      )
-     (IFNEQ
-      some-whitespace
-      expression
-      newline
-      ,(semantic-lambda
-       (list nil))
-      )
-     (ELSE
-      newline
-      ,(semantic-lambda
-       (list nil))
-      )
-     (ENDIF
-      newline
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end conditional
-
-    (expression
-     (semantic-list)
-     ) ;; end expression
-
-    (include
-     (INCLUDE
-      some-whitespace
-      element-list
-      ,(semantic-lambda
-       (semantic-tag-new-include
-        (nth 2 vals) nil))
-      )
-     ) ;; end include
-
-    (equals
-     (punctuation
-      "\\`[:]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda)
-      )
-     (punctuation
-      "\\`[+]\\'"
-      punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda)
-      )
-     (punctuation
-      "\\`[=]\\'"
-      ,(semantic-lambda)
-      )
-     ) ;; end equals
-
-    (colons
-     (punctuation
-      "\\`[:]\\'"
-      punctuation
-      "\\`[:]\\'"
-      ,(semantic-lambda)
-      )
-     (punctuation
-      "\\`[:]\\'"
-      ,(semantic-lambda)
-      )
-     ) ;; end colons
-
-    (element-list
-     (elements
-      newline
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     ) ;; end element-list
-
-    (elements
-     (element
-      some-whitespace
-      elements
-      ,(semantic-lambda
-       (nth 0 vals)
-       (nth 2 vals))
-      )
-     (element
-      ,(semantic-lambda
-       (nth 0 vals))
-      )
-     ( ;;EMPTY
-      )
-     ) ;; end elements
-
-    (element
-     (sub-element
-      element
-      ,(semantic-lambda
-       (list
-        (concat
-         (car
-          (nth 0 vals))
-         (car
-          (nth 1 vals)))))
-      )
-     ( ;;EMPTY
-      )
-     ) ;; end element
-
-    (sub-element
-     (symbol)
-     (string)
-     (punctuation)
-     (semantic-list
-      ,(semantic-lambda
-       (list
-        (buffer-substring-no-properties
-         (identity start)
-         (identity end))))
-      )
-     ) ;; end sub-element
-
-    (varref
-     (punctuation
-      "\\`[$]\\'"
-      semantic-list
-      ,(semantic-lambda
-       (list
-        (buffer-substring-no-properties
-         (identity start)
-         (identity end))))
-      )
-     ) ;; end varref
-
-    (commands
-     (bol
-      shell-command
-      newline
-      commands
-      ,(semantic-lambda
-       (list
-        (nth 0 vals))
-       (nth 1 vals))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda)
-      )
-     ) ;; end commands
-
-    (opt-whitespace
-     (some-whitespace
-      ,(semantic-lambda
-       (list nil))
-      )
-     ( ;;EMPTY
-      )
-     ) ;; end opt-whitespace
-
-    (some-whitespace
-     (whitespace
-      some-whitespace
-      ,(semantic-lambda
-       (list nil))
-      )
-     (whitespace
-      ,(semantic-lambda
-       (list nil))
-      )
-     ) ;; end some-whitespace
-    )
-  "Parser table.")
-
-(defun semantic-make-by--install-parser ()
-  "Setup the Semantic Parser."
-  (setq semantic--parse-table semantic-make-by--parse-table
-       semantic-debug-parser-source "make.by"
-       semantic-debug-parser-class 'semantic-bovine-debug-parser
-       semantic-flex-keywords-obarray semantic-make-by--keyword-table
-       ))
-
-\f
-;;; Analyzers
-;;
-\f
-;;; Epilogue
-;;
-
-(provide 'semantic/bovine/make-by)
-
-;;; semantic/bovine/make-by.el ends here
diff --git a/lisp/cedet/semantic/bovine/scm-by.el b/lisp/cedet/semantic/bovine/scm-by.el
deleted file mode 100644 (file)
index 261607c..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-;;; semantic/bovine/scm-by.el --- Generated parser support file
-
-;; Copyright (C) 2001, 2003, 2009-2013 Free Software Foundation, Inc.
-
-;; 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/scm.by.
-
-;;; Code:
-
-(require 'semantic/lex)
-(eval-when-compile (require 'semantic/bovine))
-\f
-;;; Prologue
-;;
-\f
-;;; Declarations
-;;
-(defconst semantic-scm-by--keyword-table
-  (semantic-lex-make-keyword-table
-   '(("define" . DEFINE)
-     ("define-module" . DEFINE-MODULE)
-     ("load" . LOAD))
-   '(("load" summary "Function: (load \"filename\")")
-     ("define-module" summary "Function: (define-module (name arg1 ...)) ")
-     ("define" summary "Function: (define symbol expression)")))
-  "Table of language keywords.")
-
-(defconst semantic-scm-by--token-table
-  (semantic-lex-make-type-table
-   '(("close-paren"
-      (CLOSEPAREN . ")"))
-     ("open-paren"
-      (OPENPAREN . "(")))
-   'nil)
-  "Table of lexical tokens.")
-
-(defconst semantic-scm-by--parse-table
-  `(
-    (bovine-toplevel
-     (scheme)
-     ) ;; end bovine-toplevel
-
-    (scheme
-     (semantic-list
-      ,(lambda (vals start end)
-        (semantic-bovinate-from-nonterminal
-         (car
-          (nth 0 vals))
-         (cdr
-          (nth 0 vals))
-         'scheme-list))
-      )
-     ) ;; end scheme
-
-    (scheme-list
-     (open-paren
-      "("
-      scheme-in-list
-      close-paren
-      ")"
-      ,(semantic-lambda
-       (nth 1 vals))
-      )
-     ) ;; end scheme-list
-
-    (scheme-in-list
-     (DEFINE
-       symbol
-       expression
-       ,(semantic-lambda
-        (semantic-tag-new-variable
-         (nth 1 vals) nil
-         (nth 2 vals)))
-       )
-     (DEFINE
-       name-args
-       opt-doc
-       sequence
-       ,(semantic-lambda
-        (semantic-tag-new-function
-         (car
-          (nth 1 vals)) nil
-         (cdr
-          (nth 1 vals))))
-       )
-     (DEFINE-MODULE
-       name-args
-       ,(semantic-lambda
-        (semantic-tag-new-package
-         (nth
-          (length
-           (nth 1 vals))
-          (nth 1 vals)) nil))
-       )
-     (LOAD
-      string
-      ,(semantic-lambda
-       (semantic-tag-new-include
-        (file-name-nondirectory
-         (read
-          (nth 1 vals)))
-        (read
-         (nth 1 vals))))
-      )
-     (symbol
-      ,(semantic-lambda
-       (semantic-tag-new-code
-        (nth 0 vals) nil))
-      )
-     ) ;; end scheme-in-list
-
-    (name-args
-     (semantic-list
-      ,(lambda (vals start end)
-        (semantic-bovinate-from-nonterminal
-         (car
-          (nth 0 vals))
-         (cdr
-          (nth 0 vals))
-         'name-arg-expand))
-      )
-     ) ;; end name-args
-
-    (name-arg-expand
-     (open-paren
-      name-arg-expand
-      ,(semantic-lambda
-       (nth 1 vals))
-      )
-     (symbol
-      name-arg-expand
-      ,(semantic-lambda
-       (cons
-        (nth 0 vals)
-        (nth 1 vals)))
-      )
-     ( ;;EMPTY
-      ,(semantic-lambda)
-      )
-     ) ;; end name-arg-expand
-
-    (opt-doc
-     (string)
-     ( ;;EMPTY
-      )
-     ) ;; end opt-doc
-
-    (sequence
-     (expression
-      sequence)
-     (expression)
-     ) ;; end sequence
-
-    (expression
-     (symbol)
-     (semantic-list)
-     (string)
-     (number)
-     ) ;; end expression
-    )
-  "Parser table.")
-
-(defun semantic-scm-by--install-parser ()
-  "Setup the Semantic Parser."
-  (setq semantic--parse-table semantic-scm-by--parse-table
-       semantic-debug-parser-source "scheme.by"
-       semantic-debug-parser-class 'semantic-bovine-debug-parser
-       semantic-flex-keywords-obarray semantic-scm-by--keyword-table
-       ))
-
-\f
-;;; Analyzers
-;;
-\f
-;;; Epilogue
-;;
-
-(provide 'semantic/bovine/scm-by)
-
-;;; semantic/bovine/scm-by.el ends here
index 8d9cfcccd7d27784f021720a74509f73e7763a55..614ce706b0c7d9abe69bf2b94624f7a48da9b807 100644 (file)
@@ -697,7 +697,7 @@ form."
   (interactive)
   (unless noninteractive
     (message "Saving tag summaries..."))
-  (let ((semanticdb--inhibit-make-directory nil))
+  (let ((semanticdb--inhibit-make-directory noninteractive))
     (mapc 'semanticdb-save-db semanticdb-database-list))
   (unless noninteractive
     (message "Saving tag summaries...done")))
index a545fcaee46091c35dfb0644ef389e31bc10f911..ca36829df825e59de64dc88469868f17a94a40b0 100644 (file)
@@ -33,6 +33,8 @@
 (require 'semantic/wisent)
 (require 'semantic/ctxt)
 (require 'semantic/format)
+;; FIXME this is a generated file, but we need to load this file to
+;; generate it!
 (require 'semantic/grammar-wy)
 (require 'semantic/idle)
 (require 'help-fns)
@@ -605,6 +607,11 @@ The symbols in the template are local variables in
 
 \(provide '" libr ")
 
+;; Local Variables:
+;; version-control: never
+;; no-update-autoloads: t
+;; End:
+
 ;;; " file " ends here
 ")
   "Generated footer template.
@@ -822,9 +829,10 @@ Block definitions are read from the current table of lexical types."
       (noninteractive)
     noninteractive))
 
-(defun semantic-grammar-create-package (&optional force)
+(defun semantic-grammar-create-package (&optional force uptodate)
   "Create package Lisp code from grammar in current buffer.
-Does nothing if the Lisp code seems up to date.
+If the Lisp code seems up to date, do nothing (if UPTODATE
+is non-nil, return nil in such cases).
 If optional argument FORCE is non-nil, unconditionally re-generate the
 Lisp code."
   (interactive "P")
@@ -854,7 +862,12 @@ Lisp code."
              (file-newer-than-file-p
               (buffer-file-name semantic--grammar-output-buffer)
               (buffer-file-name semantic--grammar-input-buffer)))
-        (message "Package `%s' is up to date." semantic--grammar-package)
+       (progn
+         (message "Package `%s' is up to date." semantic--grammar-package)
+         ;; It would be better if this were always the case, IMO,
+         ;; but the (unspecified) return value of this function is
+         ;; assumed to be non-nil in some places, it seems.
+         (if uptodate (setq output nil)))
       ;; Create the package
       (set-buffer semantic--grammar-output-buffer)
       ;; Use Unix EOLs, so that the file is portable to all platforms.
@@ -1914,6 +1927,7 @@ Optional argument COLOR determines if color is added to the text."
 
 (provide 'semantic/grammar)
 
+\f
 ;; Local variables:
 ;; generated-autoload-load-name: "semantic/grammar"
 ;; End:
index 109d5ae7dfb16e5227eaa64a50634cf9e63aa9c7..f61b05fa2e66462e36c0ac2188bcf14239b8b760 100644 (file)
@@ -473,6 +473,54 @@ Menu items are appended to the common grammar menu.")
 \;; 2009, 2010 Python Software Foundation; All Rights Reserved"
      ,wisent-make-parsers--python-license)))
 
+;; Cf bovine--make-parser-1.
+(defun wisent--make-parser-1 (infile &optional outdir)
+  (if outdir (setq outdir (file-name-directory (expand-file-name outdir))))
+  (let ((packagename
+        ;; This is with-demoted-errors.
+        (condition-case err
+            (with-current-buffer (find-file-noselect infile)
+              (if outdir (setq default-directory outdir))
+              (semantic-grammar-create-package nil t))
+          (error (message "%s" (error-message-string err)) nil)))
+       output-data)
+    (when (setq output-data (assoc packagename wisent-make-parsers--parser-file-name))
+      (let ((additional-copyright (nth 1 output-data))
+           (additional-license   (nth 2 output-data))
+           (filename (expand-file-name
+                      (progn (string-match ".*/\\(.*\\)" packagename)
+                             (match-string 1 packagename))
+                      outdir))
+           copyright-end)
+       ;; Touch up the generated parsers for Emacs integration.
+       (with-temp-file filename
+         (insert-file-contents filename)
+         ;; 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/"
+                 (file-name-nondirectory infile) ".")
+         (when additional-license
+           (insert "\n" additional-license))
+         (insert "\n\n;;; Code:\n")
+         (goto-char (point-min))
+         (delete-region (point-min) (line-end-position))
+         (insert ";;; " packagename
+                 " --- Generated parser support file")
+         (re-search-forward ";;; \\(.*\\) ends here")
+         (replace-match packagename nil nil nil 1)
+         (delete-trailing-whitespace))))))
+
 (defun wisent-make-parsers ()
   "Generate Emacs' built-in Wisent-based parser files."
   (interactive)
@@ -480,46 +528,32 @@ Menu items are appended to the common grammar menu.")
   ;; 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 ((additional-copyright (nth 1 output-data))
-             (additional-license   (nth 2 output-data))
-             (filename (progn (string-match ".*/\\(.*\\)" packagename) (match-string 1 packagename)))
-             copyright-end)
-         ;; Touch up the generated parsers for Emacs integration.
-         (with-temp-buffer
-           (insert-file-contents filename)
-           ;; 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")
-           (goto-char (point-min))
-           (delete-region (point-min) (line-end-position))
-           (insert ";;; " packagename
-                   " --- Generated parser support file")
-           (re-search-forward ";;; \\(.*\\) ends here")
-           (replace-match packagename nil nil nil 1)
-           (delete-trailing-whitespace)
-           (write-region nil nil (expand-file-name filename))))))))
+    (wisent--make-parser-1 f)))
+
+
+(defun wisent-batch-make-parser (&optional infile outdir)
+  "Generate a Wisent parser from input INFILE, writing to OUTDIR.
+This is mainly intended for use in batch mode:
+
+emacs -batch -l semantic/wisent/grammar -f wisent-make-parser-batch \\
+   [-dir output-dir | -o output-file] file.by
+
+If -o is supplied, only the directory part is used."
+  (semantic-mode 1)
+  (when (and noninteractive (not infile))
+    (let (arg)
+      (while command-line-args-left
+       (setq arg (pop command-line-args-left))
+       (cond ((string-equal arg "-dir")
+              (setq outdir (pop command-line-args-left)))
+             ((string-equal arg "-o")
+              (setq outdir (file-name-directory (pop command-line-args-left))))
+             (t (setq infile arg))))))
+  (or infile (error "No input file specified"))
+  (or (file-readable-p infile)
+      (error "Input file `%s' not readable" infile))
+  (wisent--make-parser-1 infile outdir))
+
 
 (provide 'semantic/wisent/grammar)
 
diff --git a/lisp/cedet/semantic/wisent/javat-wy.el b/lisp/cedet/semantic/wisent/javat-wy.el
deleted file mode 100644 (file)
index 1156cb5..0000000
+++ /dev/null
@@ -1,688 +0,0 @@
-;;; semantic/wisent/javat-wy.el --- Generated parser support file
-
-;; Copyright (C) 2002-2013 Free Software Foundation, Inc.
-
-;; 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/java-tags.wy.
-
-;;; Code:
-
-(require 'semantic/lex)
-(eval-when-compile (require 'semantic/bovine))
-\f
-;;; Prologue
-;;
-(declare-function semantic-parse-region "semantic"
-                 (start end &optional nonterminal depth returnonerror))
-\f
-;;; Declarations
-;;
-(defconst wisent-java-tags-wy--keyword-table
-  (semantic-lex-make-keyword-table
-   '(("abstract" . ABSTRACT)
-     ("boolean" . BOOLEAN)
-     ("break" . BREAK)
-     ("byte" . BYTE)
-     ("case" . CASE)
-     ("catch" . CATCH)
-     ("char" . CHAR)
-     ("class" . CLASS)
-     ("const" . CONST)
-     ("continue" . CONTINUE)
-     ("default" . DEFAULT)
-     ("do" . DO)
-     ("double" . DOUBLE)
-     ("else" . ELSE)
-     ("extends" . EXTENDS)
-     ("final" . FINAL)
-     ("finally" . FINALLY)
-     ("float" . FLOAT)
-     ("for" . FOR)
-     ("goto" . GOTO)
-     ("if" . IF)
-     ("implements" . IMPLEMENTS)
-     ("import" . IMPORT)
-     ("instanceof" . INSTANCEOF)
-     ("int" . INT)
-     ("interface" . INTERFACE)
-     ("long" . LONG)
-     ("native" . NATIVE)
-     ("new" . NEW)
-     ("package" . PACKAGE)
-     ("private" . PRIVATE)
-     ("protected" . PROTECTED)
-     ("public" . PUBLIC)
-     ("return" . RETURN)
-     ("short" . SHORT)
-     ("static" . STATIC)
-     ("strictfp" . STRICTFP)
-     ("super" . SUPER)
-     ("switch" . SWITCH)
-     ("synchronized" . SYNCHRONIZED)
-     ("this" . THIS)
-     ("throw" . THROW)
-     ("throws" . THROWS)
-     ("transient" . TRANSIENT)
-     ("try" . TRY)
-     ("void" . VOID)
-     ("volatile" . VOLATILE)
-     ("while" . WHILE)
-     ("@author" . _AUTHOR)
-     ("@version" . _VERSION)
-     ("@param" . _PARAM)
-     ("@return" . _RETURN)
-     ("@exception" . _EXCEPTION)
-     ("@throws" . _THROWS)
-     ("@see" . _SEE)
-     ("@since" . _SINCE)
-     ("@serial" . _SERIAL)
-     ("@serialData" . _SERIALDATA)
-     ("@serialField" . _SERIALFIELD)
-     ("@deprecated" . _DEPRECATED))
-   '(("@deprecated" javadoc
-      (seq 12 usage
-          (type function variable)
-          opt t))
-     ("@serialField" javadoc
-      (seq 11 usage
-          (variable)
-          opt t))
-     ("@serialData" javadoc
-      (seq 10 usage
-          (function)
-          opt t))
-     ("@serial" javadoc
-      (seq 9 usage
-          (variable)
-          opt t))
-     ("@since" javadoc
-      (seq 8 usage
-          (type function variable)
-          opt t))
-     ("@see" javadoc
-      (seq 7 usage
-          (type function variable)
-          opt t with-ref t))
-     ("@throws" javadoc
-      (seq 6 usage
-          (function)
-          with-name t))
-     ("@exception" javadoc
-      (seq 5 usage
-          (function)
-          with-name t))
-     ("@return" javadoc
-      (seq 4 usage
-          (function)))
-     ("@param" javadoc
-      (seq 3 usage
-          (function)
-          with-name t))
-     ("@version" javadoc
-      (seq 2 usage
-          (type)))
-     ("@author" javadoc
-      (seq 1 usage
-          (type)))
-     ("while" summary "while (<expr>) <stmt> | do <stmt> while (<expr>);")
-     ("volatile" summary "Field declaration modifier: volatile <type> <name> ...")
-     ("void" summary "Method return type: void <name> ...")
-     ("try" summary "try {<stmts>} [catch(<parm>) {<stmts>} ...] [finally {<stmts>}]")
-     ("transient" summary "Field declaration modifier: transient <type> <name> ...")
-     ("throws" summary "Method|Constructor declaration: throws <classType>, ...")
-     ("throw" summary "throw <expr> ;")
-     ("synchronized" summary "synchronized (<expr>) ... | Method decl. modifier: synchronized <type> <name> ...")
-     ("switch" summary "switch(<expr>) {[case <const-expr>: <stmts> ...] [default: <stmts>]}")
-     ("strictfp" summary "Declaration modifier: strictfp {class|interface|<type>} <name> ...")
-     ("static" summary "Declaration modifier: static {class|interface|<type>} <name> ...")
-     ("short" summary "Integral primitive type (-32768 to 32767)")
-     ("return" summary "return [<expr>] ;")
-     ("public" summary "Access level modifier: public {class|interface|<type>} <name> ...")
-     ("protected" summary "Access level modifier: protected {class|interface|<type>} <name> ...")
-     ("private" summary "Access level modifier: private {class|interface|<type>} <name> ...")
-     ("package" summary "Package declaration: package <name>")
-     ("native" summary "Method declaration modifier: native <type> <name> ...")
-     ("long" summary "Integral primitive type (-9223372036854775808 to 9223372036854775807)")
-     ("interface" summary "Interface declaration: interface <name>")
-     ("int" summary "Integral primitive type (-2147483648 to 2147483647)")
-     ("import" summary "Import package declarations: import <package>")
-     ("implements" summary "Class SuperInterfaces declaration: implements <name> [, ...]")
-     ("if" summary "if (<expr>) <stmt> [else <stmt>]")
-     ("goto" summary "Unused reserved word")
-     ("for" summary "for ([<init-expr>]; [<expr>]; [<update-expr>]) <stmt>")
-     ("float" summary "Primitive floating-point type (single-precision 32-bit IEEE 754)")
-     ("finally" summary "try {<stmts>} ... finally {<stmts>}")
-     ("final" summary "Class|Member declaration modifier: final {class|<type>} <name> ...")
-     ("extends" summary "SuperClass|SuperInterfaces declaration: extends <name> [, ...]")
-     ("else" summary "if (<expr>) <stmt> else <stmt>")
-     ("double" summary "Primitive floating-point type (double-precision 64-bit IEEE 754)")
-     ("do" summary "do <stmt> while (<expr>);")
-     ("default" summary "switch(<expr>) { ... default: <stmts>}")
-     ("continue" summary "continue [<label>] ;")
-     ("const" summary "Unused reserved word")
-     ("class" summary "Class declaration: class <name>")
-     ("char" summary "Integral primitive type (0 to 65535)")
-     ("catch" summary "try {<stmts>} catch(<parm>) {<stmts>} ... ")
-     ("case" summary "switch(<expr>) {case <const-expr>: <stmts> ... }")
-     ("byte" summary "Integral primitive type (-128 to 127)")
-     ("break" summary "break [<label>] ;")
-     ("boolean" summary "Primitive logical quantity type (true or false)")
-     ("abstract" summary "Class|Method declaration modifier: abstract {class|<type>} <name> ...")))
-  "Table of language keywords.")
-
-(defconst wisent-java-tags-wy--token-table
-  (semantic-lex-make-type-table
-   '(("unicode"
-      (unicodecharacter))
-     ("number"
-      (NUMBER_LITERAL))
-     ("string"
-      (STRING_LITERAL))
-     ("symbol"
-      (IDENTIFIER))
-     ("punctuation"
-      (COMP . "~")
-      (OROR . "||")
-      (OREQ . "|=")
-      (OR . "|")
-      (XOREQ . "^=")
-      (XOR . "^")
-      (QUESTION . "?")
-      (URSHIFTEQ . ">>>=")
-      (URSHIFT . ">>>")
-      (RSHIFTEQ . ">>=")
-      (RSHIFT . ">>")
-      (GTEQ . ">=")
-      (GT . ">")
-      (EQEQ . "==")
-      (EQ . "=")
-      (LTEQ . "<=")
-      (LSHIFTEQ . "<<=")
-      (LSHIFT . "<<")
-      (LT . "<")
-      (SEMICOLON . ";")
-      (COLON . ":")
-      (DIVEQ . "/=")
-      (DIV . "/")
-      (DOT . ".")
-      (MINUSEQ . "-=")
-      (MINUSMINUS . "--")
-      (MINUS . "-")
-      (COMMA . ",")
-      (PLUSEQ . "+=")
-      (PLUSPLUS . "++")
-      (PLUS . "+")
-      (MULTEQ . "*=")
-      (MULT . "*")
-      (ANDEQ . "&=")
-      (ANDAND . "&&")
-      (AND . "&")
-      (MODEQ . "%=")
-      (MOD . "%")
-      (NOTEQ . "!=")
-      (NOT . "!"))
-     ("close-paren"
-      (RBRACK . "]")
-      (RBRACE . "}")
-      (RPAREN . ")"))
-     ("open-paren"
-      (LBRACK . "[")
-      (LBRACE . "{")
-      (LPAREN . "("))
-     ("block"
-      (BRACK_BLOCK . "(LBRACK RBRACK)")
-      (BRACE_BLOCK . "(LBRACE RBRACE)")
-      (PAREN_BLOCK . "(LPAREN RPAREN)")))
-   '(("keyword" :declared t)
-     ("unicode" syntax "\\\\u[0-9a-f][0-9a-f][0-9a-f][0-9a-f]")
-     ("unicode" :declared t)
-     ("number" :declared t)
-     ("string" :declared t)
-     ("symbol" :declared t)
-     ("punctuation" :declared t)
-     ("block" :declared t)))
-  "Table of lexical tokens.")
-
-(defconst wisent-java-tags-wy--parse-table
-  (progn
-    (eval-when-compile
-      (require 'semantic/wisent/comp))
-    (wisent-compile-grammar
-     '((PAREN_BLOCK BRACE_BLOCK BRACK_BLOCK LPAREN RPAREN LBRACE RBRACE LBRACK RBRACK NOT NOTEQ MOD MODEQ AND ANDAND ANDEQ MULT MULTEQ PLUS PLUSPLUS PLUSEQ COMMA MINUS MINUSMINUS MINUSEQ DOT DIV DIVEQ COLON SEMICOLON LT LSHIFT LSHIFTEQ LTEQ EQ EQEQ GT GTEQ RSHIFT RSHIFTEQ URSHIFT URSHIFTEQ QUESTION XOR XOREQ OR OREQ OROR COMP IDENTIFIER STRING_LITERAL NUMBER_LITERAL unicodecharacter ABSTRACT BOOLEAN BREAK BYTE CASE CATCH CHAR CLASS CONST CONTINUE DEFAULT DO DOUBLE ELSE EXTENDS FINAL FINALLY FLOAT FOR GOTO IF IMPLEMENTS IMPORT INSTANCEOF INT INTERFACE LONG NATIVE NEW PACKAGE PRIVATE PROTECTED PUBLIC RETURN SHORT STATIC STRICTFP SUPER SWITCH SYNCHRONIZED THIS THROW THROWS TRANSIENT TRY VOID VOLATILE WHILE _AUTHOR _VERSION _PARAM _RETURN _EXCEPTION _THROWS _SEE _SINCE _SERIAL _SERIALDATA _SERIALFIELD _DEPRECATED)
-       nil
-       (compilation_unit
-       ((package_declaration))
-       ((import_declaration))
-       ((type_declaration)))
-       (package_declaration
-       ((PACKAGE qualified_name SEMICOLON)
-        (wisent-raw-tag
-         (semantic-tag-new-package $2 nil))))
-       (import_declaration
-       ((IMPORT qualified_name SEMICOLON)
-        (wisent-raw-tag
-         (semantic-tag-new-include $2 nil)))
-       ((IMPORT qualified_name DOT MULT SEMICOLON)
-        (wisent-raw-tag
-         (semantic-tag-new-include
-          (concat $2 $3 $4)
-          nil))))
-       (type_declaration
-       ((SEMICOLON)
-        nil)
-       ((class_declaration))
-       ((interface_declaration)))
-       (class_declaration
-       ((modifiers_opt CLASS qualified_name superc_opt interfaces_opt class_body)
-        (wisent-raw-tag
-         (semantic-tag-new-type $3 $2 $6
-                                (if
-                                    (or $4 $5)
-                                    (cons $4 $5))
-                                :typemodifiers $1))))
-       (superc_opt
-       (nil)
-       ((EXTENDS qualified_name)
-        (identity $2)))
-       (interfaces_opt
-       (nil)
-       ((IMPLEMENTS qualified_name_list)
-        (nreverse $2)))
-       (class_body
-       ((BRACE_BLOCK)
-        (semantic-parse-region
-         (car $region1)
-         (cdr $region1)
-         'class_member_declaration 1)))
-       (class_member_declaration
-       ((LBRACE)
-        nil)
-       ((RBRACE)
-        nil)
-       ((block)
-        nil)
-       ((static_initializer)
-        nil)
-       ((constructor_declaration))
-       ((interface_declaration))
-       ((class_declaration))
-       ((method_declaration))
-       ((field_declaration)))
-       (interface_declaration
-       ((modifiers_opt INTERFACE qualified_name extends_interfaces_opt interface_body)
-        (wisent-raw-tag
-         (semantic-tag-new-type $3 $2 $5
-                                (if $4
-                                    (cons nil $4))
-                                :typemodifiers $1))))
-       (extends_interfaces_opt
-       (nil)
-       ((EXTENDS qualified_name_list)
-        (identity $2)))
-       (interface_body
-       ((BRACE_BLOCK)
-        (semantic-parse-region
-         (car $region1)
-         (cdr $region1)
-         'interface_member_declaration 1)))
-       (interface_member_declaration
-       ((LBRACE)
-        nil)
-       ((RBRACE)
-        nil)
-       ((interface_declaration))
-       ((class_declaration))
-       ((method_declaration))
-       ((field_declaration)))
-       (static_initializer
-       ((STATIC block)))
-       (constructor_declaration
-       ((modifiers_opt constructor_declarator throwsc_opt constructor_body)
-        (wisent-raw-tag
-         (semantic-tag-new-function
-          (car $2)
-          nil
-          (cdr $2)
-          :typemodifiers $1 :throws $3 :constructor-flag t))))
-       (constructor_declarator
-       ((IDENTIFIER formal_parameter_list)
-        (cons $1 $2)))
-       (constructor_body
-       ((block)))
-       (method_declaration
-       ((modifiers_opt VOID method_declarator throwsc_opt method_body)
-        (wisent-raw-tag
-         (semantic-tag-new-function
-          (car $3)
-          $2
-          (cdr $3)
-          :typemodifiers $1 :throws $4)))
-       ((modifiers_opt type method_declarator throwsc_opt method_body)
-        (wisent-raw-tag
-         (semantic-tag-new-function
-          (car $3)
-          $2
-          (cdr $3)
-          :typemodifiers $1 :throws $4))))
-       (method_declarator
-       ((IDENTIFIER formal_parameter_list dims_opt)
-        (cons
-         (concat $1 $3)
-         $2)))
-       (throwsc_opt
-       (nil)
-       ((THROWS qualified_name_list)
-        (nreverse $2)))
-       (qualified_name_list
-       ((qualified_name_list COMMA qualified_name)
-        (cons $3 $1))
-       ((qualified_name)
-        (list $1)))
-       (method_body
-       ((SEMICOLON))
-       ((block)))
-       (block
-       ((BRACE_BLOCK)))
-       (formal_parameter_list
-       ((PAREN_BLOCK)
-        (semantic-parse-region
-         (car $region1)
-         (cdr $region1)
-         'formal_parameters 1)))
-       (formal_parameters
-       ((LPAREN)
-        nil)
-       ((RPAREN)
-        nil)
-       ((formal_parameter COMMA))
-       ((formal_parameter RPAREN)))
-       (formal_parameter
-       ((formal_parameter_modifier_opt type opt_variable_declarator_id)
-        (wisent-raw-tag
-         (semantic-tag-new-variable $3 $2 nil :typemodifiers $1))))
-       (formal_parameter_modifier_opt
-       (nil)
-       ((FINAL)
-        (list $1)))
-       (field_declaration
-       ((modifiers_opt type variable_declarators SEMICOLON)
-        (wisent-raw-tag
-         (semantic-tag-new-variable $3 $2 nil :typemodifiers $1))))
-       (variable_declarators
-       ((variable_declarators COMMA variable_declarator)
-        (progn
-          (setcdr
-           (cdr
-            (car $1))
-           (cdr $region2))
-          (cons $3 $1)))
-       ((variable_declarator)
-        (list $1)))
-       (variable_declarator
-       ((variable_declarator_id EQ variable_initializer)
-        (cons $1 $region))
-       ((variable_declarator_id)
-        (cons $1 $region)))
-       (opt_variable_declarator_id
-       (nil
-        (identity ""))
-       ((variable_declarator_id)
-        (identity $1)))
-       (variable_declarator_id
-       ((IDENTIFIER dims_opt)
-        (concat $1 $2)))
-       (variable_initializer
-       ((expression)))
-       (expression
-       ((expression term))
-       ((term)))
-       (term
-       ((literal))
-       ((operator))
-       ((primitive_type))
-       ((IDENTIFIER))
-       ((BRACK_BLOCK))
-       ((PAREN_BLOCK))
-       ((BRACE_BLOCK))
-       ((NEW))
-       ((CLASS))
-       ((THIS))
-       ((SUPER)))
-       (literal
-       ((STRING_LITERAL))
-       ((NUMBER_LITERAL)))
-       (operator
-       ((NOT))
-       ((PLUS))
-       ((PLUSPLUS))
-       ((MINUS))
-       ((MINUSMINUS))
-       ((NOTEQ))
-       ((MOD))
-       ((MODEQ))
-       ((AND))
-       ((ANDAND))
-       ((ANDEQ))
-       ((MULT))
-       ((MULTEQ))
-       ((PLUSEQ))
-       ((MINUSEQ))
-       ((DOT))
-       ((DIV))
-       ((DIVEQ))
-       ((COLON))
-       ((LT))
-       ((LSHIFT))
-       ((LSHIFTEQ))
-       ((LTEQ))
-       ((EQ))
-       ((EQEQ))
-       ((GT))
-       ((GTEQ))
-       ((RSHIFT))
-       ((RSHIFTEQ))
-       ((URSHIFT))
-       ((URSHIFTEQ))
-       ((QUESTION))
-       ((XOR))
-       ((XOREQ))
-       ((OR))
-       ((OREQ))
-       ((OROR))
-       ((COMP))
-       ((INSTANCEOF)))
-       (primitive_type
-       ((BOOLEAN))
-       ((CHAR))
-       ((LONG))
-       ((INT))
-       ((SHORT))
-       ((BYTE))
-       ((DOUBLE))
-       ((FLOAT)))
-       (modifiers_opt
-       (nil)
-       ((modifiers)
-        (nreverse $1)))
-       (modifiers
-       ((modifiers modifier)
-        (cons $2 $1))
-       ((modifier)
-        (list $1)))
-       (modifier
-       ((STRICTFP))
-       ((VOLATILE))
-       ((TRANSIENT))
-       ((SYNCHRONIZED))
-       ((NATIVE))
-       ((FINAL))
-       ((ABSTRACT))
-       ((STATIC))
-       ((PRIVATE))
-       ((PROTECTED))
-       ((PUBLIC)))
-       (type
-       ((qualified_name dims_opt)
-        (concat $1 $2))
-       ((primitive_type dims_opt)
-        (concat $1 $2)))
-       (qualified_name
-       ((qualified_name DOT IDENTIFIER)
-        (concat $1 $2 $3))
-       ((IDENTIFIER)))
-       (dims_opt
-       (nil
-        (identity ""))
-       ((dims)))
-       (dims
-       ((dims BRACK_BLOCK)
-        (concat $1 "[]"))
-       ((BRACK_BLOCK)
-        (identity "[]"))))
-     '(compilation_unit package_declaration import_declaration class_declaration field_declaration method_declaration formal_parameter constructor_declaration interface_declaration class_member_declaration interface_member_declaration formal_parameters)))
-  "Parser table.")
-
-(defun wisent-java-tags-wy--install-parser ()
-  "Setup the Semantic Parser."
-  (semantic-install-function-overrides
-   '((parse-stream . wisent-parse-stream)))
-  (setq semantic-parser-name "LALR"
-       semantic--parse-table wisent-java-tags-wy--parse-table
-       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
-  (semantic-make-local-hook 'wisent-discarding-token-functions)
-  (add-hook 'wisent-discarding-token-functions
-           'wisent-collect-unmatched-syntax nil t))
-
-\f
-;;; Analyzers
-;;
-(define-lex-block-type-analyzer wisent-java-tags-wy--<block>-block-analyzer
-  "block analyzer for <block> tokens."
-  "\\s(\\|\\s)"
-  '((("(" LPAREN PAREN_BLOCK)
-     ("{" LBRACE BRACE_BLOCK)
-     ("[" LBRACK BRACK_BLOCK))
-    (")" RPAREN)
-    ("}" RBRACE)
-    ("]" RBRACK))
-  )
-
-(define-lex-string-type-analyzer wisent-java-tags-wy--<punctuation>-string-analyzer
-  "string analyzer for <punctuation> tokens."
-  "\\(\\s.\\|\\s$\\|\\s'\\)+"
-  '((COMP . "~")
-    (OROR . "||")
-    (OREQ . "|=")
-    (OR . "|")
-    (XOREQ . "^=")
-    (XOR . "^")
-    (QUESTION . "?")
-    (URSHIFTEQ . ">>>=")
-    (URSHIFT . ">>>")
-    (RSHIFTEQ . ">>=")
-    (RSHIFT . ">>")
-    (GTEQ . ">=")
-    (GT . ">")
-    (EQEQ . "==")
-    (EQ . "=")
-    (LTEQ . "<=")
-    (LSHIFTEQ . "<<=")
-    (LSHIFT . "<<")
-    (LT . "<")
-    (SEMICOLON . ";")
-    (COLON . ":")
-    (DIVEQ . "/=")
-    (DIV . "/")
-    (DOT . ".")
-    (MINUSEQ . "-=")
-    (MINUSMINUS . "--")
-    (MINUS . "-")
-    (COMMA . ",")
-    (PLUSEQ . "+=")
-    (PLUSPLUS . "++")
-    (PLUS . "+")
-    (MULTEQ . "*=")
-    (MULT . "*")
-    (ANDEQ . "&=")
-    (ANDAND . "&&")
-    (AND . "&")
-    (MODEQ . "%=")
-    (MOD . "%")
-    (NOTEQ . "!=")
-    (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_\\)+")
-
-\f
-;;; Epilogue
-;;
-;; Define the lexer for this grammar
-(define-lex wisent-java-tags-lexer
-  "Lexical analyzer that handles Java buffers.
-It ignores whitespaces, newlines and comments."
-  semantic-lex-ignore-whitespace
-  semantic-lex-ignore-newline
-  semantic-lex-ignore-comments
-  ;;;; Auto-generated analyzers.
-  wisent-java-tags-wy--<number>-regexp-analyzer
-  wisent-java-tags-wy--<string>-sexp-analyzer
-  ;; Must detect keywords before other symbols
-  wisent-java-tags-wy--<keyword>-keyword-analyzer
-  wisent-java-tags-wy--<symbol>-regexp-analyzer
-  wisent-java-tags-wy--<punctuation>-string-analyzer
-  wisent-java-tags-wy--<block>-block-analyzer
-  ;; In theory, Unicode chars should be turned into normal chars
-  ;; and then combined into regular ascii keywords and text.  This
-  ;; analyzer just keeps these things from making the lexer go boom.
-  wisent-java-tags-wy--<unicode>-regexp-analyzer
-  ;;;;
-  semantic-lex-default-action)
-
-(provide 'semantic/wisent/javat-wy)
-
-;;; semantic/wisent/javat-wy.el ends here
diff --git a/lisp/cedet/semantic/wisent/js-wy.el b/lisp/cedet/semantic/wisent/js-wy.el
deleted file mode 100644 (file)
index 2e331b1..0000000
+++ /dev/null
@@ -1,530 +0,0 @@
-;;; semantic/wisent/js-wy.el --- Generated parser support file
-
-;; Copyright (C) 2005, 2009-2013 Free Software Foundation, Inc.
-;; Copyright (C) 1998-2011 Ecma International.
-
-;; 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/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)
-(eval-when-compile (require 'semantic/bovine))
-\f
-;;; Prologue
-;;
-(declare-function semantic-parse-region "semantic"
-                 (start end &optional nonterminal depth returnonerror))
-\f
-;;; Declarations
-;;
-(defconst wisent-javascript-jv-wy--keyword-table
-  (semantic-lex-make-keyword-table
-   '(("if" . IF)
-     ("break" . BREAK)
-     ("continue" . CONTINUE)
-     ("else" . ELSE)
-     ("for" . FOR)
-     ("function" . FUNCTION)
-     ("this" . THIS)
-     ("return" . RETURN)
-     ("while" . WHILE)
-     ("void" . VOID_SYMBOL)
-     ("new" . NEW)
-     ("delete" . DELETE)
-     ("var" . VAR)
-     ("with" . WITH)
-     ("typeof" . TYPEOF)
-     ("in" . IN))
-   '(("in" summary "in something")
-     ("typeof" summary "typeof ")
-     ("with" summary "with ")
-     ("var" summary "var <variablename> [= value];")
-     ("delete" summary "delete(<objectreference>) - Deletes the object.")
-     ("new" summary "new <objecttype> - Creates a new object.")
-     ("void" summary "Method return type: void <name> ...")
-     ("while" summary "while (<expr>) <stmt> | do <stmt> while (<expr>);")
-     ("return" summary "return [<expr>] ;")
-     ("this" summary "this")
-     ("function" summary "function declaration blah blah")
-     ("for" summary "for ([<init-expr>]; [<expr>]; [<update-expr>]) <stmt>")
-     ("else" summary "if (<expr>) <stmt> else <stmt>")
-     ("continue" summary "continue [<label>] ;")
-     ("break" summary "break [<label>] ;")
-     ("if" summary "if (<expr>) <stmt> [else <stmt>] (jv)")))
-  "Table of language keywords.")
-
-(defconst wisent-javascript-jv-wy--token-table
-  (semantic-lex-make-type-table
-   '(("<no-type>"
-      (NULL_TOKEN)
-      (QUERY)
-      (TRUE)
-      (FALSE))
-     ("number"
-      (NUMBER))
-     ("string"
-      (STRING))
-     ("symbol"
-      (VARIABLE))
-     ("close-paren"
-      (CLOSE_SQ_BRACKETS . "]")
-      (END_BLOCK . "}")
-      (CLOSE_PARENTHESIS . ")"))
-     ("open-paren"
-      (OPEN_SQ_BRACKETS . "[")
-      (START_BLOCK . "{")
-      (OPEN_PARENTHESIS . "("))
-     ("block"
-      (BRACK_BLOCK . "(OPEN_SQ_BRACKETS CLOSE_SQ_BRACKETS)")
-      (BRACE_BLOCK . "(START_BLOCK END_BLOCK)")
-      (PAREN_BLOCK . "(OPEN_PARENTHESIS CLOSE_PARENTHESIS)"))
-     ("punctuation"
-      (ONES_COMPLIMENT . "~")
-      (SEMICOLON . ";")
-      (LINE_TERMINATOR . "\n")
-      (LESS_THAN . "<")
-      (DOT . ".")
-      (COMMA . ",")
-      (COLON . ":")
-      (DIV . "/")
-      (DECREMENT . "--")
-      (INCREMENT . "++")
-      (PLUS_EQUALS . "+=")
-      (PLUS . "+")
-      (MULTIPLY_EQUALS . "*=")
-      (MULTIPLY . "*")
-      (MOD_EQUALS . "%=")
-      (MOD . "%")
-      (MINUS_EQUALS . "-=")
-      (MINUS . "-")
-      (LS_EQUAL . "<=")
-      (LOGICAL_NOT . "!!")
-      (LOGICAL_OR . "||")
-      (LOGICAL_AND . "&&")
-      (GT_EQUAL . ">=")
-      (GREATER_THAN . ">")
-      (EQUALS . "==")
-      (DIV_EQUALS . "/=")
-      (NOT_EQUAL . "!=")
-      (BITWISE_SHIFT_RIGHT_ZERO_FILL_EQUALS . ">>>=")
-      (BITWISE_SHIFT_RIGHT_ZERO_FILL . ">>>")
-      (BITWISE_SHIFT_RIGHT_EQUALS . ">>=")
-      (BITWISE_SHIFT_RIGHT . ">>")
-      (BITWISE_SHIFT_LEFT_EQUALS . "<<=")
-      (BITWISE_SHIFT_LEFT . "<<")
-      (BITWISE_OR_EQUALS . "|=")
-      (BITWISE_OR . "|")
-      (BITWISE_EXCLUSIVE_OR_EQUALS . "^=")
-      (BITWISE_EXCLUSIVE_OR . "^")
-      (BITWISE_AND_EQUALS . "&=")
-      (BITWISE_AND . "&")
-      (ASSIGN_SYMBOL . "=")))
-   '(("number" :declared t)
-     ("string" :declared t)
-     ("symbol" :declared t)
-     ("keyword" :declared t)
-     ("block" :declared t)
-     ("punctuation" :declared t)))
-  "Table of lexical tokens.")
-
-(defconst wisent-javascript-jv-wy--parse-table
-  (progn
-    (eval-when-compile
-      (require 'semantic/wisent/comp))
-    (wisent-compile-grammar
-     '((ASSIGN_SYMBOL BITWISE_AND BITWISE_AND_EQUALS BITWISE_EXCLUSIVE_OR BITWISE_EXCLUSIVE_OR_EQUALS BITWISE_OR BITWISE_OR_EQUALS BITWISE_SHIFT_LEFT BITWISE_SHIFT_LEFT_EQUALS BITWISE_SHIFT_RIGHT BITWISE_SHIFT_RIGHT_EQUALS BITWISE_SHIFT_RIGHT_ZERO_FILL BITWISE_SHIFT_RIGHT_ZERO_FILL_EQUALS NOT_EQUAL DIV_EQUALS EQUALS GREATER_THAN GT_EQUAL LOGICAL_AND LOGICAL_OR LOGICAL_NOT LS_EQUAL MINUS MINUS_EQUALS MOD MOD_EQUALS MULTIPLY MULTIPLY_EQUALS PLUS PLUS_EQUALS INCREMENT DECREMENT DIV COLON COMMA DOT LESS_THAN LINE_TERMINATOR SEMICOLON ONES_COMPLIMENT PAREN_BLOCK BRACE_BLOCK BRACK_BLOCK OPEN_PARENTHESIS CLOSE_PARENTHESIS START_BLOCK END_BLOCK OPEN_SQ_BRACKETS CLOSE_SQ_BRACKETS IF BREAK CONTINUE ELSE FOR FUNCTION THIS RETURN WHILE VOID_SYMBOL NEW DELETE VAR WITH TYPEOF IN VARIABLE STRING NUMBER FALSE TRUE QUERY NULL_TOKEN)
-       ((left PLUS MINUS)
-       (left MULTIPLY DIV MOD)
-       (nonassoc FALSE)
-       (nonassoc HIGHER_THAN_FALSE)
-       (nonassoc ELSE)
-       (nonassoc LOWER_THAN_CLOSE_PARENTHESIS)
-       (nonassoc CLOSE_PARENTHESIS))
-       (Program
-       ((SourceElement)))
-       (SourceElement
-       ((Statement))
-       ((FunctionDeclaration)))
-       (Statement
-       ((Block))
-       ((VariableStatement))
-       ((EmptyStatement))
-       ((ExpressionStatement))
-       ((IfStatement))
-       ((IterationExpression))
-       ((ContinueStatement))
-       ((BreakStatement))
-       ((ReturnStatement))
-       ((WithStatement)))
-       (FunctionDeclaration
-       ((FUNCTION VARIABLE FormalParameterListBlock Block)
-        (wisent-raw-tag
-         (semantic-tag-new-function $2 nil $3))))
-       (FormalParameterListBlock
-       ((PAREN_BLOCK)
-        (semantic-parse-region
-         (car $region1)
-         (cdr $region1)
-         'FormalParameterList 1)))
-       (FormalParameterList
-       ((OPEN_PARENTHESIS)
-        nil)
-       ((VARIABLE)
-        (wisent-raw-tag
-         (semantic-tag-new-variable $1 nil nil)))
-       ((CLOSE_PARENTHESIS)
-        nil)
-       ((COMMA)
-        nil))
-       (StatementList
-       ((Statement))
-       ((StatementList Statement)))
-       (Block
-       ((BRACE_BLOCK)))
-       (BlockExpand
-       ((START_BLOCK StatementList END_BLOCK))
-       ((START_BLOCK END_BLOCK)))
-       (VariableStatement
-       ((VAR VariableDeclarationList SEMICOLON)
-        (wisent-raw-tag
-         (semantic-tag-new-variable $2 nil nil))))
-       (VariableDeclarationList
-       ((VariableDeclaration)
-        (list $1))
-       ((VariableDeclarationList COMMA VariableDeclaration)
-        (append $1
-                (list $3))))
-       (VariableDeclaration
-       ((VARIABLE)
-        (append
-         (list $1 nil)
-         $region))
-       ((VARIABLE Initializer)
-        (append
-         (cons $1 $2)
-         $region)))
-       (Initializer
-       ((ASSIGN_SYMBOL AssignmentExpression)
-        (list $2)))
-       (EmptyStatement
-       ((SEMICOLON)))
-       (ExpressionStatement
-       ((Expression SEMICOLON)))
-       (IfStatement
-       ((IF OPEN_PARENTHESIS Expression CLOSE_PARENTHESIS Statement)
-        [HIGHER_THAN_FALSE])
-       ((IF OPEN_PARENTHESIS Expression CLOSE_PARENTHESIS Statement ELSE Statement))
-       ((IF OPEN_PARENTHESIS FALSE CLOSE_PARENTHESIS Statement))
-       ((IF OPEN_PARENTHESIS LeftHandSideExpression AssignmentOperator AssignmentExpression CLOSE_PARENTHESIS Statement)))
-       (IterationExpression
-       ((WHILE OPEN_PARENTHESIS Expression CLOSE_PARENTHESIS Statement)
-        [HIGHER_THAN_FALSE])
-       ((WHILE OPEN_PARENTHESIS FALSE CLOSE_PARENTHESIS Statement))
-       ((WHILE OPEN_PARENTHESIS LeftHandSideExpression AssignmentOperator AssignmentExpression CLOSE_PARENTHESIS Statement))
-       ((FOR OPEN_PARENTHESIS OptionalExpression SEMICOLON OptionalExpression SEMICOLON OptionalExpression CLOSE_PARENTHESIS Statement))
-       ((FOR OPEN_PARENTHESIS VAR VariableDeclarationList SEMICOLON OptionalExpression SEMICOLON OptionalExpression CLOSE_PARENTHESIS Statement))
-       ((FOR OPEN_PARENTHESIS LeftHandSideExpression IN Expression CLOSE_PARENTHESIS Statement))
-       ((FOR OPEN_PARENTHESIS VAR VARIABLE OptionalInitializer IN Expression CLOSE_PARENTHESIS Statement)))
-       (ContinueStatement
-       ((CONTINUE SEMICOLON)))
-       (BreakStatement
-       ((BREAK SEMICOLON)))
-       (ReturnStatement
-       ((RETURN Expression SEMICOLON))
-       ((RETURN SEMICOLON)))
-       (WithStatement
-       ((WITH OPEN_PARENTHESIS Expression CLOSE_PARENTHESIS Statement)))
-       (OptionalInitializer
-       ((Initializer))
-       (nil))
-       (PrimaryExpression
-       ((THIS))
-       ((VARIABLE))
-       ((NUMBER))
-       ((STRING))
-       ((NULL_TOKEN))
-       ((TRUE))
-       ((FALSE))
-       ((OPEN_PARENTHESIS Expression CLOSE_PARENTHESIS)))
-       (MemberExpression
-       ((PrimaryExpression))
-       ((MemberExpression OPEN_SQ_BRACKETS Expression CLOSE_SQ_BRACKETS))
-       ((MemberExpression DOT VARIABLE))
-       ((NEW MemberExpression Arguments)))
-       (NewExpression
-       ((MemberExpression))
-       ((NEW NewExpression)))
-       (CallExpression
-       ((MemberExpression Arguments))
-       ((CallExpression Arguments))
-       ((CallExpression OPEN_SQ_BRACKETS Expression CLOSE_SQ_BRACKETS))
-       ((CallExpression DOT VARIABLE)))
-       (Arguments
-       ((OPEN_PARENTHESIS CLOSE_PARENTHESIS))
-       ((OPEN_PARENTHESIS ArgumentList CLOSE_PARENTHESIS)))
-       (ArgumentList
-       ((AssignmentExpression))
-       ((ArgumentList COMMA AssignmentExpression)))
-       (LeftHandSideExpression
-       ((NewExpression))
-       ((CallExpression)))
-       (PostfixExpression
-       ((LeftHandSideExpression))
-       ((LeftHandSideExpression INCREMENT))
-       ((LeftHandSideExpression DECREMENT)))
-       (UnaryExpression
-       ((PostfixExpression))
-       ((DELETE UnaryExpression))
-       ((VOID_SYMBOL UnaryExpression))
-       ((TYPEOF UnaryExpression))
-       ((INCREMENT UnaryExpression))
-       ((DECREMENT UnaryExpression))
-       ((PLUS UnaryExpression))
-       ((MINUS UnaryExpression))
-       ((ONES_COMPLIMENT UnaryExpression))
-       ((LOGICAL_NOT UnaryExpression)))
-       (MultiplicativeExpression
-       ((UnaryExpression))
-       ((MultiplicativeExpression MULTIPLY UnaryExpression))
-       ((MultiplicativeExpression DIV UnaryExpression))
-       ((MultiplicativeExpression MOD UnaryExpression)))
-       (AdditiveExpression
-       ((MultiplicativeExpression))
-       ((AdditiveExpression PLUS MultiplicativeExpression))
-       ((AdditiveExpression MINUS MultiplicativeExpression)))
-       (ShiftExpression
-       ((AdditiveExpression))
-       ((ShiftExpression BITWISE_SHIFT_LEFT AdditiveExpression))
-       ((ShiftExpression BITWISE_SHIFT_RIGHT AdditiveExpression))
-       ((ShiftExpression BITWISE_SHIFT_RIGHT_ZERO_FILL AdditiveExpression)))
-       (RelationalExpression
-       ((ShiftExpression))
-       ((RelationalExpression LESS_THAN ShiftExpression))
-       ((RelationalExpression GREATER_THAN ShiftExpression))
-       ((RelationalExpression LS_EQUAL ShiftExpression))
-       ((RelationalExpression GT_EQUAL ShiftExpression)))
-       (EqualityExpression
-       ((RelationalExpression))
-       ((EqualityExpression EQUALS RelationalExpression))
-       ((EqualityExpression NOT_EQUAL RelationalExpression)))
-       (BitwiseANDExpression
-       ((EqualityExpression))
-       ((BitwiseANDExpression BITWISE_AND EqualityExpression)))
-       (BitwiseXORExpression
-       ((BitwiseANDExpression))
-       ((BitwiseXORExpression BITWISE_EXCLUSIVE_OR BitwiseANDExpression)))
-       (BitwiseORExpression
-       ((BitwiseXORExpression))
-       ((BitwiseORExpression BITWISE_OR BitwiseXORExpression)))
-       (LogicalANDExpression
-       ((BitwiseORExpression))
-       ((LogicalANDExpression LOGICAL_AND BitwiseORExpression)))
-       (LogicalORExpression
-       ((LogicalANDExpression))
-       ((LogicalORExpression LOGICAL_OR LogicalANDExpression)))
-       (ConditionalExpression
-       ((LogicalORExpression))
-       ((LogicalORExpression QUERY AssignmentExpression COLON AssignmentExpression)))
-       (AssignmentExpression
-       ((ConditionalExpression))
-       ((LeftHandSideExpression AssignmentOperator AssignmentExpression)
-        [LOWER_THAN_CLOSE_PARENTHESIS]))
-       (AssignmentOperator
-       ((ASSIGN_SYMBOL))
-       ((MULTIPLY_EQUALS))
-       ((DIV_EQUALS))
-       ((MOD_EQUALS))
-       ((PLUS_EQUALS))
-       ((MINUS_EQUALS))
-       ((BITWISE_SHIFT_LEFT_EQUALS))
-       ((BITWISE_SHIFT_RIGHT_EQUALS))
-       ((BITWISE_SHIFT_RIGHT_ZERO_FILL_EQUALS))
-       ((BITWISE_AND_EQUALS))
-       ((BITWISE_EXCLUSIVE_OR_EQUALS))
-       ((BITWISE_OR_EQUALS)))
-       (Expression
-       ((AssignmentExpression))
-       ((Expression COMMA AssignmentExpression)))
-       (OptionalExpression
-       ((Expression))
-       (nil)))
-     '(Program FormalParameterList)))
-  "Parser table.")
-
-(defun wisent-javascript-jv-wy--install-parser ()
-  "Setup the Semantic Parser."
-  (semantic-install-function-overrides
-   '((parse-stream . wisent-parse-stream)))
-  (setq semantic-parser-name "LALR"
-       semantic--parse-table wisent-javascript-jv-wy--parse-table
-       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
-  (semantic-make-local-hook 'wisent-discarding-token-functions)
-  (add-hook 'wisent-discarding-token-functions
-           'wisent-collect-unmatched-syntax nil t))
-
-\f
-;;; Analyzers
-;;
-(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-string-type-analyzer wisent-javascript-jv-wy--<punctuation>-string-analyzer
-  "string analyzer for <punctuation> tokens."
-  "\\(\\s.\\|\\s$\\|\\s'\\)+"
-  '((ONES_COMPLIMENT . "~")
-    (SEMICOLON . ";")
-    (LINE_TERMINATOR . "\n")
-    (LESS_THAN . "<")
-    (DOT . ".")
-    (COMMA . ",")
-    (COLON . ":")
-    (DIV . "/")
-    (DECREMENT . "--")
-    (INCREMENT . "++")
-    (PLUS_EQUALS . "+=")
-    (PLUS . "+")
-    (MULTIPLY_EQUALS . "*=")
-    (MULTIPLY . "*")
-    (MOD_EQUALS . "%=")
-    (MOD . "%")
-    (MINUS_EQUALS . "-=")
-    (MINUS . "-")
-    (LS_EQUAL . "<=")
-    (LOGICAL_NOT . "!!")
-    (LOGICAL_OR . "||")
-    (LOGICAL_AND . "&&")
-    (GT_EQUAL . ">=")
-    (GREATER_THAN . ">")
-    (EQUALS . "==")
-    (DIV_EQUALS . "/=")
-    (NOT_EQUAL . "!=")
-    (BITWISE_SHIFT_RIGHT_ZERO_FILL_EQUALS . ">>>=")
-    (BITWISE_SHIFT_RIGHT_ZERO_FILL . ">>>")
-    (BITWISE_SHIFT_RIGHT_EQUALS . ">>=")
-    (BITWISE_SHIFT_RIGHT . ">>")
-    (BITWISE_SHIFT_LEFT_EQUALS . "<<=")
-    (BITWISE_SHIFT_LEFT . "<<")
-    (BITWISE_OR_EQUALS . "|=")
-    (BITWISE_OR . "|")
-    (BITWISE_EXCLUSIVE_OR_EQUALS . "^=")
-    (BITWISE_EXCLUSIVE_OR . "^")
-    (BITWISE_AND_EQUALS . "&=")
-    (BITWISE_AND . "&")
-    (ASSIGN_SYMBOL . "="))
-  'punctuation)
-
-(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_\\)+")
-
-\f
-;;; Epilogue
-;;
-;;here something like:
-;;(define-lex wisent-java-tags-lexer
-;; should go
-(define-lex javascript-lexer-jv
-"javascript thingy"
-;;std stuff
-  semantic-lex-ignore-whitespace
-  semantic-lex-ignore-newline
-  semantic-lex-ignore-comments
-
-  ;;stuff generated from the wy file(one for each "type" declaration)
-  wisent-javascript-jv-wy--<number>-regexp-analyzer
-  wisent-javascript-jv-wy--<string>-sexp-analyzer
-
-  wisent-javascript-jv-wy--<keyword>-keyword-analyzer
-
-  wisent-javascript-jv-wy--<symbol>-regexp-analyzer
-  wisent-javascript-jv-wy--<punctuation>-string-analyzer
-  wisent-javascript-jv-wy--<block>-block-analyzer
-
-
-  ;;;;more std stuff
-  semantic-lex-default-action
-  )
-
-(provide 'semantic/wisent/js-wy)
-
-;;; semantic/wisent/js-wy.el ends here
diff --git a/lisp/cedet/semantic/wisent/python-wy.el b/lisp/cedet/semantic/wisent/python-wy.el
deleted file mode 100644 (file)
index bfa96ff..0000000
+++ /dev/null
@@ -1,847 +0,0 @@
-;;; semantic/wisent/python-wy.el --- Generated parser support file
-
-;; Copyright (C) 2002-2013 Free Software Foundation, Inc.
-;; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Python Software Foundation; All Rights Reserved
-
-;; 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/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:
-
-(require 'semantic/lex)
-(eval-when-compile (require 'semantic/bovine))
-\f
-;;; Prologue
-;;
-(declare-function wisent-python-reconstitute-function-tag
-                 "semantic/wisent/python" (tag suite))
-(declare-function wisent-python-reconstitute-class-tag "semantic/wisent/python"
-                 (tag))
-(declare-function semantic-parse-region "semantic"
-                 (start end &optional nonterminal depth returnonerror))
-\f
-;;; Declarations
-;;
-(defconst wisent-python-wy--keyword-table
-  (semantic-lex-make-keyword-table
-   '(("and" . AND)
-     ("as" . AS)
-     ("assert" . ASSERT)
-     ("break" . BREAK)
-     ("class" . CLASS)
-     ("continue" . CONTINUE)
-     ("def" . DEF)
-     ("del" . DEL)
-     ("elif" . ELIF)
-     ("else" . ELSE)
-     ("except" . EXCEPT)
-     ("exec" . EXEC)
-     ("finally" . FINALLY)
-     ("for" . FOR)
-     ("from" . FROM)
-     ("global" . GLOBAL)
-     ("if" . IF)
-     ("import" . IMPORT)
-     ("in" . IN)
-     ("is" . IS)
-     ("lambda" . LAMBDA)
-     ("not" . NOT)
-     ("or" . OR)
-     ("pass" . PASS)
-     ("print" . PRINT)
-     ("raise" . RAISE)
-     ("return" . RETURN)
-     ("try" . TRY)
-     ("while" . WHILE)
-     ("with" . WITH)
-     ("yield" . YIELD))
-   '(("yield" summary "Create a generator function")
-     ("with" summary "Start statement with an associated context object")
-     ("while" summary "Start a 'while' loop")
-     ("try" summary "Start of statements protected by exception handlers")
-     ("return" summary "Return from a function")
-     ("raise" summary "Raise an exception")
-     ("print" summary "Print each argument to standard output")
-     ("pass" summary "Statement that does nothing")
-     ("or" summary "Binary logical 'or' operator")
-     ("not" summary "Unary boolean negation operator")
-     ("lambda" summary "Create anonymous function")
-     ("is" summary "Binary operator that tests for object equality")
-     ("in" summary "Part of 'for' statement ")
-     ("import" summary "Load specified modules")
-     ("if" summary "Start 'if' conditional statement")
-     ("global" summary "Declare one or more symbols as global symbols")
-     ("from" summary "Modify behavior of 'import' statement")
-     ("for" summary "Start a 'for' loop")
-     ("finally" summary "Specify code to be executed after 'try' statements whether or not an exception occurred")
-     ("exec" summary "Dynamically execute Python code")
-     ("except" summary "Specify exception handlers along with 'try' keyword")
-     ("else" summary "Start the 'else' clause following an 'if' statement")
-     ("elif" summary "Shorthand for 'else if' following an 'if' statement")
-     ("del" summary "Delete specified objects, i.e., undo what assignment did")
-     ("def" summary "Define a new function")
-     ("continue" summary "Skip to the next iteration of enclosing 'for' or 'while' loop")
-     ("class" summary "Define a new class")
-     ("break" summary "Terminate 'for' or 'while' loop")
-     ("assert" summary "Raise AssertionError exception if <expr> is false")
-     ("as" summary "EXPR as NAME makes value of EXPR available as variable NAME")
-     ("and" summary "Logical AND binary operator ... ")))
-  "Table of language keywords.")
-
-(defconst wisent-python-wy--token-table
-  (semantic-lex-make-type-table
-   '(("symbol"
-      (NAME))
-     ("number"
-      (NUMBER_LITERAL))
-     ("string"
-      (STRING_LITERAL))
-     ("punctuation"
-      (AT . "@")
-      (BACKQUOTE . "`")
-      (ASSIGN . "=")
-      (COMMA . ",")
-      (SEMICOLON . ";")
-      (COLON . ":")
-      (BAR . "|")
-      (TILDE . "~")
-      (PERIOD . ".")
-      (MINUS . "-")
-      (PLUS . "+")
-      (MOD . "%")
-      (DIV . "/")
-      (MULT . "*")
-      (AMP . "&")
-      (GT . ">")
-      (LT . "<")
-      (HAT . "^")
-      (NE . "!=")
-      (LTGT . "<>")
-      (HATEQ . "^=")
-      (OREQ . "|=")
-      (AMPEQ . "&=")
-      (MODEQ . "%=")
-      (DIVEQ . "/=")
-      (MULTEQ . "*=")
-      (MINUSEQ . "-=")
-      (PLUSEQ . "+=")
-      (LE . "<=")
-      (GE . ">=")
-      (EQ . "==")
-      (EXPONENT . "**")
-      (GTGT . ">>")
-      (LTLT . "<<")
-      (DIVDIV . "//")
-      (DIVDIVEQ . "//=")
-      (EXPEQ . "**=")
-      (GTGTEQ . ">>=")
-      (LTLTEQ . "<<="))
-     ("close-paren"
-      (RBRACK . "]")
-      (RBRACE . "}")
-      (RPAREN . ")"))
-     ("open-paren"
-      (LBRACK . "[")
-      (LBRACE . "{")
-      (LPAREN . "("))
-     ("block"
-      (BRACK_BLOCK . "(LBRACK RBRACK)")
-      (BRACE_BLOCK . "(LBRACE RBRACE)")
-      (PAREN_BLOCK . "(LPAREN RPAREN)"))
-     ("indentation"
-      (INDENT_BLOCK . "(INDENT DEDENT)")
-      (DEDENT . "[^:INDENT:]")
-      (INDENT . "^\\s-+"))
-     ("newline"
-      (NEWLINE . "\n"))
-     ("charquote"
-      (BACKSLASH . "\\")))
-   '(("keyword" :declared t)
-     ("symbol" :declared t)
-     ("number" :declared t)
-     ("punctuation" :declared t)
-     ("block" :declared t)))
-  "Table of lexical tokens.")
-
-(defconst wisent-python-wy--parse-table
-  (progn
-    (eval-when-compile
-      (require 'semantic/wisent/comp))
-    (wisent-compile-grammar
-     '((BACKSLASH NEWLINE INDENT DEDENT INDENT_BLOCK PAREN_BLOCK BRACE_BLOCK BRACK_BLOCK LPAREN RPAREN LBRACE RBRACE LBRACK RBRACK LTLTEQ GTGTEQ EXPEQ DIVDIVEQ DIVDIV LTLT GTGT EXPONENT EQ GE LE PLUSEQ MINUSEQ MULTEQ DIVEQ MODEQ AMPEQ OREQ HATEQ LTGT NE HAT LT GT AMP MULT DIV MOD PLUS MINUS PERIOD TILDE BAR COLON SEMICOLON COMMA ASSIGN BACKQUOTE AT STRING_LITERAL NUMBER_LITERAL NAME AND AS ASSERT BREAK CLASS CONTINUE DEF DEL ELIF ELSE EXCEPT EXEC FINALLY FOR FROM GLOBAL IF IMPORT IN IS LAMBDA NOT OR PASS PRINT RAISE RETURN TRY WHILE WITH YIELD)
-       nil
-       (goal
-       ((NEWLINE))
-       ((simple_stmt))
-       ((compound_stmt)))
-       (simple_stmt
-       ((small_stmt_list semicolon_opt NEWLINE)))
-       (small_stmt_list
-       ((small_stmt))
-       ((small_stmt_list SEMICOLON small_stmt)))
-       (small_stmt
-       ((expr_stmt))
-       ((print_stmt))
-       ((del_stmt))
-       ((pass_stmt))
-       ((flow_stmt))
-       ((import_stmt))
-       ((global_stmt))
-       ((exec_stmt))
-       ((assert_stmt)))
-       (print_stmt
-       ((PRINT print_stmt_trailer)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (print_stmt_trailer
-       ((test_list_opt)
-        nil)
-       ((GTGT test trailing_test_list_with_opt_comma_opt)
-        nil))
-       (trailing_test_list_with_opt_comma_opt
-       (nil)
-       ((trailing_test_list comma_opt)
-        nil))
-       (trailing_test_list
-       ((COMMA test)
-        nil)
-       ((trailing_test_list COMMA test)
-        nil))
-       (expr_stmt
-       ((testlist expr_stmt_trailer)
-        (if
-            (and $2
-                 (stringp $1)
-                 (string-match "^\\(\\sw\\|\\s_\\)+$" $1))
-            (wisent-raw-tag
-             (semantic-tag-new-variable $1 nil nil))
-          (wisent-raw-tag
-           (semantic-tag-new-code $1 nil)))))
-       (expr_stmt_trailer
-       ((augassign testlist))
-       ((eq_testlist_zom)))
-       (eq_testlist_zom
-       (nil)
-       ((eq_testlist_zom ASSIGN testlist)
-        (identity $3)))
-       (augassign
-       ((PLUSEQ))
-       ((MINUSEQ))
-       ((MULTEQ))
-       ((DIVEQ))
-       ((MODEQ))
-       ((AMPEQ))
-       ((OREQ))
-       ((HATEQ))
-       ((LTLTEQ))
-       ((GTGTEQ))
-       ((EXPEQ))
-       ((DIVDIVEQ)))
-       (del_stmt
-       ((DEL exprlist)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (exprlist
-       ((expr_list comma_opt)
-        nil))
-       (expr_list
-       ((expr)
-        nil)
-       ((expr_list COMMA expr)
-        nil))
-       (pass_stmt
-       ((PASS)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (flow_stmt
-       ((break_stmt))
-       ((continue_stmt))
-       ((return_stmt))
-       ((raise_stmt))
-       ((yield_stmt)))
-       (break_stmt
-       ((BREAK)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (continue_stmt
-       ((CONTINUE)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (return_stmt
-       ((RETURN testlist_opt)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (testlist_opt
-       (nil)
-       ((testlist)
-        nil))
-       (yield_stmt
-       ((YIELD)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil)))
-       ((YIELD testlist)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (raise_stmt
-       ((RAISE zero_one_two_or_three_tests)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (zero_one_two_or_three_tests
-       (nil)
-       ((test zero_one_or_two_tests)
-        nil))
-       (zero_one_or_two_tests
-       (nil)
-       ((COMMA test zero_or_one_comma_test)
-        nil))
-       (zero_or_one_comma_test
-       (nil)
-       ((COMMA test)
-        nil))
-       (import_stmt
-       ((IMPORT dotted_as_name_list)
-        (wisent-raw-tag
-         (semantic-tag-new-include $2 nil)))
-       ((FROM dotted_name IMPORT star_or_import_as_name_list)
-        (wisent-raw-tag
-         (semantic-tag-new-include $2 nil))))
-       (dotted_as_name_list
-       ((dotted_as_name_list COMMA dotted_as_name)
-        (cons $3 $1))
-       ((dotted_as_name)
-        (list $1)))
-       (star_or_import_as_name_list
-       ((MULT)
-        nil)
-       ((import_as_name_list)
-        nil))
-       (import_as_name_list
-       ((import_as_name)
-        nil)
-       ((import_as_name_list COMMA import_as_name)
-        nil))
-       (import_as_name
-       ((NAME as_name_opt)
-        nil))
-       (dotted_as_name
-       ((dotted_name as_name_opt)))
-       (as_name_opt
-       (nil)
-       ((AS NAME)
-        (identity $2)))
-       (dotted_name
-       ((NAME))
-       ((dotted_name PERIOD NAME)
-        (format "%s.%s" $1 $3)))
-       (global_stmt
-       ((GLOBAL comma_sep_name_list)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (comma_sep_name_list
-       ((NAME))
-       ((comma_sep_name_list COMMA NAME)))
-       (exec_stmt
-       ((EXEC expr exec_trailer)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (exec_trailer
-       (nil)
-       ((IN test comma_test_opt)
-        nil))
-       (comma_test_opt
-       (nil)
-       ((COMMA test)
-        nil))
-       (assert_stmt
-       ((ASSERT test comma_test_opt)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (compound_stmt
-       ((if_stmt))
-       ((while_stmt))
-       ((for_stmt))
-       ((try_stmt))
-       ((with_stmt))
-       ((funcdef))
-       ((class_declaration)))
-       (if_stmt
-       ((IF test COLON suite elif_suite_pair_list else_suite_pair_opt)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (elif_suite_pair_list
-       (nil)
-       ((elif_suite_pair_list ELIF test COLON suite)
-        nil))
-       (else_suite_pair_opt
-       (nil)
-       ((ELSE COLON suite)
-        nil))
-       (suite
-       ((simple_stmt)
-        (list $1))
-       ((NEWLINE indented_block)
-        (progn $2)))
-       (indented_block
-       ((INDENT_BLOCK)
-        (semantic-parse-region
-         (car $region1)
-         (cdr $region1)
-         'indented_block_body 1)))
-       (indented_block_body
-       ((INDENT)
-        nil)
-       ((DEDENT)
-        nil)
-       ((simple_stmt))
-       ((compound_stmt)))
-       (while_stmt
-       ((WHILE test COLON suite else_suite_pair_opt)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (for_stmt
-       ((FOR exprlist IN testlist COLON suite else_suite_pair_opt)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (try_stmt
-       ((TRY COLON suite except_clause_suite_pair_list else_suite_pair_opt)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil)))
-       ((TRY COLON suite FINALLY COLON suite)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (except_clause_suite_pair_list
-       ((except_clause COLON suite)
-        nil)
-       ((except_clause_suite_pair_list except_clause COLON suite)
-        nil))
-       (except_clause
-       ((EXCEPT zero_one_or_two_test)
-        nil))
-       (zero_one_or_two_test
-       (nil)
-       ((test zero_or_one_comma_test)
-        nil))
-       (with_stmt
-       ((WITH test COLON suite)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil)))
-       ((WITH test with_var COLON suite)
-        (wisent-raw-tag
-         (semantic-tag-new-code $1 nil))))
-       (with_var
-       ((AS expr)
-        nil))
-       (decorator
-       ((AT dotted_name varargslist_opt NEWLINE)
-        (wisent-raw-tag
-         (semantic-tag-new-function $2 "decorator" $3))))
-       (decorators
-       ((decorator)
-        (list $1))
-       ((decorator decorators)
-        (cons $1 $2)))
-       (funcdef
-       ((DEF NAME function_parameter_list COLON suite)
-        (wisent-python-reconstitute-function-tag
-         (wisent-raw-tag
-          (semantic-tag-new-function $2 nil $3))
-         $5))
-       ((decorators DEF NAME function_parameter_list COLON suite)
-        (wisent-python-reconstitute-function-tag
-         (wisent-raw-tag
-          (semantic-tag-new-function $3 nil $4 :decorators $1))
-         $6)))
-       (function_parameter_list
-       ((PAREN_BLOCK)
-        (let
-            ((wisent-python-EXPANDING-block t))
-          (semantic-parse-region
-           (car $region1)
-           (cdr $region1)
-           'function_parameters 1))))
-       (function_parameters
-       ((LPAREN)
-        nil)
-       ((RPAREN)
-        nil)
-       ((function_parameter COMMA))
-       ((function_parameter RPAREN)))
-       (function_parameter
-       ((fpdef_opt_test))
-       ((MULT NAME)
-        (wisent-raw-tag
-         (semantic-tag-new-variable $2 nil nil)))
-       ((EXPONENT NAME)
-        (wisent-raw-tag
-         (semantic-tag-new-variable $2 nil nil))))
-       (class_declaration
-       ((CLASS NAME paren_class_list_opt COLON suite)
-        (wisent-python-reconstitute-class-tag
-         (wisent-raw-tag
-          (semantic-tag-new-type $2 $1 $5
-                                 (cons $3 nil))))))
-       (paren_class_list_opt
-       (nil)
-       ((paren_class_list)))
-       (paren_class_list
-       ((PAREN_BLOCK)
-        (let
-            ((wisent-python-EXPANDING-block t))
-          (mapcar 'semantic-tag-name
-                  (semantic-parse-region
-                   (car $region1)
-                   (cdr $region1)
-                   'paren_classes 1)))))
-       (paren_classes
-       ((LPAREN)
-        nil)
-       ((RPAREN)
-        nil)
-       ((paren_class COMMA)
-        (wisent-raw-tag
-         (semantic-tag-new-variable $1 nil nil)))
-       ((paren_class RPAREN)
-        (wisent-raw-tag
-         (semantic-tag-new-variable $1 nil nil))))
-       (paren_class
-       ((dotted_name)))
-       (test
-       ((test_test))
-       ((lambdef)))
-       (test_test
-       ((and_test))
-       ((test_test OR and_test)
-        nil))
-       (and_test
-       ((not_test))
-       ((and_test AND not_test)
-        nil))
-       (not_test
-       ((NOT not_test)
-        nil)
-       ((comparison)))
-       (comparison
-       ((expr))
-       ((comparison comp_op expr)
-        nil))
-       (comp_op
-       ((LT))
-       ((GT))
-       ((EQ))
-       ((GE))
-       ((LE))
-       ((LTGT))
-       ((NE))
-       ((IN))
-       ((NOT IN))
-       ((IS))
-       ((IS NOT)))
-       (expr
-       ((xor_expr))
-       ((expr BAR xor_expr)
-        nil))
-       (xor_expr
-       ((and_expr))
-       ((xor_expr HAT and_expr)
-        nil))
-       (and_expr
-       ((shift_expr))
-       ((and_expr AMP shift_expr)
-        nil))
-       (shift_expr
-       ((arith_expr))
-       ((shift_expr shift_expr_operators arith_expr)
-        nil))
-       (shift_expr_operators
-       ((LTLT))
-       ((GTGT)))
-       (arith_expr
-       ((term))
-       ((arith_expr plus_or_minus term)
-        nil))
-       (plus_or_minus
-       ((PLUS))
-       ((MINUS)))
-       (term
-       ((factor))
-       ((term term_operator factor)
-        nil))
-       (term_operator
-       ((MULT))
-       ((DIV))
-       ((MOD))
-       ((DIVDIV)))
-       (factor
-       ((prefix_operators factor)
-        nil)
-       ((power)))
-       (prefix_operators
-       ((PLUS))
-       ((MINUS))
-       ((TILDE)))
-       (power
-       ((atom trailer_zom exponent_zom)
-        (concat $1
-                (if $2
-                    (concat " " $2 " ")
-                  "")
-                (if $3
-                    (concat " " $3)
-                  ""))))
-       (trailer_zom
-       (nil)
-       ((trailer_zom trailer)
-        nil))
-       (exponent_zom
-       (nil)
-       ((exponent_zom EXPONENT factor)
-        nil))
-       (trailer
-       ((PAREN_BLOCK)
-        nil)
-       ((BRACK_BLOCK)
-        nil)
-       ((PERIOD NAME)
-        nil))
-       (atom
-       ((PAREN_BLOCK)
-        nil)
-       ((BRACK_BLOCK)
-        nil)
-       ((BRACE_BLOCK)
-        nil)
-       ((BACKQUOTE testlist BACKQUOTE)
-        nil)
-       ((NAME))
-       ((NUMBER_LITERAL))
-       ((one_or_more_string)))
-       (test_list_opt
-       (nil)
-       ((testlist)
-        nil))
-       (testlist
-       ((comma_sep_test_list comma_opt)))
-       (comma_sep_test_list
-       ((test))
-       ((comma_sep_test_list COMMA test)
-        (format "%s, %s" $1 $3)))
-       (one_or_more_string
-       ((STRING_LITERAL))
-       ((one_or_more_string STRING_LITERAL)
-        (concat $1 $2)))
-       (lambdef
-       ((LAMBDA varargslist_opt COLON test)
-        (format "%s %s" $1
-                (or $2 ""))))
-       (varargslist_opt
-       (nil)
-       ((varargslist)))
-       (varargslist
-       ((fpdef_opt_test_list_comma_zom rest_args)
-        (nconc $2 $1))
-       ((fpdef_opt_test_list comma_opt)))
-       (rest_args
-       ((MULT NAME multmult_name_opt)
-        nil)
-       ((EXPONENT NAME)
-        nil))
-       (multmult_name_opt
-       (nil)
-       ((COMMA EXPONENT NAME)
-        (wisent-raw-tag
-         (semantic-tag-new-variable $3 nil nil))))
-       (fpdef_opt_test_list_comma_zom
-       (nil)
-       ((fpdef_opt_test_list_comma_zom fpdef_opt_test COMMA)
-        (nconc $2 $1)))
-       (fpdef_opt_test_list
-       ((fpdef_opt_test))
-       ((fpdef_opt_test_list COMMA fpdef_opt_test)
-        (nconc $3 $1)))
-       (fpdef_opt_test
-       ((fpdef eq_test_opt)))
-       (fpdef
-       ((NAME)
-        (wisent-raw-tag
-         (semantic-tag-new-variable $1 nil nil))))
-       (fplist
-       ((fpdef_list comma_opt)))
-       (fpdef_list
-       ((fpdef))
-       ((fpdef_list COMMA fpdef)))
-       (eq_test_opt
-       (nil)
-       ((ASSIGN test)
-        nil))
-       (comma_opt
-       (nil)
-       ((COMMA)))
-       (semicolon_opt
-       (nil)
-       ((SEMICOLON))))
-     '(goal function_parameter paren_class indented_block function_parameters paren_classes indented_block_body)))
-  "Parser table.")
-
-(defun wisent-python-wy--install-parser ()
-  "Setup the Semantic Parser."
-  (semantic-install-function-overrides
-   '((parse-stream . wisent-parse-stream)))
-  (setq semantic-parser-name "LALR"
-       semantic--parse-table wisent-python-wy--parse-table
-       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
-  (semantic-make-local-hook 'wisent-discarding-token-functions)
-  (add-hook 'wisent-discarding-token-functions
-           'wisent-collect-unmatched-syntax nil t))
-
-\f
-;;; Analyzers
-;;
-(define-lex-block-type-analyzer wisent-python-wy--<block>-block-analyzer
-  "block analyzer for <block> tokens."
-  "\\s(\\|\\s)"
-  '((("(" LPAREN PAREN_BLOCK)
-     ("{" LBRACE BRACE_BLOCK)
-     ("[" LBRACK BRACK_BLOCK))
-    (")" RPAREN)
-    ("}" RBRACE)
-    ("]" 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'\\)+"
-  '((AT . "@")
-    (BACKQUOTE . "`")
-    (ASSIGN . "=")
-    (COMMA . ",")
-    (SEMICOLON . ";")
-    (COLON . ":")
-    (BAR . "|")
-    (TILDE . "~")
-    (PERIOD . ".")
-    (MINUS . "-")
-    (PLUS . "+")
-    (MOD . "%")
-    (DIV . "/")
-    (MULT . "*")
-    (AMP . "&")
-    (GT . ">")
-    (LT . "<")
-    (HAT . "^")
-    (NE . "!=")
-    (LTGT . "<>")
-    (HATEQ . "^=")
-    (OREQ . "|=")
-    (AMPEQ . "&=")
-    (MODEQ . "%=")
-    (DIVEQ . "/=")
-    (MULTEQ . "*=")
-    (MINUSEQ . "-=")
-    (PLUSEQ . "+=")
-    (LE . "<=")
-    (GE . ">=")
-    (EQ . "==")
-    (EXPONENT . "**")
-    (GTGT . ">>")
-    (LTLT . "<<")
-    (DIVDIV . "//")
-    (DIVDIVEQ . "//=")
-    (EXPEQ . "**=")
-    (GTGTEQ . ">>=")
-    (LTLTEQ . "<<="))
-  'punctuation)
-
-(define-lex-keyword-type-analyzer wisent-python-wy--<keyword>-keyword-analyzer
-  "keyword analyzer for <keyword> tokens."
-  "\\(\\sw\\|\\s_\\)+")
-
-\f
-;;; Epilogue
-;;
-
-(provide 'semantic/wisent/python-wy)
-
-;;; semantic/wisent/python-wy.el ends here
diff --git a/lisp/cedet/srecode/srt-wy.el b/lisp/cedet/srecode/srt-wy.el
deleted file mode 100644 (file)
index 450f57d..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
-;;; srecode/srt-wy.el --- Generated parser support file
-
-;; Copyright (C) 2005, 2007-2013 Free Software Foundation, Inc.
-
-;; 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/srecode-template.wy.
-
-;;; Code:
-
-(require 'semantic/lex)
-(eval-when-compile (require 'semantic/bovine))
-\f
-;;; Prologue
-;;
-\f
-;;; Declarations
-;;
-(defconst srecode-template-wy--keyword-table
-  (semantic-lex-make-keyword-table
-   '(("set" . SET)
-     ("show" . SHOW)
-     ("macro" . MACRO)
-     ("context" . CONTEXT)
-     ("template" . TEMPLATE)
-     ("sectiondictionary" . SECTIONDICTIONARY)
-     ("section" . SECTION)
-     ("end" . END)
-     ("prompt" . PROMPT)
-     ("default" . DEFAULT)
-     ("defaultmacro" . DEFAULTMACRO)
-     ("read" . READ)
-     ("bind" . BIND))
-   '(("bind" summary "bind \"<letter>\"")
-     ("read" summary "prompt <symbol> \"Describe Symbol: \" [default[macro] <lispsym>|\"valuetext\"] [read <lispsym>]")
-     ("defaultmacro" summary "prompt <symbol> \"Describe Symbol: \" [default[macro] <lispsym>|\"valuetext\"] [read <lispsym>]")
-     ("default" summary "prompt <symbol> \"Describe Symbol: \" [default[macro] <lispsym>|\"valuetext\"] [read <lispsym>]")
-     ("prompt" summary "prompt <symbol> \"Describe Symbol: \" [default[macro] <lispsym>|\"valuetext\"] [read <lispsym>]")
-     ("end" summary "section ... end")
-     ("section" summary "section <name>\\n <dictionary entries>\\n end")
-     ("sectiondictionary" summary "sectiondictionary <name>\\n <dictionary entries>")
-     ("template" summary "template <name>\\n <template definition>")
-     ("context" summary "context <name>")
-     ("macro" summary "... macro \"string\" ...")
-     ("show" summary "show <name>   ; to show a section")
-     ("set" summary "set <name> <value>")))
-  "Table of language keywords.")
-
-(defconst srecode-template-wy--token-table
-  (semantic-lex-make-type-table
-   '(("number"
-      (number))
-     ("string"
-      (string))
-     ("symbol"
-      (symbol))
-     ("property"
-      (property))
-     ("separator"
-      (TEMPLATE_BLOCK . "^----"))
-     ("newline"
-      (newline)))
-   '(("number" :declared t)
-     ("string" :declared t)
-     ("symbol" :declared t)
-     ("property" syntax ":\\(\\w\\|\\s_\\)*")
-     ("property" :declared t)
-     ("newline" :declared t)
-     ("punctuation" syntax "\\s.+")
-     ("punctuation" :declared t)
-     ("keyword" :declared t)))
-  "Table of lexical tokens.")
-
-(defconst srecode-template-wy--parse-table
-  (progn
-    (eval-when-compile
-      (require 'semantic/wisent/comp))
-    (wisent-compile-grammar
-     '((SET SHOW MACRO CONTEXT TEMPLATE SECTIONDICTIONARY SECTION END PROMPT DEFAULT DEFAULTMACRO READ BIND newline TEMPLATE_BLOCK property symbol string number)
-       nil
-       (template_file
-       ((newline)
-        nil)
-       ((context))
-       ((prompt))
-       ((variable))
-       ((template)))
-       (context
-       ((CONTEXT symbol newline)
-        (wisent-raw-tag
-         (semantic-tag $2 'context))))
-       (prompt
-       ((PROMPT symbol string opt-default-fcn opt-read-fcn newline)
-        (wisent-raw-tag
-         (semantic-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))))
-       (nil nil))
-       (opt-read-fcn
-       ((READ symbol)
-        (progn
-          (read $2)))
-       (nil nil))
-       (variable
-       ((SET symbol insertable-string-list newline)
-        (wisent-raw-tag
-         (semantic-tag-new-variable $2 nil $3)))
-       ((SET symbol number newline)
-        (wisent-raw-tag
-         (semantic-tag-new-variable $2 nil
-                                    (list $3))))
-       ((SHOW symbol newline)
-        (wisent-raw-tag
-         (semantic-tag-new-variable $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 section-dictionary-list TEMPLATE_BLOCK newline opt-bind)
-        (wisent-raw-tag
-         (semantic-tag-new-function $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))
-       (nil nil))
-       (opt-string
-       ((string newline)
-        (read $1))
-       (nil nil))
-       (section-dictionary-list
-       (nil nil)
-       ((section-dictionary-list flat-section-dictionary)
-        (append $1
-                (list $2)))
-       ((section-dictionary-list section-dictionary)
-        (append $1
-                (list $2))))
-       (flat-section-dictionary
-       ((SECTIONDICTIONARY string newline flat-dictionary-entry-list)
-        (cons
-         (read $2)
-         $4)))
-       (flat-dictionary-entry-list
-       (nil nil)
-       ((flat-dictionary-entry-list flat-dictionary-entry)
-        (append $1 $2)))
-       (flat-dictionary-entry
-       ((variable)
-        (wisent-cook-tag $1)))
-       (section-dictionary
-       ((SECTION string newline dictionary-entry-list END newline)
-        (cons
-         (read $2)
-         $4)))
-       (dictionary-entry-list
-       (nil nil)
-       ((dictionary-entry-list dictionary-entry)
-        (append $1 $2)))
-       (dictionary-entry
-       ((variable)
-        (wisent-cook-tag $1))
-       ((section-dictionary)
-        (list $1)))
-       (opt-bind
-       ((BIND string newline)
-        (read $2))
-       (nil nil)))
-     '(template_file)))
-  "Parser table.")
-
-(defun srecode-template-wy--install-parser ()
-  "Setup the Semantic Parser."
-  (semantic-install-function-overrides
-   '((parse-stream . wisent-parse-stream)))
-  (setq semantic-parser-name "LALR"
-       semantic--parse-table srecode-template-wy--parse-table
-       semantic-debug-parser-source "srecode-template.wy"
-       semantic-flex-keywords-obarray srecode-template-wy--keyword-table
-       semantic-lex-types-obarray srecode-template-wy--token-table)
-  ;; Collect unmatched syntax lexical tokens
-  (semantic-make-local-hook 'wisent-discarding-token-functions)
-  (add-hook 'wisent-discarding-token-functions
-           'wisent-collect-unmatched-syntax nil t))
-
-\f
-;;; Analyzers
-;;
-(define-lex-regex-type-analyzer srecode-template-wy--<property>-regexp-analyzer
-  "regexp analyzer for <property> tokens."
-  ":\\(\\w\\|\\s_\\)*"
-  nil
-  'property)
-
-(define-lex-regex-type-analyzer srecode-template-wy--<symbol>-regexp-analyzer
-  "regexp analyzer for <symbol> tokens."
-  "\\(\\sw\\|\\s_\\)+"
-  nil
-  'symbol)
-
-(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_\\)+")
-
-\f
-;;; Epilogue
-;;
-(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--<number>-regexp-analyzer
-  srecode-template-wy--<symbol>-regexp-analyzer
-  srecode-template-wy--<string>-sexp-analyzer
-  srecode-template-wy--<punctuation>-string-analyzer
-  semantic-lex-default-action
-  )
-
-(provide 'srecode/srt-wy)
-
-;;; srecode/srt-wy.el ends here