[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals-release/gpr-mode 1932e3a42c: Add files to gpr-mode
From: |
Stephen Leake |
Subject: |
[elpa] externals-release/gpr-mode 1932e3a42c: Add files to gpr-mode |
Date: |
Tue, 1 Nov 2022 16:35:40 -0400 (EDT) |
branch: externals-release/gpr-mode
commit 1932e3a42cf5cf2b4ea0ac0b8137556f7e656238
Author: Stephen Leake <stephen_leake@stephe-leake.org>
Commit: Stephen Leake <stephen_leake@stephe-leake.org>
Add files to gpr-mode
---
Alire.make | 9 +
ELPA.make | 51 +
NEWS | 13 +
README | 25 +
build.sh | 41 +
doclicense.texi | 507 +++
emacs_gpr_mode.gpr | 33 +
gpr-indent-user-options.el | 48 +
gpr-mode.el | 432 +++
gpr-mode.texi | 256 ++
gpr-process.el | 148 +
gpr-skel.el | 137 +
gpr.wy | 379 +++
gpr_mode_wisi_parse.ads | 31 +
gpr_mode_wisi_parse.gpr | 91 +
gpr_process_actions.adb | 418 +++
gpr_process_actions.ads | 304 ++
gpr_process_main.adb | 2640 +++++++++++++++
gpr_process_main.ads | 32 +
gpr_re2c.c | 7693 ++++++++++++++++++++++++++++++++++++++++++++
gpr_re2c_c.ads | 74 +
install.sh | 35 +
prj-eglot.el | 40 +
run_gpr_parse.ads | 29 +
run_gpr_parse.exe | Bin 0 -> 11834278 bytes
wisi-gpr.adb | 84 +
wisi-gpr.ads | 56 +
27 files changed, 13606 insertions(+)
diff --git a/Alire.make b/Alire.make
new file mode 100644
index 0000000000..8e9a50bbcb
--- /dev/null
+++ b/Alire.make
@@ -0,0 +1,9 @@
+# For compiling gpr-mode Ada code with Alire
+
+STEPHES_ADA_LIBRARY_ALIRE_PREFIX ?= $(CURDIR)/../org.stephe_leake.sal
+
+include $(STEPHES_ADA_LIBRARY_ALIRE_PREFIX)/build/alire_rules.make
+
+# Local Variables:
+# eval: (load-file "prj-eglot.el")
+# End:
diff --git a/ELPA.make b/ELPA.make
new file mode 100644
index 0000000000..5e6de64bc9
--- /dev/null
+++ b/ELPA.make
@@ -0,0 +1,51 @@
+# For compiling ada-mode Ada code in elpa worktree
+
+#export Standard_Common_Build := Debug
+
+.PHONY : all force
+
+all : build_executables byte-compile
+
+Makefile.conf : create_makefile_conf.sh
+ $(SHELL) -c ./create_makefile_conf.sh
+
+include Makefile.conf
+
+build_executables : ada_mode_wisi_parse.gpr gpr_re2c.c ada_annex_p_re2c.c force
+ gprbuild -p -j8 ada_mode_wisi_parse.gpr
+
+../wisi/wisi.gpr : ../wisi/wisi.gpr.gp
+ gnatprep -DELPA="yes" ../wisi/wisi.gpr.gp ../wisi/wisi.gpr
+
+ada_mode_wisi_parse.gpr : ada_mode_wisi_parse.gpr.gp ../wisi/wisi.gpr
+ gnatprep -DELPA="yes" -DHAVE_GNAT_UTIL=$(HAVE_GNAT_UTIL)
-DHAVE_LIBADALANG=$(HAVE_LIBADALANG) $< $@
+
+%.re2c : %.wy ../wisi/wisitoken-bnf-generate
+ ../wisi/wisitoken-bnf-generate $(<F)
+ dos2unix -q $(*F)-process.el $(*F)_process* $(*F).re2c $(*F)_re2c_c.ads
+
+%_re2c.c : %.re2c
+ re2c --no-generation-date --debug-output --input custom -W -Werror
--utf-8 -o $@ $<
+ dos2unix -q $(*F)_re2c.c
+
+../wisi/wisitoken-bnf-generate : ../wisi/wisi.gpr force
+ cd ../wisi; gprbuild -p -j8 -P wisi.gpr wisitoken-bnf-generate
+
+BYTE_COMPILE := "(progn (setq package-load-list '((wisi) (ada-mode) all))
(package-initialize)(setq byte-compile-error-on-warn t)(batch-byte-compile))"
+byte-compile : byte-compile-clean
+ cd ../wisi; emacs -Q -batch -L . --eval $(BYTE_COMPILE) *.el
+ emacs -Q -batch -L . -L ../wisi --eval $(BYTE_COMPILE) *.el
+
+byte-compile-clean :
+ cd ..; rm -f *.elc
+
+clean : force
+ rm -rf obj *parse_table*
+
+recursive-clean : force
+ gprclean -r -P ada_mode_wisi_parse.gpr
+
+# Local Variables:
+# eval: (load-file "prj.el")
+# End:
+# end of file
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000000..de1d7a973c
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,13 @@
+GNU Emacs gpr mode NEWS -- history of user-visible changes.
+
+Copyright (C) 2022 Free Software Foundation, Inc.
+
+Please send gpr-mode bug reports to bug-gnu-emacs@gnu.org, with
+'gpr-mode' in the subject. If possible, use M-x report-emacs-bug.
+
+
+* gpr mode 1.0.1
+
+** Split out from ada-mode
+
+** language protocol version 1
diff --git a/README b/README
new file mode 100644
index 0000000000..49cbf0f326
--- /dev/null
+++ b/README
@@ -0,0 +1,25 @@
+Emacs gpr mode version 1.0.1
+
+gpr mode provides auto-casing, fontification, navigation, and
+indentation for gpr source code files.
+
+gpr mode uses a parser to provide fontification, navigation, and
+indentation.
+
+The parser is provided as Ada source code that must be compiled and
+installed:
+
+cd ~/.emacs.d/elpa/gpr-mode-i.j.k
+./build.sh
+./install.sh
+
+install.sh can take an option "--prefix=<dir>" to set the installation
+directory.
+
+gpr mode will be automatically loaded when you open a file
+with a matching extension (default *.gpr).
+
+gpr mode uses wisi project files to define large (multi-directory)
+projects, and to define casing exceptions.
+
+See gpr-mode.info for help on using and customizing gpr mode.
diff --git a/build.sh b/build.sh
new file mode 100644
index 0000000000..5348c5b3a2
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+# Build executables for gpr mode.
+# build.sh <other gprbuild options>
+# e.g. 'build.sh -j0' : use all available processors to compile
+# 'build.sh -wn' : treat warnings as warnings.
+# 'build.sh -vh' : Verbose output (high verbosity)
+#
+# See install.sh for install
+
+if type alr; then
+ echo "building gpr-mode executables via Alire"
+ alr get emacs_gpr_mode~1.0.1
+ cd emacs_gpr_mode_*; alr build --release
+
+elif type gprbuild; then
+ echo "building gpr-mode executables via gnat compiler"
+
+ if [ -d ../wisi-4.1.? ]; then
+ WISI_DIR=`ls -d ../wisi-4.1.?`
+ fi
+
+ args=`echo -DELPA="yes" $WISI_DIR/wisi.gpr.gp $WISI_DIR/wisi.gpr`
+ echo "gnatprep " $args
+ gnatprep $args
+
+ # We don't add WISI_DIR to GPR_PROJECT_PATH because the user may have
+ # already set GPR_PROJECT_PATH.
+
+ # Allow running build.sh again, since it often fails the first time.
+ # - Run gprclean, to allow changing compilers and other drastic things
+
+ gprclean -r -P gpr_mode_wisi_parse.gpr -aP$WISI_DIR
+
+ gprbuild -p -j8 -P gpr_mode_wisi_parse.gpr -aP $WISI_DIR "$@"
+
+else
+ echo "neither Alire nor gnat compiler found"
+ return 1
+fi
+
+# end of file
diff --git a/doclicense.texi b/doclicense.texi
new file mode 100644
index 0000000000..a511ffcd5a
--- /dev/null
+++ b/doclicense.texi
@@ -0,0 +1,507 @@
+@c -*-texinfo-*-
+@c The GNU Free Documentation License.
+@center Version 1.3, 3 November 2008
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2000, 2001, 2002, 2007, 2008, 2009 Free Software
Foundation, Inc.
+@uref{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The ``Document'', below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as ``you''. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+@sc{ascii} without markup, Texinfo input format, La@TeX{} input
+format, @acronym{SGML} or @acronym{XML} using a publicly available
+@acronym{DTD}, and standard-conforming simple @acronym{HTML},
+PostScript or @acronym{PDF} designed for human modification. Examples
+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
+@acronym{JPG}. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, @acronym{SGML} or
+@acronym{XML} for which the @acronym{DTD} and/or processing tools are
+not generally available, and the machine-generated @acronym{HTML},
+PostScript or @acronym{PDF} produced by some word processors for
+output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The ``publisher'' means any person or entity that distributes copies
+of the Document to the public.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+@enumerate A
+@item
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+@item
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+@item
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+@item
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+
+@item
+Delete any section Entitled ``Endorsements''. Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''. You must delete all
+sections Entitled ``Endorsements.''
+
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+@uref{http://www.gnu.org/copyleft/}.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+@item
+RELICENSING
+
+``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+``Incorporate'' means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+An MMC is ``eligible for relicensing'' if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+@end enumerate
+
+@page
+@heading ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+ Copyright (C) @var{year} @var{your name}.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+@end group
+@end smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with@dots{}Texts.'' line with this:
+
+@smallexample
+@group
+ with the Invariant Sections being @var{list their titles}, with
+ the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+ being @var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
diff --git a/emacs_gpr_mode.gpr b/emacs_gpr_mode.gpr
new file mode 100644
index 0000000000..ed3b61774b
--- /dev/null
+++ b/emacs_gpr_mode.gpr
@@ -0,0 +1,33 @@
+with "config/emacs_gpr_mode_config.gpr";
+with "standard_common_alire";
+with "wisi_alire";
+project Emacs_Gpr_Mode is
+
+ for Source_Dirs use (".", "config/");
+ for Languages use ("Ada", "C");
+
+ for Object_Dir use "obj/" & Emacs_Gpr_Mode_Config.Build_Profile;
+ for Create_Missing_Dirs use "True";
+ for Exec_Dir use "bin";
+ for Main use ("gpr_mode_wisi_parse.ads");
+
+ package Compiler is
+ case Emacs_Gpr_Mode_Config.Build_Profile is
+ when "release" =>
+ for Default_Switches ("Ada") use
Standard_Common_Alire.Release_Switches & Standard_Common_Alire.Style_Checks;
+
+ when "validation" | "development" =>
+ for Default_Switches ("Ada") use Standard_Common_Alire.Debug_Switches
& Standard_Common_Alire.Style_Checks;
+
+ end case;
+ end Compiler;
+
+ package Binder is
+ for Switches ("Ada") use ("-Es"); -- Symbolic traceback
+ end Binder;
+
+ package Install is
+ for Artifacts (".") use ("share");
+ end Install;
+
+end Emacs_Gpr_Mode;
diff --git a/gpr-indent-user-options.el b/gpr-indent-user-options.el
new file mode 100644
index 0000000000..174a5ebc0b
--- /dev/null
+++ b/gpr-indent-user-options.el
@@ -0,0 +1,48 @@
+;; user options shared by gpr mode indentation engines -*- lexical-binding:t
-*-
+;;
+;; Copyright (C) 2017, 2019 Free Software Foundation, Inc.
+;;
+;; Author: Stephen Leake <stephen_leake@member.fsf.org>
+;;
+;; 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/>.
+
+;;;; code
+
+(defgroup gpr-indentation nil
+ "Indentation options for gpr source."
+ :group 'gpr)
+
+(defcustom gpr-indent 3
+ "Size of default indentation, when no other indentation is used."
+ :type 'integer
+ :safe #'integerp)
+(make-variable-buffer-local 'gpr-indent)
+
+(defcustom gpr-indent-broken 2
+ "Indentation for the continuation of a broken line."
+ :type 'integer
+ :safe #'integerp)
+(make-variable-buffer-local 'gpr-indent-broken)
+
+(defcustom gpr-indent-when 3
+ "Indentation for `when' relative to `case'."
+ :type 'integer
+ :safe #'integerp)
+(make-variable-buffer-local 'gpr-indent-when)
+
+(provide 'gpr-indent-user-options)
+
+;; end file
diff --git a/gpr-mode.el b/gpr-mode.el
new file mode 100644
index 0000000000..d5b7db2ba7
--- /dev/null
+++ b/gpr-mode.el
@@ -0,0 +1,432 @@
+;; gpr-mode --- Major mode for editing GNAT project files -*-
lexical-binding:t -*-
+
+;; Copyright (C) 2004, 2007, 2008, 2012-2015, 2017 - 2020, 2022 Free Software
Foundation, Inc.
+
+;; Author: Stephen Leake <stephen_leake@member.fsf.org>
+;; Maintainer: Stephen Leake <stephen_leake@member.fsf.org>
+;; Version: 1.0.1
+;; package-requires: ((emacs "25.3") (wisi "4.1.1") (gnat-compiler "1.0"))
+;; URL: http://stephe-leake.org/ada/wisitoken.html
+
+;; This file is part of GNU Emacs.
+
+;; gpr-mode 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, or (at your option)
+;; any later version.
+
+;; gpr-mode 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; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+;;
+;;; Commentary:
+;;
+;;; History:
+;;
+;; The first gpr-mode was written by Rolf Ebert
+;; <rolf.ebert_nosp...@gmx.net> in 2004.
+;;
+;; Stephen Leake <stephen_leake@member.fsf.org> rewrote it in 2013 to
+;; use the wisi indentation engine.
+;;
+;;;;; Code:
+
+(require 'cl-lib)
+(require 'gnat-compiler)
+(require 'gpr-indent-user-options)
+(require 'gpr-process)
+(require 'gpr-skel)
+(require 'wisi-process-parse)
+(require 'wisi-prj)
+
+(defgroup gpr nil
+ "Major mode for editing gpr (Gnat Project File) source code in Emacs."
+ :group 'languages)
+
+(defvar gpr-mode-map
+ (let ((map (make-sparse-keymap)))
+ ;; C-c <letter> are reserved for users
+
+ ;; global-map has C-x ` 'next-error
+ (define-key map [return] 'wisi-indent-newline-indent)
+ ;; comment-dwim is in global map on M-;
+ (define-key map "\C-c\C-e" 'wisi-skel-expand)
+ (define-key map "\C-c\C-f" 'wisi-show-parse-error)
+ (define-key map "\C-c\C-i" 'wisi-indent-statement)
+ (define-key map "\C-c\C-o" 'ff-find-other-file)
+ (define-key map "\C-c\C-P" 'gpr-set-as-project)
+ (define-key map "\C-c\C-w" 'wisi-case-adjust-at-point)
+ (define-key map "\C-c\C-y" 'wisi-case-create-exception)
+ (define-key map "\C-c\C-\M-y" 'wisi-case-create-partial-exception)
+ (define-key map "\M-n" 'wisi-skel-next-placeholder)
+ (define-key map "\M-p" 'wisi-skel-prev-placeholder)
+
+ (wisi-case-activate-keys map)
+
+ map
+ ) "Local keymap used for GPR mode.")
+
+(defvar gpr-mode-menu (make-sparse-keymap "gpr"))
+(easy-menu-define gpr-mode-menu gpr-mode-map "Menu keymap for gpr mode"
+ '("gpr"
+ ("Help"
+ ["gpr Mode" (info "gpr-mode") t]
+ ["GNAT Reference Manual" (info "gnat_rm") t]
+ ["GNAT User Guide" (info "gnat_ugn") t]
+ ["Key bindings" describe-bindings t]
+ )
+
+ ["Customize" (customize-group 'gpr)]
+ ["------" nil nil]
+ ["Show current project" wisi-prj-show t]
+ ["Show project search path" wisi-prj-show-prj-path t]
+ ["Next compilation error" next-error t]
+ ["Show last parse error" wisi-show-parse-error t]
+ ["Other file" ff-find-other-file t]
+ ("Edit"
+ ["Indent Line or selection" indent-for-tab-command t]
+ ["Indent current statement" wisi-indent-statement t]
+ ["Indent Lines in File" (indent-region (point-min) (point-max))
t]
+ ["Expand skeleton" wisi-skel-expand t]
+ ["Next skeleton placeholder" wisi-skel-next-placeholder t]
+ ["Previous skeleton placeholder" wisi-skel-prev-placeholder t]
+ ["Comment/uncomment selection" comment-dwim t]
+ ["Fill Comment Paragraph" fill-paragraph t]
+ )
+ ))
+
+(defconst gpr-keywords
+ '(
+ "abstract"
+ "aggregate"
+ "at"
+ "case"
+ "configuration"
+ "end"
+ "extends"
+ "external"
+ "external_as_list"
+ "for"
+ "is"
+ "library"
+ "limited"
+ "null"
+ "others"
+ "package"
+ ;; "project" may also be a non-keyword attribute prefix; see
test/gpr/gds.gpr
+ "renames"
+ "standard"
+ "type"
+ "use"
+ "when"
+ "with"
+ )
+ "List of gpr mode keywords for font-lock and auto-casing.")
+
+(defvar gpr-font-lock-keywords
+ ;; Grammar actions set `font-lock-face' property for all
+ ;; non-keyword tokens that need it.
+ (list
+ (list (concat "\\<" (regexp-opt gpr-keywords t) "\\>") '(0
font-lock-keyword-face)))
+ "Expressions to highlight in gpr mode.")
+
+(defun gpr-ff-special-with ()
+ (let ((project-path (match-string 1)))
+ ;; project-path may be any of "foo", "foo.gpr", "../foo.gpr"
+ ;;
+ ;; The result of ff-special-constructs is used by
+ ;; ff-find-the-other-file with ff-search-directories and nil
+ ;; suffix list, so it must contain the relative path and the
+ ;; suffix
+ (if (file-name-extension project-path)
+ project-path
+ (concat project-path ".gpr"))
+ ))
+
+(defun gpr-set-ff-special-constructs ()
+ "Add gpr-specific pairs to `ff-special-constructs'."
+ (set (make-local-variable 'ff-special-constructs) nil)
+ (mapc (lambda (pair) (add-to-list 'ff-special-constructs pair))
+ ;; Each car is a regexp; if it matches at point, the cdr is
+ ;; invoked. Each cdr should return the absolute file name to
+ ;; go to.
+ (list
+ ;; A "with" clause; allow "foo_bar.gpr" and "../foo"
+ (cons "^with[ \t]+\"\\(\\(?:\\(?:\\sw\\|\\s.\\)\\|\\s_\\)+\\)\";"
+ 'gpr-ff-special-with)
+ )))
+
+(defun gpr-which-function ()
+ "Return the name of the package or project point is in or just after, or
nil."
+ (wisi-validate-cache (point-min) (point) nil 'navigate)
+ ;; No message on parse fail, since this could be called from
which-function-mode
+ (when (wisi-cache-covers-pos 'navigate (point))
+ (let ((cache (wisi-backward-cache))
+ done
+ project-pos
+ package-pos
+ decl-pos)
+ (while (and cache (not done))
+ ;; find attribute_declaration and package containing point (if any)
+ (cond
+ ((not (eq (wisi-cache-class cache) 'statement-start))
+ nil)
+
+ ((eq (wisi-cache-nonterm cache) 'attribute_declaration)
+ (setq decl-pos (point)))
+
+ ((eq (wisi-cache-nonterm cache) 'package_spec)
+ (setq package-pos (point))
+ (setq done t))
+
+ ((eq (wisi-cache-nonterm cache) 'simple_project_declaration)
+ (setq project-pos (point))
+ (setq done t))
+ )
+
+ (setq cache (wisi-goto-containing cache)))
+
+ (cond
+ (package-pos
+ (goto-char package-pos)
+ (setq done t))
+
+ (decl-pos
+ (goto-char decl-pos)
+ (setq done t))
+
+ (project-pos
+ (goto-char project-pos)
+ (setq done t))
+
+ (t ;; before project
+ (setq done nil))
+ )
+
+ (when done
+ (wisi-next-name))
+
+ )))
+
+(defun gpr-add-log-current-function ()
+ "For `add-log-current-defun-function'. Returns enclosing package or project
name."
+ ;; add-log-current-defun is typically called with point at the start
+ ;; of an ediff change section, which is before the start of the
+ ;; declaration of a new item. So go to the end of the current line
+ ;; first
+ (save-excursion
+ (end-of-line 1)
+ (gpr-which-function)))
+
+(defvar gpr-mode-syntax-table
+ (let ((table (make-syntax-table)))
+ ;; (info "(elisp)Syntax Class Table" "*info syntax class table*")
+ ;; make-syntax-table sets all alphanumeric to w, etc; so we only
+ ;; have to add gpr-specific things.
+
+ ;; string brackets. `%' is the obsolete alternative string
+ ;; bracket (arm J.2); if we make it syntax class ", it throws
+ ;; font-lock and indentation off the track, so we use syntax class
+ ;; $.
+ (modify-syntax-entry ?% "$" table)
+ (modify-syntax-entry ?\" "\"" table)
+
+ ;; punctuation; operators etc
+ (modify-syntax-entry ?- ". 124" table); operator, double hyphen as comment
+ (modify-syntax-entry ?& "." table)
+ (modify-syntax-entry ?. "." table)
+ (modify-syntax-entry ?: "." table)
+ (modify-syntax-entry ?= "." table)
+ (modify-syntax-entry ?> "." table)
+ (modify-syntax-entry ?\; "." table)
+ (modify-syntax-entry ?\\ "." table); default is escape; not correct for
gpr strings
+ (modify-syntax-entry ?\| "." table)
+
+ ;; and \f and \n end a comment
+ (modify-syntax-entry ?\f ">" table)
+ (modify-syntax-entry ?\n ">" table)
+
+ (modify-syntax-entry ?_ "_" table); symbol constituents, not word.
+
+ (modify-syntax-entry ?\( "()" table)
+ (modify-syntax-entry ?\) ")(" table)
+
+ ;; skeleton placeholder delimiters; see gpr-skel.el. We use generic
+ ;; comment delimiter class, not comment starter/comment ender, so
+ ;; these can be distinguished from line end.
+ (modify-syntax-entry ?{ "!" table)
+ (modify-syntax-entry ?} "!" table)
+
+ table
+ )
+ "Syntax table to be used for editing gpr source code.")
+
+;;;; wisi integration
+
+(defcustom gpr-auto-case t
+ "When non-nil, automatically change case of preceding word while
+typing. Casing of gpr keywords is done according to `gpr-case-keyword',
+identifiers according to `gpr-case-identifier'."
+ :group 'gpr
+ :type '(choice (const nil)
+ (const t))
+ :safe (lambda (val) (memq val '(nil t))))
+(make-variable-buffer-local 'gpr-auto-case)
+
+(defcustom gpr-case-keyword 'lower-case
+ "Indicate how to adjust case for language keywords.
+Value is one of lower-case, upper-case."
+ :group 'gpr
+ :type '(choice (const lower-case)
+ (const upper-case))
+ :safe #'symbolp)
+(make-variable-buffer-local 'gpr-case-keyword)
+
+(defcustom gpr-case-strict t
+ "If non-nil, force Mixed_Case for identifiers.
+Otherwise, allow UPPERCASE for identifiers."
+ :group 'gpr
+ :type 'boolean
+ :safe #'booleanp)
+(make-variable-buffer-local 'gpr-case-strict)
+
+(defcustom gpr-case-identifier 'mixed-case
+ "Indicates how to adjust the case of gpr keywords."
+ :group 'gpr
+ :type '(choice (const mixed-case)
+ (const lower-case)
+ (const upper-case))
+ ;; see comment on :safe at gpr-case-keyword
+ :safe (lambda (val) (memq val '(mixed-case lower-case upper-case))))
+(make-variable-buffer-local 'gpr-case-identifier)
+
+(defun gpr-case-adjust-p (_typed-char)
+ "For `wisi-case-adjust-p-function'."
+ ;; casing of 'project' in "Project'Project_Dir" vs "project GDS is"
+ (save-excursion
+ (let ((end (1+ (point)))
+ (start (progn (skip-syntax-backward "w")(point))))
+ (cond
+ ((string= "project" (downcase (buffer-substring-no-properties start
end)))
+ (cond
+ ((null (char-after end)) ;; at eob
+ nil)
+ ((= (char-after end) ?') ;; attribute Project'
+ t)
+ ((= (char-after end) ? ) ;; keyword project GDS
+ (wisi-case-keyword start end)
+ nil)
+ ))
+
+ (t t) ;; not "project"
+ ))))
+
+(cl-defstruct (gpr-wisi-parser (:include wisi-process--parser))
+ ;; no new slots
+ )
+
+(cl-defstruct (gpr-prj (:include wisi-prj))
+ ;; no new slots
+ )
+
+(defun gpr-prj-default (&optional name)
+ (make-gpr-prj :name (or name "_default_") :compiler (make-gnat-compiler)))
+
+(cl-defmethod wisi-prj-default ((prj gpr-prj))
+ (gpr-prj-default (wisi-prj-name prj)))
+
+(cl-defmethod wisi-parse-format-language-options ((_parser gpr-wisi-parser))
+ (format "%d %d %d"
+ gpr-indent
+ gpr-indent-broken
+ gpr-indent-when
+ ))
+
+(defconst gpr-wisi-language-protocol-version "1"
+ "Defines language-specific parser parameters.
+Must match wisi-gpr.ads Language_Protocol_Version.")
+
+(defcustom gpr-process-parse-exec "gpr_mode_wisi_parse"
+ "Name of executable to use for external process gpr parser,"
+ :type 'string
+ :group 'gpr)
+
+(defun gpr-set-as-project ()
+ "Set current buffer (a gpr file) as current project file."
+ (interactive)
+ (wisi-prj-dtrt-parse-file (buffer-file-name) (gpr-prj-default
(buffer-file-name)) (buffer-file-name)))
+
+;;;;
+;;;###autoload
+(defun gpr-mode ()
+ "The major mode for editing GNAT project files."
+
+ (interactive)
+ (kill-all-local-variables)
+ (setq major-mode 'gpr-mode)
+ (setq mode-name "GNAT Project")
+ (use-local-map gpr-mode-map)
+ (set-syntax-table gpr-mode-syntax-table)
+ (set 'case-fold-search t); gpr is case insensitive; the syntax parsing
requires this setting
+ (set (make-local-variable 'comment-start) "--")
+ (set (make-local-variable 'comment-end) "")
+ (set (make-local-variable 'comment-start-skip) "---*[ \t]*")
+ (set (make-local-variable 'comment-multi-line) nil)
+
+ (set (make-local-variable 'require-final-newline) t)
+
+ (set (make-local-variable 'font-lock-defaults)
+ '(gpr-font-lock-keywords
+ nil t
+ ((?\_ . "w"))))
+
+ (gpr-set-ff-special-constructs)
+ (setq ff-search-directories 'compilation-search-path);; includes project
search path
+
+ (set (make-local-variable 'add-log-current-defun-function)
+ 'gpr-add-log-current-function)
+
+ (wisi-setup
+ :indent-calculate nil
+ :post-indent-fail nil
+ :parser
+ (wisi-process-parse-get
+ (make-gpr-wisi-parser
+ :label "gpr"
+ :language-protocol-version gpr-wisi-language-protocol-version
+ :exec-file gpr-process-parse-exec
+ :face-table gpr-process-face-table
+ :token-table gpr-process-token-table
+ :repair-image gpr-process-repair-image
+ )))
+
+ (run-mode-hooks 'gpr-mode-hook)
+
+ (setq wisi-auto-case gpr-auto-case)
+ (setq wisi-case-identifier gpr-case-identifier)
+ (setq wisi-case-strict gpr-case-strict)
+ (setq wisi-language-keywords gpr-keywords)
+ (setq wisi-case-keyword gpr-case-keyword)
+ (setq wisi-case-adjust-p-function #'gpr-case-adjust-p)
+ )
+
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.gpr\\'" . gpr-mode)) ; GNAT project files
+
+(put 'gpr-mode 'custom-mode-group 'gpr)
+
+(defvar gpr-parser 'process
+ "Indicate parser and lexer to use for gpr buffers:
+
+process : wisi elisp lexer, external process parser specified
+ by ‘gpr-process-parse-exec ’.
+")
+
+(provide 'gpr-mode)
+;;; gpr-mode.el ends here
diff --git a/gpr-mode.texi b/gpr-mode.texi
new file mode 100644
index 0000000000..da6b27f1c8
--- /dev/null
+++ b/gpr-mode.texi
@@ -0,0 +1,256 @@
+\input texinfo @c -*-texinfo-*-
+@settitle gpr Mode
+
+@copying
+Copyright @copyright{} 2013, 2019 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
+and with the Back-Cover Texts as in (a) below. A copy of the license
+is included in the section entitled ``GNU Free Documentation License''.
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this GNU manual. Buying copies from the FSF supports it in
+developing GNU and promoting software freedom.''
+@end quotation
+@end copying
+
+@dircategory Emacs
+@direntry
+* gpr mode: (gpr-mode). Emacs mode for editing and navigating gpr
files (gnat project files).
+@end direntry
+
+@titlepage
+@sp 10
+@title gpr Mode
+@sp 2
+@subtitle An Emacs major mode for editing and navigating gpr files
+@sp 2
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top, Overview, (dir), (dir)
+@end ifnottex
+
+@menu
+* Overview::
+* Installation::
+* Customization::
+* Moving Through Gpr Code::
+* Identifier completion::
+* Indentation::
+* Statement skeletons::
+* GNU Free Documentation License::
+* Index::
+@end menu
+
+@node Overview, Installation, Top, Top
+@chapter Overview
+gpr files are the project files used by the GNAT compiler and
+associated tools. They describe search paths, compiler options, etc.
+
+@xref{GNAT Project Manager,,GNAT Project Manager,gnat_ugn,GNAT Pro
+User's Guide}, for general information on gpr files.
+
+The Emacs mode for gpr files helps the user in reading
+existing code and facilitates writing new code.
+
+When you open a file with a file extension of @file{.gpr}, Emacs will
+automatically load and activate gpr mode.
+
+@node Installation, Customization, Overview, Top
+@chapter Installation
+
+gpr mode is distributed in the Gnu ELPA package archive, bundled with
+Ada mode; it can be installed via @code{M-x list-packages}
+(@pxref{Packages,,,emacs,Emacs User Guide}).
+
+gpr mode does not have a separate version; it uses the Ada mode
+version number. To see what version of Ada mode you have installed, do
+@kbd{M-x ada-mode-version}.
+
+@node Customization, Moving Through Gpr Code, Installation, Top
+@chapter Customization
+
+Indentation variables for gpr mode can be set via the menu @samp{gpr |
+Customize} from a gpr mode buffer. Click on the @samp{Help} button
+there for help on using customize. @xref{Indentation}.
+
+To modify a specific variable, you can directly call the function
+@code{customize-variable}; just type @kbd{M-x customize-variable
+@key{RET} @var{variable-name} @key{RET}}).
+
+Alternately, you can specify variable settings in the Emacs
+configuration file, @file{~/.emacs}. This file is coded in Emacs lisp,
+and the syntax to set a variable is the following:
+@example
+(setq variable-name value)
+@end example
+
+Some general Emacs settings that are useful for gpr files:
+@table @code
+@item delete-trailing-whitespace
+Deletes space, tab at end of line and blank lines at end of buffer.
+@item untabify
+Deletes tab characters that have crept into the file.
+@item indent-tabs-mode
+Don't insert tab characters when indenting.
+@item hippie-expand
+Bind @code{hippie-expand} to a key; it expands the word before point,
+using words from current buffer, other buffers, file names, etc; see
+@code{hippie-expand-try-functions-list}. You can also add
+@code{wisi-skel-hippie-try} to that list (@pxref{Statement skeletons}).
+@end table
+
+The above can all be set by the following code in your
+@file{~/.emacs}. Note that some are functions are added to
+@code{before-save-hook}; they run just before a buffer is written to disk.
+@example
+(setq-default indent-tabs-mode nil)
+(require 'gpr-mode)
+(add-to-list 'hippie-expand-try-functions-list 'wisi-skel-hippie-try)
+(define-key gpr-mode-map "\C-e" 'hippie-expand)
+(add-hook 'gpr-mode-hook
+ (lambda ()
+ (add-hook 'before-save-hook 'delete-trailing-whitespace nil t)
+ (add-hook 'before-save-hook
+ (lambda () (untabify (point-min) (point-max)))
+ nil t)))
+@end example
+
+@node Moving Through Gpr Code, Identifier completion, Customization, Top
+@chapter Moving Through Gpr Code
+
+These commands navigate through gpr code. All these functions are
+available through the gpr menu and keybindings.
+
+@table @kbd
+@item C-c C-o
+@findex ff-find-other-file
+If point is on a @code{with} clause, position point on the
+corresponding package declaration.
+
+@item C-u SPACE
+Jump back to the previous location.
+
+@item C-M-f
+Move to the end of the current declaration.
+
+@item C-M-b
+Move to the start of the current declaration.
+
+@end table
+
+@node Identifier completion, Indentation, Moving Through Gpr Code, Top
+@chapter Identifier completion
+
+Emacs provides a general way of completing identifiers: @kbd{M-/}
+(bound to @code{dabbrev-expand}). This is an easy way to type faster:
+you just have to type the first few letters of an identifier, and then
+loop through all the possible completions.
+
+If you have bound @code{hippie-expand}, that also uses
+@code{dabbrev-expand}.
+
+@kbd{M-/} works by parsing all open gpr files for possible
+completions.
+
+For instance, if the words @samp{my_identifier} and @samp{my_subprogram}
+are the only words starting with @samp{my} in any of the open gpr files,
+then you will have this scenario:
+
+@example
+You type: my@kbd{M-/}
+Emacs inserts: @samp{my_identifier}
+If you press @kbd{M-/} once again, Emacs replaces @samp{my_identifier} with
+@samp{my_subprogram}.
+Pressing @kbd{M-/} once more will bring you back to @samp{my_identifier}.
+@end example
+
+This is a very fast way to do completion, and the casing of words will
+also be respected.
+
+@node Indentation, Statement skeletons, Identifier completion, Top
+@chapter Indentation
+
+gpr mode comes with a full set of rules for automatic indentation. You
+can also configure the indentation, via the following variables:
+
+@table @asis
+@item @code{gpr-indent} (default value: 3)
+Number of columns for default indentation.
+
+@item @code{gpr-indent-broken} (default value: 2)
+Number of columns to indent the continuation of a broken line.
+
+@item @code{gpr-indent-when} (default value: 3)
+Indentation for @code{when} relative to @code{case}.
+
+@end table
+
+The following keys indent portions of the text:
+@table @kbd
+
+@item RET
+Insert and indent a new line.
+
+@item TAB
+Indent the current line, or the current region.
+
+@item C-c TAB
+Indent the current declaration.
+
+@end table
+
+The indentation algorithm relies on an error-correcting grammar parser
+to identify the syntactic role for keywords and other words in the
+code.
+
+@node Statement skeletons, GNU Free Documentation License, Indentation, Top
+@chapter Statement skeletons
+
+@kbd{C-c C-e} expands the previous one or two words into a statment
+skeleton. For example, @kbd{c a s e C-c C-e} expands to:
+
+@example
+case is
+when =>
+end case;
+@end example
+
+For named packages, the name is taken from
+the word before point, and the package keyword from the word
+before that:
+
+@example
+package A_Package
+@end example
+
+expands to:
+
+@example
+package A_Package is
+end A_Package;
+@end example
+
+Some expansions prompt for more information, such as
+a choice of license.
+
+@node GNU Free Documentation License, Index, Statement skeletons, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Index, , GNU Free Documentation License, Top
+@unnumbered Index
+
+@printindex fn
+
+@bye
diff --git a/gpr-process.el b/gpr-process.el
new file mode 100644
index 0000000000..59e611b917
--- /dev/null
+++ b/gpr-process.el
@@ -0,0 +1,148 @@
+;;; gpr-process.el --- Generated parser support file -*- buffer-read-only:t
lexical-binding:t -*-
+;; command line: wisitoken-bnf-generate.exe --generate LR1 Ada_Emacs re2c
PROCESS gpr.wy
+
+;; Copyright (C) 2013 - 2022 Free Software Foundation, Inc.
+
+;; This program 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, or (at
+;; your option) any later version.
+;;
+;; This software 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/>.
+
+(require 'wisi-process-parse)
+
+(defconst gpr-process-token-table
+ [WHITESPACE
+ NEW_LINE
+ COMMENT
+ GNAT_PREP
+ PLACEHOLDER
+ ABSTRACT
+ AT
+ AGGREGATE
+ CASE
+ CONFIGURATION
+ END
+ EXTENDS
+ EXTERNAL
+ EXTERNAL_AS_LIST
+ FOR
+ IS
+ LEFT_PAREN
+ LIBRARY
+ NULL
+ OTHERS
+ PACKAGE
+ PROJECT
+ RENAMES
+ RIGHT_PAREN
+ STANDARD
+ TYPE
+ USE
+ WHEN
+ WITH
+ AMPERSAND
+ COLON
+ COLON_EQUALS
+ COMMA
+ DOT
+ EQUAL_GREATER
+ QUOTE
+ SEMICOLON
+ VERTICAL_BAR
+ NUMERIC_LITERAL
+ IDENTIFIER
+ STRING_LITERAL
+ Wisi_EOI
+ wisitoken_accept
+ aggregate_g
+ attribute_declaration
+ attribute_prefix
+ attribute_reference
+ case_statement
+ case_item
+ case_items
+ compilation_unit
+ context_clause
+ context_clause_opt
+ declarative_item
+ declarative_items
+ declarative_items_opt
+ discrete_choice
+ discrete_choice_list
+ expression
+ external_value
+ identifier_opt
+ name
+ package_declaration
+ package_spec
+ package_extension
+ package_renaming
+ project_declaration_opt
+ project_extension
+ project_qualifier_opt
+ simple_declarative_item
+ simple_project_declaration
+ string_primary
+ string_list
+ term
+ typed_string_declaration
+ with_clause
+ Wisi_SOI
+ ])
+
+(defconst gpr-process-face-table
+ [
+ font-lock-function-name-face
+ font-lock-keyword-face
+ nil
+ ])
+
+(defconst gpr-process-repair-image
+ '(
+ (ABSTRACT . "abstract")
+ (AT . "at")
+ (AGGREGATE . "aggregate")
+ (CASE . "case")
+ (CONFIGURATION . "configuration")
+ (END . "end")
+ (EXTENDS . "extends")
+ (EXTERNAL . "external")
+ (EXTERNAL_AS_LIST . "external_as_list")
+ (FOR . "for")
+ (IS . "is")
+ (LEFT_PAREN . "(")
+ (LIBRARY . "library")
+ (NULL . "null")
+ (OTHERS . "others")
+ (PACKAGE . "package")
+ (PROJECT . "project")
+ (RENAMES . "renames")
+ (RIGHT_PAREN . ")")
+ (STANDARD . "standard")
+ (TYPE . "type")
+ (USE . "use")
+ (WHEN . "when")
+ (WITH . "with")
+ (AMPERSAND . "&")
+ (COLON . ":")
+ (COLON_EQUALS . ":=")
+ (COMMA . ",")
+ (DOT . ".")
+ (EQUAL_GREATER . "=>")
+ (QUOTE . "'")
+ (SEMICOLON . ";")
+ (VERTICAL_BAR . "|")
+ (NUMERIC_LITERAL . "1234567890")
+ (IDENTIFIER . "A_Bogus_Identifier")
+ (STRING_LITERAL . "\"\"")
+ ))
+
+(provide 'gpr-process)
diff --git a/gpr-skel.el b/gpr-skel.el
new file mode 100644
index 0000000000..9a53364fcf
--- /dev/null
+++ b/gpr-skel.el
@@ -0,0 +1,137 @@
+;; gpr-skel.el --- Extension to gpr-mode for inserting statement skeletons
-*- lexical-binding:t -*-
+
+;; Copyright (C) 2013-2015, 2018 - 2021 Free Software Foundation, Inc.
+
+;; Authors: Stephen Leake <stephen_leake@stephe-leake.org>
+
+;; 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/>.
+
+;;; Design:
+;;
+;; The primary user command is `wisi-skel-expand', which inserts the
+;; skeleton associated with the previous word (possibly skipping a
+;; name).
+;;
+;; We don't define skeletons that prompt for most of the content; it
+;; is easier just to type in the buffer.
+;;
+;; These skeletons are not intended to teach a novice the language,
+;; just to make it easier to write code that the gpr-wisi parser
+;; likes, and handle repeated names nicely.
+
+;;; History:
+
+;; Created Dec 2013
+
+(require 'skeleton)
+(require 'wisi-skel)
+
+;;;;; user variables, example skeletons intended to be overwritten
+
+(defgroup gpr nil
+ "Major mode for editing GNAT project files in Emacs."
+ :group 'languages)
+
+(defcustom gpr-skel-initial-string "{header}\n{project}"
+ "String to insert in empty buffer.
+This could end in a token recognized by `gpr-skel-expand'."
+ :type 'string
+ :safe #'stringp)
+
+(define-skeleton gpr-skel-user-restricted
+ "Example copyright/license skeleton, with automatic year and owner."
+ ()
+ "-- Copyright (C) " (format-time-string "%Y ") user-full-name " All Rights
Reserved.\n"
+)
+
+(define-skeleton gpr-skel-gpl
+ "Example copyright/license skeleton, with automatic year and owner, GPLv3."
+ ()
+ "-- Copyright (C) " (format-time-string "%Y ") user-full-name " All Rights
Reserved.\n"
+ "--\n"
+ "-- This program is free software; you can redistribute it and/or\n"
+ "-- modify it under terms of the GNU General Public License as\n"
+ "-- published by the Free Software Foundation; either version 3, or (at\n"
+ "-- your option) any later version. This program is distributed in the\n"
+ "-- hope that it will be useful, but WITHOUT ANY WARRANTY; without even\n"
+ "-- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n"
+ "-- PURPOSE. See the GNU General Public License for more details. You\n"
+ "-- should have received a copy of the GNU General Public License\n"
+ "-- distributed with this program; see file COPYING. If not, write to\n"
+ "-- the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,\n"
+ "-- MA 02110-1335, USA.\n"
+)
+
+;;;;; Gpr skeletons (alphabetical)
+
+(define-skeleton gpr-skel-case
+ "Insert case statement."
+ ()
+ "case " str " is\n"
+ "when " _ "=>\n"
+ "end case;")
+
+(define-skeleton gpr-skel-header
+ "Insert a file header comment, prompt for copyright owner/license.
+Each user will probably want to override this."
+ ()
+ "-- Abstract :\n"
+ "--\n"
+ "-- " _ "\n"
+ "--\n"
+ "{copyright_license}\n"
+ )
+
+(define-skeleton gpr-skel-package
+ "Insert a package with name from `str'."
+ "Package name: "
+ "package " str " is\n"
+ _
+ "end " str ";")
+
+(define-skeleton gpr-skel-project
+ "Insert a project with name from `str'."
+ "Project name: "
+ "project " str " is\n"
+ _
+ "end " str ";")
+
+;;;;; token alist, setup
+
+(defconst gpr-skel-token-alist
+ '(("case" . gpr-skel-case)
+ ("copyright_license"
+ ("GPL" . gpr-skel-gpl)
+ ("restricted" . gpr-skel-user-restricted))
+ ("header" . gpr-skel-header)
+ ("package" . gpr-skel-package)
+ ("project" . gpr-skel-project))
+"For `wisi-skel-token-alist', used by `wisi-skel-expand'.")
+
+(defun gpr-skel-setup ()
+ "Setup a buffer for gpr-skel."
+ (setq wisi-skel-token-alist gpr-skel-token-alist)
+ (add-hook 'skeleton-end-hook #'wisi-skel-enable-parse t)
+ (add-hook 'skeleton-end-hook #'wisi-indent-statement t)
+ (when (and gpr-skel-initial-string
+ (= (buffer-size) 0))
+ (insert gpr-skel-initial-string))
+ )
+
+(add-hook 'gpr-mode-hook #'gpr-skel-setup)
+
+(provide 'gpr-skel)
+;;; end of file
diff --git a/gpr.wy b/gpr.wy
new file mode 100644
index 0000000000..40733ff723
--- /dev/null
+++ b/gpr.wy
@@ -0,0 +1,379 @@
+;;; WisiToken grammar for GNAT project files
+;;
+;; Author: Stephen Leake <stephe-leake@stephe-leake.org>
+;; Maintainer: Stephen Leake <stephe-leake@stephe-leake.org>
+;; Created: Jan 2013
+;; Keywords: syntax
+
+%code copyright_license %{
+-- Copyright (C) 2013 - 2022 Free Software Foundation, Inc.
+
+-- This program 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, or (at
+-- your option) any later version.
+--
+-- This software 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 is a wisi grammar file for the gpr language. It is derived
+;; from the gprbuild user guide, with the following substitutions:
+;;
+;; simple_name -> IDENTIFIER
+;;
+;; and some simplifications. Repeating constructs are implemented with
+;; extra productions. Optional constructs are implemented by repeated
+;; productions
+
+;; GNAT GPL 2017 (info "(gprbuild_ug) Configuration File Reference")
+
+%token <punctuation> AMPERSAND "&"
+%token <punctuation> COLON ":"
+%token <punctuation> COLON_EQUALS ":="
+%token <punctuation> COMMA ","
+%token <punctuation> DOT "."
+%token <punctuation> EQUAL_GREATER "=>"
+%token <punctuation> QUOTE "'"
+%token <punctuation> SEMICOLON ";"
+%token <punctuation> VERTICAL_BAR "|"
+
+%case_insensitive
+
+%keyword ABSTRACT "abstract"
+%keyword AT "at"
+%keyword AGGREGATE "aggregate"
+%keyword CASE "case"
+%keyword CONFIGURATION "configuration"
+%keyword END "end"
+%keyword EXTENDS "extends"
+%keyword EXTERNAL "external"
+%keyword EXTERNAL_AS_LIST "external_as_list"
+%keyword FOR "for"
+%keyword IS "is"
+%keyword LEFT_PAREN "("
+%keyword LIBRARY "library"
+%keyword NULL "null"
+%keyword OTHERS "others"
+%keyword PACKAGE "package"
+%keyword PROJECT "project"
+%keyword RENAMES "renames"
+%keyword RIGHT_PAREN ")"
+%keyword STANDARD "standard"
+%keyword TYPE "type"
+%keyword USE "use"
+%keyword WHEN "when"
+%keyword WITH "with"
+
+%non_grammar <non-reporting> WHITESPACE %[ [ \t] ]%
+
+;; handle DOS or Unix newline
+%non_grammar <new-line> NEW_LINE %[ [\x0a]|[\x0d][\x0a] ]%
+
+%non_grammar <comment-new-line> COMMENT "--"
+
+;; gnatprep preprocessor lines
+%non_grammar <comment-new-line> GNAT_PREP %[ ("#if"|"#elsif"|"#else"|"#end") ]%
+
+;; skeleton placeholders.
+%non_grammar <comment-one-line> PLACEHOLDER "{" "}"
+
+%token <number> NUMERIC_LITERAL
+ %[ [0-9]+ ]%
+ "1234567890"
+
+%token <symbol> IDENTIFIER
+ %[ [a-zA-Z\x80-\U0010FFFF][0-9a-zA-Z_\x80-\U0010FFFF]* ]%
+ "A_Bogus_Identifier"
+
+%token <string-double-one-line> STRING_LITERAL
+ %[ (["][\x20-\x21\x23-\U0010FFFF]*["])+ ]%
+ '""'
+
+%start compilation_unit
+
+%generate LR1 Ada_Emacs re2c Process
+;; LR1 gives better error correction performance.
+
+%elisp_face font-lock-function-name-face
+%elisp_face font-lock-keyword-face
+%elisp_face nil
+
+%mckenzie_cost_default 4 4 2 2
+%mckenzie_enqueue_limit 10_000
+%mckenzie_check_limit 3
+%mckenzie_check_delta_limit 200
+
+%end_names_optional_option End_Names_Optional
+
+%conflict SHIFT term | REDUCE identifier_opt on token RIGHT_PAREN
+%conflict SHIFT case_item | REDUCE case_items on token WHEN
+
+;; grammar rules, non-terminal alphabetical order
+
+aggregate_g
+ : LEFT_PAREN string_list RIGHT_PAREN
+ %((wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 0)]))%
+ ;
+
+attribute_declaration
+ : FOR IDENTIFIER USE expression SEMICOLON
+ %((progn
+ (wisi-statement-action [1 statement-start 5 statement-end])
+ (wisi-name-action 2)
+ (wisi-face-apply-action [2 nil font-lock-function-name-face])
+ (wisi-indent-action [nil gpr-indent-broken nil gpr-indent-broken
nil])))%
+ | FOR IDENTIFIER LEFT_PAREN discrete_choice RIGHT_PAREN USE expression
SEMICOLON
+ %((progn
+ (wisi-statement-action [1 statement-start 8 statement-end])
+ (wisi-name-action 2)
+ (wisi-face-apply-action [2 nil font-lock-function-name-face])
+ (wisi-indent-action [nil gpr-indent-broken (- gpr-indent-broken 1)
gpr-indent-broken (- gpr-indent-broken 1) nil
+ gpr-indent-broken nil])))%
+ | FOR IDENTIFIER LEFT_PAREN discrete_choice RIGHT_PAREN USE expression AT
NUMERIC_LITERAL SEMICOLON
+ %((progn
+ (wisi-statement-action [1 statement-start 10 statement-end])
+ (wisi-name-action 2)
+ (wisi-face-apply-action [2 nil font-lock-function-name-face])
+ (wisi-indent-action [nil gpr-indent-broken (- gpr-indent-broken 1)
gpr-indent-broken (- gpr-indent-broken 1) nil
+ gpr-indent-broken nil nil nil])))%
+ | FOR EXTERNAL LEFT_PAREN STRING_LITERAL RIGHT_PAREN USE expression SEMICOLON
+ %((progn
+ (wisi-statement-action [1 statement-start 8 statement-end])
+ (wisi-indent-action [nil gpr-indent-broken (- gpr-indent-broken 1)
gpr-indent-broken (- gpr-indent-broken 1) nil
+ gpr-indent-broken nil])))%
+ ;
+
+;; (info "(gprbuild_ug)Attributes")
+attribute_prefix
+ : PROJECT
+ ;; not a keyword; no face
+ | name
+ ;
+
+attribute_reference
+ : attribute_prefix QUOTE IDENTIFIER
+ | attribute_prefix QUOTE IDENTIFIER LEFT_PAREN STRING_LITERAL RIGHT_PAREN
+ ;
+
+;; (info "(gprbuild_ug)Case Statements")
+case_statement
+ : CASE name IS case_items END CASE SEMICOLON
+ %((progn
+ (wisi-statement-action [1 statement-start 7 statement-end])
+ (wisi-indent-action [nil gpr-indent-broken nil [(wisi-block
gpr-indent-when) gpr-indent-when] nil nil nil])))%
+ ;
+
+;; declarations allowed in a case statement are a subset of
+;; declarative_items, but this simplifies the grammar.
+case_item
+ : WHEN discrete_choice_list EQUAL_GREATER declarative_items_opt
+ %((progn
+ (wisi-statement-action [1 motion])
+ (wisi-indent-action [nil gpr-indent-broken gpr-indent (wisi-block
gpr-indent)])))%
+ ;
+
+case_items
+ : ;; empty
+ | case_item
+ | case_items case_item
+ ;
+
+;; Compute indent for trailing comments.
+compilation_unit
+ : context_clause_opt project_qualifier_opt project_declaration_opt
+ %((wisi-indent-action [0 0 [0 0]]))%
+ ;
+
+context_clause
+ : with_clause
+ | context_clause with_clause
+ ;
+
+context_clause_opt
+ : ;; empty
+ | context_clause
+ ;
+
+;; (info "(gprbuild_ug)Declarations")
+declarative_item
+ : simple_declarative_item
+ | typed_string_declaration
+ | package_declaration
+ ;
+
+declarative_items
+ : declarative_item
+ | declarative_items declarative_item
+ ;
+
+declarative_items_opt
+ : ;; empty
+ | declarative_items
+ ;
+
+discrete_choice
+ : ;; empty
+ | STRING_LITERAL
+ | OTHERS
+ ;
+
+discrete_choice_list
+ : discrete_choice
+ | discrete_choice_list VERTICAL_BAR discrete_choice
+ ;
+
+;; (info "(gprbuild_ug)Expressions")
+expression
+ : term
+ | expression AMPERSAND term
+ ;
+
+external_value
+ : EXTERNAL aggregate_g
+ | EXTERNAL_AS_LIST aggregate_g
+ ;
+
+identifier_opt
+ : ;; empty
+ | IDENTIFIER
+ %()%
+ %((wisi-propagate-name 1))%
+ ;
+
+name
+ : identifier_opt
+ | name DOT IDENTIFIER
+ ;
+
+;; (info "(gprbuild_ug)Packages")
+package_declaration
+ : package_spec
+ | package_extension
+ | package_renaming
+ ;
+
+package_spec
+ : PACKAGE identifier_opt IS declarative_items_opt END identifier_opt
SEMICOLON
+ %((progn
+ (wisi-statement-action [1 statement-start 7 statement-end])
+ (wisi-name-action 2)
+ (wisi-face-apply-action [2 nil font-lock-function-name-face 6 nil
font-lock-function-name-face])
+ (wisi-indent-action [nil gpr-indent-broken nil [(wisi-block
gpr-indent) gpr-indent] nil nil nil])))%
+ %((wisi-match-names 2 6))%
+ ;
+
+package_extension
+ : PACKAGE identifier_opt EXTENDS name IS declarative_items_opt END
identifier_opt SEMICOLON
+ %((progn
+ (wisi-statement-action [1 statement-start 9 statement-end])
+ (wisi-name-action 2)
+ (wisi-face-apply-action [2 nil font-lock-function-name-face 8 nil
font-lock-function-name-face])
+ (wisi-indent-action [nil gpr-indent-broken nil gpr-indent-broken nil
[(wisi-block gpr-indent) gpr-indent] nil nil nil])))%
+ %((wisi-match-names 2 8))%
+ ;
+
+package_renaming
+ : PACKAGE identifier_opt RENAMES name SEMICOLON
+ %((progn
+ (wisi-statement-action [1 statement-start 5 statement-end])
+ (wisi-face-apply-action [2 nil font-lock-function-name-face 4 nil
font-lock-function-name-face])))%
+ ;
+
+project_declaration_opt
+ : ;; empty
+ | simple_project_declaration
+ | project_extension
+ ;
+
+project_extension
+ : PROJECT identifier_opt EXTENDS STRING_LITERAL IS declarative_items_opt END
identifier_opt SEMICOLON
+ %((progn
+ (wisi-statement-action [1 statement-start 9 statement-end])
+ (wisi-name-action 2)
+ (wisi-face-apply-action [1 nil font-lock-keyword-face 2 nil
font-lock-function-name-face 8 nil font-lock-function-name-face])
+ (wisi-indent-action [nil gpr-indent-broken nil gpr-indent-broken nil
[(wisi-block gpr-indent) gpr-indent] nil nil nil])))%
+ %((wisi-match-names 2 8))%
+ ;
+
+;; (info "(gprbuild_ug)Qualified Projects")
+project_qualifier_opt
+ : ;; empty
+ | ABSTRACT
+ | STANDARD
+ | AGGREGATE
+ | AGGREGATE LIBRARY
+ | LIBRARY
+ | CONFIGURATION
+ ;
+
+;; (info "(gprbuild_ug)Declarations" "*info gpr*")
+simple_declarative_item
+ : IDENTIFIER COLON_EQUALS expression SEMICOLON ;; variable_declaration
+ %((progn
+ (wisi-statement-action [1 statement-start 4 statement-end])
+ (wisi-indent-action [nil gpr-indent-broken gpr-indent-broken nil])))%
+ | IDENTIFIER COLON IDENTIFIER COLON_EQUALS expression SEMICOLON ;;
typed_variable_declaration
+ %((progn
+ (wisi-statement-action [1 statement-start 6 statement-end])
+ (wisi-indent-action [nil gpr-indent-broken gpr-indent-broken
gpr-indent-broken gpr-indent-broken nil])))%
+ | attribute_declaration
+ | case_statement
+ | NULL SEMICOLON
+ %((wisi-statement-action [1 statement-start 2 statement-end]))%
+ ;
+
+simple_project_declaration
+ : PROJECT identifier_opt IS declarative_items_opt END identifier_opt
SEMICOLON
+ %((progn
+ (wisi-statement-action [1 statement-start 7 statement-end])
+ (wisi-name-action 2)
+ (wisi-face-apply-action [1 nil font-lock-keyword-face
+ 2 nil font-lock-function-name-face
+ 6 nil font-lock-function-name-face])
+ (wisi-indent-action [nil gpr-indent-broken nil [(wisi-block
gpr-indent) gpr-indent] nil nil nil])))%
+ %((wisi-match-names 2 6))%
+ ;
+
+;; (info "(gprbuild_ug)Expressions")
+string_primary
+ : STRING_LITERAL
+ | name;; variable_name
+ | external_value
+ | attribute_reference
+ ;
+
+;; (info "(gprbuild_ug)Expressions")
+;; we merge that string_list into term, and use 'string_list' for
'string_expression {, string_expression}'
+string_list
+ : expression
+ | string_list COMMA expression
+ ;
+
+;; see string_list for info reference
+;; string_variable_name covered by string_primary
+term
+ : string_primary
+ | LEFT_PAREN RIGHT_PAREN
+ | aggregate_g
+ ;
+
+typed_string_declaration
+ : TYPE IDENTIFIER IS aggregate_g SEMICOLON
+ %((progn
+ (wisi-statement-action [1 statement-start 5 statement-end])
+ (wisi-indent-action [nil gpr-indent-broken gpr-indent-broken
gpr-indent-broken nil])))%
+ ;
+
+with_clause
+ : WITH string_list SEMICOLON
+ ;
+
+;;; end of file
diff --git a/gpr_mode_wisi_parse.ads b/gpr_mode_wisi_parse.ads
new file mode 100644
index 0000000000..87ecb615c4
--- /dev/null
+++ b/gpr_mode_wisi_parse.ads
@@ -0,0 +1,31 @@
+-- Abstract :
+--
+-- External process parser for gpr mode
+--
+-- Copyright (C) 2017 - 2020, 2022 Free Software Foundation, Inc.
+--
+-- This program is free software; you can redistribute it and/or
+-- modify it under terms of the GNU General Public License as
+-- published by the Free Software Foundation; either version 3, or (at
+-- your option) any later version. This program 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
+-- distributed with this program; see file COPYING. If not, write to
+-- the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
+-- MA 02110-1335, USA.
+
+pragma License (GPL);
+
+with Gen_Emacs_Wisi_LR_Parse;
+with Gpr_Process_Main;
+with Wisi.Gpr;
+procedure Gpr_Mode_Wisi_Parse is new Gen_Emacs_Wisi_LR_Parse
+ (Parse_Data_Type => Wisi.Gpr.Parse_Data_Type,
+ Name => "gpr_mode_wisi_parse",
+ Language_Protocol_Version => Wisi.Gpr.Language_Protocol_Version,
+ Language_Fixes => null,
+ Language_Matching_Begin_Tokens => null,
+ Language_String_ID_Set => null,
+ Create_Parser => Gpr_Process_Main.Create_Parser);
diff --git a/gpr_mode_wisi_parse.gpr b/gpr_mode_wisi_parse.gpr
new file mode 100644
index 0000000000..eed7869d78
--- /dev/null
+++ b/gpr_mode_wisi_parse.gpr
@@ -0,0 +1,91 @@
+-- Abstract :
+--
+-- build executables
+--
+-- Copyright (C) 2022 Free Software Foundation, Inc.
+--
+-- This program is free software; you can redistribute it and/or
+-- modify it under terms of the GNU General Public License as
+-- published by the Free Software Foundation; either version 3, or (at
+-- your option) any later version. This program 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
+-- distributed with this program; see file COPYING. If not, write to
+-- the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
+-- MA 02110-1335, USA.
+
+with "standard_common";
+with "wisi";
+project gpr_Mode_Wisi_Parse is
+
+ for Main use
+ ("gpr_mode_wisi_parse.ads",
+ "run_gpr_parse.ads"
+ );
+
+ for Source_Dirs use (".");
+
+ for Object_Dir use "obj";
+ for Exec_Dir use ".";
+
+ for Languages use ("Ada", "C");
+
+ package Compiler is
+
+ case Standard_Common.Build is
+ when "Debug" =>
+ for Default_Switches ("Ada") use
+ Standard_Common.Compiler.Common_Switches &
+ Standard_Common.Compiler.Style_Checks &
+ Standard_Common.Compiler.Debug_Switches;
+
+ for Switches ("gpr_process_main.adb") use
+ Standard_Common.Compiler.Common_Switches &
+ Standard_Common.Compiler.Base_Style_Checks &
+ Standard_Common.Compiler.Base_Release_Switches & ("-O1",
"-gnat2020");
+
+ for Default_Switches ("C") use
Standard_Common.Compiler.Debug_Switches_C;
+
+ when "Normal" =>
+ for Default_Switches ("Ada") use
+ Standard_Common.Compiler.Common_Switches &
+ Standard_Common.Compiler.Style_Checks &
+ Standard_Common.Compiler.Release_Switches;
+
+ for Switches ("gpr_process.adb") use
+ Standard_Common.Compiler.Common_Switches &
+ Standard_Common.Compiler.Base_Style_Checks &
+ Standard_Common.Compiler.Base_Release_Switches & ("-O1",
"-gnat2020");
+
+ for Switches ("gpr_query.adb") use
+ -- WORKAROUND: GNAT Community 2021 with gnatcoll 21.2 and -gnat2020
reports a missing "overrides"
+ -- AdaCore ticket U618-051
+ Standard_Common.Compiler.Common_Switches &
+ "-gnaty3abcefhiklnprtx" & "-gnatyM120" & -- not overriding
+ Standard_Common.Compiler.Release_Switches;
+
+ for Default_Switches ("C") use
Standard_Common.Compiler.Release_Switches_C;
+ end case;
+
+ end Compiler;
+
+ package Builder is
+ -- Specifying some configuration pragmas can reduce parse times
+ -- by 10% or so, on some systems. But doing so only here causes
+ -- recompiling of wisitoken. If we add Global_ or Local_
+ -- Configuration_Pragmas in wisitoken.gpr, we get compilation
+ -- errors there. So we leave it up to users to patch this if
+ -- they want it.
+ -- for Global_Configuration_Pragmas use "config.pragmas";
+
+ for Global_Compilation_Switches ("Ada") use
Standard_Common.Builder'Global_Compilation_Switches ("Ada");
+
+ end Builder;
+
+ package Binder is
+ for default_switches ("Ada") use ("-E"); -- symbolic traceback
+ end Binder;
+
+end gpr_Mode_Wisi_Parse;
diff --git a/gpr_process_actions.adb b/gpr_process_actions.adb
new file mode 100644
index 0000000000..fb13f94ed1
--- /dev/null
+++ b/gpr_process_actions.adb
@@ -0,0 +1,418 @@
+-- generated parser support file. -*- buffer-read-only:t -*-
+-- command line: wisitoken-bnf-generate.exe --generate LR1 Ada_Emacs re2c
PROCESS gpr.wy
+--
+
+-- Copyright (C) 2013 - 2022 Free Software Foundation, Inc.
+
+-- This program 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, or (at
+-- your option) any later version.
+--
+-- This software 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/>.
+
+with Wisi; use Wisi;
+with Wisi.Gpr; use Wisi.Gpr;
+with WisiToken.In_Parse_Actions; use WisiToken.In_Parse_Actions;
+package body Gpr_Process_Actions is
+
+ use WisiToken.Syntax_Trees.In_Parse_Actions;
+
+ procedure aggregate_g_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ null;
+ when Face =>
+ null;
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Anchored_0,
+ 1, 1))), (False, (Simple, (Anchored_0, 1, 0)))));
+ end case;
+ end aggregate_g_0;
+
+ procedure attribute_declaration_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(5, Statement_End)));
+ Name_Action (Parse_Data, Tree, Nonterm, 2);
+ when Face =>
+ Face_Apply_Action (Parse_Data, Tree, Nonterm, (1 => (2, 2, 0)));
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Label => None))), (False,
(Simple, (Int, Gpr_Indent_Broken))), (False,
+ (Simple, (Label => None)))));
+ end case;
+ end attribute_declaration_0;
+
+ procedure attribute_declaration_1
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(8, Statement_End)));
+ Name_Action (Parse_Data, Tree, Nonterm, 2);
+ when Face =>
+ Face_Apply_Action (Parse_Data, Tree, Nonterm, (1 => (2, 2, 0)));
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Int, Gpr_Indent_Broken -
1))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Int, Gpr_Indent_Broken -
1))), (False, (Simple, (Label => None))),
+ (False, (Simple, (Int, Gpr_Indent_Broken))), (False, (Simple, (Label
=> None)))));
+ end case;
+ end attribute_declaration_1;
+
+ procedure attribute_declaration_2
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(10, Statement_End)));
+ Name_Action (Parse_Data, Tree, Nonterm, 2);
+ when Face =>
+ Face_Apply_Action (Parse_Data, Tree, Nonterm, (1 => (2, 2, 0)));
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Int, Gpr_Indent_Broken -
1))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Int, Gpr_Indent_Broken -
1))), (False, (Simple, (Label => None))),
+ (False, (Simple, (Int, Gpr_Indent_Broken))), (False, (Simple, (Label
=> None))), (False, (Simple, (Label =>
+ None))), (False, (Simple, (Label => None)))));
+ end case;
+ end attribute_declaration_2;
+
+ procedure attribute_declaration_3
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(8, Statement_End)));
+ when Face =>
+ null;
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Int, Gpr_Indent_Broken -
1))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Int, Gpr_Indent_Broken -
1))), (False, (Simple, (Label => None))),
+ (False, (Simple, (Int, Gpr_Indent_Broken))), (False, (Simple, (Label
=> None)))));
+ end case;
+ end attribute_declaration_3;
+
+ procedure case_statement_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(7, Statement_End)));
+ when Face =>
+ null;
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Label => None))), (True,
(Simple, (Block, Gpr_Indent_When)), (Simple,
+ (Int, Gpr_Indent_When))), (False, (Simple, (Label => None))), (False,
(Simple, (Label => None))), (False,
+ (Simple, (Label => None)))));
+ end case;
+ end case_statement_0;
+
+ procedure case_item_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, (1 => (1, Motion)));
+ when Face =>
+ null;
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Int, Gpr_Indent))), (False,
(Simple, (Block, Gpr_Indent)))));
+ end case;
+ end case_item_0;
+
+ procedure compilation_unit_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ null;
+ when Face =>
+ null;
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Int,
0))), (False, (Simple, (Int, 0))), (True,
+ (Simple, (Int, 0)), (Simple, (Int, 0)))));
+ end case;
+ end compilation_unit_0;
+
+ function identifier_opt_1_check
+ (Tree : in WisiToken.Syntax_Trees.Tree;
+ Nonterm : in out WisiToken.Syntax_Trees.Recover_Token;
+ Tokens : in WisiToken.Syntax_Trees.Recover_Token_Array;
+ Recover_Active : in Boolean)
+ return WisiToken.Syntax_Trees.In_Parse_Actions.Status
+ is
+ pragma Unreferenced (Recover_Active);
+ begin
+ return Propagate_Name (Tree, Nonterm, Tokens, 1);
+ end identifier_opt_1_check;
+
+ procedure package_spec_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(7, Statement_End)));
+ Name_Action (Parse_Data, Tree, Nonterm, 2);
+ when Face =>
+ Face_Apply_Action (Parse_Data, Tree, Nonterm, ((2, 2, 0), (6, 2, 0)));
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Label => None))), (True,
(Simple, (Block, Gpr_Indent)), (Simple, (Int,
+ Gpr_Indent))), (False, (Simple, (Label => None))), (False, (Simple,
(Label => None))), (False, (Simple, (Label
+ => None)))));
+ end case;
+ end package_spec_0;
+
+ function package_spec_0_check
+ (Tree : in WisiToken.Syntax_Trees.Tree;
+ Nonterm : in out WisiToken.Syntax_Trees.Recover_Token;
+ Tokens : in WisiToken.Syntax_Trees.Recover_Token_Array;
+ Recover_Active : in Boolean)
+ return WisiToken.Syntax_Trees.In_Parse_Actions.Status
+ is
+ pragma Unreferenced (Nonterm, Recover_Active);
+ begin
+ return Match_Names (Tree, Tokens, 2, 6, End_Names_Optional);
+ end package_spec_0_check;
+
+ procedure package_extension_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(9, Statement_End)));
+ Name_Action (Parse_Data, Tree, Nonterm, 2);
+ when Face =>
+ Face_Apply_Action (Parse_Data, Tree, Nonterm, ((2, 2, 0), (8, 2, 0)));
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Label => None))), (False,
(Simple, (Int, Gpr_Indent_Broken))), (False,
+ (Simple, (Label => None))), (True, (Simple, (Block, Gpr_Indent)),
(Simple, (Int, Gpr_Indent))), (False,
+ (Simple, (Label => None))), (False, (Simple, (Label => None))),
(False, (Simple, (Label => None)))));
+ end case;
+ end package_extension_0;
+
+ function package_extension_0_check
+ (Tree : in WisiToken.Syntax_Trees.Tree;
+ Nonterm : in out WisiToken.Syntax_Trees.Recover_Token;
+ Tokens : in WisiToken.Syntax_Trees.Recover_Token_Array;
+ Recover_Active : in Boolean)
+ return WisiToken.Syntax_Trees.In_Parse_Actions.Status
+ is
+ pragma Unreferenced (Nonterm, Recover_Active);
+ begin
+ return Match_Names (Tree, Tokens, 2, 8, End_Names_Optional);
+ end package_extension_0_check;
+
+ procedure package_renaming_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(5, Statement_End)));
+ when Face =>
+ Face_Apply_Action (Parse_Data, Tree, Nonterm, ((2, 2, 0), (4, 2, 0)));
+ when Indent =>
+ null;
+ end case;
+ end package_renaming_0;
+
+ procedure project_extension_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(9, Statement_End)));
+ Name_Action (Parse_Data, Tree, Nonterm, 2);
+ when Face =>
+ Face_Apply_Action (Parse_Data, Tree, Nonterm, ((1, 2, 1), (2, 2, 0),
(8, 2, 0)));
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Label => None))), (False,
(Simple, (Int, Gpr_Indent_Broken))), (False,
+ (Simple, (Label => None))), (True, (Simple, (Block, Gpr_Indent)),
(Simple, (Int, Gpr_Indent))), (False,
+ (Simple, (Label => None))), (False, (Simple, (Label => None))),
(False, (Simple, (Label => None)))));
+ end case;
+ end project_extension_0;
+
+ function project_extension_0_check
+ (Tree : in WisiToken.Syntax_Trees.Tree;
+ Nonterm : in out WisiToken.Syntax_Trees.Recover_Token;
+ Tokens : in WisiToken.Syntax_Trees.Recover_Token_Array;
+ Recover_Active : in Boolean)
+ return WisiToken.Syntax_Trees.In_Parse_Actions.Status
+ is
+ pragma Unreferenced (Nonterm, Recover_Active);
+ begin
+ return Match_Names (Tree, Tokens, 2, 8, End_Names_Optional);
+ end project_extension_0_check;
+
+ procedure simple_declarative_item_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(4, Statement_End)));
+ when Face =>
+ null;
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Int, Gpr_Indent_Broken))),
(False, (Simple, (Label => None)))));
+ end case;
+ end simple_declarative_item_0;
+
+ procedure simple_declarative_item_1
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(6, Statement_End)));
+ when Face =>
+ null;
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Int, Gpr_Indent_Broken))),
(False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Int, Gpr_Indent_Broken))),
(False, (Simple, (Label => None)))));
+ end case;
+ end simple_declarative_item_1;
+
+ procedure simple_declarative_item_4
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(2, Statement_End)));
+ when Face =>
+ null;
+ when Indent =>
+ null;
+ end case;
+ end simple_declarative_item_4;
+
+ procedure simple_project_declaration_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(7, Statement_End)));
+ Name_Action (Parse_Data, Tree, Nonterm, 2);
+ when Face =>
+ Face_Apply_Action (Parse_Data, Tree, Nonterm, ((1, 2, 1), (2, 2, 0),
(6, 2, 0)));
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Label => None))), (True,
(Simple, (Block, Gpr_Indent)), (Simple, (Int,
+ Gpr_Indent))), (False, (Simple, (Label => None))), (False, (Simple,
(Label => None))), (False, (Simple, (Label
+ => None)))));
+ end case;
+ end simple_project_declaration_0;
+
+ function simple_project_declaration_0_check
+ (Tree : in WisiToken.Syntax_Trees.Tree;
+ Nonterm : in out WisiToken.Syntax_Trees.Recover_Token;
+ Tokens : in WisiToken.Syntax_Trees.Recover_Token_Array;
+ Recover_Active : in Boolean)
+ return WisiToken.Syntax_Trees.In_Parse_Actions.Status
+ is
+ pragma Unreferenced (Nonterm, Recover_Active);
+ begin
+ return Match_Names (Tree, Tokens, 2, 6, End_Names_Optional);
+ end simple_project_declaration_0_check;
+
+ procedure typed_string_declaration_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access)
+ is
+ Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type
(User_Data);
+ begin
+ case Parse_Data.Post_Parse_Action is
+ when Navigate =>
+ Statement_Action (Parse_Data, Tree, Nonterm, ((1, Statement_Start),
(5, Statement_End)));
+ when Face =>
+ null;
+ when Indent =>
+ Indent_Action_0 (Parse_Data, Tree, Nonterm, ((False, (Simple, (Label
=> None))), (False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Int, Gpr_Indent_Broken))),
(False, (Simple, (Int,
+ Gpr_Indent_Broken))), (False, (Simple, (Label => None)))));
+ end case;
+ end typed_string_declaration_0;
+
+end Gpr_Process_Actions;
diff --git a/gpr_process_actions.ads b/gpr_process_actions.ads
new file mode 100644
index 0000000000..91a46e6d0b
--- /dev/null
+++ b/gpr_process_actions.ads
@@ -0,0 +1,304 @@
+-- generated parser support file. -*- buffer-read-only:t -*-
+-- command line: wisitoken-bnf-generate.exe --generate LR1 Ada_Emacs re2c
PROCESS gpr.wy
+--
+
+-- Copyright (C) 2013 - 2022 Free Software Foundation, Inc.
+
+-- This program 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, or (at
+-- your option) any later version.
+--
+-- This software 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/>.
+
+with WisiToken.Syntax_Trees;
+package Gpr_Process_Actions is
+
+ Descriptor : aliased constant WisiToken.Descriptor :=
+ (First_Terminal => 5,
+ Last_Terminal => 41,
+ First_Nonterminal => 42,
+ Last_Nonterminal => 75,
+ SOI_ID => 76,
+ EOI_ID => 41,
+ Accept_ID => 42,
+ Case_Insensitive => True,
+ New_Line_ID => 1,
+ String_1_ID => 32767,
+ String_2_ID => 40,
+ Image =>
+ (new String'("WHITESPACE"),
+ new String'("NEW_LINE"),
+ new String'("COMMENT"),
+ new String'("GNAT_PREP"),
+ new String'("PLACEHOLDER"),
+ new String'("ABSTRACT"),
+ new String'("AT"),
+ new String'("AGGREGATE"),
+ new String'("CASE"),
+ new String'("CONFIGURATION"),
+ new String'("END"),
+ new String'("EXTENDS"),
+ new String'("EXTERNAL"),
+ new String'("EXTERNAL_AS_LIST"),
+ new String'("FOR"),
+ new String'("IS"),
+ new String'("LEFT_PAREN"),
+ new String'("LIBRARY"),
+ new String'("NULL"),
+ new String'("OTHERS"),
+ new String'("PACKAGE"),
+ new String'("PROJECT"),
+ new String'("RENAMES"),
+ new String'("RIGHT_PAREN"),
+ new String'("STANDARD"),
+ new String'("TYPE"),
+ new String'("USE"),
+ new String'("WHEN"),
+ new String'("WITH"),
+ new String'("AMPERSAND"),
+ new String'("COLON"),
+ new String'("COLON_EQUALS"),
+ new String'("COMMA"),
+ new String'("DOT"),
+ new String'("EQUAL_GREATER"),
+ new String'("QUOTE"),
+ new String'("SEMICOLON"),
+ new String'("VERTICAL_BAR"),
+ new String'("NUMERIC_LITERAL"),
+ new String'("IDENTIFIER"),
+ new String'("STRING_LITERAL"),
+ new String'("Wisi_EOI"),
+ new String'("wisitoken_accept"),
+ new String'("aggregate_g"),
+ new String'("attribute_declaration"),
+ new String'("attribute_prefix"),
+ new String'("attribute_reference"),
+ new String'("case_statement"),
+ new String'("case_item"),
+ new String'("case_items"),
+ new String'("compilation_unit"),
+ new String'("context_clause"),
+ new String'("context_clause_opt"),
+ new String'("declarative_item"),
+ new String'("declarative_items"),
+ new String'("declarative_items_opt"),
+ new String'("discrete_choice"),
+ new String'("discrete_choice_list"),
+ new String'("expression"),
+ new String'("external_value"),
+ new String'("identifier_opt"),
+ new String'("name"),
+ new String'("package_declaration"),
+ new String'("package_spec"),
+ new String'("package_extension"),
+ new String'("package_renaming"),
+ new String'("project_declaration_opt"),
+ new String'("project_extension"),
+ new String'("project_qualifier_opt"),
+ new String'("simple_declarative_item"),
+ new String'("simple_project_declaration"),
+ new String'("string_primary"),
+ new String'("string_list"),
+ new String'("term"),
+ new String'("typed_string_declaration"),
+ new String'("with_clause"),
+ new String'("Wisi_SOI")),
+ Terminal_Image_Width => 16,
+ Image_Width => 26,
+ Last_Lookahead => 41);
+
+ type Token_Enum_ID is
+ (WHITESPACE_ID,
+ NEW_LINE_ID,
+ COMMENT_ID,
+ GNAT_PREP_ID,
+ PLACEHOLDER_ID,
+ ABSTRACT_ID,
+ AT_ID,
+ AGGREGATE_ID,
+ CASE_ID,
+ CONFIGURATION_ID,
+ END_ID,
+ EXTENDS_ID,
+ EXTERNAL_ID,
+ EXTERNAL_AS_LIST_ID,
+ FOR_ID,
+ IS_ID,
+ LEFT_PAREN_ID,
+ LIBRARY_ID,
+ NULL_ID,
+ OTHERS_ID,
+ PACKAGE_ID,
+ PROJECT_ID,
+ RENAMES_ID,
+ RIGHT_PAREN_ID,
+ STANDARD_ID,
+ TYPE_ID,
+ USE_ID,
+ WHEN_ID,
+ WITH_ID,
+ AMPERSAND_ID,
+ COLON_ID,
+ COLON_EQUALS_ID,
+ COMMA_ID,
+ DOT_ID,
+ EQUAL_GREATER_ID,
+ QUOTE_ID,
+ SEMICOLON_ID,
+ VERTICAL_BAR_ID,
+ NUMERIC_LITERAL_ID,
+ IDENTIFIER_ID,
+ STRING_LITERAL_ID,
+ Wisi_EOI_ID,
+ wisitoken_accept_ID,
+ aggregate_g_ID,
+ attribute_declaration_ID,
+ attribute_prefix_ID,
+ attribute_reference_ID,
+ case_statement_ID,
+ case_item_ID,
+ case_items_ID,
+ compilation_unit_ID,
+ context_clause_ID,
+ context_clause_opt_ID,
+ declarative_item_ID,
+ declarative_items_ID,
+ declarative_items_opt_ID,
+ discrete_choice_ID,
+ discrete_choice_list_ID,
+ expression_ID,
+ external_value_ID,
+ identifier_opt_ID,
+ name_ID,
+ package_declaration_ID,
+ package_spec_ID,
+ package_extension_ID,
+ package_renaming_ID,
+ project_declaration_opt_ID,
+ project_extension_ID,
+ project_qualifier_opt_ID,
+ simple_declarative_item_ID,
+ simple_project_declaration_ID,
+ string_primary_ID,
+ string_list_ID,
+ term_ID,
+ typed_string_declaration_ID,
+ with_clause_ID,
+ Wisi_SOI_ID);
+
+ type Token_Enum_ID_Array is array (Positive range <>) of Token_Enum_ID;
+ use all type WisiToken.Token_ID;
+ function "+" (Item : in Token_Enum_ID) return WisiToken.Token_ID
+ is (WisiToken.Token_ID'First + Token_Enum_ID'Pos (Item));
+ function To_Token_Enum (Item : in WisiToken.Token_ID) return Token_Enum_ID
+ is (Token_Enum_ID'Val (Item - WisiToken.Token_ID'First));
+ function "-" (Item : in WisiToken.Token_ID) return Token_Enum_ID renames
To_Token_Enum;
+
+ procedure aggregate_g_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure attribute_declaration_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure attribute_declaration_1
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure attribute_declaration_2
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure attribute_declaration_3
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure case_statement_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure case_item_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure compilation_unit_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure package_spec_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure package_extension_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure package_renaming_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure project_extension_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure simple_declarative_item_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure simple_declarative_item_1
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure simple_declarative_item_4
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure simple_project_declaration_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ procedure typed_string_declaration_0
+ (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+ Tree : in out WisiToken.Syntax_Trees.Tree;
+ Nonterm : in WisiToken.Syntax_Trees.Valid_Node_Access);
+ function identifier_opt_1_check
+ (Tree : in WisiToken.Syntax_Trees.Tree;
+ Nonterm : in out WisiToken.Syntax_Trees.Recover_Token;
+ Tokens : in WisiToken.Syntax_Trees.Recover_Token_Array;
+ Recover_Active : in Boolean)
+ return WisiToken.Syntax_Trees.In_Parse_Actions.Status;
+ function package_spec_0_check
+ (Tree : in WisiToken.Syntax_Trees.Tree;
+ Nonterm : in out WisiToken.Syntax_Trees.Recover_Token;
+ Tokens : in WisiToken.Syntax_Trees.Recover_Token_Array;
+ Recover_Active : in Boolean)
+ return WisiToken.Syntax_Trees.In_Parse_Actions.Status;
+ function package_extension_0_check
+ (Tree : in WisiToken.Syntax_Trees.Tree;
+ Nonterm : in out WisiToken.Syntax_Trees.Recover_Token;
+ Tokens : in WisiToken.Syntax_Trees.Recover_Token_Array;
+ Recover_Active : in Boolean)
+ return WisiToken.Syntax_Trees.In_Parse_Actions.Status;
+ function project_extension_0_check
+ (Tree : in WisiToken.Syntax_Trees.Tree;
+ Nonterm : in out WisiToken.Syntax_Trees.Recover_Token;
+ Tokens : in WisiToken.Syntax_Trees.Recover_Token_Array;
+ Recover_Active : in Boolean)
+ return WisiToken.Syntax_Trees.In_Parse_Actions.Status;
+ function simple_project_declaration_0_check
+ (Tree : in WisiToken.Syntax_Trees.Tree;
+ Nonterm : in out WisiToken.Syntax_Trees.Recover_Token;
+ Tokens : in WisiToken.Syntax_Trees.Recover_Token_Array;
+ Recover_Active : in Boolean)
+ return WisiToken.Syntax_Trees.In_Parse_Actions.Status;
+ Partial_Parse_Active : aliased Boolean := False;
+ Partial_Parse_Byte_Goal : aliased WisiToken.Buffer_Pos :=
WisiToken.Buffer_Pos'Last;
+end Gpr_Process_Actions;
diff --git a/gpr_process_main.adb b/gpr_process_main.adb
new file mode 100644
index 0000000000..9618d53f91
--- /dev/null
+++ b/gpr_process_main.adb
@@ -0,0 +1,2640 @@
+-- generated parser support file. -*- buffer-read-only:t -*-
+-- command line: wisitoken-bnf-generate.exe --generate LR1 Ada_Emacs re2c
PROCESS gpr.wy
+--
+
+-- Copyright (C) 2013 - 2022 Free Software Foundation, Inc.
+
+-- This program 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, or (at
+-- your option) any later version.
+--
+-- This software 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/>.
+
+with SAL;
+with WisiToken.Lexer.re2c;
+with gpr_re2c_c;
+with Gpr_Process_Actions; use Gpr_Process_Actions;
+package body Gpr_Process_Main is
+
+ function Is_Block_Delimited (ID : in WisiToken.Token_ID) return Boolean
+ is begin
+ case To_Token_Enum (ID) is
+ when
+ COMMENT_ID |
+ GNAT_PREP_ID |
+ PLACEHOLDER_ID |
+ STRING_LITERAL_ID => return True;
+ when others => return False;
+ end case;
+ end Is_Block_Delimited;
+
+ function Same_Block_Delimiters (ID : in WisiToken.Token_ID) return Boolean
+ is begin
+ case To_Token_Enum (ID) is
+ when COMMENT_ID => return False;
+ when GNAT_PREP_ID => return False;
+ when PLACEHOLDER_ID => return False;
+ when STRING_LITERAL_ID => return True;
+ when others => return False;
+ end case;
+ end Same_Block_Delimiters;
+
+ function Escape_Delimiter_Doubled (ID : in WisiToken.Token_ID) return
Boolean
+ is begin
+ case To_Token_Enum (ID) is
+ when others => return False;
+ end case;
+ end Escape_Delimiter_Doubled;
+
+ function Start_Delimiter_Length (ID : in WisiToken.Token_ID) return Integer
+ is begin
+ case To_Token_Enum (ID) is
+ when COMMENT_ID => return 2;
+ when GNAT_PREP_ID => return 33;
+ when PLACEHOLDER_ID => return 1;
+ when STRING_LITERAL_ID => return 1;
+ when others => raise SAL.Programmer_Error; return 0;
+ end case;
+ end Start_Delimiter_Length;
+
+ function End_Delimiter_Length (ID : in WisiToken.Token_ID) return Integer
+ is begin
+ case To_Token_Enum (ID) is
+ when
+ COMMENT_ID |
+ GNAT_PREP_ID |
+ STRING_LITERAL_ID => return 1;
+ when PLACEHOLDER_ID => return 1;
+ when others => raise SAL.Programmer_Error; return 0;
+ end case;
+ end End_Delimiter_Length;
+
+ function New_Line_Is_End_Delimiter (ID : in WisiToken.Token_ID) return
Boolean
+ is begin
+ return
+ (case To_Token_Enum (ID) is
+ when COMMENT_ID => True,
+ when GNAT_PREP_ID => True,
+ when PLACEHOLDER_ID => True,
+ when STRING_LITERAL_ID => True,
+ when others => raise SAL.Programmer_Error);
+ end New_Line_Is_End_Delimiter;
+
+ function Find_End_Delimiter
+ (Source : in WisiToken.Lexer.Source;
+ ID : in WisiToken.Token_ID;
+ Token_Start : in WisiToken.Buffer_Pos)
+ return WisiToken.Buffer_Pos
+ is begin
+ return
+ (case To_Token_Enum (ID) is
+ when COMMENT_ID => WisiToken.Lexer.Find_New_Line (Source,
Token_Start),
+ when GNAT_PREP_ID => WisiToken.Lexer.Find_New_Line (Source,
Token_Start),
+ when PLACEHOLDER_ID => WisiToken.Lexer.Find_String (Source,
Token_Start, "}"),
+ when STRING_LITERAL_ID => WisiToken.Lexer.Find_String_Or_New_Line
(Source, Token_Start, """"),
+ when others => raise SAL.Programmer_Error);
+ end Find_End_Delimiter;
+
+ function Find_Scan_End
+ (Source : in WisiToken.Lexer.Source;
+ ID : in WisiToken.Token_ID;
+ Region : in WisiToken.Buffer_Region;
+ Inserted : in Boolean;
+ Start : in Boolean)
+ return WisiToken.Buffer_Pos
+ is
+ use WisiToken;
+ begin
+ return
+ (case To_Token_Enum (ID) is
+ when COMMENT_ID =>
+ (if Inserted then Region.Last
+ elsif Start then Region.Last
+ else Lexer.Find_New_Line (Source, Region.Last)),
+ when GNAT_PREP_ID =>
+ (if Inserted then Region.Last
+ elsif Start then Region.Last
+ else Lexer.Find_New_Line (Source, Region.Last)),
+ when PLACEHOLDER_ID =>
+ (if Inserted then Region.Last
+ elsif Start then Region.Last
+ else Lexer.Find_String_Or_New_Line (Source, Region.Last, "{")),
+ when STRING_LITERAL_ID => Lexer.Find_New_Line (Source, Region.Last),
+ when others => raise SAL.Programmer_Error);
+ end Find_Scan_End;
+
+ function Contains_End_Delimiter
+ (Source : in WisiToken.Lexer.Source;
+ ID : in WisiToken.Token_ID;
+ Region : in WisiToken.Buffer_Region)
+ return WisiToken.Base_Buffer_Pos
+ is
+ use WisiToken;
+ begin
+ return
+ (case To_Token_Enum (ID) is
+ when COMMENT_ID => Lexer.Find_New_Line (Source, Region),
+ when GNAT_PREP_ID => Lexer.Find_New_Line (Source, Region),
+ when PLACEHOLDER_ID => Lexer.Find_String_Or_New_Line (Source, Region,
"}"),
+ when STRING_LITERAL_ID => Lexer.Find_String_Or_New_Line (Source,
Region, """"),
+ when others => raise SAL.Programmer_Error);
+ end Contains_End_Delimiter;
+
+ function Line_Begin_Char_Pos
+ (Source : in WisiToken.Lexer.Source;
+ Token : in WisiToken.Lexer.Token;
+ Line : in WisiToken.Line_Number_Type)
+ return WisiToken.Buffer_Pos
+ is
+ pragma Unreferenced (Source, Line);
+ use all type WisiToken.Base_Buffer_Pos;
+ begin
+ case To_Token_Enum (Token.ID) is
+ when NEW_LINE_ID => return Token.Char_Region.Last + 1;
+ when COMMENT_ID => return Token.Char_Region.Last + 1;
+ when GNAT_PREP_ID => return Token.Char_Region.Last + 1;
+ when others => raise SAL.Programmer_Error;
+ end case;
+ end Line_Begin_Char_Pos;
+
+ function Can_Contain_New_Line (ID : in WisiToken.Token_ID) return Boolean
+ is begin
+ case To_Token_Enum (ID) is
+ when NEW_LINE_ID => return True;
+ when COMMENT_ID => return True;
+ when GNAT_PREP_ID => return True;
+ when others => return False;
+ end case;
+ end Can_Contain_New_Line;
+
+ function Terminated_By_New_Line (ID : in WisiToken.Token_ID) return Boolean
+ is begin
+ case To_Token_Enum (ID) is
+ when NEW_LINE_ID => return True;
+ when COMMENT_ID => return True;
+ when GNAT_PREP_ID => return True;
+ when STRING_LITERAL_ID => return True;
+ when others => return False;
+ end case;
+ end Terminated_By_New_Line;
+
+ package Lexer is new WisiToken.Lexer.re2c
+ (gpr_re2c_c.New_Lexer,
+ gpr_re2c_c.Free_Lexer,
+ gpr_re2c_c.Reset_Lexer,
+ gpr_re2c_c.Set_Verbosity,
+ gpr_re2c_c.Set_Position,
+ gpr_re2c_c.Next_Token,
+ Is_Block_Delimited,
+ Same_Block_Delimiters,
+ Escape_Delimiter_Doubled,
+ Start_Delimiter_Length,
+ End_Delimiter_Length,
+ New_Line_Is_End_Delimiter,
+ Find_End_Delimiter,
+ Contains_End_Delimiter,
+ Find_Scan_End,
+ Line_Begin_Char_Pos,
+ Can_Contain_New_Line,
+ Terminated_By_New_Line);
+
+ function Create_Parse_Table
+ return WisiToken.Parse.LR.Parse_Table_Ptr
+ is
+ use WisiToken.Parse.LR;
+ McKenzie_Param : constant McKenzie_Param_Type :=
+ (First_Terminal => 5,
+ Last_Terminal => 41,
+ First_Nonterminal => 42,
+ Last_Nonterminal => 75,
+ Insert =>
+ (4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4),
+ Delete =>
+ (4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4),
+ Push_Back =>
+ (2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2),
+ Undo_Reduce =>
+ (2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2),
+ Minimal_Complete_Cost_Delta => -1,
+ Fast_Forward => 0,
+ Matching_Begin => 0,
+ Ignore_Check_Fail => 2,
+ Check_Limit => 3,
+ Zombie_Limit => 4,
+ Check_Delta_Limit => 200,
+ Enqueue_Limit => 10000);
+
+ Table : constant Parse_Table_Ptr := new Parse_Table
+ (State_First => 0,
+ State_Last => 322,
+ First_Terminal => 5,
+ Last_Terminal => 41,
+ First_Nonterminal => 42,
+ Last_Nonterminal => 75);
+ begin
+ declare
+ procedure Subr_1
+ is begin
+ Table.States (0).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (0), 5, Reduce, (52, 0), 0);
+ Add_Action (Table.States (0), 7, Reduce, (52, 0), 0);
+ Add_Action (Table.States (0), 9, Reduce, (52, 0), 0);
+ Add_Action (Table.States (0), 17, Reduce, (52, 0), 0);
+ Add_Action (Table.States (0), 21, Reduce, (52, 0), 0);
+ Add_Action (Table.States (0), 24, Reduce, (52, 0), 0);
+ Add_Action (Table.States (0), 28, (75, 0), 1);
+ Add_Action (Table.States (0), 41, Reduce, (52, 0), 0);
+ Table.States (0).Goto_List.Set_Capacity (4);
+ Add_Goto (Table.States (0), 50, 2);
+ Add_Goto (Table.States (0), 51, 3);
+ Add_Goto (Table.States (0), 52, 4);
+ Add_Goto (Table.States (0), 75, 5);
+ Table.States (1).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (1), 12, (59, 0), 6);
+ Add_Action (Table.States (1), 13, (59, 1), 7);
+ Add_Action (Table.States (1), 16, (43, 0), 8);
+ Add_Action (Table.States (1), 21, (45, 0), 9);
+ Add_Action (Table.States (1), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (1), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (1), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (1), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (1), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (1), 39, (60, 1), 10);
+ Add_Action (Table.States (1), 40, (71, 0), 11);
+ Table.States (1).Goto_List.Set_Capacity (10);
+ Add_Goto (Table.States (1), 43, 12);
+ Add_Goto (Table.States (1), 45, 13);
+ Add_Goto (Table.States (1), 46, 14);
+ Add_Goto (Table.States (1), 58, 15);
+ Add_Goto (Table.States (1), 59, 16);
+ Add_Goto (Table.States (1), 60, 17);
+ Add_Goto (Table.States (1), 61, 18);
+ Add_Goto (Table.States (1), 71, 19);
+ Add_Goto (Table.States (1), 72, 20);
+ Add_Goto (Table.States (1), 73, 21);
+ Table.States (1).Kernel := To_Vector ((0 => ((75, 0), 28, 1,
(32767, 0), 0)));
+ Table.States (1).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (72, 0), 0)));
+ Table.States (2).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (2), 41, Accept_It, (42, 0), 1);
+ Table.States (3).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (3), 5, Reduce, (52, 1), 1);
+ Add_Action (Table.States (3), 7, Reduce, (52, 1), 1);
+ Add_Action (Table.States (3), 9, Reduce, (52, 1), 1);
+ Add_Action (Table.States (3), 17, Reduce, (52, 1), 1);
+ Add_Action (Table.States (3), 21, Reduce, (52, 1), 1);
+ Add_Action (Table.States (3), 24, Reduce, (52, 1), 1);
+ Add_Action (Table.States (3), 28, (75, 0), 1);
+ Add_Action (Table.States (3), 41, Reduce, (52, 1), 1);
+ Table.States (3).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (3), 75, 22);
+ Table.States (3).Kernel := To_Vector ((((51, 1), 51, 2, (32767,
0), 0), ((52, 1), 51, 0, (52, 1),
+ 1)));
+ Table.States (3).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (52, 1), 1)));
+ Table.States (4).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (4), 5, (68, 1), 23);
+ Add_Action (Table.States (4), 7, (68, 3), 24);
+ Add_Action (Table.States (4), 9, (68, 6), 25);
+ Add_Action (Table.States (4), 17, (68, 5), 26);
+ Add_Action (Table.States (4), 21, Reduce, (68, 0), 0);
+ Add_Action (Table.States (4), 24, (68, 2), 27);
+ Add_Action (Table.States (4), 41, Reduce, (68, 0), 0);
+ Table.States (4).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (4), 68, 28);
+ Table.States (4).Kernel := To_Vector ((0 => ((50, 0), 52, 0,
(68, 0), 0)));
+ Table.States (4).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (68, 0), 0)));
+ Table.States (5).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (5), (5, 7, 9, 17, 21, 24, 28, 41), (51,
0), 1);
+ Table.States (5).Kernel := To_Vector ((0 => ((51, 0), 75, 0,
(51, 0), 1)));
+ Table.States (5).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (51, 0), 1)));
+ Table.States (6).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (6), 16, (43, 0), 29);
+ Table.States (6).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (6), 43, 30);
+ Table.States (6).Kernel := To_Vector ((0 => ((59, 0), 12, 2,
(32767, 0), 0)));
+ Table.States (6).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 16, 29)));
+ Table.States (7).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (7), 16, (43, 0), 29);
+ Table.States (7).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (7), 43, 31);
+ Table.States (7).Kernel := To_Vector ((0 => ((59, 1), 13, 2,
(32767, 0), 0)));
+ Table.States (7).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 16, 29)));
+ Table.States (8).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (8), 12, (59, 0), 32);
+ Add_Action (Table.States (8), 13, (59, 1), 33);
+ Add_Action (Table.States (8), 16, (43, 0), 34);
+ Add_Action (Table.States (8), 21, (45, 0), 9);
+ Add_Action (Table.States (8), 23, (73, 1), 35);
+ Add_Conflict (Table.States (8), 23, (60, 0), 0);
+ Add_Action (Table.States (8), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (8), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (8), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (8), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (8), 39, (60, 1), 36);
+ Add_Action (Table.States (8), 40, (71, 0), 37);
+ Table.States (8).Goto_List.Set_Capacity (10);
+ Add_Goto (Table.States (8), 43, 38);
+ Add_Goto (Table.States (8), 45, 39);
+ Add_Goto (Table.States (8), 46, 40);
+ Add_Goto (Table.States (8), 58, 41);
+ Add_Goto (Table.States (8), 59, 42);
+ Add_Goto (Table.States (8), 60, 43);
+ Add_Goto (Table.States (8), 61, 44);
+ Add_Goto (Table.States (8), 71, 45);
+ Add_Goto (Table.States (8), 72, 46);
+ Add_Goto (Table.States (8), 73, 47);
+ Table.States (8).Kernel := To_Vector ((((43, 0), 16, 1, (32767,
0), 0), ((73, 1), 16, 1, (32767, 0),
+ 0)));
+ Table.States (8).Minimal_Complete_Actions := To_Vector (((Reduce,
(72, 0), 0), (Shift, (73, 1), 23,
+ 35)));
+ Table.States (9).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (9), (1 => 35), (45, 0), 1);
+ Table.States (9).Kernel := To_Vector ((0 => ((45, 0), 21, 0,
(45, 0), 1)));
+ Table.States (9).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (45, 0), 1)));
+ Table.States (10).Action_List.Set_Capacity (5);
+ Add_Action (Table.States (10), (29, 32, 33, 35, 36), (60, 1), 1);
+ Table.States (10).Kernel := To_Vector ((0 => ((60, 1), 39, 0,
(60, 1), 1)));
+ Table.States (10).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 1), 1)));
+ Table.States (11).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (11), (29, 32, 36), (71, 0), 1);
+ Table.States (11).Kernel := To_Vector ((0 => ((71, 0), 40, 0,
(71, 0), 1)));
+ Table.States (11).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (71, 0), 1)));
+ Table.States (12).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (12), (29, 32, 36), (73, 2), 1);
+ Table.States (12).Kernel := To_Vector ((0 => ((73, 2), 43, 0,
(73, 2), 1)));
+ Table.States (12).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 2), 1)));
+ Table.States (13).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (13), 35, (46, 0), 48);
+ Table.States (13).Kernel := To_Vector ((((46, 0), 45, 2, (32767,
0), 0), ((46, 1), 45, 5, (32767, 0),
+ 0)));
+ Table.States (13).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 0), 35, 48)));
+ Table.States (14).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (14), (29, 32, 36), (71, 3), 1);
+ Table.States (14).Kernel := To_Vector ((0 => ((71, 3), 46, 0,
(71, 3), 1)));
+ Table.States (14).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (71, 3), 1)));
+ Table.States (15).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (15), 29, (58, 1), 49);
+ Add_Action (Table.States (15), 32, Reduce, (72, 0), 1);
+ Add_Action (Table.States (15), 36, Reduce, (72, 0), 1);
+ Table.States (15).Kernel := To_Vector ((((58, 1), 58, 1, (32767,
0), 0), ((72, 0), 58, 0, (72, 0),
+ 1)));
+ Table.States (15).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (72, 0), 1)));
+ Table.States (16).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (16), (29, 32, 36), (71, 2), 1);
+ Table.States (16).Kernel := To_Vector ((0 => ((71, 2), 59, 0,
(71, 2), 1)));
+ Table.States (16).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (71, 2), 1)));
+ Table.States (17).Action_List.Set_Capacity (5);
+ Add_Action (Table.States (17), (29, 32, 33, 35, 36), (61, 0), 1);
+ Table.States (17).Kernel := To_Vector ((0 => ((61, 0), 60, 0,
(61, 0), 1)));
+ Table.States (17).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 0), 1)));
+ Table.States (18).Action_List.Set_Capacity (5);
+ Add_Action (Table.States (18), 29, Reduce, (71, 1), 1);
+ Add_Action (Table.States (18), 32, Reduce, (71, 1), 1);
+ Add_Action (Table.States (18), 33, (61, 1), 50);
+ Add_Action (Table.States (18), 35, Reduce, (45, 1), 1);
+ Add_Action (Table.States (18), 36, Reduce, (71, 1), 1);
+ Table.States (18).Kernel := To_Vector ((((45, 1), 61, 0, (45,
1), 1), ((61, 1), 61, 2, (32767, 0),
+ 0), ((71, 1), 61, 0, (71, 1), 1)));
+ Table.States (18).Minimal_Complete_Actions := To_Vector (((Reduce,
(45, 1), 1), (Reduce, (71, 1), 1)));
+ Table.States (19).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (19), (29, 32, 36), (73, 0), 1);
+ Table.States (19).Kernel := To_Vector ((0 => ((73, 0), 71, 0,
(73, 0), 1)));
+ Table.States (19).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 0), 1)));
+ Table.States (20).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (20), 32, (72, 1), 51);
+ Add_Action (Table.States (20), 36, (75, 0), 52);
+ Table.States (20).Kernel := To_Vector ((((72, 1), 72, 1, (32767,
0), 0), ((75, 0), 72, 1, (32767, 0),
+ 0)));
+ Table.States (20).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (75, 0), 36, 52)));
+ Table.States (21).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (21), (29, 32, 36), (58, 0), 1);
+ Table.States (21).Kernel := To_Vector ((0 => ((58, 0), 73, 0,
(58, 0), 1)));
+ Table.States (21).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 1)));
+ Table.States (22).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (22), (5, 7, 9, 17, 21, 24, 28, 41), (51,
1), 2);
+ Table.States (22).Kernel := To_Vector ((0 => ((51, 1), 75, 0,
(51, 1), 2)));
+ Table.States (22).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (51, 1), 2)));
+ Table.States (23).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (23), (21, 41), (68, 1), 1);
+ Table.States (23).Kernel := To_Vector ((0 => ((68, 1), 5, 0,
(68, 1), 1)));
+ Table.States (23).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (68, 1), 1)));
+ Table.States (24).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (24), 17, (68, 4), 53);
+ Add_Action (Table.States (24), 21, Reduce, (68, 3), 1);
+ Add_Action (Table.States (24), 41, Reduce, (68, 3), 1);
+ Table.States (24).Kernel := To_Vector ((((68, 3), 7, 0, (68, 3),
1), ((68, 4), 7, 1, (32767, 0),
+ 0)));
+ Table.States (24).Minimal_Complete_Actions := To_Vector (((Reduce,
(68, 3), 1), (Shift, (68, 4), 17,
+ 53)));
+ Table.States (25).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (25), (21, 41), (68, 6), 1);
+ Table.States (25).Kernel := To_Vector ((0 => ((68, 6), 9, 0,
(68, 6), 1)));
+ Table.States (25).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (68, 6), 1)));
+ Table.States (26).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (26), (21, 41), (68, 5), 1);
+ Table.States (26).Kernel := To_Vector ((0 => ((68, 5), 17, 0,
(68, 5), 1)));
+ Table.States (26).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (68, 5), 1)));
+ Table.States (27).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (27), (21, 41), (68, 2), 1);
+ Table.States (27).Kernel := To_Vector ((0 => ((68, 2), 24, 0,
(68, 2), 1)));
+ Table.States (27).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (68, 2), 1)));
+ Table.States (28).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (28), 21, (67, 0), 54);
+ Add_Action (Table.States (28), 41, Reduce, (66, 0), 0);
+ Table.States (28).Goto_List.Set_Capacity (3);
+ Add_Goto (Table.States (28), 66, 55);
+ Add_Goto (Table.States (28), 67, 56);
+ Add_Goto (Table.States (28), 70, 57);
+ Table.States (28).Kernel := To_Vector ((0 => ((50, 0), 68, 0,
(66, 0), 0)));
+ Table.States (28).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (66, 0), 0)));
+ Table.States (29).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (29), 12, (59, 0), 32);
+ Add_Action (Table.States (29), 13, (59, 1), 33);
+ Add_Action (Table.States (29), 16, (43, 0), 34);
+ Add_Action (Table.States (29), 21, (45, 0), 9);
+ Add_Action (Table.States (29), 23, Reduce, (60, 0), 0);
+ Add_Action (Table.States (29), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (29), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (29), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (29), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (29), 39, (60, 1), 36);
+ Add_Action (Table.States (29), 40, (71, 0), 37);
+ Table.States (29).Goto_List.Set_Capacity (10);
+ Add_Goto (Table.States (29), 43, 38);
+ Add_Goto (Table.States (29), 45, 39);
+ Add_Goto (Table.States (29), 46, 40);
+ Add_Goto (Table.States (29), 58, 41);
+ Add_Goto (Table.States (29), 59, 42);
+ Add_Goto (Table.States (29), 60, 43);
+ Add_Goto (Table.States (29), 61, 44);
+ Add_Goto (Table.States (29), 71, 45);
+ Add_Goto (Table.States (29), 72, 46);
+ Add_Goto (Table.States (29), 73, 47);
+ Table.States (29).Kernel := To_Vector ((0 => ((43, 0), 16, 1,
(32767, 0), 0)));
+ Table.States (29).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (72, 0), 0)));
+ Table.States (30).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (30), (29, 32, 36), (59, 0), 2);
+ Table.States (30).Kernel := To_Vector ((0 => ((59, 0), 43, 0,
(59, 0), 2)));
+ Table.States (30).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (59, 0), 2)));
+ Table.States (31).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (31), (29, 32, 36), (59, 1), 2);
+ Table.States (31).Kernel := To_Vector ((0 => ((59, 1), 43, 0,
(59, 1), 2)));
+ Table.States (31).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (59, 1), 2)));
+ Table.States (32).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (32), 16, (43, 0), 58);
+ Table.States (32).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (32), 43, 59);
+ Table.States (32).Kernel := To_Vector ((0 => ((59, 0), 12, 2,
(32767, 0), 0)));
+ Table.States (32).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 16, 58)));
+ Table.States (33).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (33), 16, (43, 0), 58);
+ Table.States (33).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (33), 43, 60);
+ Table.States (33).Kernel := To_Vector ((0 => ((59, 1), 13, 2,
(32767, 0), 0)));
+ Table.States (33).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 16, 58)));
+ Table.States (34).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (34), 12, (59, 0), 32);
+ Add_Action (Table.States (34), 13, (59, 1), 33);
+ Add_Action (Table.States (34), 16, (43, 0), 34);
+ Add_Action (Table.States (34), 21, (45, 0), 9);
+ Add_Action (Table.States (34), 23, (73, 1), 61);
+ Add_Conflict (Table.States (34), 23, (60, 0), 0);
+ Add_Action (Table.States (34), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (34), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (34), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (34), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (34), 39, (60, 1), 36);
+ Add_Action (Table.States (34), 40, (71, 0), 37);
+ Table.States (34).Goto_List.Set_Capacity (10);
+ Add_Goto (Table.States (34), 43, 38);
+ Add_Goto (Table.States (34), 45, 39);
+ Add_Goto (Table.States (34), 46, 40);
+ Add_Goto (Table.States (34), 58, 41);
+ Add_Goto (Table.States (34), 59, 42);
+ Add_Goto (Table.States (34), 60, 43);
+ Add_Goto (Table.States (34), 61, 44);
+ Add_Goto (Table.States (34), 71, 45);
+ Add_Goto (Table.States (34), 72, 62);
+ Add_Goto (Table.States (34), 73, 47);
+ Table.States (34).Kernel := To_Vector ((((43, 0), 16, 1, (32767,
0), 0), ((73, 1), 16, 1, (32767, 0),
+ 0)));
+ Table.States (34).Minimal_Complete_Actions := To_Vector (((Reduce,
(72, 0), 0), (Shift, (73, 1), 23,
+ 61)));
+ Table.States (35).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (35), (29, 32, 36), (73, 1), 2);
+ Table.States (35).Kernel := To_Vector ((0 => ((73, 1), 23, 0,
(73, 1), 2)));
+ Table.States (35).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 1), 2)));
+ Table.States (36).Action_List.Set_Capacity (5);
+ Add_Action (Table.States (36), (23, 29, 32, 33, 35), (60, 1), 1);
+ Table.States (36).Kernel := To_Vector ((0 => ((60, 1), 39, 0,
(60, 1), 1)));
+ Table.States (36).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 1), 1)));
+ Table.States (37).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (37), (23, 29, 32), (71, 0), 1);
+ Table.States (37).Kernel := To_Vector ((0 => ((71, 0), 40, 0,
(71, 0), 1)));
+ Table.States (37).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (71, 0), 1)));
+ Table.States (38).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (38), (23, 29, 32), (73, 2), 1);
+ Table.States (38).Kernel := To_Vector ((0 => ((73, 2), 43, 0,
(73, 2), 1)));
+ Table.States (38).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 2), 1)));
+ Table.States (39).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (39), 35, (46, 0), 63);
+ Table.States (39).Kernel := To_Vector ((((46, 0), 45, 2, (32767,
0), 0), ((46, 1), 45, 5, (32767, 0),
+ 0)));
+ Table.States (39).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 0), 35, 63)));
+ Table.States (40).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (40), (23, 29, 32), (71, 3), 1);
+ Table.States (40).Kernel := To_Vector ((0 => ((71, 3), 46, 0,
(71, 3), 1)));
+ Table.States (40).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (71, 3), 1)));
+ Table.States (41).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (41), 23, Reduce, (72, 0), 1);
+ Add_Action (Table.States (41), 29, (58, 1), 64);
+ Add_Action (Table.States (41), 32, Reduce, (72, 0), 1);
+ Table.States (41).Kernel := To_Vector ((((58, 1), 58, 1, (32767,
0), 0), ((72, 0), 58, 0, (72, 0),
+ 1)));
+ Table.States (41).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (72, 0), 1)));
+ Table.States (42).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (42), (23, 29, 32), (71, 2), 1);
+ Table.States (42).Kernel := To_Vector ((0 => ((71, 2), 59, 0,
(71, 2), 1)));
+ Table.States (42).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (71, 2), 1)));
+ Table.States (43).Action_List.Set_Capacity (5);
+ Add_Action (Table.States (43), (23, 29, 32, 33, 35), (61, 0), 1);
+ Table.States (43).Kernel := To_Vector ((0 => ((61, 0), 60, 0,
(61, 0), 1)));
+ Table.States (43).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 0), 1)));
+ Table.States (44).Action_List.Set_Capacity (5);
+ Add_Action (Table.States (44), 23, Reduce, (71, 1), 1);
+ Add_Action (Table.States (44), 29, Reduce, (71, 1), 1);
+ Add_Action (Table.States (44), 32, Reduce, (71, 1), 1);
+ Add_Action (Table.States (44), 33, (61, 1), 65);
+ Add_Action (Table.States (44), 35, Reduce, (45, 1), 1);
+ Table.States (44).Kernel := To_Vector ((((45, 1), 61, 0, (45,
1), 1), ((61, 1), 61, 2, (32767, 0),
+ 0), ((71, 1), 61, 0, (71, 1), 1)));
+ Table.States (44).Minimal_Complete_Actions := To_Vector (((Reduce,
(45, 1), 1), (Reduce, (71, 1), 1)));
+ Table.States (45).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (45), (23, 29, 32), (73, 0), 1);
+ Table.States (45).Kernel := To_Vector ((0 => ((73, 0), 71, 0,
(73, 0), 1)));
+ Table.States (45).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 0), 1)));
+ Table.States (46).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (46), 23, (43, 0), 66);
+ Add_Action (Table.States (46), 32, (72, 1), 67);
+ Table.States (46).Kernel := To_Vector ((((43, 0), 72, 1, (32767,
0), 0), ((72, 1), 72, 1, (32767, 0),
+ 0)));
+ Table.States (46).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 23, 66)));
+ Table.States (47).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (47), (23, 29, 32), (58, 0), 1);
+ Table.States (47).Kernel := To_Vector ((0 => ((58, 0), 73, 0,
(58, 0), 1)));
+ Table.States (47).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 1)));
+ Table.States (48).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (48), 39, (46, 0), 68);
+ Table.States (48).Kernel := To_Vector ((((46, 0), 35, 1, (32767,
0), 0), ((46, 1), 35, 4, (32767, 0),
+ 0)));
+ Table.States (48).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 0), 39, 68)));
+ Table.States (49).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (49), 12, (59, 0), 6);
+ Add_Action (Table.States (49), 13, (59, 1), 7);
+ Add_Action (Table.States (49), 16, (43, 0), 8);
+ Add_Action (Table.States (49), 21, (45, 0), 9);
+ Add_Action (Table.States (49), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (49), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (49), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (49), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (49), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (49), 39, (60, 1), 10);
+ Add_Action (Table.States (49), 40, (71, 0), 11);
+ Table.States (49).Goto_List.Set_Capacity (8);
+ Add_Goto (Table.States (49), 43, 12);
+ Add_Goto (Table.States (49), 45, 13);
+ Add_Goto (Table.States (49), 46, 14);
+ Add_Goto (Table.States (49), 59, 16);
+ Add_Goto (Table.States (49), 60, 17);
+ Add_Goto (Table.States (49), 61, 18);
+ Add_Goto (Table.States (49), 71, 19);
+ Add_Goto (Table.States (49), 73, 69);
+ Table.States (49).Kernel := To_Vector ((0 => ((58, 1), 29, 0,
(73, 0), 0)));
+ Table.States (49).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 0), 0)));
+ end Subr_1;
+ procedure Subr_2
+ is begin
+ Table.States (50).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (50), 39, (61, 1), 70);
+ Table.States (50).Kernel := To_Vector ((0 => ((61, 1), 33, 1,
(32767, 0), 0)));
+ Table.States (50).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (61, 1), 39, 70)));
+ Table.States (51).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (51), 12, (59, 0), 6);
+ Add_Action (Table.States (51), 13, (59, 1), 7);
+ Add_Action (Table.States (51), 16, (43, 0), 8);
+ Add_Action (Table.States (51), 21, (45, 0), 9);
+ Add_Action (Table.States (51), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (51), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (51), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (51), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (51), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (51), 39, (60, 1), 10);
+ Add_Action (Table.States (51), 40, (71, 0), 11);
+ Table.States (51).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (51), 43, 12);
+ Add_Goto (Table.States (51), 45, 13);
+ Add_Goto (Table.States (51), 46, 14);
+ Add_Goto (Table.States (51), 58, 71);
+ Add_Goto (Table.States (51), 59, 16);
+ Add_Goto (Table.States (51), 60, 17);
+ Add_Goto (Table.States (51), 61, 18);
+ Add_Goto (Table.States (51), 71, 19);
+ Add_Goto (Table.States (51), 73, 21);
+ Table.States (51).Kernel := To_Vector ((0 => ((72, 1), 32, 0,
(58, 1), 0)));
+ Table.States (51).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 1), 0)));
+ Table.States (52).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (52), (5, 7, 9, 17, 21, 24, 28, 41), (75,
0), 3);
+ Table.States (52).Kernel := To_Vector ((0 => ((75, 0), 36, 0,
(75, 0), 3)));
+ Table.States (52).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (75, 0), 3)));
+ Table.States (53).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (53), (21, 41), (68, 4), 2);
+ Table.States (53).Kernel := To_Vector ((0 => ((68, 4), 17, 0,
(68, 4), 2)));
+ Table.States (53).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (68, 4), 2)));
+ Table.States (54).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (54), 11, Reduce, (60, 0), 0);
+ Add_Action (Table.States (54), 15, Reduce, (60, 0), 0);
+ Add_Action (Table.States (54), 39, (60, 1), 72);
+ Table.States (54).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (54), 60, 73);
+ Table.States (54).Kernel := To_Vector ((((67, 0), 21, 5, (32767,
0), 0), ((70, 0), 21, 3, (32767, 0),
+ 0)));
+ Table.States (54).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 0), 0)));
+ Table.States (55).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (55), (1 => 41), (50, 0), 3);
+ Table.States (55).Kernel := To_Vector ((0 => ((50, 0), 66, 0,
(50, 0), 3)));
+ Table.States (55).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (50, 0), 3)));
+ Table.States (56).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (56), (1 => 41), (66, 2), 1);
+ Table.States (56).Kernel := To_Vector ((0 => ((66, 2), 67, 0,
(66, 2), 1)));
+ Table.States (56).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (66, 2), 1)));
+ Table.States (57).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (57), (1 => 41), (66, 1), 1);
+ Table.States (57).Kernel := To_Vector ((0 => ((66, 1), 70, 0,
(66, 1), 1)));
+ Table.States (57).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (66, 1), 1)));
+ Table.States (58).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (58), 12, (59, 0), 32);
+ Add_Action (Table.States (58), 13, (59, 1), 33);
+ Add_Action (Table.States (58), 16, (43, 0), 34);
+ Add_Action (Table.States (58), 21, (45, 0), 9);
+ Add_Action (Table.States (58), 23, Reduce, (60, 0), 0);
+ Add_Action (Table.States (58), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (58), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (58), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (58), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (58), 39, (60, 1), 36);
+ Add_Action (Table.States (58), 40, (71, 0), 37);
+ Table.States (58).Goto_List.Set_Capacity (10);
+ Add_Goto (Table.States (58), 43, 38);
+ Add_Goto (Table.States (58), 45, 39);
+ Add_Goto (Table.States (58), 46, 40);
+ Add_Goto (Table.States (58), 58, 41);
+ Add_Goto (Table.States (58), 59, 42);
+ Add_Goto (Table.States (58), 60, 43);
+ Add_Goto (Table.States (58), 61, 44);
+ Add_Goto (Table.States (58), 71, 45);
+ Add_Goto (Table.States (58), 72, 62);
+ Add_Goto (Table.States (58), 73, 47);
+ Table.States (58).Kernel := To_Vector ((0 => ((43, 0), 16, 1,
(32767, 0), 0)));
+ Table.States (58).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (72, 0), 0)));
+ Table.States (59).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (59), (23, 29, 32), (59, 0), 2);
+ Table.States (59).Kernel := To_Vector ((0 => ((59, 0), 43, 0,
(59, 0), 2)));
+ Table.States (59).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (59, 0), 2)));
+ Table.States (60).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (60), (23, 29, 32), (59, 1), 2);
+ Table.States (60).Kernel := To_Vector ((0 => ((59, 1), 43, 0,
(59, 1), 2)));
+ Table.States (60).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (59, 1), 2)));
+ Table.States (61).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (61), (23, 29, 32), (73, 1), 2);
+ Table.States (61).Kernel := To_Vector ((0 => ((73, 1), 23, 0,
(73, 1), 2)));
+ Table.States (61).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 1), 2)));
+ Table.States (62).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (62), 23, (43, 0), 74);
+ Add_Action (Table.States (62), 32, (72, 1), 67);
+ Table.States (62).Kernel := To_Vector ((((43, 0), 72, 1, (32767,
0), 0), ((72, 1), 72, 1, (32767, 0),
+ 0)));
+ Table.States (62).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 23, 74)));
+ Table.States (63).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (63), 39, (46, 0), 75);
+ Table.States (63).Kernel := To_Vector ((((46, 0), 35, 1, (32767,
0), 0), ((46, 1), 35, 4, (32767, 0),
+ 0)));
+ Table.States (63).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 0), 39, 75)));
+ Table.States (64).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (64), 12, (59, 0), 32);
+ Add_Action (Table.States (64), 13, (59, 1), 33);
+ Add_Action (Table.States (64), 16, (43, 0), 34);
+ Add_Action (Table.States (64), 21, (45, 0), 9);
+ Add_Action (Table.States (64), 23, Reduce, (60, 0), 0);
+ Add_Action (Table.States (64), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (64), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (64), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (64), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (64), 39, (60, 1), 36);
+ Add_Action (Table.States (64), 40, (71, 0), 37);
+ Table.States (64).Goto_List.Set_Capacity (8);
+ Add_Goto (Table.States (64), 43, 38);
+ Add_Goto (Table.States (64), 45, 39);
+ Add_Goto (Table.States (64), 46, 40);
+ Add_Goto (Table.States (64), 59, 42);
+ Add_Goto (Table.States (64), 60, 43);
+ Add_Goto (Table.States (64), 61, 44);
+ Add_Goto (Table.States (64), 71, 45);
+ Add_Goto (Table.States (64), 73, 76);
+ Table.States (64).Kernel := To_Vector ((0 => ((58, 1), 29, 0,
(73, 0), 0)));
+ Table.States (64).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 0), 0)));
+ Table.States (65).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (65), 39, (61, 1), 77);
+ Table.States (65).Kernel := To_Vector ((0 => ((61, 1), 33, 1,
(32767, 0), 0)));
+ Table.States (65).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (61, 1), 39, 77)));
+ Table.States (66).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (66), (29, 32, 36), (43, 0), 3);
+ Table.States (66).Kernel := To_Vector ((0 => ((43, 0), 23, 0,
(43, 0), 3)));
+ Table.States (66).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (43, 0), 3)));
+ Table.States (67).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (67), 12, (59, 0), 32);
+ Add_Action (Table.States (67), 13, (59, 1), 33);
+ Add_Action (Table.States (67), 16, (43, 0), 34);
+ Add_Action (Table.States (67), 21, (45, 0), 9);
+ Add_Action (Table.States (67), 23, Reduce, (60, 0), 0);
+ Add_Action (Table.States (67), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (67), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (67), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (67), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (67), 39, (60, 1), 36);
+ Add_Action (Table.States (67), 40, (71, 0), 37);
+ Table.States (67).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (67), 43, 38);
+ Add_Goto (Table.States (67), 45, 39);
+ Add_Goto (Table.States (67), 46, 40);
+ Add_Goto (Table.States (67), 58, 78);
+ Add_Goto (Table.States (67), 59, 42);
+ Add_Goto (Table.States (67), 60, 43);
+ Add_Goto (Table.States (67), 61, 44);
+ Add_Goto (Table.States (67), 71, 45);
+ Add_Goto (Table.States (67), 73, 47);
+ Table.States (67).Kernel := To_Vector ((0 => ((72, 1), 32, 0,
(58, 1), 0)));
+ Table.States (67).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 1), 0)));
+ Table.States (68).Action_List.Set_Capacity (4);
+ Add_Action (Table.States (68), 16, (46, 1), 79);
+ Add_Action (Table.States (68), 29, Reduce, (46, 0), 3);
+ Add_Action (Table.States (68), 32, Reduce, (46, 0), 3);
+ Add_Action (Table.States (68), 36, Reduce, (46, 0), 3);
+ Table.States (68).Kernel := To_Vector ((((46, 0), 39, 0, (46,
0), 3), ((46, 1), 39, 3, (32767, 0),
+ 0)));
+ Table.States (68).Minimal_Complete_Actions := To_Vector (((Reduce,
(46, 0), 3), (Shift, (46, 1), 16,
+ 79)));
+ Table.States (69).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (69), (29, 32, 36), (58, 1), 3);
+ Table.States (69).Kernel := To_Vector ((0 => ((58, 1), 73, 0,
(58, 1), 3)));
+ Table.States (69).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 1), 3)));
+ Table.States (70).Action_List.Set_Capacity (5);
+ Add_Action (Table.States (70), (29, 32, 33, 35, 36), (61, 1), 3);
+ Table.States (70).Kernel := To_Vector ((0 => ((61, 1), 39, 0,
(61, 1), 3)));
+ Table.States (70).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 1), 3)));
+ Table.States (71).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (71), 29, (58, 1), 49);
+ Add_Action (Table.States (71), 32, Reduce, (72, 1), 3);
+ Add_Action (Table.States (71), 36, Reduce, (72, 1), 3);
+ Table.States (71).Kernel := To_Vector ((((58, 1), 58, 1, (32767,
0), 0), ((72, 1), 58, 0, (72, 1),
+ 3)));
+ Table.States (71).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (72, 1), 3)));
+ Table.States (72).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (72), (11, 15), (60, 1), 1);
+ Table.States (72).Kernel := To_Vector ((0 => ((60, 1), 39, 0,
(60, 1), 1)));
+ Table.States (72).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 1), 1)));
+ Table.States (73).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (73), 11, (67, 0), 80);
+ Add_Action (Table.States (73), 15, (70, 0), 81);
+ Table.States (73).Kernel := To_Vector ((((67, 0), 60, 5, (32767,
0), 0), ((70, 0), 60, 3, (32767, 0),
+ 0)));
+ Table.States (73).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (70, 0), 15, 81)));
+ Table.States (74).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (74), (23, 29, 32), (43, 0), 3);
+ Table.States (74).Kernel := To_Vector ((0 => ((43, 0), 23, 0,
(43, 0), 3)));
+ Table.States (74).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (43, 0), 3)));
+ Table.States (75).Action_List.Set_Capacity (4);
+ Add_Action (Table.States (75), 16, (46, 1), 82);
+ Add_Action (Table.States (75), 23, Reduce, (46, 0), 3);
+ Add_Action (Table.States (75), 29, Reduce, (46, 0), 3);
+ Add_Action (Table.States (75), 32, Reduce, (46, 0), 3);
+ Table.States (75).Kernel := To_Vector ((((46, 0), 39, 0, (46,
0), 3), ((46, 1), 39, 3, (32767, 0),
+ 0)));
+ Table.States (75).Minimal_Complete_Actions := To_Vector (((Reduce,
(46, 0), 3), (Shift, (46, 1), 16,
+ 82)));
+ Table.States (76).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (76), (23, 29, 32), (58, 1), 3);
+ Table.States (76).Kernel := To_Vector ((0 => ((58, 1), 73, 0,
(58, 1), 3)));
+ Table.States (76).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 1), 3)));
+ Table.States (77).Action_List.Set_Capacity (5);
+ Add_Action (Table.States (77), (23, 29, 32, 33, 35), (61, 1), 3);
+ Table.States (77).Kernel := To_Vector ((0 => ((61, 1), 39, 0,
(61, 1), 3)));
+ Table.States (77).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 1), 3)));
+ Table.States (78).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (78), 23, Reduce, (72, 1), 3);
+ Add_Action (Table.States (78), 29, (58, 1), 64);
+ Add_Action (Table.States (78), 32, Reduce, (72, 1), 3);
+ Table.States (78).Kernel := To_Vector ((((58, 1), 58, 1, (32767,
0), 0), ((72, 1), 58, 0, (72, 1),
+ 3)));
+ Table.States (78).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (72, 1), 3)));
+ Table.States (79).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (79), 40, (46, 1), 83);
+ Table.States (79).Kernel := To_Vector ((0 => ((46, 1), 16, 2,
(32767, 0), 0)));
+ Table.States (79).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 1), 40, 83)));
+ Table.States (80).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (80), 40, (67, 0), 84);
+ Table.States (80).Kernel := To_Vector ((0 => ((67, 0), 11, 4,
(32767, 0), 0)));
+ Table.States (80).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (67, 0), 40, 84)));
+ Table.States (81).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (81), 8, (47, 0), 85);
+ Add_Action (Table.States (81), 10, Reduce, (55, 0), 0);
+ Add_Action (Table.States (81), 14, (44, 0), 86);
+ Add_Action (Table.States (81), 18, (69, 4), 87);
+ Add_Action (Table.States (81), 20, (63, 0), 88);
+ Add_Action (Table.States (81), 25, (74, 0), 89);
+ Add_Action (Table.States (81), 39, (69, 0), 90);
+ Table.States (81).Goto_List.Set_Capacity (11);
+ Add_Goto (Table.States (81), 44, 91);
+ Add_Goto (Table.States (81), 47, 92);
+ Add_Goto (Table.States (81), 53, 93);
+ Add_Goto (Table.States (81), 54, 94);
+ Add_Goto (Table.States (81), 55, 95);
+ Add_Goto (Table.States (81), 62, 96);
+ Add_Goto (Table.States (81), 63, 97);
+ Add_Goto (Table.States (81), 64, 98);
+ Add_Goto (Table.States (81), 65, 99);
+ Add_Goto (Table.States (81), 69, 100);
+ Add_Goto (Table.States (81), 74, 101);
+ Table.States (81).Kernel := To_Vector ((0 => ((70, 0), 15, 2,
(32767, 0), 0)));
+ Table.States (81).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (55, 0), 0)));
+ Table.States (82).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (82), 40, (46, 1), 102);
+ Table.States (82).Kernel := To_Vector ((0 => ((46, 1), 16, 2,
(32767, 0), 0)));
+ Table.States (82).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 1), 40, 102)));
+ Table.States (83).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (83), 23, (46, 1), 103);
+ Table.States (83).Kernel := To_Vector ((0 => ((46, 1), 40, 1,
(32767, 0), 0)));
+ Table.States (83).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 1), 23, 103)));
+ Table.States (84).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (84), 15, (67, 0), 104);
+ Table.States (84).Kernel := To_Vector ((0 => ((67, 0), 40, 3,
(32767, 0), 0)));
+ Table.States (84).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (67, 0), 15, 104)));
+ Table.States (85).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (85), 15, Reduce, (60, 0), 0);
+ Add_Action (Table.States (85), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (85), 39, (60, 1), 105);
+ Table.States (85).Goto_List.Set_Capacity (2);
+ Add_Goto (Table.States (85), 60, 106);
+ Add_Goto (Table.States (85), 61, 107);
+ Table.States (85).Kernel := To_Vector ((0 => ((47, 0), 8, 4,
(32767, 0), 0)));
+ Table.States (85).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 0), 0)));
+ Table.States (86).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (86), 12, (44, 3), 108);
+ Add_Action (Table.States (86), 39, (44, 0), 109);
+ Table.States (86).Kernel := To_Vector ((((44, 0), 14, 3, (32767,
0), 0), ((44, 1), 14, 5, (32767, 0),
+ 0), ((44, 2), 14, 7, (32767, 0), 0), ((44, 3), 14, 6, (32767,
0), 0)));
+ Table.States (86).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 0), 39, 109)));
+ Table.States (87).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (87), 36, (69, 4), 110);
+ Table.States (87).Kernel := To_Vector ((0 => ((69, 4), 18, 1,
(32767, 0), 0)));
+ Table.States (87).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (69, 4), 36, 110)));
+ Table.States (88).Action_List.Set_Capacity (4);
+ Add_Action (Table.States (88), 11, Reduce, (60, 0), 0);
+ Add_Action (Table.States (88), 15, Reduce, (60, 0), 0);
+ Add_Action (Table.States (88), 22, Reduce, (60, 0), 0);
+ Add_Action (Table.States (88), 39, (60, 1), 111);
+ Table.States (88).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (88), 60, 112);
+ Table.States (88).Kernel := To_Vector ((((63, 0), 20, 3, (32767,
0), 0), ((64, 0), 20, 4, (32767, 0),
+ 0), ((65, 0), 20, 2, (32767, 0), 0)));
+ Table.States (88).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 0), 0)));
+ Table.States (89).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (89), 39, (74, 0), 113);
+ Table.States (89).Kernel := To_Vector ((0 => ((74, 0), 25, 5,
(32767, 0), 0)));
+ Table.States (89).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (74, 0), 39, 113)));
+ Table.States (90).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (90), 30, (69, 1), 114);
+ Add_Action (Table.States (90), 31, (69, 0), 115);
+ Table.States (90).Kernel := To_Vector ((((69, 0), 39, 2, (32767,
0), 0), ((69, 1), 39, 4, (32767, 0),
+ 0)));
+ Table.States (90).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (69, 0), 31, 115)));
+ Table.States (91).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (91), (8, 10, 14, 18, 20, 25, 39), (69,
2), 1);
+ Table.States (91).Kernel := To_Vector ((0 => ((69, 2), 44, 0,
(69, 2), 1)));
+ Table.States (91).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (69, 2), 1)));
+ Table.States (92).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (92), (8, 10, 14, 18, 20, 25, 39), (69,
3), 1);
+ Table.States (92).Kernel := To_Vector ((0 => ((69, 3), 47, 0,
(69, 3), 1)));
+ Table.States (92).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (69, 3), 1)));
+ Table.States (93).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (93), (8, 10, 14, 18, 20, 25, 39), (54,
0), 1);
+ Table.States (93).Kernel := To_Vector ((0 => ((54, 0), 53, 0,
(54, 0), 1)));
+ Table.States (93).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (54, 0), 1)));
+ Table.States (94).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (94), 8, (47, 0), 85);
+ Add_Action (Table.States (94), 10, Reduce, (55, 1), 1);
+ Add_Action (Table.States (94), 14, (44, 0), 86);
+ Add_Action (Table.States (94), 18, (69, 4), 87);
+ Add_Action (Table.States (94), 20, (63, 0), 88);
+ Add_Action (Table.States (94), 25, (74, 0), 89);
+ Add_Action (Table.States (94), 39, (69, 0), 90);
+ Table.States (94).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (94), 44, 91);
+ Add_Goto (Table.States (94), 47, 92);
+ Add_Goto (Table.States (94), 53, 116);
+ Add_Goto (Table.States (94), 62, 96);
+ Add_Goto (Table.States (94), 63, 97);
+ Add_Goto (Table.States (94), 64, 98);
+ Add_Goto (Table.States (94), 65, 99);
+ Add_Goto (Table.States (94), 69, 100);
+ Add_Goto (Table.States (94), 74, 101);
+ Table.States (94).Kernel := To_Vector ((((54, 1), 54, 2, (32767,
0), 0), ((55, 1), 54, 0, (55, 1),
+ 1)));
+ Table.States (94).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (55, 1), 1)));
+ Table.States (95).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (95), 10, (70, 0), 117);
+ Table.States (95).Kernel := To_Vector ((0 => ((70, 0), 55, 2,
(32767, 0), 0)));
+ Table.States (95).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (70, 0), 10, 117)));
+ Table.States (96).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (96), (8, 10, 14, 18, 20, 25, 39), (53,
2), 1);
+ Table.States (96).Kernel := To_Vector ((0 => ((53, 2), 62, 0,
(53, 2), 1)));
+ Table.States (96).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (53, 2), 1)));
+ Table.States (97).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (97), (8, 10, 14, 18, 20, 25, 39), (62,
0), 1);
+ Table.States (97).Kernel := To_Vector ((0 => ((62, 0), 63, 0,
(62, 0), 1)));
+ Table.States (97).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (62, 0), 1)));
+ Table.States (98).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (98), (8, 10, 14, 18, 20, 25, 39), (62,
1), 1);
+ Table.States (98).Kernel := To_Vector ((0 => ((62, 1), 64, 0,
(62, 1), 1)));
+ Table.States (98).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (62, 1), 1)));
+ Table.States (99).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (99), (8, 10, 14, 18, 20, 25, 39), (62,
2), 1);
+ Table.States (99).Kernel := To_Vector ((0 => ((62, 2), 65, 0,
(62, 2), 1)));
+ Table.States (99).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (62, 2), 1)));
+ Table.States (100).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (100), (8, 10, 14, 18, 20, 25, 39), (53,
0), 1);
+ Table.States (100).Kernel := To_Vector ((0 => ((53, 0), 69, 0,
(53, 0), 1)));
+ Table.States (100).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (53, 0), 1)));
+ Table.States (101).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (101), (8, 10, 14, 18, 20, 25, 39), (53,
1), 1);
+ Table.States (101).Kernel := To_Vector ((0 => ((53, 1), 74, 0,
(53, 1), 1)));
+ Table.States (101).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (53, 1), 1)));
+ Table.States (102).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (102), 23, (46, 1), 118);
+ Table.States (102).Kernel := To_Vector ((0 => ((46, 1), 40, 1,
(32767, 0), 0)));
+ Table.States (102).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 1), 23, 118)));
+ Table.States (103).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (103), (29, 32, 36), (46, 1), 6);
+ Table.States (103).Kernel := To_Vector ((0 => ((46, 1), 23, 0,
(46, 1), 6)));
+ Table.States (103).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (46, 1), 6)));
+ end Subr_2;
+ procedure Subr_3
+ is begin
+ Table.States (104).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (104), 8, (47, 0), 85);
+ Add_Action (Table.States (104), 10, Reduce, (55, 0), 0);
+ Add_Action (Table.States (104), 14, (44, 0), 86);
+ Add_Action (Table.States (104), 18, (69, 4), 87);
+ Add_Action (Table.States (104), 20, (63, 0), 88);
+ Add_Action (Table.States (104), 25, (74, 0), 89);
+ Add_Action (Table.States (104), 39, (69, 0), 90);
+ Table.States (104).Goto_List.Set_Capacity (11);
+ Add_Goto (Table.States (104), 44, 91);
+ Add_Goto (Table.States (104), 47, 92);
+ Add_Goto (Table.States (104), 53, 93);
+ Add_Goto (Table.States (104), 54, 94);
+ Add_Goto (Table.States (104), 55, 119);
+ Add_Goto (Table.States (104), 62, 96);
+ Add_Goto (Table.States (104), 63, 97);
+ Add_Goto (Table.States (104), 64, 98);
+ Add_Goto (Table.States (104), 65, 99);
+ Add_Goto (Table.States (104), 69, 100);
+ Add_Goto (Table.States (104), 74, 101);
+ Table.States (104).Kernel := To_Vector ((0 => ((67, 0), 15, 2,
(32767, 0), 0)));
+ Table.States (104).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (55, 0), 0)));
+ Table.States (105).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (105), (15, 33), (60, 1), 1);
+ Table.States (105).Kernel := To_Vector ((0 => ((60, 1), 39, 0,
(60, 1), 1)));
+ Table.States (105).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 1), 1)));
+ Table.States (106).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (106), (15, 33), (61, 0), 1);
+ Table.States (106).Kernel := To_Vector ((0 => ((61, 0), 60, 0,
(61, 0), 1)));
+ Table.States (106).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 0), 1)));
+ Table.States (107).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (107), 15, (47, 0), 120);
+ Add_Action (Table.States (107), 33, (61, 1), 121);
+ Table.States (107).Kernel := To_Vector ((((47, 0), 61, 4,
(32767, 0), 0), ((61, 1), 61, 2, (32767, 0),
+ 0)));
+ Table.States (107).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (47, 0), 15, 120)));
+ Table.States (108).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (108), 16, (44, 3), 122);
+ Table.States (108).Kernel := To_Vector ((0 => ((44, 3), 12, 5,
(32767, 0), 0)));
+ Table.States (108).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 3), 16, 122)));
+ Table.States (109).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (109), 16, (44, 1), 123);
+ Add_Action (Table.States (109), 26, (44, 0), 124);
+ Table.States (109).Kernel := To_Vector ((((44, 0), 39, 2,
(32767, 0), 0), ((44, 1), 39, 4, (32767, 0),
+ 0), ((44, 2), 39, 6, (32767, 0), 0)));
+ Table.States (109).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 0), 26, 124)));
+ Table.States (110).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (110), (8, 10, 14, 18, 20, 25, 39), (69,
4), 2);
+ Table.States (110).Kernel := To_Vector ((0 => ((69, 4), 36, 0,
(69, 4), 2)));
+ Table.States (110).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (69, 4), 2)));
+ Table.States (111).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (111), (11, 15, 22), (60, 1), 1);
+ Table.States (111).Kernel := To_Vector ((0 => ((60, 1), 39, 0,
(60, 1), 1)));
+ Table.States (111).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 1), 1)));
+ Table.States (112).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (112), 11, (64, 0), 125);
+ Add_Action (Table.States (112), 15, (63, 0), 126);
+ Add_Action (Table.States (112), 22, (65, 0), 127);
+ Table.States (112).Kernel := To_Vector ((((63, 0), 60, 3,
(32767, 0), 0), ((64, 0), 60, 4, (32767, 0),
+ 0), ((65, 0), 60, 2, (32767, 0), 0)));
+ Table.States (112).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (65, 0), 22, 127)));
+ Table.States (113).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (113), 15, (74, 0), 128);
+ Table.States (113).Kernel := To_Vector ((0 => ((74, 0), 39, 4,
(32767, 0), 0)));
+ Table.States (113).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (74, 0), 15, 128)));
+ Table.States (114).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (114), 39, (69, 1), 129);
+ Table.States (114).Kernel := To_Vector ((0 => ((69, 1), 30, 3,
(32767, 0), 0)));
+ Table.States (114).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (69, 1), 39, 129)));
+ Table.States (115).Action_List.Set_Capacity (10);
+ Add_Action (Table.States (115), 12, (59, 0), 130);
+ Add_Action (Table.States (115), 13, (59, 1), 131);
+ Add_Action (Table.States (115), 16, (43, 0), 132);
+ Add_Action (Table.States (115), 21, (45, 0), 9);
+ Add_Action (Table.States (115), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (115), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (115), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (115), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (115), 39, (60, 1), 133);
+ Add_Action (Table.States (115), 40, (71, 0), 134);
+ Table.States (115).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (115), 43, 135);
+ Add_Goto (Table.States (115), 45, 136);
+ Add_Goto (Table.States (115), 46, 137);
+ Add_Goto (Table.States (115), 58, 138);
+ Add_Goto (Table.States (115), 59, 139);
+ Add_Goto (Table.States (115), 60, 140);
+ Add_Goto (Table.States (115), 61, 141);
+ Add_Goto (Table.States (115), 71, 142);
+ Add_Goto (Table.States (115), 73, 143);
+ Table.States (115).Kernel := To_Vector ((0 => ((69, 0), 31, 1,
(32767, 0), 0)));
+ Table.States (115).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 0)));
+ Table.States (116).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (116), (8, 10, 14, 18, 20, 25, 39), (54,
1), 2);
+ Table.States (116).Kernel := To_Vector ((0 => ((54, 1), 53, 0,
(54, 1), 2)));
+ Table.States (116).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (54, 1), 2)));
+ Table.States (117).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (117), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (117), 39, (60, 1), 144);
+ Table.States (117).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (117), 60, 145);
+ Table.States (117).Kernel := To_Vector ((0 => ((70, 0), 10, 1,
(32767, 0), 0)));
+ Table.States (117).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 0), 0)));
+ Table.States (118).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (118), (23, 29, 32), (46, 1), 6);
+ Table.States (118).Kernel := To_Vector ((0 => ((46, 1), 23, 0,
(46, 1), 6)));
+ Table.States (118).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (46, 1), 6)));
+ Table.States (119).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (119), 10, (67, 0), 146);
+ Table.States (119).Kernel := To_Vector ((0 => ((67, 0), 55, 2,
(32767, 0), 0)));
+ Table.States (119).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (67, 0), 10, 146)));
+ Table.States (120).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (120), 10, Reduce, (49, 0), 0);
+ Add_Action (Table.States (120), 27, (48, 0), 147);
+ Add_Conflict (Table.States (120), 27, (49, 0), 0);
+ Table.States (120).Goto_List.Set_Capacity (2);
+ Add_Goto (Table.States (120), 48, 148);
+ Add_Goto (Table.States (120), 49, 149);
+ Table.States (120).Kernel := To_Vector ((0 => ((47, 0), 15, 3,
(32767, 0), 0)));
+ Table.States (120).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (49, 0), 0)));
+ Table.States (121).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (121), 39, (61, 1), 150);
+ Table.States (121).Kernel := To_Vector ((0 => ((61, 1), 33, 1,
(32767, 0), 0)));
+ Table.States (121).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (61, 1), 39, 150)));
+ Table.States (122).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (122), 40, (44, 3), 151);
+ Table.States (122).Kernel := To_Vector ((0 => ((44, 3), 16, 4,
(32767, 0), 0)));
+ Table.States (122).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 3), 40, 151)));
+ Table.States (123).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (123), 19, (56, 2), 152);
+ Add_Action (Table.States (123), 23, Reduce, (56, 0), 0);
+ Add_Action (Table.States (123), 40, (56, 1), 153);
+ Table.States (123).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (123), 56, 154);
+ Table.States (123).Kernel := To_Vector ((((44, 1), 16, 3,
(32767, 0), 0), ((44, 2), 16, 5, (32767, 0),
+ 0)));
+ Table.States (123).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (56, 0), 0)));
+ Table.States (124).Action_List.Set_Capacity (10);
+ Add_Action (Table.States (124), 12, (59, 0), 130);
+ Add_Action (Table.States (124), 13, (59, 1), 131);
+ Add_Action (Table.States (124), 16, (43, 0), 132);
+ Add_Action (Table.States (124), 21, (45, 0), 9);
+ Add_Action (Table.States (124), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (124), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (124), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (124), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (124), 39, (60, 1), 133);
+ Add_Action (Table.States (124), 40, (71, 0), 134);
+ Table.States (124).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (124), 43, 135);
+ Add_Goto (Table.States (124), 45, 136);
+ Add_Goto (Table.States (124), 46, 137);
+ Add_Goto (Table.States (124), 58, 155);
+ Add_Goto (Table.States (124), 59, 139);
+ Add_Goto (Table.States (124), 60, 140);
+ Add_Goto (Table.States (124), 61, 141);
+ Add_Goto (Table.States (124), 71, 142);
+ Add_Goto (Table.States (124), 73, 143);
+ Table.States (124).Kernel := To_Vector ((0 => ((44, 0), 26, 1,
(32767, 0), 0)));
+ Table.States (124).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 0)));
+ Table.States (125).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (125), 15, Reduce, (60, 0), 0);
+ Add_Action (Table.States (125), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (125), 39, (60, 1), 105);
+ Table.States (125).Goto_List.Set_Capacity (2);
+ Add_Goto (Table.States (125), 60, 106);
+ Add_Goto (Table.States (125), 61, 156);
+ Table.States (125).Kernel := To_Vector ((0 => ((64, 0), 11, 3,
(32767, 0), 0)));
+ Table.States (125).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 0), 0)));
+ Table.States (126).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (126), 8, (47, 0), 85);
+ Add_Action (Table.States (126), 10, Reduce, (55, 0), 0);
+ Add_Action (Table.States (126), 14, (44, 0), 86);
+ Add_Action (Table.States (126), 18, (69, 4), 87);
+ Add_Action (Table.States (126), 20, (63, 0), 88);
+ Add_Action (Table.States (126), 25, (74, 0), 89);
+ Add_Action (Table.States (126), 39, (69, 0), 90);
+ Table.States (126).Goto_List.Set_Capacity (11);
+ Add_Goto (Table.States (126), 44, 91);
+ Add_Goto (Table.States (126), 47, 92);
+ Add_Goto (Table.States (126), 53, 93);
+ Add_Goto (Table.States (126), 54, 94);
+ Add_Goto (Table.States (126), 55, 157);
+ Add_Goto (Table.States (126), 62, 96);
+ Add_Goto (Table.States (126), 63, 97);
+ Add_Goto (Table.States (126), 64, 98);
+ Add_Goto (Table.States (126), 65, 99);
+ Add_Goto (Table.States (126), 69, 100);
+ Add_Goto (Table.States (126), 74, 101);
+ Table.States (126).Kernel := To_Vector ((0 => ((63, 0), 15, 2,
(32767, 0), 0)));
+ Table.States (126).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (55, 0), 0)));
+ Table.States (127).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (127), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (127), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (127), 39, (60, 1), 158);
+ Table.States (127).Goto_List.Set_Capacity (2);
+ Add_Goto (Table.States (127), 60, 159);
+ Add_Goto (Table.States (127), 61, 160);
+ Table.States (127).Kernel := To_Vector ((0 => ((65, 0), 22, 1,
(32767, 0), 0)));
+ Table.States (127).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 0), 0)));
+ Table.States (128).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (128), 16, (43, 0), 161);
+ Table.States (128).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (128), 43, 162);
+ Table.States (128).Kernel := To_Vector ((0 => ((74, 0), 15, 3,
(32767, 0), 0)));
+ Table.States (128).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 16, 161)));
+ Table.States (129).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (129), 31, (69, 1), 163);
+ Table.States (129).Kernel := To_Vector ((0 => ((69, 1), 39, 2,
(32767, 0), 0)));
+ Table.States (129).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (69, 1), 31, 163)));
+ Table.States (130).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (130), 16, (43, 0), 164);
+ Table.States (130).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (130), 43, 165);
+ Table.States (130).Kernel := To_Vector ((0 => ((59, 0), 12, 2,
(32767, 0), 0)));
+ Table.States (130).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 16, 164)));
+ Table.States (131).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (131), 16, (43, 0), 164);
+ Table.States (131).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (131), 43, 166);
+ Table.States (131).Kernel := To_Vector ((0 => ((59, 1), 13, 2,
(32767, 0), 0)));
+ Table.States (131).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 16, 164)));
+ Table.States (132).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (132), 12, (59, 0), 32);
+ Add_Action (Table.States (132), 13, (59, 1), 33);
+ Add_Action (Table.States (132), 16, (43, 0), 34);
+ Add_Action (Table.States (132), 21, (45, 0), 9);
+ Add_Action (Table.States (132), 23, (73, 1), 167);
+ Add_Conflict (Table.States (132), 23, (60, 0), 0);
+ Add_Action (Table.States (132), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (132), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (132), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (132), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (132), 39, (60, 1), 36);
+ Add_Action (Table.States (132), 40, (71, 0), 37);
+ Table.States (132).Goto_List.Set_Capacity (10);
+ Add_Goto (Table.States (132), 43, 38);
+ Add_Goto (Table.States (132), 45, 39);
+ Add_Goto (Table.States (132), 46, 40);
+ Add_Goto (Table.States (132), 58, 41);
+ Add_Goto (Table.States (132), 59, 42);
+ Add_Goto (Table.States (132), 60, 43);
+ Add_Goto (Table.States (132), 61, 44);
+ Add_Goto (Table.States (132), 71, 45);
+ Add_Goto (Table.States (132), 72, 168);
+ Add_Goto (Table.States (132), 73, 47);
+ Table.States (132).Kernel := To_Vector ((((43, 0), 16, 1,
(32767, 0), 0), ((73, 1), 16, 1, (32767, 0),
+ 0)));
+ Table.States (132).Minimal_Complete_Actions := To_Vector
(((Reduce, (72, 0), 0), (Shift, (73, 1), 23,
+ 167)));
+ Table.States (133).Action_List.Set_Capacity (4);
+ Add_Action (Table.States (133), (29, 33, 35, 36), (60, 1), 1);
+ Table.States (133).Kernel := To_Vector ((0 => ((60, 1), 39, 0,
(60, 1), 1)));
+ Table.States (133).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 1), 1)));
+ Table.States (134).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (134), (29, 36), (71, 0), 1);
+ Table.States (134).Kernel := To_Vector ((0 => ((71, 0), 40, 0,
(71, 0), 1)));
+ Table.States (134).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (71, 0), 1)));
+ Table.States (135).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (135), (29, 36), (73, 2), 1);
+ Table.States (135).Kernel := To_Vector ((0 => ((73, 2), 43, 0,
(73, 2), 1)));
+ Table.States (135).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 2), 1)));
+ Table.States (136).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (136), 35, (46, 0), 169);
+ Table.States (136).Kernel := To_Vector ((((46, 0), 45, 2,
(32767, 0), 0), ((46, 1), 45, 5, (32767, 0),
+ 0)));
+ Table.States (136).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 0), 35, 169)));
+ Table.States (137).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (137), (29, 36), (71, 3), 1);
+ Table.States (137).Kernel := To_Vector ((0 => ((71, 3), 46, 0,
(71, 3), 1)));
+ Table.States (137).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (71, 3), 1)));
+ Table.States (138).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (138), 29, (58, 1), 170);
+ Add_Action (Table.States (138), 36, (69, 0), 171);
+ Table.States (138).Kernel := To_Vector ((((58, 1), 58, 1,
(32767, 0), 0), ((69, 0), 58, 1, (32767, 0),
+ 0)));
+ Table.States (138).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (69, 0), 36, 171)));
+ Table.States (139).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (139), (29, 36), (71, 2), 1);
+ Table.States (139).Kernel := To_Vector ((0 => ((71, 2), 59, 0,
(71, 2), 1)));
+ Table.States (139).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (71, 2), 1)));
+ Table.States (140).Action_List.Set_Capacity (4);
+ Add_Action (Table.States (140), (29, 33, 35, 36), (61, 0), 1);
+ Table.States (140).Kernel := To_Vector ((0 => ((61, 0), 60, 0,
(61, 0), 1)));
+ Table.States (140).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 0), 1)));
+ Table.States (141).Action_List.Set_Capacity (4);
+ Add_Action (Table.States (141), 29, Reduce, (71, 1), 1);
+ Add_Action (Table.States (141), 33, (61, 1), 172);
+ Add_Action (Table.States (141), 35, Reduce, (45, 1), 1);
+ Add_Action (Table.States (141), 36, Reduce, (71, 1), 1);
+ Table.States (141).Kernel := To_Vector ((((45, 1), 61, 0, (45,
1), 1), ((61, 1), 61, 2, (32767, 0),
+ 0), ((71, 1), 61, 0, (71, 1), 1)));
+ Table.States (141).Minimal_Complete_Actions := To_Vector
(((Reduce, (45, 1), 1), (Reduce, (71, 1), 1)));
+ Table.States (142).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (142), (29, 36), (73, 0), 1);
+ Table.States (142).Kernel := To_Vector ((0 => ((73, 0), 71, 0,
(73, 0), 1)));
+ Table.States (142).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 0), 1)));
+ Table.States (143).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (143), (29, 36), (58, 0), 1);
+ Table.States (143).Kernel := To_Vector ((0 => ((58, 0), 73, 0,
(58, 0), 1)));
+ Table.States (143).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 1)));
+ Table.States (144).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (144), (1 => 36), (60, 1), 1);
+ Table.States (144).Kernel := To_Vector ((0 => ((60, 1), 39, 0,
(60, 1), 1)));
+ Table.States (144).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 1), 1)));
+ Table.States (145).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (145), 36, (70, 0), 173);
+ Table.States (145).Kernel := To_Vector ((0 => ((70, 0), 60, 1,
(32767, 0), 0)));
+ Table.States (145).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (70, 0), 36, 173)));
+ Table.States (146).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (146), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (146), 39, (60, 1), 144);
+ Table.States (146).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (146), 60, 174);
+ Table.States (146).Kernel := To_Vector ((0 => ((67, 0), 10, 1,
(32767, 0), 0)));
+ Table.States (146).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 0), 0)));
+ Table.States (147).Action_List.Set_Capacity (4);
+ Add_Action (Table.States (147), 19, (56, 2), 175);
+ Add_Action (Table.States (147), 34, Reduce, (56, 0), 0);
+ Add_Action (Table.States (147), 37, Reduce, (56, 0), 0);
+ Add_Action (Table.States (147), 40, (56, 1), 176);
+ Table.States (147).Goto_List.Set_Capacity (2);
+ Add_Goto (Table.States (147), 56, 177);
+ Add_Goto (Table.States (147), 57, 178);
+ Table.States (147).Kernel := To_Vector ((0 => ((48, 0), 27, 1,
(32767, 0), 0)));
+ Table.States (147).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (57, 0), 0)));
+ Table.States (148).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (148), (10, 27), (49, 1), 1);
+ Table.States (148).Kernel := To_Vector ((0 => ((49, 1), 48, 0,
(49, 1), 1)));
+ Table.States (148).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (49, 1), 1)));
+ Table.States (149).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (149), 10, (47, 0), 179);
+ Add_Action (Table.States (149), 27, (48, 0), 147);
+ Table.States (149).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (149), 48, 180);
+ Table.States (149).Kernel := To_Vector ((((47, 0), 49, 3,
(32767, 0), 0), ((49, 2), 49, 2, (32767, 0),
+ 0)));
+ Table.States (149).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (47, 0), 10, 179)));
+ Table.States (150).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (150), (15, 33), (61, 1), 3);
+ Table.States (150).Kernel := To_Vector ((0 => ((61, 1), 39, 0,
(61, 1), 3)));
+ Table.States (150).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 1), 3)));
+ Table.States (151).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (151), 23, (44, 3), 181);
+ Table.States (151).Kernel := To_Vector ((0 => ((44, 3), 40, 3,
(32767, 0), 0)));
+ Table.States (151).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 3), 23, 181)));
+ Table.States (152).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (152), (1 => 23), (56, 2), 1);
+ Table.States (152).Kernel := To_Vector ((0 => ((56, 2), 19, 0,
(56, 2), 1)));
+ Table.States (152).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (56, 2), 1)));
+ Table.States (153).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (153), (1 => 23), (56, 1), 1);
+ Table.States (153).Kernel := To_Vector ((0 => ((56, 1), 40, 0,
(56, 1), 1)));
+ Table.States (153).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (56, 1), 1)));
+ Table.States (154).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (154), 23, (44, 1), 182);
+ Table.States (154).Kernel := To_Vector ((((44, 1), 56, 3,
(32767, 0), 0), ((44, 2), 56, 5, (32767, 0),
+ 0)));
+ Table.States (154).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 1), 23, 182)));
+ Table.States (155).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (155), 29, (58, 1), 170);
+ Add_Action (Table.States (155), 36, (44, 0), 183);
+ Table.States (155).Kernel := To_Vector ((((44, 0), 58, 1,
(32767, 0), 0), ((58, 1), 58, 1, (32767, 0),
+ 0)));
+ Table.States (155).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 0), 36, 183)));
+ Table.States (156).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (156), 15, (64, 0), 184);
+ Add_Action (Table.States (156), 33, (61, 1), 121);
+ Table.States (156).Kernel := To_Vector ((((61, 1), 61, 2,
(32767, 0), 0), ((64, 0), 61, 3, (32767, 0),
+ 0)));
+ Table.States (156).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (64, 0), 15, 184)));
+ Table.States (157).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (157), 10, (63, 0), 185);
+ Table.States (157).Kernel := To_Vector ((0 => ((63, 0), 55, 2,
(32767, 0), 0)));
+ Table.States (157).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (63, 0), 10, 185)));
+ Table.States (158).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (158), (33, 36), (60, 1), 1);
+ Table.States (158).Kernel := To_Vector ((0 => ((60, 1), 39, 0,
(60, 1), 1)));
+ Table.States (158).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 1), 1)));
+ end Subr_3;
+ procedure Subr_4
+ is begin
+ Table.States (159).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (159), (33, 36), (61, 0), 1);
+ Table.States (159).Kernel := To_Vector ((0 => ((61, 0), 60, 0,
(61, 0), 1)));
+ Table.States (159).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 0), 1)));
+ Table.States (160).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (160), 33, (61, 1), 186);
+ Add_Action (Table.States (160), 36, (65, 0), 187);
+ Table.States (160).Kernel := To_Vector ((((61, 1), 61, 2,
(32767, 0), 0), ((65, 0), 61, 1, (32767, 0),
+ 0)));
+ Table.States (160).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (65, 0), 36, 187)));
+ Table.States (161).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (161), 12, (59, 0), 32);
+ Add_Action (Table.States (161), 13, (59, 1), 33);
+ Add_Action (Table.States (161), 16, (43, 0), 34);
+ Add_Action (Table.States (161), 21, (45, 0), 9);
+ Add_Action (Table.States (161), 23, Reduce, (60, 0), 0);
+ Add_Action (Table.States (161), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (161), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (161), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (161), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (161), 39, (60, 1), 36);
+ Add_Action (Table.States (161), 40, (71, 0), 37);
+ Table.States (161).Goto_List.Set_Capacity (10);
+ Add_Goto (Table.States (161), 43, 38);
+ Add_Goto (Table.States (161), 45, 39);
+ Add_Goto (Table.States (161), 46, 40);
+ Add_Goto (Table.States (161), 58, 41);
+ Add_Goto (Table.States (161), 59, 42);
+ Add_Goto (Table.States (161), 60, 43);
+ Add_Goto (Table.States (161), 61, 44);
+ Add_Goto (Table.States (161), 71, 45);
+ Add_Goto (Table.States (161), 72, 188);
+ Add_Goto (Table.States (161), 73, 47);
+ Table.States (161).Kernel := To_Vector ((0 => ((43, 0), 16, 1,
(32767, 0), 0)));
+ Table.States (161).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (72, 0), 0)));
+ Table.States (162).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (162), 36, (74, 0), 189);
+ Table.States (162).Kernel := To_Vector ((0 => ((74, 0), 43, 1,
(32767, 0), 0)));
+ Table.States (162).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (74, 0), 36, 189)));
+ Table.States (163).Action_List.Set_Capacity (10);
+ Add_Action (Table.States (163), 12, (59, 0), 130);
+ Add_Action (Table.States (163), 13, (59, 1), 131);
+ Add_Action (Table.States (163), 16, (43, 0), 132);
+ Add_Action (Table.States (163), 21, (45, 0), 9);
+ Add_Action (Table.States (163), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (163), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (163), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (163), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (163), 39, (60, 1), 133);
+ Add_Action (Table.States (163), 40, (71, 0), 134);
+ Table.States (163).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (163), 43, 135);
+ Add_Goto (Table.States (163), 45, 136);
+ Add_Goto (Table.States (163), 46, 137);
+ Add_Goto (Table.States (163), 58, 190);
+ Add_Goto (Table.States (163), 59, 139);
+ Add_Goto (Table.States (163), 60, 140);
+ Add_Goto (Table.States (163), 61, 141);
+ Add_Goto (Table.States (163), 71, 142);
+ Add_Goto (Table.States (163), 73, 143);
+ Table.States (163).Kernel := To_Vector ((0 => ((69, 1), 31, 1,
(32767, 0), 0)));
+ Table.States (163).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 0)));
+ Table.States (164).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (164), 12, (59, 0), 32);
+ Add_Action (Table.States (164), 13, (59, 1), 33);
+ Add_Action (Table.States (164), 16, (43, 0), 34);
+ Add_Action (Table.States (164), 21, (45, 0), 9);
+ Add_Action (Table.States (164), 23, Reduce, (60, 0), 0);
+ Add_Action (Table.States (164), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (164), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (164), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (164), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (164), 39, (60, 1), 36);
+ Add_Action (Table.States (164), 40, (71, 0), 37);
+ Table.States (164).Goto_List.Set_Capacity (10);
+ Add_Goto (Table.States (164), 43, 38);
+ Add_Goto (Table.States (164), 45, 39);
+ Add_Goto (Table.States (164), 46, 40);
+ Add_Goto (Table.States (164), 58, 41);
+ Add_Goto (Table.States (164), 59, 42);
+ Add_Goto (Table.States (164), 60, 43);
+ Add_Goto (Table.States (164), 61, 44);
+ Add_Goto (Table.States (164), 71, 45);
+ Add_Goto (Table.States (164), 72, 168);
+ Add_Goto (Table.States (164), 73, 47);
+ Table.States (164).Kernel := To_Vector ((0 => ((43, 0), 16, 1,
(32767, 0), 0)));
+ Table.States (164).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (72, 0), 0)));
+ Table.States (165).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (165), (29, 36), (59, 0), 2);
+ Table.States (165).Kernel := To_Vector ((0 => ((59, 0), 43, 0,
(59, 0), 2)));
+ Table.States (165).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (59, 0), 2)));
+ Table.States (166).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (166), (29, 36), (59, 1), 2);
+ Table.States (166).Kernel := To_Vector ((0 => ((59, 1), 43, 0,
(59, 1), 2)));
+ Table.States (166).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (59, 1), 2)));
+ Table.States (167).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (167), (29, 36), (73, 1), 2);
+ Table.States (167).Kernel := To_Vector ((0 => ((73, 1), 23, 0,
(73, 1), 2)));
+ Table.States (167).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 1), 2)));
+ Table.States (168).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (168), 23, (43, 0), 191);
+ Add_Action (Table.States (168), 32, (72, 1), 67);
+ Table.States (168).Kernel := To_Vector ((((43, 0), 72, 1,
(32767, 0), 0), ((72, 1), 72, 1, (32767, 0),
+ 0)));
+ Table.States (168).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 23, 191)));
+ Table.States (169).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (169), 39, (46, 0), 192);
+ Table.States (169).Kernel := To_Vector ((((46, 0), 35, 1,
(32767, 0), 0), ((46, 1), 35, 4, (32767, 0),
+ 0)));
+ Table.States (169).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 0), 39, 192)));
+ Table.States (170).Action_List.Set_Capacity (10);
+ Add_Action (Table.States (170), 12, (59, 0), 130);
+ Add_Action (Table.States (170), 13, (59, 1), 131);
+ Add_Action (Table.States (170), 16, (43, 0), 132);
+ Add_Action (Table.States (170), 21, (45, 0), 9);
+ Add_Action (Table.States (170), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (170), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (170), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (170), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (170), 39, (60, 1), 133);
+ Add_Action (Table.States (170), 40, (71, 0), 134);
+ Table.States (170).Goto_List.Set_Capacity (8);
+ Add_Goto (Table.States (170), 43, 135);
+ Add_Goto (Table.States (170), 45, 136);
+ Add_Goto (Table.States (170), 46, 137);
+ Add_Goto (Table.States (170), 59, 139);
+ Add_Goto (Table.States (170), 60, 140);
+ Add_Goto (Table.States (170), 61, 141);
+ Add_Goto (Table.States (170), 71, 142);
+ Add_Goto (Table.States (170), 73, 193);
+ Table.States (170).Kernel := To_Vector ((0 => ((58, 1), 29, 0,
(73, 0), 0)));
+ Table.States (170).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 0), 0)));
+ Table.States (171).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (171), (8, 10, 14, 18, 20, 25, 39), (69,
0), 4);
+ Table.States (171).Kernel := To_Vector ((0 => ((69, 0), 36, 0,
(69, 0), 4)));
+ Table.States (171).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (69, 0), 4)));
+ Table.States (172).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (172), 39, (61, 1), 194);
+ Table.States (172).Kernel := To_Vector ((0 => ((61, 1), 33, 1,
(32767, 0), 0)));
+ Table.States (172).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (61, 1), 39, 194)));
+ Table.States (173).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (173), (1 => 41), (70, 0), 7);
+ Table.States (173).Kernel := To_Vector ((0 => ((70, 0), 36, 0,
(70, 0), 7)));
+ Table.States (173).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (70, 0), 7)));
+ Table.States (174).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (174), 36, (67, 0), 195);
+ Table.States (174).Kernel := To_Vector ((0 => ((67, 0), 60, 1,
(32767, 0), 0)));
+ Table.States (174).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (67, 0), 36, 195)));
+ Table.States (175).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (175), (34, 37), (56, 2), 1);
+ Table.States (175).Kernel := To_Vector ((0 => ((56, 2), 19, 0,
(56, 2), 1)));
+ Table.States (175).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (56, 2), 1)));
+ Table.States (176).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (176), (34, 37), (56, 1), 1);
+ Table.States (176).Kernel := To_Vector ((0 => ((56, 1), 40, 0,
(56, 1), 1)));
+ Table.States (176).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (56, 1), 1)));
+ Table.States (177).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (177), (34, 37), (57, 0), 1);
+ Table.States (177).Kernel := To_Vector ((0 => ((57, 0), 56, 0,
(57, 0), 1)));
+ Table.States (177).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (57, 0), 1)));
+ Table.States (178).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (178), 34, (48, 0), 196);
+ Add_Action (Table.States (178), 37, (57, 1), 197);
+ Table.States (178).Kernel := To_Vector ((((48, 0), 57, 1,
(32767, 0), 0), ((57, 1), 57, 1, (32767, 0),
+ 0)));
+ Table.States (178).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (48, 0), 34, 196)));
+ Table.States (179).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (179), 8, (47, 0), 198);
+ Table.States (179).Kernel := To_Vector ((0 => ((47, 0), 10, 2,
(32767, 0), 0)));
+ Table.States (179).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (47, 0), 8, 198)));
+ Table.States (180).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (180), (10, 27), (49, 2), 2);
+ Table.States (180).Kernel := To_Vector ((0 => ((49, 2), 48, 0,
(49, 2), 2)));
+ Table.States (180).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (49, 2), 2)));
+ Table.States (181).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (181), 26, (44, 3), 199);
+ Table.States (181).Kernel := To_Vector ((0 => ((44, 3), 23, 2,
(32767, 0), 0)));
+ Table.States (181).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 3), 26, 199)));
+ Table.States (182).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (182), 26, (44, 1), 200);
+ Table.States (182).Kernel := To_Vector ((((44, 1), 23, 2,
(32767, 0), 0), ((44, 2), 23, 4, (32767, 0),
+ 0)));
+ Table.States (182).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 1), 26, 200)));
+ Table.States (183).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (183), (8, 10, 14, 18, 20, 25, 39), (44,
0), 5);
+ Table.States (183).Kernel := To_Vector ((0 => ((44, 0), 36, 0,
(44, 0), 5)));
+ Table.States (183).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (44, 0), 5)));
+ Table.States (184).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (184), 8, (47, 0), 85);
+ Add_Action (Table.States (184), 10, Reduce, (55, 0), 0);
+ Add_Action (Table.States (184), 14, (44, 0), 86);
+ Add_Action (Table.States (184), 18, (69, 4), 87);
+ Add_Action (Table.States (184), 20, (63, 0), 88);
+ Add_Action (Table.States (184), 25, (74, 0), 89);
+ Add_Action (Table.States (184), 39, (69, 0), 90);
+ Table.States (184).Goto_List.Set_Capacity (11);
+ Add_Goto (Table.States (184), 44, 91);
+ Add_Goto (Table.States (184), 47, 92);
+ Add_Goto (Table.States (184), 53, 93);
+ Add_Goto (Table.States (184), 54, 94);
+ Add_Goto (Table.States (184), 55, 201);
+ Add_Goto (Table.States (184), 62, 96);
+ Add_Goto (Table.States (184), 63, 97);
+ Add_Goto (Table.States (184), 64, 98);
+ Add_Goto (Table.States (184), 65, 99);
+ Add_Goto (Table.States (184), 69, 100);
+ Add_Goto (Table.States (184), 74, 101);
+ Table.States (184).Kernel := To_Vector ((0 => ((64, 0), 15, 2,
(32767, 0), 0)));
+ Table.States (184).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (55, 0), 0)));
+ Table.States (185).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (185), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (185), 39, (60, 1), 144);
+ Table.States (185).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (185), 60, 202);
+ Table.States (185).Kernel := To_Vector ((0 => ((63, 0), 10, 1,
(32767, 0), 0)));
+ Table.States (185).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 0), 0)));
+ Table.States (186).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (186), 39, (61, 1), 203);
+ Table.States (186).Kernel := To_Vector ((0 => ((61, 1), 33, 1,
(32767, 0), 0)));
+ Table.States (186).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (61, 1), 39, 203)));
+ Table.States (187).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (187), (8, 10, 14, 18, 20, 25, 39), (65,
0), 5);
+ Table.States (187).Kernel := To_Vector ((0 => ((65, 0), 36, 0,
(65, 0), 5)));
+ Table.States (187).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (65, 0), 5)));
+ Table.States (188).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (188), 23, (43, 0), 204);
+ Add_Action (Table.States (188), 32, (72, 1), 67);
+ Table.States (188).Kernel := To_Vector ((((43, 0), 72, 1,
(32767, 0), 0), ((72, 1), 72, 1, (32767, 0),
+ 0)));
+ Table.States (188).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 23, 204)));
+ Table.States (189).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (189), (8, 10, 14, 18, 20, 25, 39), (74,
0), 5);
+ Table.States (189).Kernel := To_Vector ((0 => ((74, 0), 36, 0,
(74, 0), 5)));
+ Table.States (189).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (74, 0), 5)));
+ Table.States (190).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (190), 29, (58, 1), 170);
+ Add_Action (Table.States (190), 36, (69, 1), 205);
+ Table.States (190).Kernel := To_Vector ((((58, 1), 58, 1,
(32767, 0), 0), ((69, 1), 58, 1, (32767, 0),
+ 0)));
+ Table.States (190).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (69, 1), 36, 205)));
+ Table.States (191).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (191), (29, 36), (43, 0), 3);
+ Table.States (191).Kernel := To_Vector ((0 => ((43, 0), 23, 0,
(43, 0), 3)));
+ Table.States (191).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (43, 0), 3)));
+ Table.States (192).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (192), 16, (46, 1), 206);
+ Add_Action (Table.States (192), 29, Reduce, (46, 0), 3);
+ Add_Action (Table.States (192), 36, Reduce, (46, 0), 3);
+ Table.States (192).Kernel := To_Vector ((((46, 0), 39, 0, (46,
0), 3), ((46, 1), 39, 3, (32767, 0),
+ 0)));
+ Table.States (192).Minimal_Complete_Actions := To_Vector
(((Reduce, (46, 0), 3), (Shift, (46, 1), 16,
+ 206)));
+ Table.States (193).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (193), (29, 36), (58, 1), 3);
+ Table.States (193).Kernel := To_Vector ((0 => ((58, 1), 73, 0,
(58, 1), 3)));
+ Table.States (193).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 1), 3)));
+ Table.States (194).Action_List.Set_Capacity (4);
+ Add_Action (Table.States (194), (29, 33, 35, 36), (61, 1), 3);
+ Table.States (194).Kernel := To_Vector ((0 => ((61, 1), 39, 0,
(61, 1), 3)));
+ Table.States (194).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 1), 3)));
+ Table.States (195).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (195), (1 => 41), (67, 0), 9);
+ Table.States (195).Kernel := To_Vector ((0 => ((67, 0), 36, 0,
(67, 0), 9)));
+ Table.States (195).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (67, 0), 9)));
+ Table.States (196).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (196), 8, (47, 0), 207);
+ Add_Action (Table.States (196), 10, Reduce, (55, 0), 0);
+ Add_Action (Table.States (196), 14, (44, 0), 208);
+ Add_Action (Table.States (196), 18, (69, 4), 209);
+ Add_Action (Table.States (196), 20, (63, 0), 210);
+ Add_Action (Table.States (196), 25, (74, 0), 211);
+ Add_Action (Table.States (196), 27, Reduce, (55, 0), 0);
+ Add_Action (Table.States (196), 39, (69, 0), 212);
+ Table.States (196).Goto_List.Set_Capacity (11);
+ Add_Goto (Table.States (196), 44, 213);
+ Add_Goto (Table.States (196), 47, 214);
+ Add_Goto (Table.States (196), 53, 215);
+ Add_Goto (Table.States (196), 54, 216);
+ Add_Goto (Table.States (196), 55, 217);
+ Add_Goto (Table.States (196), 62, 218);
+ Add_Goto (Table.States (196), 63, 219);
+ Add_Goto (Table.States (196), 64, 220);
+ Add_Goto (Table.States (196), 65, 221);
+ Add_Goto (Table.States (196), 69, 222);
+ Add_Goto (Table.States (196), 74, 223);
+ Table.States (196).Kernel := To_Vector ((0 => ((48, 0), 34, 0,
(55, 0), 0)));
+ Table.States (196).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (55, 0), 0)));
+ Table.States (197).Action_List.Set_Capacity (4);
+ Add_Action (Table.States (197), 19, (56, 2), 175);
+ Add_Action (Table.States (197), 34, Reduce, (56, 0), 0);
+ Add_Action (Table.States (197), 37, Reduce, (56, 0), 0);
+ Add_Action (Table.States (197), 40, (56, 1), 176);
+ Table.States (197).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (197), 56, 224);
+ Table.States (197).Kernel := To_Vector ((0 => ((57, 1), 37, 0,
(56, 0), 0)));
+ Table.States (197).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (56, 0), 0)));
+ Table.States (198).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (198), 36, (47, 0), 225);
+ Table.States (198).Kernel := To_Vector ((0 => ((47, 0), 8, 1,
(32767, 0), 0)));
+ Table.States (198).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (47, 0), 36, 225)));
+ Table.States (199).Action_List.Set_Capacity (10);
+ Add_Action (Table.States (199), 12, (59, 0), 130);
+ Add_Action (Table.States (199), 13, (59, 1), 131);
+ Add_Action (Table.States (199), 16, (43, 0), 132);
+ Add_Action (Table.States (199), 21, (45, 0), 9);
+ Add_Action (Table.States (199), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (199), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (199), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (199), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (199), 39, (60, 1), 133);
+ Add_Action (Table.States (199), 40, (71, 0), 134);
+ Table.States (199).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (199), 43, 135);
+ Add_Goto (Table.States (199), 45, 136);
+ Add_Goto (Table.States (199), 46, 137);
+ Add_Goto (Table.States (199), 58, 226);
+ Add_Goto (Table.States (199), 59, 139);
+ Add_Goto (Table.States (199), 60, 140);
+ Add_Goto (Table.States (199), 61, 141);
+ Add_Goto (Table.States (199), 71, 142);
+ Add_Goto (Table.States (199), 73, 143);
+ Table.States (199).Kernel := To_Vector ((0 => ((44, 3), 26, 1,
(32767, 0), 0)));
+ Table.States (199).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 0)));
+ Table.States (200).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (200), 6, Reduce, (60, 0), 0);
+ Add_Action (Table.States (200), 12, (59, 0), 227);
+ Add_Action (Table.States (200), 13, (59, 1), 228);
+ Add_Action (Table.States (200), 16, (43, 0), 229);
+ Add_Action (Table.States (200), 21, (45, 0), 9);
+ Add_Action (Table.States (200), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (200), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (200), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (200), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (200), 39, (60, 1), 230);
+ Add_Action (Table.States (200), 40, (71, 0), 231);
+ Table.States (200).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (200), 43, 232);
+ Add_Goto (Table.States (200), 45, 233);
+ Add_Goto (Table.States (200), 46, 234);
+ Add_Goto (Table.States (200), 58, 235);
+ Add_Goto (Table.States (200), 59, 236);
+ Add_Goto (Table.States (200), 60, 237);
+ Add_Goto (Table.States (200), 61, 238);
+ Add_Goto (Table.States (200), 71, 239);
+ Add_Goto (Table.States (200), 73, 240);
+ Table.States (200).Kernel := To_Vector ((((44, 1), 26, 1,
(32767, 0), 0), ((44, 2), 26, 3, (32767, 0),
+ 0)));
+ Table.States (200).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 0)));
+ Table.States (201).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (201), 10, (64, 0), 241);
+ Table.States (201).Kernel := To_Vector ((0 => ((64, 0), 55, 2,
(32767, 0), 0)));
+ Table.States (201).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (64, 0), 10, 241)));
+ Table.States (202).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (202), 36, (63, 0), 242);
+ Table.States (202).Kernel := To_Vector ((0 => ((63, 0), 60, 1,
(32767, 0), 0)));
+ Table.States (202).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (63, 0), 36, 242)));
+ Table.States (203).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (203), (33, 36), (61, 1), 3);
+ Table.States (203).Kernel := To_Vector ((0 => ((61, 1), 39, 0,
(61, 1), 3)));
+ Table.States (203).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 1), 3)));
+ Table.States (204).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (204), (1 => 36), (43, 0), 3);
+ Table.States (204).Kernel := To_Vector ((0 => ((43, 0), 23, 0,
(43, 0), 3)));
+ Table.States (204).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (43, 0), 3)));
+ Table.States (205).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (205), (8, 10, 14, 18, 20, 25, 39), (69,
1), 6);
+ Table.States (205).Kernel := To_Vector ((0 => ((69, 1), 36, 0,
(69, 1), 6)));
+ Table.States (205).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (69, 1), 6)));
+ Table.States (206).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (206), 40, (46, 1), 243);
+ Table.States (206).Kernel := To_Vector ((0 => ((46, 1), 16, 2,
(32767, 0), 0)));
+ Table.States (206).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 1), 40, 243)));
+ end Subr_4;
+ procedure Subr_5
+ is begin
+ Table.States (207).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (207), 15, Reduce, (60, 0), 0);
+ Add_Action (Table.States (207), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (207), 39, (60, 1), 105);
+ Table.States (207).Goto_List.Set_Capacity (2);
+ Add_Goto (Table.States (207), 60, 106);
+ Add_Goto (Table.States (207), 61, 244);
+ Table.States (207).Kernel := To_Vector ((0 => ((47, 0), 8, 4,
(32767, 0), 0)));
+ Table.States (207).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 0), 0)));
+ Table.States (208).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (208), 12, (44, 3), 245);
+ Add_Action (Table.States (208), 39, (44, 0), 246);
+ Table.States (208).Kernel := To_Vector ((((44, 0), 14, 3,
(32767, 0), 0), ((44, 1), 14, 5, (32767, 0),
+ 0), ((44, 2), 14, 7, (32767, 0), 0), ((44, 3), 14, 6,
(32767, 0), 0)));
+ Table.States (208).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 0), 39, 246)));
+ Table.States (209).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (209), 36, (69, 4), 247);
+ Table.States (209).Kernel := To_Vector ((0 => ((69, 4), 18, 1,
(32767, 0), 0)));
+ Table.States (209).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (69, 4), 36, 247)));
+ Table.States (210).Action_List.Set_Capacity (4);
+ Add_Action (Table.States (210), 11, Reduce, (60, 0), 0);
+ Add_Action (Table.States (210), 15, Reduce, (60, 0), 0);
+ Add_Action (Table.States (210), 22, Reduce, (60, 0), 0);
+ Add_Action (Table.States (210), 39, (60, 1), 111);
+ Table.States (210).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (210), 60, 248);
+ Table.States (210).Kernel := To_Vector ((((63, 0), 20, 3,
(32767, 0), 0), ((64, 0), 20, 4, (32767, 0),
+ 0), ((65, 0), 20, 2, (32767, 0), 0)));
+ Table.States (210).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 0), 0)));
+ Table.States (211).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (211), 39, (74, 0), 249);
+ Table.States (211).Kernel := To_Vector ((0 => ((74, 0), 25, 5,
(32767, 0), 0)));
+ Table.States (211).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (74, 0), 39, 249)));
+ Table.States (212).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (212), 30, (69, 1), 250);
+ Add_Action (Table.States (212), 31, (69, 0), 251);
+ Table.States (212).Kernel := To_Vector ((((69, 0), 39, 2,
(32767, 0), 0), ((69, 1), 39, 4, (32767, 0),
+ 0)));
+ Table.States (212).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (69, 0), 31, 251)));
+ Table.States (213).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (213), (8, 10, 14, 18, 20, 25, 27, 39),
(69, 2), 1);
+ Table.States (213).Kernel := To_Vector ((0 => ((69, 2), 44, 0,
(69, 2), 1)));
+ Table.States (213).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (69, 2), 1)));
+ Table.States (214).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (214), (8, 10, 14, 18, 20, 25, 27, 39),
(69, 3), 1);
+ Table.States (214).Kernel := To_Vector ((0 => ((69, 3), 47, 0,
(69, 3), 1)));
+ Table.States (214).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (69, 3), 1)));
+ Table.States (215).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (215), (8, 10, 14, 18, 20, 25, 27, 39),
(54, 0), 1);
+ Table.States (215).Kernel := To_Vector ((0 => ((54, 0), 53, 0,
(54, 0), 1)));
+ Table.States (215).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (54, 0), 1)));
+ Table.States (216).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (216), 8, (47, 0), 207);
+ Add_Action (Table.States (216), 10, Reduce, (55, 1), 1);
+ Add_Action (Table.States (216), 14, (44, 0), 208);
+ Add_Action (Table.States (216), 18, (69, 4), 209);
+ Add_Action (Table.States (216), 20, (63, 0), 210);
+ Add_Action (Table.States (216), 25, (74, 0), 211);
+ Add_Action (Table.States (216), 27, Reduce, (55, 1), 1);
+ Add_Action (Table.States (216), 39, (69, 0), 212);
+ Table.States (216).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (216), 44, 213);
+ Add_Goto (Table.States (216), 47, 214);
+ Add_Goto (Table.States (216), 53, 252);
+ Add_Goto (Table.States (216), 62, 218);
+ Add_Goto (Table.States (216), 63, 219);
+ Add_Goto (Table.States (216), 64, 220);
+ Add_Goto (Table.States (216), 65, 221);
+ Add_Goto (Table.States (216), 69, 222);
+ Add_Goto (Table.States (216), 74, 223);
+ Table.States (216).Kernel := To_Vector ((((54, 1), 54, 2,
(32767, 0), 0), ((55, 1), 54, 0, (55, 1),
+ 1)));
+ Table.States (216).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (55, 1), 1)));
+ Table.States (217).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (217), (10, 27), (48, 0), 4);
+ Table.States (217).Kernel := To_Vector ((0 => ((48, 0), 55, 0,
(48, 0), 4)));
+ Table.States (217).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (48, 0), 4)));
+ Table.States (218).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (218), (8, 10, 14, 18, 20, 25, 27, 39),
(53, 2), 1);
+ Table.States (218).Kernel := To_Vector ((0 => ((53, 2), 62, 0,
(53, 2), 1)));
+ Table.States (218).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (53, 2), 1)));
+ Table.States (219).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (219), (8, 10, 14, 18, 20, 25, 27, 39),
(62, 0), 1);
+ Table.States (219).Kernel := To_Vector ((0 => ((62, 0), 63, 0,
(62, 0), 1)));
+ Table.States (219).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (62, 0), 1)));
+ Table.States (220).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (220), (8, 10, 14, 18, 20, 25, 27, 39),
(62, 1), 1);
+ Table.States (220).Kernel := To_Vector ((0 => ((62, 1), 64, 0,
(62, 1), 1)));
+ Table.States (220).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (62, 1), 1)));
+ Table.States (221).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (221), (8, 10, 14, 18, 20, 25, 27, 39),
(62, 2), 1);
+ Table.States (221).Kernel := To_Vector ((0 => ((62, 2), 65, 0,
(62, 2), 1)));
+ Table.States (221).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (62, 2), 1)));
+ Table.States (222).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (222), (8, 10, 14, 18, 20, 25, 27, 39),
(53, 0), 1);
+ Table.States (222).Kernel := To_Vector ((0 => ((53, 0), 69, 0,
(53, 0), 1)));
+ Table.States (222).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (53, 0), 1)));
+ Table.States (223).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (223), (8, 10, 14, 18, 20, 25, 27, 39),
(53, 1), 1);
+ Table.States (223).Kernel := To_Vector ((0 => ((53, 1), 74, 0,
(53, 1), 1)));
+ Table.States (223).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (53, 1), 1)));
+ Table.States (224).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (224), (34, 37), (57, 1), 3);
+ Table.States (224).Kernel := To_Vector ((0 => ((57, 1), 56, 0,
(57, 1), 3)));
+ Table.States (224).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (57, 1), 3)));
+ Table.States (225).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (225), (8, 10, 14, 18, 20, 25, 39), (47,
0), 7);
+ Table.States (225).Kernel := To_Vector ((0 => ((47, 0), 36, 0,
(47, 0), 7)));
+ Table.States (225).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (47, 0), 7)));
+ Table.States (226).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (226), 29, (58, 1), 170);
+ Add_Action (Table.States (226), 36, (44, 3), 253);
+ Table.States (226).Kernel := To_Vector ((((44, 3), 58, 1,
(32767, 0), 0), ((58, 1), 58, 1, (32767, 0),
+ 0)));
+ Table.States (226).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 3), 36, 253)));
+ Table.States (227).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (227), 16, (43, 0), 254);
+ Table.States (227).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (227), 43, 255);
+ Table.States (227).Kernel := To_Vector ((0 => ((59, 0), 12, 2,
(32767, 0), 0)));
+ Table.States (227).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 16, 254)));
+ Table.States (228).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (228), 16, (43, 0), 254);
+ Table.States (228).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (228), 43, 256);
+ Table.States (228).Kernel := To_Vector ((0 => ((59, 1), 13, 2,
(32767, 0), 0)));
+ Table.States (228).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 16, 254)));
+ Table.States (229).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (229), 12, (59, 0), 32);
+ Add_Action (Table.States (229), 13, (59, 1), 33);
+ Add_Action (Table.States (229), 16, (43, 0), 34);
+ Add_Action (Table.States (229), 21, (45, 0), 9);
+ Add_Action (Table.States (229), 23, (73, 1), 257);
+ Add_Conflict (Table.States (229), 23, (60, 0), 0);
+ Add_Action (Table.States (229), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (229), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (229), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (229), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (229), 39, (60, 1), 36);
+ Add_Action (Table.States (229), 40, (71, 0), 37);
+ Table.States (229).Goto_List.Set_Capacity (10);
+ Add_Goto (Table.States (229), 43, 38);
+ Add_Goto (Table.States (229), 45, 39);
+ Add_Goto (Table.States (229), 46, 40);
+ Add_Goto (Table.States (229), 58, 41);
+ Add_Goto (Table.States (229), 59, 42);
+ Add_Goto (Table.States (229), 60, 43);
+ Add_Goto (Table.States (229), 61, 44);
+ Add_Goto (Table.States (229), 71, 45);
+ Add_Goto (Table.States (229), 72, 258);
+ Add_Goto (Table.States (229), 73, 47);
+ Table.States (229).Kernel := To_Vector ((((43, 0), 16, 1,
(32767, 0), 0), ((73, 1), 16, 1, (32767, 0),
+ 0)));
+ Table.States (229).Minimal_Complete_Actions := To_Vector
(((Reduce, (72, 0), 0), (Shift, (73, 1), 23,
+ 257)));
+ Table.States (230).Action_List.Set_Capacity (5);
+ Add_Action (Table.States (230), (6, 29, 33, 35, 36), (60, 1), 1);
+ Table.States (230).Kernel := To_Vector ((0 => ((60, 1), 39, 0,
(60, 1), 1)));
+ Table.States (230).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 1), 1)));
+ Table.States (231).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (231), (6, 29, 36), (71, 0), 1);
+ Table.States (231).Kernel := To_Vector ((0 => ((71, 0), 40, 0,
(71, 0), 1)));
+ Table.States (231).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (71, 0), 1)));
+ Table.States (232).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (232), (6, 29, 36), (73, 2), 1);
+ Table.States (232).Kernel := To_Vector ((0 => ((73, 2), 43, 0,
(73, 2), 1)));
+ Table.States (232).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 2), 1)));
+ Table.States (233).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (233), 35, (46, 0), 259);
+ Table.States (233).Kernel := To_Vector ((((46, 0), 45, 2,
(32767, 0), 0), ((46, 1), 45, 5, (32767, 0),
+ 0)));
+ Table.States (233).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 0), 35, 259)));
+ Table.States (234).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (234), (6, 29, 36), (71, 3), 1);
+ Table.States (234).Kernel := To_Vector ((0 => ((71, 3), 46, 0,
(71, 3), 1)));
+ Table.States (234).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (71, 3), 1)));
+ Table.States (235).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (235), 6, (44, 2), 260);
+ Add_Action (Table.States (235), 29, (58, 1), 261);
+ Add_Action (Table.States (235), 36, (44, 1), 262);
+ Table.States (235).Kernel := To_Vector ((((44, 1), 58, 1,
(32767, 0), 0), ((44, 2), 58, 3, (32767, 0),
+ 0), ((58, 1), 58, 1, (32767, 0), 0)));
+ Table.States (235).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 1), 36, 262)));
+ Table.States (236).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (236), (6, 29, 36), (71, 2), 1);
+ Table.States (236).Kernel := To_Vector ((0 => ((71, 2), 59, 0,
(71, 2), 1)));
+ Table.States (236).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (71, 2), 1)));
+ Table.States (237).Action_List.Set_Capacity (5);
+ Add_Action (Table.States (237), (6, 29, 33, 35, 36), (61, 0), 1);
+ Table.States (237).Kernel := To_Vector ((0 => ((61, 0), 60, 0,
(61, 0), 1)));
+ Table.States (237).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 0), 1)));
+ Table.States (238).Action_List.Set_Capacity (5);
+ Add_Action (Table.States (238), 6, Reduce, (71, 1), 1);
+ Add_Action (Table.States (238), 29, Reduce, (71, 1), 1);
+ Add_Action (Table.States (238), 33, (61, 1), 263);
+ Add_Action (Table.States (238), 35, Reduce, (45, 1), 1);
+ Add_Action (Table.States (238), 36, Reduce, (71, 1), 1);
+ Table.States (238).Kernel := To_Vector ((((45, 1), 61, 0, (45,
1), 1), ((61, 1), 61, 2, (32767, 0),
+ 0), ((71, 1), 61, 0, (71, 1), 1)));
+ Table.States (238).Minimal_Complete_Actions := To_Vector
(((Reduce, (45, 1), 1), (Reduce, (71, 1), 1)));
+ Table.States (239).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (239), (6, 29, 36), (73, 0), 1);
+ Table.States (239).Kernel := To_Vector ((0 => ((73, 0), 71, 0,
(73, 0), 1)));
+ Table.States (239).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 0), 1)));
+ Table.States (240).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (240), (6, 29, 36), (58, 0), 1);
+ Table.States (240).Kernel := To_Vector ((0 => ((58, 0), 73, 0,
(58, 0), 1)));
+ Table.States (240).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 1)));
+ Table.States (241).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (241), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (241), 39, (60, 1), 144);
+ Table.States (241).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (241), 60, 264);
+ Table.States (241).Kernel := To_Vector ((0 => ((64, 0), 10, 1,
(32767, 0), 0)));
+ Table.States (241).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 0), 0)));
+ Table.States (242).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (242), (8, 10, 14, 18, 20, 25, 39), (63,
0), 7);
+ Table.States (242).Kernel := To_Vector ((0 => ((63, 0), 36, 0,
(63, 0), 7)));
+ Table.States (242).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (63, 0), 7)));
+ Table.States (243).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (243), 23, (46, 1), 265);
+ Table.States (243).Kernel := To_Vector ((0 => ((46, 1), 40, 1,
(32767, 0), 0)));
+ Table.States (243).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 1), 23, 265)));
+ Table.States (244).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (244), 15, (47, 0), 266);
+ Add_Action (Table.States (244), 33, (61, 1), 121);
+ Table.States (244).Kernel := To_Vector ((((47, 0), 61, 4,
(32767, 0), 0), ((61, 1), 61, 2, (32767, 0),
+ 0)));
+ Table.States (244).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (47, 0), 15, 266)));
+ Table.States (245).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (245), 16, (44, 3), 267);
+ Table.States (245).Kernel := To_Vector ((0 => ((44, 3), 12, 5,
(32767, 0), 0)));
+ Table.States (245).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 3), 16, 267)));
+ Table.States (246).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (246), 16, (44, 1), 268);
+ Add_Action (Table.States (246), 26, (44, 0), 269);
+ Table.States (246).Kernel := To_Vector ((((44, 0), 39, 2,
(32767, 0), 0), ((44, 1), 39, 4, (32767, 0),
+ 0), ((44, 2), 39, 6, (32767, 0), 0)));
+ Table.States (246).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 0), 26, 269)));
+ Table.States (247).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (247), (8, 10, 14, 18, 20, 25, 27, 39),
(69, 4), 2);
+ Table.States (247).Kernel := To_Vector ((0 => ((69, 4), 36, 0,
(69, 4), 2)));
+ Table.States (247).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (69, 4), 2)));
+ Table.States (248).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (248), 11, (64, 0), 270);
+ Add_Action (Table.States (248), 15, (63, 0), 271);
+ Add_Action (Table.States (248), 22, (65, 0), 272);
+ Table.States (248).Kernel := To_Vector ((((63, 0), 60, 3,
(32767, 0), 0), ((64, 0), 60, 4, (32767, 0),
+ 0), ((65, 0), 60, 2, (32767, 0), 0)));
+ Table.States (248).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (65, 0), 22, 272)));
+ Table.States (249).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (249), 15, (74, 0), 273);
+ Table.States (249).Kernel := To_Vector ((0 => ((74, 0), 39, 4,
(32767, 0), 0)));
+ Table.States (249).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (74, 0), 15, 273)));
+ Table.States (250).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (250), 39, (69, 1), 274);
+ Table.States (250).Kernel := To_Vector ((0 => ((69, 1), 30, 3,
(32767, 0), 0)));
+ Table.States (250).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (69, 1), 39, 274)));
+ Table.States (251).Action_List.Set_Capacity (10);
+ Add_Action (Table.States (251), 12, (59, 0), 130);
+ Add_Action (Table.States (251), 13, (59, 1), 131);
+ Add_Action (Table.States (251), 16, (43, 0), 132);
+ Add_Action (Table.States (251), 21, (45, 0), 9);
+ Add_Action (Table.States (251), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (251), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (251), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (251), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (251), 39, (60, 1), 133);
+ Add_Action (Table.States (251), 40, (71, 0), 134);
+ Table.States (251).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (251), 43, 135);
+ Add_Goto (Table.States (251), 45, 136);
+ Add_Goto (Table.States (251), 46, 137);
+ Add_Goto (Table.States (251), 58, 275);
+ Add_Goto (Table.States (251), 59, 139);
+ Add_Goto (Table.States (251), 60, 140);
+ Add_Goto (Table.States (251), 61, 141);
+ Add_Goto (Table.States (251), 71, 142);
+ Add_Goto (Table.States (251), 73, 143);
+ Table.States (251).Kernel := To_Vector ((0 => ((69, 0), 31, 1,
(32767, 0), 0)));
+ Table.States (251).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 0)));
+ Table.States (252).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (252), (8, 10, 14, 18, 20, 25, 27, 39),
(54, 1), 2);
+ Table.States (252).Kernel := To_Vector ((0 => ((54, 1), 53, 0,
(54, 1), 2)));
+ Table.States (252).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (54, 1), 2)));
+ Table.States (253).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (253), (8, 10, 14, 18, 20, 25, 39), (44,
3), 8);
+ Table.States (253).Kernel := To_Vector ((0 => ((44, 3), 36, 0,
(44, 3), 8)));
+ Table.States (253).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (44, 3), 8)));
+ Table.States (254).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (254), 12, (59, 0), 32);
+ Add_Action (Table.States (254), 13, (59, 1), 33);
+ Add_Action (Table.States (254), 16, (43, 0), 34);
+ Add_Action (Table.States (254), 21, (45, 0), 9);
+ Add_Action (Table.States (254), 23, Reduce, (60, 0), 0);
+ Add_Action (Table.States (254), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (254), 32, Reduce, (60, 0), 0);
+ Add_Action (Table.States (254), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (254), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (254), 39, (60, 1), 36);
+ Add_Action (Table.States (254), 40, (71, 0), 37);
+ Table.States (254).Goto_List.Set_Capacity (10);
+ Add_Goto (Table.States (254), 43, 38);
+ Add_Goto (Table.States (254), 45, 39);
+ Add_Goto (Table.States (254), 46, 40);
+ Add_Goto (Table.States (254), 58, 41);
+ Add_Goto (Table.States (254), 59, 42);
+ Add_Goto (Table.States (254), 60, 43);
+ Add_Goto (Table.States (254), 61, 44);
+ Add_Goto (Table.States (254), 71, 45);
+ Add_Goto (Table.States (254), 72, 258);
+ Add_Goto (Table.States (254), 73, 47);
+ Table.States (254).Kernel := To_Vector ((0 => ((43, 0), 16, 1,
(32767, 0), 0)));
+ Table.States (254).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (72, 0), 0)));
+ Table.States (255).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (255), (6, 29, 36), (59, 0), 2);
+ Table.States (255).Kernel := To_Vector ((0 => ((59, 0), 43, 0,
(59, 0), 2)));
+ Table.States (255).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (59, 0), 2)));
+ Table.States (256).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (256), (6, 29, 36), (59, 1), 2);
+ Table.States (256).Kernel := To_Vector ((0 => ((59, 1), 43, 0,
(59, 1), 2)));
+ Table.States (256).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (59, 1), 2)));
+ Table.States (257).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (257), (6, 29, 36), (73, 1), 2);
+ Table.States (257).Kernel := To_Vector ((0 => ((73, 1), 23, 0,
(73, 1), 2)));
+ Table.States (257).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 1), 2)));
+ Table.States (258).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (258), 23, (43, 0), 276);
+ Add_Action (Table.States (258), 32, (72, 1), 67);
+ Table.States (258).Kernel := To_Vector ((((43, 0), 72, 1,
(32767, 0), 0), ((72, 1), 72, 1, (32767, 0),
+ 0)));
+ Table.States (258).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 23, 276)));
+ Table.States (259).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (259), 39, (46, 0), 277);
+ Table.States (259).Kernel := To_Vector ((((46, 0), 35, 1,
(32767, 0), 0), ((46, 1), 35, 4, (32767, 0),
+ 0)));
+ Table.States (259).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 0), 39, 277)));
+ Table.States (260).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (260), 38, (44, 2), 278);
+ Table.States (260).Kernel := To_Vector ((0 => ((44, 2), 6, 2,
(32767, 0), 0)));
+ Table.States (260).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 2), 38, 278)));
+ Table.States (261).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (261), 6, Reduce, (60, 0), 0);
+ Add_Action (Table.States (261), 12, (59, 0), 227);
+ Add_Action (Table.States (261), 13, (59, 1), 228);
+ Add_Action (Table.States (261), 16, (43, 0), 229);
+ Add_Action (Table.States (261), 21, (45, 0), 9);
+ Add_Action (Table.States (261), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (261), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (261), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (261), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (261), 39, (60, 1), 230);
+ Add_Action (Table.States (261), 40, (71, 0), 231);
+ Table.States (261).Goto_List.Set_Capacity (8);
+ Add_Goto (Table.States (261), 43, 232);
+ Add_Goto (Table.States (261), 45, 233);
+ Add_Goto (Table.States (261), 46, 234);
+ Add_Goto (Table.States (261), 59, 236);
+ Add_Goto (Table.States (261), 60, 237);
+ Add_Goto (Table.States (261), 61, 238);
+ Add_Goto (Table.States (261), 71, 239);
+ Add_Goto (Table.States (261), 73, 279);
+ Table.States (261).Kernel := To_Vector ((0 => ((58, 1), 29, 0,
(73, 0), 0)));
+ Table.States (261).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (73, 0), 0)));
+ Table.States (262).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (262), (8, 10, 14, 18, 20, 25, 39), (44,
1), 8);
+ Table.States (262).Kernel := To_Vector ((0 => ((44, 1), 36, 0,
(44, 1), 8)));
+ Table.States (262).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (44, 1), 8)));
+ Table.States (263).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (263), 39, (61, 1), 280);
+ Table.States (263).Kernel := To_Vector ((0 => ((61, 1), 33, 1,
(32767, 0), 0)));
+ Table.States (263).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (61, 1), 39, 280)));
+ Table.States (264).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (264), 36, (64, 0), 281);
+ Table.States (264).Kernel := To_Vector ((0 => ((64, 0), 60, 1,
(32767, 0), 0)));
+ Table.States (264).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (64, 0), 36, 281)));
+ end Subr_5;
+ procedure Subr_6
+ is begin
+ Table.States (265).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (265), (29, 36), (46, 1), 6);
+ Table.States (265).Kernel := To_Vector ((0 => ((46, 1), 23, 0,
(46, 1), 6)));
+ Table.States (265).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (46, 1), 6)));
+ Table.States (266).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (266), 10, Reduce, (49, 0), 0);
+ Add_Action (Table.States (266), 27, (48, 0), 147);
+ Add_Conflict (Table.States (266), 27, (49, 0), 0);
+ Table.States (266).Goto_List.Set_Capacity (2);
+ Add_Goto (Table.States (266), 48, 148);
+ Add_Goto (Table.States (266), 49, 282);
+ Table.States (266).Kernel := To_Vector ((0 => ((47, 0), 15, 3,
(32767, 0), 0)));
+ Table.States (266).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (49, 0), 0)));
+ Table.States (267).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (267), 40, (44, 3), 283);
+ Table.States (267).Kernel := To_Vector ((0 => ((44, 3), 16, 4,
(32767, 0), 0)));
+ Table.States (267).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 3), 40, 283)));
+ Table.States (268).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (268), 19, (56, 2), 152);
+ Add_Action (Table.States (268), 23, Reduce, (56, 0), 0);
+ Add_Action (Table.States (268), 40, (56, 1), 153);
+ Table.States (268).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (268), 56, 284);
+ Table.States (268).Kernel := To_Vector ((((44, 1), 16, 3,
(32767, 0), 0), ((44, 2), 16, 5, (32767, 0),
+ 0)));
+ Table.States (268).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (56, 0), 0)));
+ Table.States (269).Action_List.Set_Capacity (10);
+ Add_Action (Table.States (269), 12, (59, 0), 130);
+ Add_Action (Table.States (269), 13, (59, 1), 131);
+ Add_Action (Table.States (269), 16, (43, 0), 132);
+ Add_Action (Table.States (269), 21, (45, 0), 9);
+ Add_Action (Table.States (269), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (269), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (269), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (269), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (269), 39, (60, 1), 133);
+ Add_Action (Table.States (269), 40, (71, 0), 134);
+ Table.States (269).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (269), 43, 135);
+ Add_Goto (Table.States (269), 45, 136);
+ Add_Goto (Table.States (269), 46, 137);
+ Add_Goto (Table.States (269), 58, 285);
+ Add_Goto (Table.States (269), 59, 139);
+ Add_Goto (Table.States (269), 60, 140);
+ Add_Goto (Table.States (269), 61, 141);
+ Add_Goto (Table.States (269), 71, 142);
+ Add_Goto (Table.States (269), 73, 143);
+ Table.States (269).Kernel := To_Vector ((0 => ((44, 0), 26, 1,
(32767, 0), 0)));
+ Table.States (269).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 0)));
+ Table.States (270).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (270), 15, Reduce, (60, 0), 0);
+ Add_Action (Table.States (270), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (270), 39, (60, 1), 105);
+ Table.States (270).Goto_List.Set_Capacity (2);
+ Add_Goto (Table.States (270), 60, 106);
+ Add_Goto (Table.States (270), 61, 286);
+ Table.States (270).Kernel := To_Vector ((0 => ((64, 0), 11, 3,
(32767, 0), 0)));
+ Table.States (270).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 0), 0)));
+ Table.States (271).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (271), 8, (47, 0), 85);
+ Add_Action (Table.States (271), 10, Reduce, (55, 0), 0);
+ Add_Action (Table.States (271), 14, (44, 0), 86);
+ Add_Action (Table.States (271), 18, (69, 4), 87);
+ Add_Action (Table.States (271), 20, (63, 0), 88);
+ Add_Action (Table.States (271), 25, (74, 0), 89);
+ Add_Action (Table.States (271), 39, (69, 0), 90);
+ Table.States (271).Goto_List.Set_Capacity (11);
+ Add_Goto (Table.States (271), 44, 91);
+ Add_Goto (Table.States (271), 47, 92);
+ Add_Goto (Table.States (271), 53, 93);
+ Add_Goto (Table.States (271), 54, 94);
+ Add_Goto (Table.States (271), 55, 287);
+ Add_Goto (Table.States (271), 62, 96);
+ Add_Goto (Table.States (271), 63, 97);
+ Add_Goto (Table.States (271), 64, 98);
+ Add_Goto (Table.States (271), 65, 99);
+ Add_Goto (Table.States (271), 69, 100);
+ Add_Goto (Table.States (271), 74, 101);
+ Table.States (271).Kernel := To_Vector ((0 => ((63, 0), 15, 2,
(32767, 0), 0)));
+ Table.States (271).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (55, 0), 0)));
+ Table.States (272).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (272), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (272), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (272), 39, (60, 1), 158);
+ Table.States (272).Goto_List.Set_Capacity (2);
+ Add_Goto (Table.States (272), 60, 159);
+ Add_Goto (Table.States (272), 61, 288);
+ Table.States (272).Kernel := To_Vector ((0 => ((65, 0), 22, 1,
(32767, 0), 0)));
+ Table.States (272).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 0), 0)));
+ Table.States (273).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (273), 16, (43, 0), 161);
+ Table.States (273).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (273), 43, 289);
+ Table.States (273).Kernel := To_Vector ((0 => ((74, 0), 15, 3,
(32767, 0), 0)));
+ Table.States (273).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (43, 0), 16, 161)));
+ Table.States (274).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (274), 31, (69, 1), 290);
+ Table.States (274).Kernel := To_Vector ((0 => ((69, 1), 39, 2,
(32767, 0), 0)));
+ Table.States (274).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (69, 1), 31, 290)));
+ Table.States (275).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (275), 29, (58, 1), 170);
+ Add_Action (Table.States (275), 36, (69, 0), 291);
+ Table.States (275).Kernel := To_Vector ((((58, 1), 58, 1,
(32767, 0), 0), ((69, 0), 58, 1, (32767, 0),
+ 0)));
+ Table.States (275).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (69, 0), 36, 291)));
+ Table.States (276).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (276), (6, 29, 36), (43, 0), 3);
+ Table.States (276).Kernel := To_Vector ((0 => ((43, 0), 23, 0,
(43, 0), 3)));
+ Table.States (276).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (43, 0), 3)));
+ Table.States (277).Action_List.Set_Capacity (4);
+ Add_Action (Table.States (277), 6, Reduce, (46, 0), 3);
+ Add_Action (Table.States (277), 16, (46, 1), 292);
+ Add_Action (Table.States (277), 29, Reduce, (46, 0), 3);
+ Add_Action (Table.States (277), 36, Reduce, (46, 0), 3);
+ Table.States (277).Kernel := To_Vector ((((46, 0), 39, 0, (46,
0), 3), ((46, 1), 39, 3, (32767, 0),
+ 0)));
+ Table.States (277).Minimal_Complete_Actions := To_Vector
(((Reduce, (46, 0), 3), (Shift, (46, 1), 16,
+ 292)));
+ Table.States (278).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (278), 36, (44, 2), 293);
+ Table.States (278).Kernel := To_Vector ((0 => ((44, 2), 38, 1,
(32767, 0), 0)));
+ Table.States (278).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 2), 36, 293)));
+ Table.States (279).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (279), (6, 29, 36), (58, 1), 3);
+ Table.States (279).Kernel := To_Vector ((0 => ((58, 1), 73, 0,
(58, 1), 3)));
+ Table.States (279).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 1), 3)));
+ Table.States (280).Action_List.Set_Capacity (5);
+ Add_Action (Table.States (280), (6, 29, 33, 35, 36), (61, 1), 3);
+ Table.States (280).Kernel := To_Vector ((0 => ((61, 1), 39, 0,
(61, 1), 3)));
+ Table.States (280).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (61, 1), 3)));
+ Table.States (281).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (281), (8, 10, 14, 18, 20, 25, 39), (64,
0), 9);
+ Table.States (281).Kernel := To_Vector ((0 => ((64, 0), 36, 0,
(64, 0), 9)));
+ Table.States (281).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (64, 0), 9)));
+ Table.States (282).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (282), 10, (47, 0), 294);
+ Add_Action (Table.States (282), 27, (48, 0), 147);
+ Table.States (282).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (282), 48, 180);
+ Table.States (282).Kernel := To_Vector ((((47, 0), 49, 3,
(32767, 0), 0), ((49, 2), 49, 2, (32767, 0),
+ 0)));
+ Table.States (282).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (47, 0), 10, 294)));
+ Table.States (283).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (283), 23, (44, 3), 295);
+ Table.States (283).Kernel := To_Vector ((0 => ((44, 3), 40, 3,
(32767, 0), 0)));
+ Table.States (283).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 3), 23, 295)));
+ Table.States (284).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (284), 23, (44, 1), 296);
+ Table.States (284).Kernel := To_Vector ((((44, 1), 56, 3,
(32767, 0), 0), ((44, 2), 56, 5, (32767, 0),
+ 0)));
+ Table.States (284).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 1), 23, 296)));
+ Table.States (285).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (285), 29, (58, 1), 170);
+ Add_Action (Table.States (285), 36, (44, 0), 297);
+ Table.States (285).Kernel := To_Vector ((((44, 0), 58, 1,
(32767, 0), 0), ((58, 1), 58, 1, (32767, 0),
+ 0)));
+ Table.States (285).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 0), 36, 297)));
+ Table.States (286).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (286), 15, (64, 0), 298);
+ Add_Action (Table.States (286), 33, (61, 1), 121);
+ Table.States (286).Kernel := To_Vector ((((61, 1), 61, 2,
(32767, 0), 0), ((64, 0), 61, 3, (32767, 0),
+ 0)));
+ Table.States (286).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (64, 0), 15, 298)));
+ Table.States (287).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (287), 10, (63, 0), 299);
+ Table.States (287).Kernel := To_Vector ((0 => ((63, 0), 55, 2,
(32767, 0), 0)));
+ Table.States (287).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (63, 0), 10, 299)));
+ Table.States (288).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (288), 33, (61, 1), 186);
+ Add_Action (Table.States (288), 36, (65, 0), 300);
+ Table.States (288).Kernel := To_Vector ((((61, 1), 61, 2,
(32767, 0), 0), ((65, 0), 61, 1, (32767, 0),
+ 0)));
+ Table.States (288).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (65, 0), 36, 300)));
+ Table.States (289).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (289), 36, (74, 0), 301);
+ Table.States (289).Kernel := To_Vector ((0 => ((74, 0), 43, 1,
(32767, 0), 0)));
+ Table.States (289).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (74, 0), 36, 301)));
+ Table.States (290).Action_List.Set_Capacity (10);
+ Add_Action (Table.States (290), 12, (59, 0), 130);
+ Add_Action (Table.States (290), 13, (59, 1), 131);
+ Add_Action (Table.States (290), 16, (43, 0), 132);
+ Add_Action (Table.States (290), 21, (45, 0), 9);
+ Add_Action (Table.States (290), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (290), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (290), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (290), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (290), 39, (60, 1), 133);
+ Add_Action (Table.States (290), 40, (71, 0), 134);
+ Table.States (290).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (290), 43, 135);
+ Add_Goto (Table.States (290), 45, 136);
+ Add_Goto (Table.States (290), 46, 137);
+ Add_Goto (Table.States (290), 58, 302);
+ Add_Goto (Table.States (290), 59, 139);
+ Add_Goto (Table.States (290), 60, 140);
+ Add_Goto (Table.States (290), 61, 141);
+ Add_Goto (Table.States (290), 71, 142);
+ Add_Goto (Table.States (290), 73, 143);
+ Table.States (290).Kernel := To_Vector ((0 => ((69, 1), 31, 1,
(32767, 0), 0)));
+ Table.States (290).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 0)));
+ Table.States (291).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (291), (8, 10, 14, 18, 20, 25, 27, 39),
(69, 0), 4);
+ Table.States (291).Kernel := To_Vector ((0 => ((69, 0), 36, 0,
(69, 0), 4)));
+ Table.States (291).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (69, 0), 4)));
+ Table.States (292).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (292), 40, (46, 1), 303);
+ Table.States (292).Kernel := To_Vector ((0 => ((46, 1), 16, 2,
(32767, 0), 0)));
+ Table.States (292).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 1), 40, 303)));
+ Table.States (293).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (293), (8, 10, 14, 18, 20, 25, 39), (44,
2), 10);
+ Table.States (293).Kernel := To_Vector ((0 => ((44, 2), 36, 0,
(44, 2), 10)));
+ Table.States (293).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (44, 2), 10)));
+ Table.States (294).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (294), 8, (47, 0), 304);
+ Table.States (294).Kernel := To_Vector ((0 => ((47, 0), 10, 2,
(32767, 0), 0)));
+ Table.States (294).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (47, 0), 8, 304)));
+ Table.States (295).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (295), 26, (44, 3), 305);
+ Table.States (295).Kernel := To_Vector ((0 => ((44, 3), 23, 2,
(32767, 0), 0)));
+ Table.States (295).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 3), 26, 305)));
+ Table.States (296).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (296), 26, (44, 1), 306);
+ Table.States (296).Kernel := To_Vector ((((44, 1), 23, 2,
(32767, 0), 0), ((44, 2), 23, 4, (32767, 0),
+ 0)));
+ Table.States (296).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 1), 26, 306)));
+ Table.States (297).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (297), (8, 10, 14, 18, 20, 25, 27, 39),
(44, 0), 5);
+ Table.States (297).Kernel := To_Vector ((0 => ((44, 0), 36, 0,
(44, 0), 5)));
+ Table.States (297).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (44, 0), 5)));
+ Table.States (298).Action_List.Set_Capacity (7);
+ Add_Action (Table.States (298), 8, (47, 0), 85);
+ Add_Action (Table.States (298), 10, Reduce, (55, 0), 0);
+ Add_Action (Table.States (298), 14, (44, 0), 86);
+ Add_Action (Table.States (298), 18, (69, 4), 87);
+ Add_Action (Table.States (298), 20, (63, 0), 88);
+ Add_Action (Table.States (298), 25, (74, 0), 89);
+ Add_Action (Table.States (298), 39, (69, 0), 90);
+ Table.States (298).Goto_List.Set_Capacity (11);
+ Add_Goto (Table.States (298), 44, 91);
+ Add_Goto (Table.States (298), 47, 92);
+ Add_Goto (Table.States (298), 53, 93);
+ Add_Goto (Table.States (298), 54, 94);
+ Add_Goto (Table.States (298), 55, 307);
+ Add_Goto (Table.States (298), 62, 96);
+ Add_Goto (Table.States (298), 63, 97);
+ Add_Goto (Table.States (298), 64, 98);
+ Add_Goto (Table.States (298), 65, 99);
+ Add_Goto (Table.States (298), 69, 100);
+ Add_Goto (Table.States (298), 74, 101);
+ Table.States (298).Kernel := To_Vector ((0 => ((64, 0), 15, 2,
(32767, 0), 0)));
+ Table.States (298).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (55, 0), 0)));
+ Table.States (299).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (299), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (299), 39, (60, 1), 144);
+ Table.States (299).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (299), 60, 308);
+ Table.States (299).Kernel := To_Vector ((0 => ((63, 0), 10, 1,
(32767, 0), 0)));
+ Table.States (299).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 0), 0)));
+ Table.States (300).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (300), (8, 10, 14, 18, 20, 25, 27, 39),
(65, 0), 5);
+ Table.States (300).Kernel := To_Vector ((0 => ((65, 0), 36, 0,
(65, 0), 5)));
+ Table.States (300).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (65, 0), 5)));
+ Table.States (301).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (301), (8, 10, 14, 18, 20, 25, 27, 39),
(74, 0), 5);
+ Table.States (301).Kernel := To_Vector ((0 => ((74, 0), 36, 0,
(74, 0), 5)));
+ Table.States (301).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (74, 0), 5)));
+ Table.States (302).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (302), 29, (58, 1), 170);
+ Add_Action (Table.States (302), 36, (69, 1), 309);
+ Table.States (302).Kernel := To_Vector ((((58, 1), 58, 1,
(32767, 0), 0), ((69, 1), 58, 1, (32767, 0),
+ 0)));
+ Table.States (302).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (69, 1), 36, 309)));
+ Table.States (303).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (303), 23, (46, 1), 310);
+ Table.States (303).Kernel := To_Vector ((0 => ((46, 1), 40, 1,
(32767, 0), 0)));
+ Table.States (303).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (46, 1), 23, 310)));
+ Table.States (304).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (304), 36, (47, 0), 311);
+ Table.States (304).Kernel := To_Vector ((0 => ((47, 0), 8, 1,
(32767, 0), 0)));
+ Table.States (304).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (47, 0), 36, 311)));
+ Table.States (305).Action_List.Set_Capacity (10);
+ Add_Action (Table.States (305), 12, (59, 0), 130);
+ Add_Action (Table.States (305), 13, (59, 1), 131);
+ Add_Action (Table.States (305), 16, (43, 0), 132);
+ Add_Action (Table.States (305), 21, (45, 0), 9);
+ Add_Action (Table.States (305), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (305), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (305), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (305), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (305), 39, (60, 1), 133);
+ Add_Action (Table.States (305), 40, (71, 0), 134);
+ Table.States (305).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (305), 43, 135);
+ Add_Goto (Table.States (305), 45, 136);
+ Add_Goto (Table.States (305), 46, 137);
+ Add_Goto (Table.States (305), 58, 312);
+ Add_Goto (Table.States (305), 59, 139);
+ Add_Goto (Table.States (305), 60, 140);
+ Add_Goto (Table.States (305), 61, 141);
+ Add_Goto (Table.States (305), 71, 142);
+ Add_Goto (Table.States (305), 73, 143);
+ Table.States (305).Kernel := To_Vector ((0 => ((44, 3), 26, 1,
(32767, 0), 0)));
+ Table.States (305).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 0)));
+ Table.States (306).Action_List.Set_Capacity (11);
+ Add_Action (Table.States (306), 6, Reduce, (60, 0), 0);
+ Add_Action (Table.States (306), 12, (59, 0), 227);
+ Add_Action (Table.States (306), 13, (59, 1), 228);
+ Add_Action (Table.States (306), 16, (43, 0), 229);
+ Add_Action (Table.States (306), 21, (45, 0), 9);
+ Add_Action (Table.States (306), 29, Reduce, (60, 0), 0);
+ Add_Action (Table.States (306), 33, Reduce, (60, 0), 0);
+ Add_Action (Table.States (306), 35, Reduce, (60, 0), 0);
+ Add_Action (Table.States (306), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (306), 39, (60, 1), 230);
+ Add_Action (Table.States (306), 40, (71, 0), 231);
+ Table.States (306).Goto_List.Set_Capacity (9);
+ Add_Goto (Table.States (306), 43, 232);
+ Add_Goto (Table.States (306), 45, 233);
+ Add_Goto (Table.States (306), 46, 234);
+ Add_Goto (Table.States (306), 58, 313);
+ Add_Goto (Table.States (306), 59, 236);
+ Add_Goto (Table.States (306), 60, 237);
+ Add_Goto (Table.States (306), 61, 238);
+ Add_Goto (Table.States (306), 71, 239);
+ Add_Goto (Table.States (306), 73, 240);
+ Table.States (306).Kernel := To_Vector ((((44, 1), 26, 1,
(32767, 0), 0), ((44, 2), 26, 3, (32767, 0),
+ 0)));
+ Table.States (306).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (58, 0), 0)));
+ Table.States (307).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (307), 10, (64, 0), 314);
+ Table.States (307).Kernel := To_Vector ((0 => ((64, 0), 55, 2,
(32767, 0), 0)));
+ Table.States (307).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (64, 0), 10, 314)));
+ Table.States (308).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (308), 36, (63, 0), 315);
+ Table.States (308).Kernel := To_Vector ((0 => ((63, 0), 60, 1,
(32767, 0), 0)));
+ Table.States (308).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (63, 0), 36, 315)));
+ Table.States (309).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (309), (8, 10, 14, 18, 20, 25, 27, 39),
(69, 1), 6);
+ Table.States (309).Kernel := To_Vector ((0 => ((69, 1), 36, 0,
(69, 1), 6)));
+ Table.States (309).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (69, 1), 6)));
+ Table.States (310).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (310), (6, 29, 36), (46, 1), 6);
+ Table.States (310).Kernel := To_Vector ((0 => ((46, 1), 23, 0,
(46, 1), 6)));
+ Table.States (310).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (46, 1), 6)));
+ Table.States (311).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (311), (8, 10, 14, 18, 20, 25, 27, 39),
(47, 0), 7);
+ Table.States (311).Kernel := To_Vector ((0 => ((47, 0), 36, 0,
(47, 0), 7)));
+ Table.States (311).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (47, 0), 7)));
+ Table.States (312).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (312), 29, (58, 1), 170);
+ Add_Action (Table.States (312), 36, (44, 3), 316);
+ Table.States (312).Kernel := To_Vector ((((44, 3), 58, 1,
(32767, 0), 0), ((58, 1), 58, 1, (32767, 0),
+ 0)));
+ Table.States (312).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 3), 36, 316)));
+ Table.States (313).Action_List.Set_Capacity (3);
+ Add_Action (Table.States (313), 6, (44, 2), 317);
+ Add_Action (Table.States (313), 29, (58, 1), 261);
+ Add_Action (Table.States (313), 36, (44, 1), 318);
+ Table.States (313).Kernel := To_Vector ((((44, 1), 58, 1,
(32767, 0), 0), ((44, 2), 58, 3, (32767, 0),
+ 0), ((58, 1), 58, 1, (32767, 0), 0)));
+ Table.States (313).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 1), 36, 318)));
+ Table.States (314).Action_List.Set_Capacity (2);
+ Add_Action (Table.States (314), 36, Reduce, (60, 0), 0);
+ Add_Action (Table.States (314), 39, (60, 1), 144);
+ Table.States (314).Goto_List.Set_Capacity (1);
+ Add_Goto (Table.States (314), 60, 319);
+ Table.States (314).Kernel := To_Vector ((0 => ((64, 0), 10, 1,
(32767, 0), 0)));
+ Table.States (314).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (60, 0), 0)));
+ Table.States (315).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (315), (8, 10, 14, 18, 20, 25, 27, 39),
(63, 0), 7);
+ Table.States (315).Kernel := To_Vector ((0 => ((63, 0), 36, 0,
(63, 0), 7)));
+ Table.States (315).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (63, 0), 7)));
+ Table.States (316).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (316), (8, 10, 14, 18, 20, 25, 27, 39),
(44, 3), 8);
+ Table.States (316).Kernel := To_Vector ((0 => ((44, 3), 36, 0,
(44, 3), 8)));
+ Table.States (316).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (44, 3), 8)));
+ end Subr_6;
+ procedure Subr_7
+ is begin
+ Table.States (317).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (317), 38, (44, 2), 320);
+ Table.States (317).Kernel := To_Vector ((0 => ((44, 2), 6, 2,
(32767, 0), 0)));
+ Table.States (317).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 2), 38, 320)));
+ Table.States (318).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (318), (8, 10, 14, 18, 20, 25, 27, 39),
(44, 1), 8);
+ Table.States (318).Kernel := To_Vector ((0 => ((44, 1), 36, 0,
(44, 1), 8)));
+ Table.States (318).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (44, 1), 8)));
+ Table.States (319).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (319), 36, (64, 0), 321);
+ Table.States (319).Kernel := To_Vector ((0 => ((64, 0), 60, 1,
(32767, 0), 0)));
+ Table.States (319).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (64, 0), 36, 321)));
+ Table.States (320).Action_List.Set_Capacity (1);
+ Add_Action (Table.States (320), 36, (44, 2), 322);
+ Table.States (320).Kernel := To_Vector ((0 => ((44, 2), 38, 1,
(32767, 0), 0)));
+ Table.States (320).Minimal_Complete_Actions := To_Vector ((0 =>
(Shift, (44, 2), 36, 322)));
+ Table.States (321).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (321), (8, 10, 14, 18, 20, 25, 27, 39),
(64, 0), 9);
+ Table.States (321).Kernel := To_Vector ((0 => ((64, 0), 36, 0,
(64, 0), 9)));
+ Table.States (321).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (64, 0), 9)));
+ Table.States (322).Action_List.Set_Capacity (8);
+ Add_Action (Table.States (322), (8, 10, 14, 18, 20, 25, 27, 39),
(44, 2), 10);
+ Table.States (322).Kernel := To_Vector ((0 => ((44, 2), 36, 0,
(44, 2), 10)));
+ Table.States (322).Minimal_Complete_Actions := To_Vector ((0 =>
(Reduce, (44, 2), 10)));
+ end Subr_7;
+ begin
+ Subr_1;
+ Subr_2;
+ Subr_3;
+ Subr_4;
+ Subr_5;
+ Subr_6;
+ Subr_7;
+ Table.Error_Action := new Parse_Action_Node'((Verb => Error, others
=> <>), null);
+ end;
+
+ Table.Error_Recover_Enabled := True;
+ Table.McKenzie_Param := McKenzie_Param;
+ Table.Max_Parallel := 15;
+ return Table;
+ end Create_Parse_Table;
+
+ function Create_Productions return
WisiToken.Syntax_Trees.Production_Info_Trees.Vector
+ is begin
+ return Result : WisiToken.Syntax_Trees.Production_Info_Trees.Vector do
+ Result.Set_First_Last (42, 75);
+ Result (43).RHSs.Set_First_Last (0, 0);
+ Result (43).RHSs (0).In_Parse_Action := null;
+ Result (43).RHSs (0).Post_Parse_Action := aggregate_g_0'Access;
+ Result (44).RHSs.Set_First_Last (0, 3);
+ Result (44).RHSs (0).In_Parse_Action := null;
+ Result (44).RHSs (0).Post_Parse_Action :=
attribute_declaration_0'Access;
+ Result (44).RHSs (1).In_Parse_Action := null;
+ Result (44).RHSs (1).Post_Parse_Action :=
attribute_declaration_1'Access;
+ Result (44).RHSs (2).In_Parse_Action := null;
+ Result (44).RHSs (2).Post_Parse_Action :=
attribute_declaration_2'Access;
+ Result (44).RHSs (3).In_Parse_Action := null;
+ Result (44).RHSs (3).Post_Parse_Action :=
attribute_declaration_3'Access;
+ Result (47).RHSs.Set_First_Last (0, 0);
+ Result (47).RHSs (0).In_Parse_Action := null;
+ Result (47).RHSs (0).Post_Parse_Action := case_statement_0'Access;
+ Result (48).RHSs.Set_First_Last (0, 0);
+ Result (48).RHSs (0).In_Parse_Action := null;
+ Result (48).RHSs (0).Post_Parse_Action := case_item_0'Access;
+ Result (50).RHSs.Set_First_Last (0, 0);
+ Result (50).RHSs (0).In_Parse_Action := null;
+ Result (50).RHSs (0).Post_Parse_Action := compilation_unit_0'Access;
+ Result (60).RHSs.Set_First_Last (0, 1);
+ Result (60).RHSs (0).In_Parse_Action := null;
+ Result (60).RHSs (0).Post_Parse_Action := null;
+ Result (60).RHSs (1).In_Parse_Action := identifier_opt_1_check'Access;
+ Result (60).RHSs (1).Post_Parse_Action := null;
+ Result (63).RHSs.Set_First_Last (0, 0);
+ Result (63).RHSs (0).In_Parse_Action := package_spec_0_check'Access;
+ Result (63).RHSs (0).Post_Parse_Action := package_spec_0'Access;
+ Result (64).RHSs.Set_First_Last (0, 0);
+ Result (64).RHSs (0).In_Parse_Action :=
package_extension_0_check'Access;
+ Result (64).RHSs (0).Post_Parse_Action := package_extension_0'Access;
+ Result (65).RHSs.Set_First_Last (0, 0);
+ Result (65).RHSs (0).In_Parse_Action := null;
+ Result (65).RHSs (0).Post_Parse_Action := package_renaming_0'Access;
+ Result (67).RHSs.Set_First_Last (0, 0);
+ Result (67).RHSs (0).In_Parse_Action :=
project_extension_0_check'Access;
+ Result (67).RHSs (0).Post_Parse_Action := project_extension_0'Access;
+ Result (69).RHSs.Set_First_Last (0, 4);
+ Result (69).RHSs (0).In_Parse_Action := null;
+ Result (69).RHSs (0).Post_Parse_Action :=
simple_declarative_item_0'Access;
+ Result (69).RHSs (1).In_Parse_Action := null;
+ Result (69).RHSs (1).Post_Parse_Action :=
simple_declarative_item_1'Access;
+ Result (69).RHSs (2).In_Parse_Action := null;
+ Result (69).RHSs (2).Post_Parse_Action := null;
+ Result (69).RHSs (3).In_Parse_Action := null;
+ Result (69).RHSs (3).Post_Parse_Action := null;
+ Result (69).RHSs (4).In_Parse_Action := null;
+ Result (69).RHSs (4).Post_Parse_Action :=
simple_declarative_item_4'Access;
+ Result (70).RHSs.Set_First_Last (0, 0);
+ Result (70).RHSs (0).In_Parse_Action :=
simple_project_declaration_0_check'Access;
+ Result (70).RHSs (0).Post_Parse_Action :=
simple_project_declaration_0'Access;
+ Result (74).RHSs.Set_First_Last (0, 0);
+ Result (74).RHSs (0).In_Parse_Action := null;
+ Result (74).RHSs (0).Post_Parse_Action :=
typed_string_declaration_0'Access;
+ end return;
+ end Create_Productions;
+
+ function Create_Parser
+ (Trace : in WisiToken.Trace_Access;
+ User_Data : in WisiToken.Syntax_Trees.User_Data_Access;
+ Language_Fixes : in
WisiToken.Parse.LR.Parser.Language_Fixes_Access;
+ Language_Matching_Begin_Tokens : in
WisiToken.Parse.LR.Parser.Language_Matching_Begin_Tokens_Access;
+ Language_String_ID_Set : in
WisiToken.Parse.LR.Parser.Language_String_ID_Set_Access)
+ return WisiToken.Parse.LR.Parser.Parser
+ is begin
+ return Parser : WisiToken.Parse.LR.Parser.Parser do
+ Parser.Tree.Lexer := Lexer.New_Lexer (Trace,
Gpr_Process_Actions.Descriptor'Access);
+ Parser.Productions := Create_Productions;
+ Parser.User_Data := User_Data;
+ Parser.Partial_Parse_Active :=
Gpr_Process_Actions.Partial_Parse_Active'Access;
+ Parser.Partial_Parse_Byte_Goal :=
Gpr_Process_Actions.Partial_Parse_Byte_Goal'Access;
+ Parser.Table := Create_Parse_Table;
+ Parser.Language_Fixes := Language_Fixes;
+ Parser.Language_Matching_Begin_Tokens :=
Language_Matching_Begin_Tokens;
+ Parser.Language_String_ID_Set := Language_String_ID_Set;
+ end return;
+ end Create_Parser;
+end Gpr_Process_Main;
diff --git a/gpr_process_main.ads b/gpr_process_main.ads
new file mode 100644
index 0000000000..0bccb8db91
--- /dev/null
+++ b/gpr_process_main.ads
@@ -0,0 +1,32 @@
+-- generated parser support file. -*- buffer-read-only:t -*-
+-- command line: wisitoken-bnf-generate.exe --generate LR1 Ada_Emacs re2c
PROCESS gpr.wy
+--
+
+-- Copyright (C) 2013 - 2022 Free Software Foundation, Inc.
+
+-- This program 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, or (at
+-- your option) any later version.
+--
+-- This software 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/>.
+
+with WisiToken.Syntax_Trees;
+with WisiToken.Parse.LR.Parser;
+package Gpr_Process_Main is
+
+ function Create_Parser
+ (Trace : in WisiToken.Trace_Access;
+ User_Data : in WisiToken.Syntax_Trees.User_Data_Access;
+ Language_Fixes : in
WisiToken.Parse.LR.Parser.Language_Fixes_Access;
+ Language_Matching_Begin_Tokens : in
WisiToken.Parse.LR.Parser.Language_Matching_Begin_Tokens_Access;
+ Language_String_ID_Set : in
WisiToken.Parse.LR.Parser.Language_String_ID_Set_Access)
+ return WisiToken.Parse.LR.Parser.Parser;
+
+end Gpr_Process_Main;
diff --git a/gpr_re2c.c b/gpr_re2c.c
new file mode 100644
index 0000000000..2729c40fa2
--- /dev/null
+++ b/gpr_re2c.c
@@ -0,0 +1,7693 @@
+/* Generated by re2c 2.2 */
+#line 1 "../gpr.re2c"
+// generated parser support file. -*- buffer-read-only:t mode: C -*-
+// command line: wisitoken-bnf-generate.exe --generate LR1 Ada_Emacs re2c
PROCESS gpr.wy
+//
+
+// Copyright (C) 2013 - 2022 Free Software Foundation, Inc.
+
+// This program 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, or (at
+// your option) any later version.
+//
+// This software 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/>.
+
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+typedef struct wisi_lexer
+{
+ unsigned char* buffer; // input text, in utf-8 encoding
+ unsigned char* buffer_last; // last byte in buffer
+ unsigned char* cursor; // current byte
+ unsigned char* byte_token_start; // byte position at start of current token
+ size_t char_pos; // character position of current character
+ size_t char_token_start; // character position at start of current
token
+ int line; // 1 indexed
+ int line_token_start; // line at start of current token
+ unsigned char* marker; // saved cursor
+ size_t marker_pos; // saved character position
+ size_t marker_line; // saved line
+ unsigned char* context; // saved cursor
+ size_t context_pos; // saved character position
+ int context_line; // saved line
+ int verbosity;
+
+} wisi_lexer;
+
+#define YYCTYPE unsigned char
+
+#define NO_ERROR 0
+#define ERROR_unrecognized_character 1
+wisi_lexer* gpr_new_lexer
+ (unsigned char* input, size_t length, int verbosity)
+{
+ wisi_lexer* result = malloc (sizeof (wisi_lexer));
+ result->buffer = input;
+ result->buffer_last = input + length - 1;
+ result->cursor = input;
+ result->byte_token_start = input;
+ result->char_pos = 1; /* match WisiToken.Buffer_Region */
+ result->char_token_start = 1;
+ result->line = 1;
+ result->line_token_start = result->line;
+ result->verbosity = 0;
+ return result;
+}
+
+void
+gpr_free_lexer(wisi_lexer** lexer)
+{
+ free(*lexer);
+ *lexer = 0;
+}
+
+void
+gpr_reset_lexer(wisi_lexer* lexer)
+{
+ lexer->cursor = lexer->buffer;
+ lexer->char_pos = 1;
+ lexer->line = 1;
+}
+
+void
+gpr_set_verbosity
+ (wisi_lexer* lexer, int verbosity)
+{
+ lexer->verbosity = verbosity;
+}
+
+void
+gpr_set_position
+ (wisi_lexer* lexer, size_t byte_position, size_t char_position, int line)
+{
+ lexer->cursor = lexer->buffer + byte_position - 1;
+ lexer->char_pos = char_position;
+ lexer->line = line;
+}
+
+static void debug(wisi_lexer* lexer, int state, unsigned char ch)
+{
+ if (lexer->verbosity > 0)
+ {
+ if (ch < ' ')
+ printf ("lexer: %d, 0x%x\n", state, ch);
+ else
+ printf ("lexer: %d, '%c' 0x%x\n", state, ch, ch);
+ }
+}
+#define YYDEBUG(state, ch) debug(lexer, state, ch)
+#define YYCURSOR lexer->cursor
+
+#define YYPEEK() (lexer->cursor <= lexer->buffer_last) ? *lexer->cursor : 4
+
+static void skip(wisi_lexer* lexer)
+{
+ if (lexer->cursor <= lexer->buffer_last)
+ {
+ ++lexer->cursor;
+ if (lexer->cursor <= lexer->buffer_last)
+ {
+ /* UFT-8 encoding: https://en.wikipedia.org/wiki/UTF-8#Description */
+ if (*lexer->cursor == 0x0A && lexer->cursor > lexer->buffer &&
*(lexer->cursor - 1) == 0x0D)
+ {/* second byte of DOS line ending */
+ }
+ else if ((*lexer->cursor & 0x80) == 0x80 && (*lexer->cursor & 0xC0)
!= 0xC0)
+ {/* byte 2, 3 or 4 of multi-byte UTF-8 char */
+ }
+ else
+ lexer->char_pos++;
+ } else
+ lexer->char_pos++;
+ }
+}
+#define YYSKIP() skip(lexer)
+#define YYBACKUP() lexer->marker = lexer->cursor; lexer->marker_pos =
lexer->char_pos;lexer->marker_line = lexer->line
+#define YYRESTORE() lexer->cursor = lexer->marker; lexer->char_pos =
lexer->marker_pos;lexer->line = lexer->marker_line
+#define YYBACKUPCTX() lexer->context = lexer->cursor; lexer->context_pos =
lexer->char_pos;lexer->context_line = lexer->line
+#define YYRESTORECTX() lexer->cursor = lexer->context; lexer->char_pos =
lexer->context_pos;lexer->line = lexer->context_line
+
+int gpr_next_token
+ (wisi_lexer* lexer,
+ int* id,
+ size_t* byte_position,
+ size_t* byte_length,
+ size_t* char_position,
+ size_t* char_length,
+ int* line_start,
+ int* line_length)
+{
+ int status = NO_ERROR;
+ *id = -1;
+ if (lexer->cursor > lexer->buffer_last)
+ {
+ *id = 41;
+ *byte_position = lexer->buffer_last - lexer->buffer + 2;
+ *byte_length = 0;
+ *char_position = lexer->char_pos;
+ *char_length = 0;
+ *line_start = lexer->line;
+ *line_length = 0;
+ return status;
+ }
+
+ lexer->byte_token_start = lexer->cursor;
+ lexer->char_token_start = lexer->char_pos;
+ lexer->line_token_start = lexer->line;
+
+ while (*id == -1 && status == 0)
+ {
+
+#line 170 "../gpr_re2c.c"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept = 0;
+ YYDEBUG(0, *YYCURSOR);
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x04: goto yy4;
+ case '\t':
+ case ' ': goto yy6;
+ case '\n': goto yy8;
+ case '\r': goto yy10;
+ case '"': goto yy11;
+ case '#': goto yy12;
+ case '&': goto yy13;
+ case '\'': goto yy15;
+ case '(': goto yy17;
+ case ')': goto yy19;
+ case ',': goto yy21;
+ case '-': goto yy23;
+ case '.': goto yy24;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy26;
+ case ':': goto yy29;
+ case ';': goto yy31;
+ case '=': goto yy33;
+ case 'A':
+ case 'a': goto yy34;
+ case 'B':
+ case 'D':
+ case 'G':
+ case 'H':
+ case 'J':
+ case 'K':
+ case 'M':
+ case 'Q':
+ case 'V':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case 'b':
+ case 'd':
+ case 'g':
+ case 'h':
+ case 'j':
+ case 'k':
+ case 'm':
+ case 'q':
+ case 'v':
+ case 'x':
+ case 'y':
+ case 'z': goto yy36;
+ case 'C':
+ case 'c': goto yy38;
+ case 'E':
+ case 'e': goto yy39;
+ case 'F':
+ case 'f': goto yy40;
+ case 'I':
+ case 'i': goto yy41;
+ case 'L':
+ case 'l': goto yy42;
+ case 'N':
+ case 'n': goto yy43;
+ case 'O':
+ case 'o': goto yy44;
+ case 'P':
+ case 'p': goto yy45;
+ case 'R':
+ case 'r': goto yy46;
+ case 'S':
+ case 's': goto yy47;
+ case 'T':
+ case 't': goto yy48;
+ case 'U':
+ case 'u': goto yy49;
+ case 'W':
+ case 'w': goto yy50;
+ case '{': goto yy51;
+ case '|': goto yy52;
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF: goto yy54;
+ case 0xE0: goto yy55;
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF: goto yy56;
+ case 0xF0: goto yy57;
+ case 0xF1:
+ case 0xF2:
+ case 0xF3: goto yy58;
+ case 0xF4: goto yy59;
+ default: goto yy2;
+ }
+yy2:
+ YYDEBUG(2, YYPEEK());
+ YYSKIP();
+yy3:
+ YYDEBUG(3, YYPEEK());
+#line 260 "../gpr.re2c"
+ {status = ERROR_unrecognized_character; continue;}
+#line 318 "../gpr_re2c.c"
+yy4:
+ YYDEBUG(4, YYPEEK());
+ YYSKIP();
+ YYDEBUG(5, YYPEEK());
+#line 258 "../gpr.re2c"
+ {*id = 41; continue;}
+#line 325 "../gpr_re2c.c"
+yy6:
+ YYDEBUG(6, YYPEEK());
+ YYSKIP();
+ YYDEBUG(7, YYPEEK());
+#line 214 "../gpr.re2c"
+ { lexer->byte_token_start = lexer->cursor;
+ lexer->char_token_start = lexer->char_pos;
+ lexer->line_token_start = lexer->line;
+ continue; }
+#line 335 "../gpr_re2c.c"
+yy8:
+ YYDEBUG(8, YYPEEK());
+ YYSKIP();
+ YYDEBUG(9, YYPEEK());
+#line 218 "../gpr.re2c"
+ {*id = 1; lexer->line++; continue;}
+#line 342 "../gpr_re2c.c"
+yy10:
+ YYDEBUG(10, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '\n': goto yy8;
+ default: goto yy3;
+ }
+yy11:
+ YYDEBUG(11, YYPEEK());
+ yyaccept = 0;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case ' ':
+ case '!':
+ case '"':
+ case '#':
+ case '$':
+ case '%':
+ case '&':
+ case '\'':
+ case '(':
+ case ')':
+ case '*':
+ case '+':
+ case ',':
+ case '-':
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_':
+ case '`':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case '{':
+ case '|':
+ case '}':
+ case '~':
+ case 0x7F:
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy61;
+ default: goto yy3;
+ }
+yy12:
+ YYDEBUG(12, YYPEEK());
+ yyaccept = 0;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'e': goto yy71;
+ case 'i': goto yy72;
+ default: goto yy3;
+ }
+yy13:
+ YYDEBUG(13, YYPEEK());
+ YYSKIP();
+ YYDEBUG(14, YYPEEK());
+#line 246 "../gpr.re2c"
+ {*id = 29; continue;}
+#line 524 "../gpr_re2c.c"
+yy15:
+ YYDEBUG(15, YYPEEK());
+ YYSKIP();
+ YYDEBUG(16, YYPEEK());
+#line 252 "../gpr.re2c"
+ {*id = 35; continue;}
+#line 531 "../gpr_re2c.c"
+yy17:
+ YYDEBUG(17, YYPEEK());
+ YYSKIP();
+ YYDEBUG(18, YYPEEK());
+#line 233 "../gpr.re2c"
+ {*id = 16; continue;}
+#line 538 "../gpr_re2c.c"
+yy19:
+ YYDEBUG(19, YYPEEK());
+ YYSKIP();
+ YYDEBUG(20, YYPEEK());
+#line 240 "../gpr.re2c"
+ {*id = 23; continue;}
+#line 545 "../gpr_re2c.c"
+yy21:
+ YYDEBUG(21, YYPEEK());
+ YYSKIP();
+ YYDEBUG(22, YYPEEK());
+#line 249 "../gpr.re2c"
+ {*id = 32; continue;}
+#line 552 "../gpr_re2c.c"
+yy23:
+ YYDEBUG(23, YYPEEK());
+ yyaccept = 0;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '-': goto yy73;
+ default: goto yy3;
+ }
+yy24:
+ YYDEBUG(24, YYPEEK());
+ YYSKIP();
+ YYDEBUG(25, YYPEEK());
+#line 250 "../gpr.re2c"
+ {*id = 33; continue;}
+#line 569 "../gpr_re2c.c"
+yy26:
+ YYDEBUG(26, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ YYDEBUG(27, YYPEEK());
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy26;
+ default: goto yy28;
+ }
+yy28:
+ YYDEBUG(28, YYPEEK());
+#line 255 "../gpr.re2c"
+ {*id = 38; continue;}
+#line 592 "../gpr_re2c.c"
+yy29:
+ YYDEBUG(29, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '=': goto yy75;
+ default: goto yy30;
+ }
+yy30:
+ YYDEBUG(30, YYPEEK());
+#line 247 "../gpr.re2c"
+ {*id = 30; continue;}
+#line 605 "../gpr_re2c.c"
+yy31:
+ YYDEBUG(31, YYPEEK());
+ YYSKIP();
+ YYDEBUG(32, YYPEEK());
+#line 253 "../gpr.re2c"
+ {*id = 36; continue;}
+#line 612 "../gpr_re2c.c"
+yy33:
+ YYDEBUG(33, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '>': goto yy77;
+ default: goto yy3;
+ }
+yy34:
+ YYDEBUG(34, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'B':
+ case 'b': goto yy79;
+ case 'G':
+ case 'g': goto yy80;
+ case 'T':
+ case 't': goto yy81;
+ default: goto yy37;
+ }
+yy35:
+ YYDEBUG(35, YYPEEK());
+#line 256 "../gpr.re2c"
+ {*id = 39; continue;}
+#line 640 "../gpr_re2c.c"
+yy36:
+ YYDEBUG(36, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+yy37:
+ YYDEBUG(37, YYPEEK());
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy36;
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF: goto yy83;
+ case 0xE0: goto yy84;
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF: goto yy85;
+ case 0xF0: goto yy86;
+ case 0xF1:
+ case 0xF2:
+ case 0xF3: goto yy87;
+ case 0xF4: goto yy88;
+ default: goto yy35;
+ }
+yy38:
+ YYDEBUG(38, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'A':
+ case 'a': goto yy89;
+ case 'O':
+ case 'o': goto yy90;
+ default: goto yy37;
+ }
+yy39:
+ YYDEBUG(39, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'N':
+ case 'n': goto yy91;
+ case 'X':
+ case 'x': goto yy92;
+ default: goto yy37;
+ }
+yy40:
+ YYDEBUG(40, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'O':
+ case 'o': goto yy93;
+ default: goto yy37;
+ }
+yy41:
+ YYDEBUG(41, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'S':
+ case 's': goto yy94;
+ default: goto yy37;
+ }
+yy42:
+ YYDEBUG(42, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'I':
+ case 'i': goto yy96;
+ default: goto yy37;
+ }
+yy43:
+ YYDEBUG(43, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'U':
+ case 'u': goto yy97;
+ default: goto yy37;
+ }
+yy44:
+ YYDEBUG(44, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'T':
+ case 't': goto yy98;
+ default: goto yy37;
+ }
+yy45:
+ YYDEBUG(45, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'A':
+ case 'a': goto yy99;
+ case 'R':
+ case 'r': goto yy100;
+ default: goto yy37;
+ }
+yy46:
+ YYDEBUG(46, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'E':
+ case 'e': goto yy101;
+ default: goto yy37;
+ }
+yy47:
+ YYDEBUG(47, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'T':
+ case 't': goto yy102;
+ default: goto yy37;
+ }
+yy48:
+ YYDEBUG(48, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'Y':
+ case 'y': goto yy103;
+ default: goto yy37;
+ }
+yy49:
+ YYDEBUG(49, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'S':
+ case 's': goto yy104;
+ default: goto yy37;
+ }
+yy50:
+ YYDEBUG(50, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'H':
+ case 'h': goto yy105;
+ case 'I':
+ case 'i': goto yy106;
+ default: goto yy37;
+ }
+yy51:
+ YYDEBUG(51, YYPEEK());
+ yyaccept = 0;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case '\t':
+ case '\v':
+ case '\f':
+ case '\r':
+ case 0x0E:
+ case 0x0F:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ case 0x1A:
+ case 0x1B:
+ case 0x1C:
+ case 0x1D:
+ case 0x1E:
+ case 0x1F:
+ case ' ':
+ case '!':
+ case '"':
+ case '#':
+ case '$':
+ case '%':
+ case '&':
+ case '\'':
+ case '(':
+ case ')':
+ case '*':
+ case '+':
+ case ',':
+ case '-':
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_':
+ case '`':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case '{':
+ case '|':
+ case '}':
+ case '~':
+ case 0x7F:
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy108;
+ default: goto yy3;
+ }
+yy52:
+ YYDEBUG(52, YYPEEK());
+ YYSKIP();
+ YYDEBUG(53, YYPEEK());
+#line 254 "../gpr.re2c"
+ {*id = 37; continue;}
+#line 1109 "../gpr_re2c.c"
+yy54:
+ YYDEBUG(54, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy36;
+ default: goto yy3;
+ }
+yy55:
+ YYDEBUG(55, YYPEEK());
+ yyaccept = 0;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy83;
+ default: goto yy3;
+ }
+yy56:
+ YYDEBUG(56, YYPEEK());
+ yyaccept = 0;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy83;
+ default: goto yy3;
+ }
+yy57:
+ YYDEBUG(57, YYPEEK());
+ yyaccept = 0;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy85;
+ default: goto yy3;
+ }
+yy58:
+ YYDEBUG(58, YYPEEK());
+ yyaccept = 0;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy85;
+ default: goto yy3;
+ }
+yy59:
+ YYDEBUG(59, YYPEEK());
+ yyaccept = 0;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F: goto yy85;
+ default: goto yy3;
+ }
+yy60:
+ YYDEBUG(60, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+yy61:
+ YYDEBUG(61, YYPEEK());
+ switch (yych) {
+ case ' ':
+ case '!':
+ case '#':
+ case '$':
+ case '%':
+ case '&':
+ case '\'':
+ case '(':
+ case ')':
+ case '*':
+ case '+':
+ case ',':
+ case '-':
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_':
+ case '`':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case '{':
+ case '|':
+ case '}':
+ case '~':
+ case 0x7F: goto yy60;
+ case '"': goto yy63;
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF: goto yy65;
+ case 0xE0: goto yy66;
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF: goto yy67;
+ case 0xF0: goto yy68;
+ case 0xF1:
+ case 0xF2:
+ case 0xF3: goto yy69;
+ case 0xF4: goto yy70;
+ default: goto yy62;
+ }
+yy62:
+ YYDEBUG(62, YYPEEK());
+ YYRESTORE();
+ switch (yyaccept) {
+ case 0:
+ goto yy3;
+ case 1:
+ goto yy35;
+ case 2:
+ goto yy64;
+ case 3:
+ goto yy82;
+ case 4:
+ goto yy95;
+ case 5:
+ goto yy134;
+ case 6:
+ goto yy137;
+ case 7:
+ goto yy147;
+ case 8:
+ goto yy162;
+ case 9:
+ goto yy167;
+ case 10:
+ goto yy174;
+ case 11:
+ goto yy176;
+ case 12:
+ goto yy178;
+ case 13:
+ goto yy197;
+ case 14:
+ goto yy206;
+ case 15:
+ goto yy209;
+ case 16:
+ goto yy211;
+ case 17:
+ goto yy213;
+ case 18:
+ goto yy215;
+ case 19:
+ goto yy218;
+ case 20:
+ goto yy222;
+ case 21:
+ goto yy224;
+ case 22:
+ goto yy226;
+ case 23:
+ goto yy236;
+ default:
+ goto yy241;
+ }
+yy63:
+ YYDEBUG(63, YYPEEK());
+ yyaccept = 2;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '"': goto yy60;
+ default: goto yy64;
+ }
+yy64:
+ YYDEBUG(64, YYPEEK());
+#line 257 "../gpr.re2c"
+ {*id = 40; continue;}
+#line 1675 "../gpr_re2c.c"
+yy65:
+ YYDEBUG(65, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy60;
+ default: goto yy62;
+ }
+yy66:
+ YYDEBUG(66, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy65;
+ default: goto yy62;
+ }
+yy67:
+ YYDEBUG(67, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy65;
+ default: goto yy62;
+ }
+yy68:
+ YYDEBUG(68, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy67;
+ default: goto yy62;
+ }
+yy69:
+ YYDEBUG(69, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy67;
+ default: goto yy62;
+ }
+yy70:
+ YYDEBUG(70, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F: goto yy67;
+ default: goto yy62;
+ }
+yy71:
+ YYDEBUG(71, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'l': goto yy117;
+ case 'n': goto yy118;
+ default: goto yy62;
+ }
+yy72:
+ YYDEBUG(72, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'f': goto yy119;
+ default: goto yy62;
+ }
+yy73:
+ YYDEBUG(73, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ YYDEBUG(74, YYPEEK());
+ switch (yych) {
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case '\t':
+ case '\v':
+ case '\f':
+ case '\r':
+ case 0x0E:
+ case 0x0F:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ case 0x1A:
+ case 0x1B:
+ case 0x1C:
+ case 0x1D:
+ case 0x1E:
+ case 0x1F:
+ case ' ':
+ case '!':
+ case '"':
+ case '#':
+ case '$':
+ case '%':
+ case '&':
+ case '\'':
+ case '(':
+ case ')':
+ case '*':
+ case '+':
+ case ',':
+ case '-':
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_':
+ case '`':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case '{':
+ case '|':
+ case '}':
+ case '~':
+ case 0x7F: goto yy73;
+ case 0x04:
+ case '\n': goto yy121;
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF: goto yy123;
+ case 0xE0: goto yy124;
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF: goto yy125;
+ case 0xF0: goto yy126;
+ case 0xF1:
+ case 0xF2:
+ case 0xF3: goto yy127;
+ case 0xF4: goto yy128;
+ default: goto yy62;
+ }
+yy75:
+ YYDEBUG(75, YYPEEK());
+ YYSKIP();
+ YYDEBUG(76, YYPEEK());
+#line 248 "../gpr.re2c"
+ {*id = 31; continue;}
+#line 2216 "../gpr_re2c.c"
+yy77:
+ YYDEBUG(77, YYPEEK());
+ YYSKIP();
+ YYDEBUG(78, YYPEEK());
+#line 251 "../gpr.re2c"
+ {*id = 34; continue;}
+#line 2223 "../gpr_re2c.c"
+yy79:
+ YYDEBUG(79, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'S':
+ case 's': goto yy129;
+ default: goto yy37;
+ }
+yy80:
+ YYDEBUG(80, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'G':
+ case 'g': goto yy130;
+ default: goto yy37;
+ }
+yy81:
+ YYDEBUG(81, YYPEEK());
+ yyaccept = 3;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy82;
+ }
+yy82:
+ YYDEBUG(82, YYPEEK());
+#line 223 "../gpr.re2c"
+ {*id = 6; continue;}
+#line 2373 "../gpr_re2c.c"
+yy83:
+ YYDEBUG(83, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy36;
+ default: goto yy62;
+ }
+yy84:
+ YYDEBUG(84, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy83;
+ default: goto yy62;
+ }
+yy85:
+ YYDEBUG(85, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy83;
+ default: goto yy62;
+ }
+yy86:
+ YYDEBUG(86, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy85;
+ default: goto yy62;
+ }
+yy87:
+ YYDEBUG(87, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy85;
+ default: goto yy62;
+ }
+yy88:
+ YYDEBUG(88, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F: goto yy85;
+ default: goto yy62;
+ }
+yy89:
+ YYDEBUG(89, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'S':
+ case 's': goto yy131;
+ default: goto yy37;
+ }
+yy90:
+ YYDEBUG(90, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'N':
+ case 'n': goto yy132;
+ default: goto yy37;
+ }
+yy91:
+ YYDEBUG(91, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'D':
+ case 'd': goto yy133;
+ default: goto yy37;
+ }
+yy92:
+ YYDEBUG(92, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'T':
+ case 't': goto yy135;
+ default: goto yy37;
+ }
+yy93:
+ YYDEBUG(93, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'R':
+ case 'r': goto yy136;
+ default: goto yy37;
+ }
+yy94:
+ YYDEBUG(94, YYPEEK());
+ yyaccept = 4;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy95;
+ }
+yy95:
+ YYDEBUG(95, YYPEEK());
+#line 232 "../gpr.re2c"
+ {*id = 15; continue;}
+#line 2886 "../gpr_re2c.c"
+yy96:
+ YYDEBUG(96, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'B':
+ case 'b': goto yy138;
+ default: goto yy37;
+ }
+yy97:
+ YYDEBUG(97, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'L':
+ case 'l': goto yy139;
+ default: goto yy37;
+ }
+yy98:
+ YYDEBUG(98, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'H':
+ case 'h': goto yy140;
+ default: goto yy37;
+ }
+yy99:
+ YYDEBUG(99, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'C':
+ case 'c': goto yy141;
+ default: goto yy37;
+ }
+yy100:
+ YYDEBUG(100, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'O':
+ case 'o': goto yy142;
+ default: goto yy37;
+ }
+yy101:
+ YYDEBUG(101, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'N':
+ case 'n': goto yy143;
+ default: goto yy37;
+ }
+yy102:
+ YYDEBUG(102, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'A':
+ case 'a': goto yy144;
+ default: goto yy37;
+ }
+yy103:
+ YYDEBUG(103, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'P':
+ case 'p': goto yy145;
+ default: goto yy37;
+ }
+yy104:
+ YYDEBUG(104, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'E':
+ case 'e': goto yy146;
+ default: goto yy37;
+ }
+yy105:
+ YYDEBUG(105, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'E':
+ case 'e': goto yy148;
+ default: goto yy37;
+ }
+yy106:
+ YYDEBUG(106, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'T':
+ case 't': goto yy149;
+ default: goto yy37;
+ }
+yy107:
+ YYDEBUG(107, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+yy108:
+ YYDEBUG(108, YYPEEK());
+ switch (yych) {
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case '\t':
+ case '\v':
+ case '\f':
+ case '\r':
+ case 0x0E:
+ case 0x0F:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ case 0x1A:
+ case 0x1B:
+ case 0x1C:
+ case 0x1D:
+ case 0x1E:
+ case 0x1F:
+ case ' ':
+ case '!':
+ case '"':
+ case '#':
+ case '$':
+ case '%':
+ case '&':
+ case '\'':
+ case '(':
+ case ')':
+ case '*':
+ case '+':
+ case ',':
+ case '-':
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_':
+ case '`':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case '{':
+ case '|':
+ case '~':
+ case 0x7F: goto yy107;
+ case '}': goto yy109;
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF: goto yy111;
+ case 0xE0: goto yy112;
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF: goto yy113;
+ case 0xF0: goto yy114;
+ case 0xF1:
+ case 0xF2:
+ case 0xF3: goto yy115;
+ case 0xF4: goto yy116;
+ default: goto yy62;
+ }
+yy109:
+ YYDEBUG(109, YYPEEK());
+ YYSKIP();
+ YYDEBUG(110, YYPEEK());
+#line 221 "../gpr.re2c"
+ {*id = 4; if (lexer->cursor[-1] == 0x0a || (lexer->cursor[-1] == 0x0d
&& lexer->cursor[-2] == 0x0a)) lexer->line++; continue;}
+#line 3200 "../gpr_re2c.c"
+yy111:
+ YYDEBUG(111, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy107;
+ default: goto yy62;
+ }
+yy112:
+ YYDEBUG(112, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy111;
+ default: goto yy62;
+ }
+yy113:
+ YYDEBUG(113, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy111;
+ default: goto yy62;
+ }
+yy114:
+ YYDEBUG(114, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy113;
+ default: goto yy62;
+ }
+yy115:
+ YYDEBUG(115, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy113;
+ default: goto yy62;
+ }
+yy116:
+ YYDEBUG(116, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F: goto yy113;
+ default: goto yy62;
+ }
+yy117:
+ YYDEBUG(117, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 's': goto yy150;
+ default: goto yy62;
+ }
+yy118:
+ YYDEBUG(118, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'd': goto yy119;
+ default: goto yy62;
+ }
+yy119:
+ YYDEBUG(119, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ YYDEBUG(120, YYPEEK());
+ switch (yych) {
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case '\t':
+ case '\v':
+ case '\f':
+ case '\r':
+ case 0x0E:
+ case 0x0F:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ case 0x1A:
+ case 0x1B:
+ case 0x1C:
+ case 0x1D:
+ case 0x1E:
+ case 0x1F:
+ case ' ':
+ case '!':
+ case '"':
+ case '#':
+ case '$':
+ case '%':
+ case '&':
+ case '\'':
+ case '(':
+ case ')':
+ case '*':
+ case '+':
+ case ',':
+ case '-':
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_':
+ case '`':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case '{':
+ case '|':
+ case '}':
+ case '~':
+ case 0x7F: goto yy119;
+ case 0x04:
+ case '\n': goto yy151;
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF: goto yy153;
+ case 0xE0: goto yy154;
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF: goto yy155;
+ case 0xF0: goto yy156;
+ case 0xF1:
+ case 0xF2:
+ case 0xF3: goto yy157;
+ case 0xF4: goto yy158;
+ default: goto yy62;
+ }
+yy121:
+ YYDEBUG(121, YYPEEK());
+ YYSKIP();
+ YYDEBUG(122, YYPEEK());
+#line 219 "../gpr.re2c"
+ {*id = 2; if (lexer->cursor[-1] == 0x0a || (lexer->cursor[-1] == 0x0d
&& lexer->cursor[-2] == 0x0a)) lexer->line++; continue;}
+#line 3740 "../gpr_re2c.c"
+yy123:
+ YYDEBUG(123, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy73;
+ default: goto yy62;
+ }
+yy124:
+ YYDEBUG(124, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy123;
+ default: goto yy62;
+ }
+yy125:
+ YYDEBUG(125, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy123;
+ default: goto yy62;
+ }
+yy126:
+ YYDEBUG(126, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy125;
+ default: goto yy62;
+ }
+yy127:
+ YYDEBUG(127, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy125;
+ default: goto yy62;
+ }
+yy128:
+ YYDEBUG(128, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F: goto yy125;
+ default: goto yy62;
+ }
+yy129:
+ YYDEBUG(129, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'T':
+ case 't': goto yy159;
+ default: goto yy37;
+ }
+yy130:
+ YYDEBUG(130, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'R':
+ case 'r': goto yy160;
+ default: goto yy37;
+ }
+yy131:
+ YYDEBUG(131, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'E':
+ case 'e': goto yy161;
+ default: goto yy37;
+ }
+yy132:
+ YYDEBUG(132, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'F':
+ case 'f': goto yy163;
+ default: goto yy37;
+ }
+yy133:
+ YYDEBUG(133, YYPEEK());
+ yyaccept = 5;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy134;
+ }
+yy134:
+ YYDEBUG(134, YYPEEK());
+#line 227 "../gpr.re2c"
+ {*id = 10; continue;}
+#line 4242 "../gpr_re2c.c"
+yy135:
+ YYDEBUG(135, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'E':
+ case 'e': goto yy164;
+ default: goto yy37;
+ }
+yy136:
+ YYDEBUG(136, YYPEEK());
+ yyaccept = 6;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy137;
+ }
+yy137:
+ YYDEBUG(137, YYPEEK());
+#line 231 "../gpr.re2c"
+ {*id = 14; continue;}
+#line 4381 "../gpr_re2c.c"
+yy138:
+ YYDEBUG(138, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'R':
+ case 'r': goto yy165;
+ default: goto yy37;
+ }
+yy139:
+ YYDEBUG(139, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'L':
+ case 'l': goto yy166;
+ default: goto yy37;
+ }
+yy140:
+ YYDEBUG(140, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'E':
+ case 'e': goto yy168;
+ default: goto yy37;
+ }
+yy141:
+ YYDEBUG(141, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'K':
+ case 'k': goto yy169;
+ default: goto yy37;
+ }
+yy142:
+ YYDEBUG(142, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'J':
+ case 'j': goto yy170;
+ default: goto yy37;
+ }
+yy143:
+ YYDEBUG(143, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'A':
+ case 'a': goto yy171;
+ default: goto yy37;
+ }
+yy144:
+ YYDEBUG(144, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'N':
+ case 'n': goto yy172;
+ default: goto yy37;
+ }
+yy145:
+ YYDEBUG(145, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'E':
+ case 'e': goto yy173;
+ default: goto yy37;
+ }
+yy146:
+ YYDEBUG(146, YYPEEK());
+ yyaccept = 7;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy147;
+ }
+yy147:
+ YYDEBUG(147, YYPEEK());
+#line 243 "../gpr.re2c"
+ {*id = 26; continue;}
+#line 4597 "../gpr_re2c.c"
+yy148:
+ YYDEBUG(148, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'N':
+ case 'n': goto yy175;
+ default: goto yy37;
+ }
+yy149:
+ YYDEBUG(149, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'H':
+ case 'h': goto yy177;
+ default: goto yy37;
+ }
+yy150:
+ YYDEBUG(150, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'e': goto yy119;
+ case 'i': goto yy72;
+ default: goto yy62;
+ }
+yy151:
+ YYDEBUG(151, YYPEEK());
+ YYSKIP();
+ YYDEBUG(152, YYPEEK());
+#line 220 "../gpr.re2c"
+ {*id = 3; if (lexer->cursor[-1] == 0x0a || (lexer->cursor[-1] == 0x0d
&& lexer->cursor[-2] == 0x0a)) lexer->line++; continue;}
+#line 4635 "../gpr_re2c.c"
+yy153:
+ YYDEBUG(153, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy119;
+ default: goto yy62;
+ }
+yy154:
+ YYDEBUG(154, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy153;
+ default: goto yy62;
+ }
+yy155:
+ YYDEBUG(155, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy153;
+ default: goto yy62;
+ }
+yy156:
+ YYDEBUG(156, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy155;
+ default: goto yy62;
+ }
+yy157:
+ YYDEBUG(157, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy155;
+ default: goto yy62;
+ }
+yy158:
+ YYDEBUG(158, YYPEEK());
+ YYSKIP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F: goto yy155;
+ default: goto yy62;
+ }
+yy159:
+ YYDEBUG(159, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'R':
+ case 'r': goto yy179;
+ default: goto yy37;
+ }
+yy160:
+ YYDEBUG(160, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'E':
+ case 'e': goto yy180;
+ default: goto yy37;
+ }
+yy161:
+ YYDEBUG(161, YYPEEK());
+ yyaccept = 8;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy162;
+ }
+yy162:
+ YYDEBUG(162, YYPEEK());
+#line 225 "../gpr.re2c"
+ {*id = 8; continue;}
+#line 5115 "../gpr_re2c.c"
+yy163:
+ YYDEBUG(163, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'I':
+ case 'i': goto yy181;
+ default: goto yy37;
+ }
+yy164:
+ YYDEBUG(164, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'N':
+ case 'n': goto yy182;
+ case 'R':
+ case 'r': goto yy183;
+ default: goto yy37;
+ }
+yy165:
+ YYDEBUG(165, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'A':
+ case 'a': goto yy184;
+ default: goto yy37;
+ }
+yy166:
+ YYDEBUG(166, YYPEEK());
+ yyaccept = 9;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy167;
+ }
+yy167:
+ YYDEBUG(167, YYPEEK());
+#line 235 "../gpr.re2c"
+ {*id = 18; continue;}
+#line 5278 "../gpr_re2c.c"
+yy168:
+ YYDEBUG(168, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'R':
+ case 'r': goto yy185;
+ default: goto yy37;
+ }
+yy169:
+ YYDEBUG(169, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'A':
+ case 'a': goto yy186;
+ default: goto yy37;
+ }
+yy170:
+ YYDEBUG(170, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'E':
+ case 'e': goto yy187;
+ default: goto yy37;
+ }
+yy171:
+ YYDEBUG(171, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'M':
+ case 'm': goto yy188;
+ default: goto yy37;
+ }
+yy172:
+ YYDEBUG(172, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'D':
+ case 'd': goto yy189;
+ default: goto yy37;
+ }
+yy173:
+ YYDEBUG(173, YYPEEK());
+ yyaccept = 10;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy174;
+ }
+yy174:
+ YYDEBUG(174, YYPEEK());
+#line 242 "../gpr.re2c"
+ {*id = 25; continue;}
+#line 5461 "../gpr_re2c.c"
+yy175:
+ YYDEBUG(175, YYPEEK());
+ yyaccept = 11;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy176;
+ }
+yy176:
+ YYDEBUG(176, YYPEEK());
+#line 244 "../gpr.re2c"
+ {*id = 27; continue;}
+#line 5589 "../gpr_re2c.c"
+yy177:
+ YYDEBUG(177, YYPEEK());
+ yyaccept = 12;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy178;
+ }
+yy178:
+ YYDEBUG(178, YYPEEK());
+#line 245 "../gpr.re2c"
+ {*id = 28; continue;}
+#line 5717 "../gpr_re2c.c"
+yy179:
+ YYDEBUG(179, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'A':
+ case 'a': goto yy190;
+ default: goto yy37;
+ }
+yy180:
+ YYDEBUG(180, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'G':
+ case 'g': goto yy191;
+ default: goto yy37;
+ }
+yy181:
+ YYDEBUG(181, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'G':
+ case 'g': goto yy192;
+ default: goto yy37;
+ }
+yy182:
+ YYDEBUG(182, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'D':
+ case 'd': goto yy193;
+ default: goto yy37;
+ }
+yy183:
+ YYDEBUG(183, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'N':
+ case 'n': goto yy194;
+ default: goto yy37;
+ }
+yy184:
+ YYDEBUG(184, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'R':
+ case 'r': goto yy195;
+ default: goto yy37;
+ }
+yy185:
+ YYDEBUG(185, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'S':
+ case 's': goto yy196;
+ default: goto yy37;
+ }
+yy186:
+ YYDEBUG(186, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'G':
+ case 'g': goto yy198;
+ default: goto yy37;
+ }
+yy187:
+ YYDEBUG(187, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'C':
+ case 'c': goto yy199;
+ default: goto yy37;
+ }
+yy188:
+ YYDEBUG(188, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'E':
+ case 'e': goto yy200;
+ default: goto yy37;
+ }
+yy189:
+ YYDEBUG(189, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'A':
+ case 'a': goto yy201;
+ default: goto yy37;
+ }
+yy190:
+ YYDEBUG(190, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'C':
+ case 'c': goto yy202;
+ default: goto yy37;
+ }
+yy191:
+ YYDEBUG(191, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'A':
+ case 'a': goto yy203;
+ default: goto yy37;
+ }
+yy192:
+ YYDEBUG(192, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'U':
+ case 'u': goto yy204;
+ default: goto yy37;
+ }
+yy193:
+ YYDEBUG(193, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'S':
+ case 's': goto yy205;
+ default: goto yy37;
+ }
+yy194:
+ YYDEBUG(194, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'A':
+ case 'a': goto yy207;
+ default: goto yy37;
+ }
+yy195:
+ YYDEBUG(195, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'Y':
+ case 'y': goto yy208;
+ default: goto yy37;
+ }
+yy196:
+ YYDEBUG(196, YYPEEK());
+ yyaccept = 13;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy197;
+ }
+yy197:
+ YYDEBUG(197, YYPEEK());
+#line 236 "../gpr.re2c"
+ {*id = 19; continue;}
+#line 6032 "../gpr_re2c.c"
+yy198:
+ YYDEBUG(198, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'E':
+ case 'e': goto yy210;
+ default: goto yy37;
+ }
+yy199:
+ YYDEBUG(199, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'T':
+ case 't': goto yy212;
+ default: goto yy37;
+ }
+yy200:
+ YYDEBUG(200, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'S':
+ case 's': goto yy214;
+ default: goto yy37;
+ }
+yy201:
+ YYDEBUG(201, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'R':
+ case 'r': goto yy216;
+ default: goto yy37;
+ }
+yy202:
+ YYDEBUG(202, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'T':
+ case 't': goto yy217;
+ default: goto yy37;
+ }
+yy203:
+ YYDEBUG(203, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'T':
+ case 't': goto yy219;
+ default: goto yy37;
+ }
+yy204:
+ YYDEBUG(204, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'R':
+ case 'r': goto yy220;
+ default: goto yy37;
+ }
+yy205:
+ YYDEBUG(205, YYPEEK());
+ yyaccept = 14;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy206;
+ }
+yy206:
+ YYDEBUG(206, YYPEEK());
+#line 228 "../gpr.re2c"
+ {*id = 11; continue;}
+#line 6237 "../gpr_re2c.c"
+yy207:
+ YYDEBUG(207, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'L':
+ case 'l': goto yy221;
+ default: goto yy37;
+ }
+yy208:
+ YYDEBUG(208, YYPEEK());
+ yyaccept = 15;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy209;
+ }
+yy209:
+ YYDEBUG(209, YYPEEK());
+#line 234 "../gpr.re2c"
+ {*id = 17; continue;}
+#line 6376 "../gpr_re2c.c"
+yy210:
+ YYDEBUG(210, YYPEEK());
+ yyaccept = 16;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy211;
+ }
+yy211:
+ YYDEBUG(211, YYPEEK());
+#line 237 "../gpr.re2c"
+ {*id = 20; continue;}
+#line 6504 "../gpr_re2c.c"
+yy212:
+ YYDEBUG(212, YYPEEK());
+ yyaccept = 17;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy213;
+ }
+yy213:
+ YYDEBUG(213, YYPEEK());
+#line 238 "../gpr.re2c"
+ {*id = 21; continue;}
+#line 6632 "../gpr_re2c.c"
+yy214:
+ YYDEBUG(214, YYPEEK());
+ yyaccept = 18;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy215;
+ }
+yy215:
+ YYDEBUG(215, YYPEEK());
+#line 239 "../gpr.re2c"
+ {*id = 22; continue;}
+#line 6760 "../gpr_re2c.c"
+yy216:
+ YYDEBUG(216, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'D':
+ case 'd': goto yy223;
+ default: goto yy37;
+ }
+yy217:
+ YYDEBUG(217, YYPEEK());
+ yyaccept = 19;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy218;
+ }
+yy218:
+ YYDEBUG(218, YYPEEK());
+#line 222 "../gpr.re2c"
+ {*id = 5; continue;}
+#line 6899 "../gpr_re2c.c"
+yy219:
+ YYDEBUG(219, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'E':
+ case 'e': goto yy225;
+ default: goto yy37;
+ }
+yy220:
+ YYDEBUG(220, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'A':
+ case 'a': goto yy227;
+ default: goto yy37;
+ }
+yy221:
+ YYDEBUG(221, YYPEEK());
+ yyaccept = 20;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ case '_': goto yy228;
+ default: goto yy222;
+ }
+yy222:
+ YYDEBUG(222, YYPEEK());
+#line 229 "../gpr.re2c"
+ {*id = 12; continue;}
+#line 7049 "../gpr_re2c.c"
+yy223:
+ YYDEBUG(223, YYPEEK());
+ yyaccept = 21;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy224;
+ }
+yy224:
+ YYDEBUG(224, YYPEEK());
+#line 241 "../gpr.re2c"
+ {*id = 24; continue;}
+#line 7177 "../gpr_re2c.c"
+yy225:
+ YYDEBUG(225, YYPEEK());
+ yyaccept = 22;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy226;
+ }
+yy226:
+ YYDEBUG(226, YYPEEK());
+#line 224 "../gpr.re2c"
+ {*id = 7; continue;}
+#line 7305 "../gpr_re2c.c"
+yy227:
+ YYDEBUG(227, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'T':
+ case 't': goto yy229;
+ default: goto yy37;
+ }
+yy228:
+ YYDEBUG(228, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'A':
+ case 'a': goto yy230;
+ default: goto yy37;
+ }
+yy229:
+ YYDEBUG(229, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'I':
+ case 'i': goto yy231;
+ default: goto yy37;
+ }
+yy230:
+ YYDEBUG(230, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'S':
+ case 's': goto yy232;
+ default: goto yy37;
+ }
+yy231:
+ YYDEBUG(231, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'O':
+ case 'o': goto yy233;
+ default: goto yy37;
+ }
+yy232:
+ YYDEBUG(232, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '_': goto yy234;
+ default: goto yy37;
+ }
+yy233:
+ YYDEBUG(233, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'N':
+ case 'n': goto yy235;
+ default: goto yy37;
+ }
+yy234:
+ YYDEBUG(234, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'L':
+ case 'l': goto yy237;
+ default: goto yy37;
+ }
+yy235:
+ YYDEBUG(235, YYPEEK());
+ yyaccept = 23;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy236;
+ }
+yy236:
+ YYDEBUG(236, YYPEEK());
+#line 226 "../gpr.re2c"
+ {*id = 9; continue;}
+#line 7520 "../gpr_re2c.c"
+yy237:
+ YYDEBUG(237, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'I':
+ case 'i': goto yy238;
+ default: goto yy37;
+ }
+yy238:
+ YYDEBUG(238, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'S':
+ case 's': goto yy239;
+ default: goto yy37;
+ }
+yy239:
+ YYDEBUG(239, YYPEEK());
+ yyaccept = 1;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case 'T':
+ case 't': goto yy240;
+ default: goto yy37;
+ }
+yy240:
+ YYDEBUG(240, YYPEEK());
+ yyaccept = 24;
+ YYSKIP();
+ YYBACKUP();
+ yych = YYPEEK();
+ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4: goto yy37;
+ default: goto yy241;
+ }
+yy241:
+ YYDEBUG(241, YYPEEK());
+#line 230 "../gpr.re2c"
+ {*id = 13; continue;}
+#line 7681 "../gpr_re2c.c"
+}
+#line 261 "../gpr.re2c"
+
+ }
+ /* lexer->cursor and lexer ->char_pos are one char past end of token */
+ *byte_position = lexer->byte_token_start - lexer->buffer + 1;
+ *byte_length = lexer->cursor - lexer->byte_token_start;
+ *char_position = lexer->char_token_start;
+ *char_length = lexer->char_pos - lexer->char_token_start;
+ *line_start = lexer->line_token_start;
+ *line_length = lexer->line - lexer->line_token_start;
+ return status;
+ }
diff --git a/gpr_re2c_c.ads b/gpr_re2c_c.ads
new file mode 100644
index 0000000000..11b6fb962a
--- /dev/null
+++ b/gpr_re2c_c.ads
@@ -0,0 +1,74 @@
+-- generated parser support file. -*- buffer-read-only:t -*-
+-- command line: wisitoken-bnf-generate.exe --generate LR1 Ada_Emacs re2c
PROCESS gpr.wy
+--
+
+-- Copyright (C) 2013 - 2022 Free Software Foundation, Inc.
+
+-- This program 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, or (at
+-- your option) any later version.
+--
+-- This software 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/>.
+
+with Interfaces.C;
+with WisiToken;
+with System;
+package gpr_re2c_c is
+
+ function New_Lexer
+ (Buffer : in System.Address;
+ Length : in Interfaces.C.size_t)
+ return System.Address
+ with Import => True,
+ Convention => C,
+ External_Name => "gpr_new_lexer";
+ -- Create the lexer object, passing it the text buffer.
+
+ procedure Free_Lexer (Lexer : in out System.Address)
+ with Import => True,
+ Convention => C,
+ External_Name => "gpr_free_lexer";
+ -- Free the lexer object
+
+ procedure Reset_Lexer (Lexer : in System.Address)
+ with Import => True,
+ Convention => C,
+ External_Name => "gpr_reset_lexer";
+
+ procedure Set_Verbosity
+ (Lexer : in System.Address;
+ Verbosity : in Interfaces.C.int)
+ with Import => True,
+ Convention => C,
+ External_Name => "gpr_set_verbosity";
+ procedure Set_Position
+ (Lexer : in System.Address;
+ Byte_Position : in Interfaces.C.size_t;
+ Char_Position : in Interfaces.C.size_t;
+ Line : in Interfaces.C.int)
+ with Import => True,
+ Convention => C,
+ External_Name => "gpr_set_position";
+
+ function Next_Token
+ (Lexer : in System.Address;
+ ID : out WisiToken.Token_ID;
+ Byte_Position : out Interfaces.C.size_t;
+ Byte_Length : out Interfaces.C.size_t;
+ Char_Position : out Interfaces.C.size_t;
+ Char_Length : out Interfaces.C.size_t;
+ Line_Start : out Interfaces.C.int;
+ Line_Length : out Interfaces.C.int)
+ return Interfaces.C.int
+ with Import => True,
+ Convention => C,
+ External_Name => "gpr_next_token";
+
+end gpr_re2c_c;
diff --git a/install.sh b/install.sh
new file mode 100644
index 0000000000..0f279215ac
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+# Install executables for Gpr mode.
+#
+# See build.sh for build (must be run before install).
+
+if type alr; then
+ echo "installing gpr-mode executables via Alire"
+
+ if [ x$1 == x ]; then
+ echo "you must specify the install directory with 'install.sh <dir>'"
+ return 1
+ fi
+ # IMPROVEME: when alr supports install, use that
+ cp emacs_gpr_mode*/bin/* $1
+
+elif type gprbuild; then
+ echo "installing gpr-mode executables via gnat compiler"
+
+ # $1 : optional --prefix=<dir>
+ #
+ # If you don't have write permission in the GNAT installation
+ # directory, you need to use --prefix=<dir>, or run with root priviledges.
+
+ if [ -d ../wisi-4.1.? ]; then
+ WISI_DIR=`ls -d ../wisi-4.1.?`
+ fi
+
+ gprinstall -f -p -P gpr_mode_wisi_parse.gpr -aP $WISI_DIR
--install-name=gpr_mode_wisi_parse $1
+
+else
+ echo "neither Alire nor gnat compiler found"
+ return 1
+fi
+
+# end of file.
diff --git a/prj-eglot.el b/prj-eglot.el
new file mode 100644
index 0000000000..a88589f730
--- /dev/null
+++ b/prj-eglot.el
@@ -0,0 +1,40 @@
+;; project settings for building gpr-mode with Alire/editing with eglot -*-
no-byte-compile : t -*-
+
+(require 'ada-mode)
+;; This require is not needed for the following code, but is needed to
+;; ensure ada-mode-hook has sal-ada-mode-setup.
+
+(setq ada-indent-engine 'wisi) ;; ada_language_server 22.0 doesn't support
RangeFormatting
+
+(setq ada-xref-tool 'eglot)
+
+(add-hook 'ada-mode-hook #'ada-eglot-setup)
+
+(let* ((gpr-file (expand-file-name "emacs_gpr_mode.gpr" (file-name-directory
load-file-name)))
+ (prj-file (expand-file-name "prj-eglot.prj" (file-name-directory
load-file-name)))
+ (eglot-workspace-configuration (list `(ada (projectFile . ,gpr-file))))
+
+ (project
+ (create-alire-project
+ :prj-name "gpr-mode main Alire eglot"
+ :prj-file prj-file
+ :gpr-file gpr-file)))
+
+ (wisi-prj-select-cache prj-file nil "Makefile")
+
+ ;; ada_language_server gets GPR_PROJECT_PATH from its process
+ ;; environment, and the gpr file from eglot-workspace-configuration.
+ (let ((process-environment
+ (append
+ (copy-sequence process-environment)
+ (wisi-prj-compile-env project)
+ (wisi-prj-file-env project))))
+
+ (eglot 'ada-mode ;; managed-major-mode
+ project ;; project; project-root is server process directory
+ 'eglot-lsp-server ;; class
+ 'gnat-find-als ;; contact
+ "Ada" ;; language-id
+ ))
+ )
+;; end of file
diff --git a/run_gpr_parse.ads b/run_gpr_parse.ads
new file mode 100644
index 0000000000..86eeb8e8a1
--- /dev/null
+++ b/run_gpr_parse.ads
@@ -0,0 +1,29 @@
+-- Abstract :
+--
+-- Run the gpr parser standalone. Useful for debugging grammar issues.
+--
+-- Copyright (C) 2017 - 2020, 2022 Free Software Foundation, Inc.
+--
+-- This program is free software; you can redistribute it and/or
+-- modify it under terms of the GNU General Public License as
+-- published by the Free Software Foundation; either version 3, or (at
+-- your option) any later version. This program 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
+-- distributed with this program; see file COPYING. If not, write to
+-- the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
+-- MA 02110-1335, USA.
+
+pragma License (GPL);
+
+with Gen_Run_Wisi_LR_Parse;
+with Gpr_Process_Main;
+with Wisi.Gpr;
+procedure Run_Gpr_Parse is new Gen_Run_Wisi_LR_Parse
+ (Wisi.Gpr.Parse_Data_Type,
+ null,
+ null,
+ null,
+ Gpr_Process_Main.Create_Parser);
diff --git a/run_gpr_parse.exe b/run_gpr_parse.exe
new file mode 100644
index 0000000000..fc49de5152
Binary files /dev/null and b/run_gpr_parse.exe differ
diff --git a/wisi-gpr.adb b/wisi-gpr.adb
new file mode 100644
index 0000000000..691188a88b
--- /dev/null
+++ b/wisi-gpr.adb
@@ -0,0 +1,84 @@
+-- Abstract :
+--
+-- See spec
+--
+-- Copyright (C) 2017 - 2022 Free Software Foundation, Inc.
+--
+-- This library is free software; you can redistribute it and/or modify it
+-- under terms of the GNU General Public License as published by the Free
+-- Software Foundation; either version 3, or (at your option) any later
+-- version. This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+-- As a special exception under Section 7 of GPL version 3, you are granted
+-- additional permissions described in the GCC Runtime Library Exception,
+-- version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+with Ada.Strings.Fixed;
+with Gpr_Process_Actions;
+package body Wisi.Gpr is
+
+ overriding
+ procedure Initialize (Data : in out Parse_Data_Type)
+ is
+ use all type Gpr_Process_Actions.Token_Enum_ID;
+ begin
+ Data.First_Comment_ID := +COMMENT_ID;
+ Data.Last_Comment_ID := WisiToken.Invalid_Token_ID;
+ Data.Left_Paren_ID := WisiToken.Invalid_Token_ID;
+ Data.Right_Paren_ID := WisiToken.Invalid_Token_ID;
+
+ Data.Statement_IDs.Append (+compilation_unit_ID);
+ Data.Statement_IDs.Append (+with_clause_ID);
+ Data.Statement_IDs.Append (+declarative_item_ID);
+ Data.Statement_IDs.Append (+wisitoken_accept_ID);
+ end Initialize;
+
+ overriding
+ procedure Parse_Language_Params
+ (Data : in out Parse_Data_Type;
+ Params : in String)
+ is
+ pragma Unreferenced (Data);
+ use Ada.Strings.Fixed;
+ First : Integer := Params'First;
+ Last : Integer := Index (Params, " ");
+ begin
+ if Params /= "" then
+ -- must match [1] wisi-parse-format-language-options
+ Gpr_Indent := Integer'Value (Params (First .. Last - 1));
+
+ First := Last + 1;
+ Last := Index (Params, " ", First);
+ Gpr_Indent_Broken := Integer'Value (Params (First .. Last - 1));
+
+ First := Last + 1;
+ Gpr_Indent_When := Integer'Value (Params (First .. Params'Last));
+ end if;
+ end Parse_Language_Params;
+
+ overriding
+ function Get_Token_IDs
+ (User_Data : in Parse_Data_Type;
+ Command_Line : in String;
+ Last : in out Integer)
+ return WisiToken.Token_ID_Arrays.Vector
+ is
+ pragma Unreferenced (User_Data);
+ use Gpr_Process_Actions;
+ begin
+ return IDs : WisiToken.Token_ID_Arrays.Vector do
+ Wisi.Skip (Command_Line, Last, '(');
+ loop
+ IDs.Append (+Token_Enum_ID'Value (Wisi.Get_Enum (Command_Line,
Last)));
+ Wisi.Skip (Command_Line, Last, ' ');
+ exit when Command_Line (Last + 1) = ')';
+ end loop;
+ Last := Last + 1;
+ end return;
+ end Get_Token_IDs;
+
+end Wisi.Gpr;
diff --git a/wisi-gpr.ads b/wisi-gpr.ads
new file mode 100644
index 0000000000..b73d02c581
--- /dev/null
+++ b/wisi-gpr.ads
@@ -0,0 +1,56 @@
+-- Abstract :
+--
+-- Ada implementation of:
+--
+-- [1] gpr-wisi.el
+-- [2] gpr-indent-user-options.el
+--
+-- Copyright (C) 2017 - 2022 Free Software Foundation, Inc.
+--
+-- This library is free software; you can redistribute it and/or modify it
+-- under terms of the GNU General Public License as published by the Free
+-- Software Foundation; either version 3, or (at your option) any later
+-- version. This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+-- As a special exception under Section 7 of GPL version 3, you are granted
+-- additional permissions described in the GCC Runtime Library Exception,
+-- version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+package Wisi.Gpr is
+
+ Language_Protocol_Version : constant String := "1";
+ -- Defines the data passed to Initialize in Params.
+ --
+ -- This value must match gpr-wisi.el
+ -- gpr-wisi-language-protocol-version.
+
+ -- Indent parameters from [2]
+ Gpr_Indent : Integer := 3;
+ Gpr_Indent_Broken : Integer := 2;
+ Gpr_Indent_When : Integer := 3;
+
+ -- Other parameters
+ End_Names_Optional : Boolean := False;
+
+ type Parse_Data_Type is new Wisi.Parse_Data_Type with null record;
+
+ overriding
+ procedure Initialize (Data : in out Parse_Data_Type);
+
+ overriding
+ procedure Parse_Language_Params
+ (Data : in out Parse_Data_Type;
+ Params : in String);
+
+ overriding
+ function Get_Token_IDs
+ (User_Data : in Parse_Data_Type;
+ Command_Line : in String;
+ Last : in out Integer)
+ return WisiToken.Token_ID_Arrays.Vector;
+
+end Wisi.Gpr;