[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/wisi 89eee25 23/35: Release ada-mode 6.0.1, wisi 2.0.1;
From: |
Stefan Monnier |
Subject: |
[elpa] externals/wisi 89eee25 23/35: Release ada-mode 6.0.1, wisi 2.0.1; fix copyright, packaging bugs |
Date: |
Sat, 28 Nov 2020 14:47:54 -0500 (EST) |
branch: externals/wisi
commit 89eee25db77edcf181284ba940feec8fe2479ee0
Author: Stephen Leake <stephen_leake@stephe-leake.org>
Commit: Stephen Leake <stephen_leake@stephe-leake.org>
Release ada-mode 6.0.1, wisi 2.0.1; fix copyright, packaging bugs
---
NEWS | 7 +
dir | 19 +
long_float_elementary_functions.ads | 2 +-
sal-gen_bounded_definite_vectors-gen_image.adb | 2 +-
sal-gen_bounded_definite_vectors-gen_image.ads | 2 +-
sal-gen_bounded_definite_vectors-gen_image_aux.adb | 2 +-
sal-gen_bounded_definite_vectors-gen_image_aux.ads | 2 +-
sal-gen_bounded_definite_vectors-gen_sorted.adb | 2 +-
sal-gen_bounded_definite_vectors-gen_sorted.ads | 2 +-
sal-gen_bounded_definite_vectors.adb | 2 +-
sal-gen_bounded_definite_vectors.ads | 2 +-
sal-gen_definite_doubly_linked_lists.adb | 2 +-
sal-gen_definite_doubly_linked_lists.ads | 2 +-
...finite_doubly_linked_lists_sorted-gen_image.adb | 2 +-
...finite_doubly_linked_lists_sorted-gen_image.ads | 2 +-
sal-gen_definite_doubly_linked_lists_sorted.adb | 2 +-
sal-gen_definite_doubly_linked_lists_sorted.ads | 2 +-
sal-gen_indefinite_doubly_linked_lists.adb | 2 +-
sal-gen_indefinite_doubly_linked_lists.ads | 2 +-
sal-gen_trimmed_image.ads | 2 +-
sal-gen_unbounded_definite_min_heaps_fibonacci.adb | 2 +-
sal-gen_unbounded_definite_min_heaps_fibonacci.ads | 2 +-
...gen_unbounded_definite_queues-gen_image_aux.adb | 2 +-
...gen_unbounded_definite_queues-gen_image_aux.ads | 2 +-
sal-gen_unbounded_definite_queues.adb | 2 +-
sal-gen_unbounded_definite_queues.ads | 2 +-
sal-gen_unbounded_definite_red_black_trees.adb | 2 +-
sal-gen_unbounded_definite_red_black_trees.ads | 2 +-
...gen_unbounded_definite_stacks-gen_image_aux.adb | 2 +-
...gen_unbounded_definite_stacks-gen_image_aux.ads | 2 +-
sal-gen_unbounded_definite_stacks.adb | 2 +-
sal-gen_unbounded_definite_stacks.ads | 2 +-
...n_unbounded_definite_vectors-gen_comparable.adb | 2 +-
...n_unbounded_definite_vectors-gen_comparable.ads | 2 +-
sal-gen_unbounded_definite_vectors-gen_image.adb | 2 +-
sal-gen_unbounded_definite_vectors-gen_image.ads | 2 +-
sal-gen_unbounded_definite_vectors.adb | 2 +-
sal-gen_unbounded_definite_vectors.ads | 2 +-
sal.adb | 4 +-
sal.ads | 2 +-
standard_common.gpr | 19 +-
wisi.adb | 2 +-
wisi.ads | 2 +-
wisi.el | 2 +-
wisitoken-bnf-generate.adb | 6 +-
wisitoken-bnf-generate_grammar.adb | 2 +-
wisitoken-bnf-generate_packrat.adb | 2 +-
wisitoken-bnf-generate_utils.ads | 2 +-
wisitoken-bnf-output_ada.adb | 2 +-
wisitoken-bnf-output_ada_common.adb | 47 +-
wisitoken-bnf-output_ada_common.ads | 7 +-
wisitoken-bnf-output_ada_emacs.adb | 2 +-
wisitoken-bnf-output_elisp.adb | 2 +-
wisitoken-bnf-output_elisp_common.adb | 2 +-
wisitoken-bnf-output_elisp_common.ads | 2 +-
wisitoken-bnf-utils.adb | 2 +-
wisitoken-bnf-utils.ads | 4 +-
wisitoken-bnf.adb | 2 +-
wisitoken-bnf.ads | 17 +-
wisitoken-gen_token_enum.adb | 2 +-
wisitoken-gen_token_enum.ads | 2 +-
wisitoken-generate-lr-lalr_generate.adb | 3 +-
wisitoken-generate-lr-lalr_generate.ads | 3 +-
wisitoken-generate-lr-lr1_generate.adb | 2 +-
wisitoken-generate-lr-lr1_generate.ads | 2 +-
wisitoken-generate-lr.adb | 2 +-
wisitoken-generate-lr.ads | 2 +-
wisitoken-generate-lr1_items.adb | 3 +-
wisitoken-generate-lr1_items.ads | 3 +-
wisitoken-generate-packrat.adb | 2 +-
wisitoken-generate-packrat.ads | 2 +-
wisitoken-generate.adb | 2 +-
wisitoken-generate.ads | 2 +-
wisitoken-lexer-re2c.adb | 2 +-
wisitoken-lexer-re2c.ads | 2 +-
wisitoken-lexer-regexp.adb | 2 +-
wisitoken-lexer-regexp.ads | 2 +-
wisitoken-lexer.adb | 2 +-
wisitoken-lexer.ads | 2 +-
wisitoken-parse-lr-mckenzie_recover-base.adb | 2 +-
wisitoken-parse-lr-mckenzie_recover-base.ads | 2 +-
wisitoken-parse-lr-mckenzie_recover-explore.adb | 2 +-
wisitoken-parse-lr-mckenzie_recover-explore.ads | 2 +-
wisitoken-parse-lr-mckenzie_recover-parse.adb | 2 +-
wisitoken-parse-lr-mckenzie_recover-parse.ads | 2 +-
wisitoken-parse-lr-mckenzie_recover.adb | 2 +-
wisitoken-parse-lr-mckenzie_recover.ads | 2 +-
wisitoken-parse-lr-parser.adb | 3 +-
wisitoken-parse-lr-parser.ads | 3 +-
wisitoken-parse-lr-parser_lists.ads | 2 +-
wisitoken-parse-lr-parser_no_recover.adb | 3 +-
wisitoken-parse-lr-parser_no_recover.ads | 3 +-
wisitoken-parse-lr.adb | 2 +-
wisitoken-parse-lr.ads | 3 +-
wisitoken-parse-packrat-generated.adb | 2 +-
wisitoken-parse-packrat-generated.ads | 2 +-
wisitoken-parse-packrat-procedural.adb | 2 +-
wisitoken-parse-packrat-procedural.ads | 2 +-
wisitoken-parse-packrat.adb | 2 +-
wisitoken-parse-packrat.ads | 2 +-
wisitoken-parse.adb | 2 +-
wisitoken-parse.ads | 2 +-
wisitoken-productions.adb | 2 +-
wisitoken-productions.ads | 2 +-
wisitoken-regexp.adb | 1347 --------------------
wisitoken-regexp.ads | 139 --
wisitoken-semantic_checks.adb | 2 +-
wisitoken-semantic_checks.ads | 2 +-
wisitoken-syntax_trees.adb | 2 +-
wisitoken-syntax_trees.ads | 4 +-
wisitoken-text_io_trace.adb | 2 +-
wisitoken-text_io_trace.ads | 2 +-
wisitoken-user_guide.info | 556 ++++++++
wisitoken-wisi_ada.adb | 3 +-
wisitoken-wisi_ada.ads | 3 +-
wisitoken.adb | 6 +-
wisitoken.ads | 3 +-
wisitoken.gpr | 20 +-
wisitoken_grammar_runtime.adb | 10 +-
wisitoken_grammar_runtime.ads | 2 +-
120 files changed, 766 insertions(+), 1666 deletions(-)
diff --git a/NEWS b/NEWS
index f86dbe5..a594bea 100644
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,13 @@ Please send wisi bug reports to bug-gnu-emacs@gnu.org, with
'wisi' in the subject. If possible, use M-x report-emacs-bug.
+* wisi 2.0.1
+8 Dec 2018
+
+** Assign copyright in Ada files to FSF
+
+** Update user guide, include it in elpa package
+
* wisi 2.0.0
17 Nov 2018
diff --git a/dir b/dir
new file mode 100644
index 0000000..fbc9cbb
--- /dev/null
+++ b/dir
@@ -0,0 +1,19 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "H" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Parser generators
+* wisitoken-bnf-generate: (wisitoken-bnf-generate).
+ Ada and Elisp parser generator
diff --git a/long_float_elementary_functions.ads
b/long_float_elementary_functions.ads
index 3f543b9..d5664b7 100644
--- a/long_float_elementary_functions.ads
+++ b/long_float_elementary_functions.ads
@@ -2,7 +2,7 @@
--
-- instantiation
--
--- Copyright (C) 2017 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017 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
diff --git a/sal-gen_bounded_definite_vectors-gen_image.adb
b/sal-gen_bounded_definite_vectors-gen_image.adb
index 893b178..e1726d1 100644
--- a/sal-gen_bounded_definite_vectors-gen_image.adb
+++ b/sal-gen_bounded_definite_vectors-gen_image.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_bounded_definite_vectors-gen_image.ads
b/sal-gen_bounded_definite_vectors-gen_image.ads
index 6202be0..950b9d0 100644
--- a/sal-gen_bounded_definite_vectors-gen_image.ads
+++ b/sal-gen_bounded_definite_vectors-gen_image.ads
@@ -2,7 +2,7 @@
--
-- Image for instantiations of parent.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_bounded_definite_vectors-gen_image_aux.adb
b/sal-gen_bounded_definite_vectors-gen_image_aux.adb
index 39ecd46..685ef13 100644
--- a/sal-gen_bounded_definite_vectors-gen_image_aux.adb
+++ b/sal-gen_bounded_definite_vectors-gen_image_aux.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_bounded_definite_vectors-gen_image_aux.ads
b/sal-gen_bounded_definite_vectors-gen_image_aux.ads
index c72f8ee..241e67b 100644
--- a/sal-gen_bounded_definite_vectors-gen_image_aux.ads
+++ b/sal-gen_bounded_definite_vectors-gen_image_aux.ads
@@ -2,7 +2,7 @@
--
-- Image with auxiliary data for instantiations of parent.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_bounded_definite_vectors-gen_sorted.adb
b/sal-gen_bounded_definite_vectors-gen_sorted.adb
index 088b807..5a8c550 100644
--- a/sal-gen_bounded_definite_vectors-gen_sorted.adb
+++ b/sal-gen_bounded_definite_vectors-gen_sorted.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_bounded_definite_vectors-gen_sorted.ads
b/sal-gen_bounded_definite_vectors-gen_sorted.ads
index d210c0b..917a344 100644
--- a/sal-gen_bounded_definite_vectors-gen_sorted.ads
+++ b/sal-gen_bounded_definite_vectors-gen_sorted.ads
@@ -2,7 +2,7 @@
--
-- Add sorted behavior to parent.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_bounded_definite_vectors.adb
b/sal-gen_bounded_definite_vectors.adb
index 75b4016..42f5643 100644
--- a/sal-gen_bounded_definite_vectors.adb
+++ b/sal-gen_bounded_definite_vectors.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/sal-gen_bounded_definite_vectors.ads
b/sal-gen_bounded_definite_vectors.ads
index d4c808d..04a9ff1 100644
--- a/sal-gen_bounded_definite_vectors.ads
+++ b/sal-gen_bounded_definite_vectors.ads
@@ -3,7 +3,7 @@
-- A simple bounded vector of definite items, intended to be faster
-- than Ada.Containers.Bounded_Definite_Vectors.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/sal-gen_definite_doubly_linked_lists.adb
b/sal-gen_definite_doubly_linked_lists.adb
index 3855ae6..e8da73a 100644
--- a/sal-gen_definite_doubly_linked_lists.adb
+++ b/sal-gen_definite_doubly_linked_lists.adb
@@ -2,7 +2,7 @@
--
-- see spec
--
--- Copyright (C) 2017, 2018 Stephen Leake. All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/sal-gen_definite_doubly_linked_lists.ads
b/sal-gen_definite_doubly_linked_lists.ads
index 203f9ad..04a10f1 100644
--- a/sal-gen_definite_doubly_linked_lists.ads
+++ b/sal-gen_definite_doubly_linked_lists.ads
@@ -3,7 +3,7 @@
-- A generic doubly linked list with definite elements, allowing
-- permanent references to elements.
--
--- Copyright (C) 2017, 2018 Stephen Leake. All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/sal-gen_definite_doubly_linked_lists_sorted-gen_image.adb
b/sal-gen_definite_doubly_linked_lists_sorted-gen_image.adb
index 898a588..6e6efb3 100644
--- a/sal-gen_definite_doubly_linked_lists_sorted-gen_image.adb
+++ b/sal-gen_definite_doubly_linked_lists_sorted-gen_image.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_definite_doubly_linked_lists_sorted-gen_image.ads
b/sal-gen_definite_doubly_linked_lists_sorted-gen_image.ads
index 2743f4e..4080707 100644
--- a/sal-gen_definite_doubly_linked_lists_sorted-gen_image.ads
+++ b/sal-gen_definite_doubly_linked_lists_sorted-gen_image.ads
@@ -2,7 +2,7 @@
--
-- Image of parent.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_definite_doubly_linked_lists_sorted.adb
b/sal-gen_definite_doubly_linked_lists_sorted.adb
index da99b3e..addac4f 100644
--- a/sal-gen_definite_doubly_linked_lists_sorted.adb
+++ b/sal-gen_definite_doubly_linked_lists_sorted.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_definite_doubly_linked_lists_sorted.ads
b/sal-gen_definite_doubly_linked_lists_sorted.ads
index 464ff86..b3d5431 100644
--- a/sal-gen_definite_doubly_linked_lists_sorted.ads
+++ b/sal-gen_definite_doubly_linked_lists_sorted.ads
@@ -2,7 +2,7 @@
--
-- A generic sorted doubly linked list with definite elements.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_indefinite_doubly_linked_lists.adb
b/sal-gen_indefinite_doubly_linked_lists.adb
index 079e736..071c319 100644
--- a/sal-gen_indefinite_doubly_linked_lists.adb
+++ b/sal-gen_indefinite_doubly_linked_lists.adb
@@ -2,7 +2,7 @@
--
-- see spec
--
--- Copyright (C) 2018 Stephen Leake. All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_indefinite_doubly_linked_lists.ads
b/sal-gen_indefinite_doubly_linked_lists.ads
index f477f2d..5898bc7 100644
--- a/sal-gen_indefinite_doubly_linked_lists.ads
+++ b/sal-gen_indefinite_doubly_linked_lists.ads
@@ -3,7 +3,7 @@
-- A generic doubly linked list with indefinite elements, allowing
-- permanent references to elements.
--
--- Copyright (C) 2018 Stephen Leake. All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_trimmed_image.ads b/sal-gen_trimmed_image.ads
index faf782f..3ff29f9 100644
--- a/sal-gen_trimmed_image.ads
+++ b/sal-gen_trimmed_image.ads
@@ -2,7 +2,7 @@
--
-- Generic trimmed image.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_unbounded_definite_min_heaps_fibonacci.adb
b/sal-gen_unbounded_definite_min_heaps_fibonacci.adb
index 75b9478..e35219e 100644
--- a/sal-gen_unbounded_definite_min_heaps_fibonacci.adb
+++ b/sal-gen_unbounded_definite_min_heaps_fibonacci.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/sal-gen_unbounded_definite_min_heaps_fibonacci.ads
b/sal-gen_unbounded_definite_min_heaps_fibonacci.ads
index 381bd35..09b4e39 100644
--- a/sal-gen_unbounded_definite_min_heaps_fibonacci.ads
+++ b/sal-gen_unbounded_definite_min_heaps_fibonacci.ads
@@ -7,7 +7,7 @@
-- [1] Introduction to Algorithms, Third Edition. Thomas H. Cormen,
-- Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Chapter 19.
--
--- Copyright (C) 2017, 2018 Stephen Leake. All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/sal-gen_unbounded_definite_queues-gen_image_aux.adb
b/sal-gen_unbounded_definite_queues-gen_image_aux.adb
index 233aa1b..2a1990b 100644
--- a/sal-gen_unbounded_definite_queues-gen_image_aux.adb
+++ b/sal-gen_unbounded_definite_queues-gen_image_aux.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_unbounded_definite_queues-gen_image_aux.ads
b/sal-gen_unbounded_definite_queues-gen_image_aux.ads
index 6ea7c8f..dafa8d9 100644
--- a/sal-gen_unbounded_definite_queues-gen_image_aux.ads
+++ b/sal-gen_unbounded_definite_queues-gen_image_aux.ads
@@ -2,7 +2,7 @@
--
-- Image with auxiliary data for instantiations of parent.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_unbounded_definite_queues.adb
b/sal-gen_unbounded_definite_queues.adb
index f71fbe5..f0290fc 100644
--- a/sal-gen_unbounded_definite_queues.adb
+++ b/sal-gen_unbounded_definite_queues.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/sal-gen_unbounded_definite_queues.ads
b/sal-gen_unbounded_definite_queues.ads
index d891f9d..0e21be7 100644
--- a/sal-gen_unbounded_definite_queues.ads
+++ b/sal-gen_unbounded_definite_queues.ads
@@ -2,7 +2,7 @@
--
-- An unbounded queue of definite non-limited elements.
--
--- Copyright (C) 2017, 2018 Stephen Leake. All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/sal-gen_unbounded_definite_red_black_trees.adb
b/sal-gen_unbounded_definite_red_black_trees.adb
index 2d84c57..9099f06 100644
--- a/sal-gen_unbounded_definite_red_black_trees.adb
+++ b/sal-gen_unbounded_definite_red_black_trees.adb
@@ -2,7 +2,7 @@
--
-- Generic unbounded red-black tree with definite elements.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/sal-gen_unbounded_definite_red_black_trees.ads
b/sal-gen_unbounded_definite_red_black_trees.ads
index 7096970..e9513c9 100644
--- a/sal-gen_unbounded_definite_red_black_trees.ads
+++ b/sal-gen_unbounded_definite_red_black_trees.ads
@@ -8,7 +8,7 @@
-- [1] Introduction to Algorithms, Thomas H. Cormen, Charles E.
-- Leiserson, Ronald L. Rivest, Clifford Stein.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/sal-gen_unbounded_definite_stacks-gen_image_aux.adb
b/sal-gen_unbounded_definite_stacks-gen_image_aux.adb
index e900846..c4b52a6 100644
--- a/sal-gen_unbounded_definite_stacks-gen_image_aux.adb
+++ b/sal-gen_unbounded_definite_stacks-gen_image_aux.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_unbounded_definite_stacks-gen_image_aux.ads
b/sal-gen_unbounded_definite_stacks-gen_image_aux.ads
index ff732a8..801ffd3 100644
--- a/sal-gen_unbounded_definite_stacks-gen_image_aux.ads
+++ b/sal-gen_unbounded_definite_stacks-gen_image_aux.ads
@@ -2,7 +2,7 @@
--
-- Image with auxiliary data for instantiations of parent.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_unbounded_definite_stacks.adb
b/sal-gen_unbounded_definite_stacks.adb
index d916b6e..6b5337d 100644
--- a/sal-gen_unbounded_definite_stacks.adb
+++ b/sal-gen_unbounded_definite_stacks.adb
@@ -2,7 +2,7 @@
--
-- see spec
--
--- Copyright (C) 1998, 2003, 2009, 2015, 2017, 2018 Stephen Leake. All
Rights Reserved.
+-- Copyright (C) 1998, 2003, 2009, 2015, 2017, 2018 Free Software Foundation,
Inc.
--
-- SAL is free software; you can redistribute it and/or modify it
-- under terms of the GNU General Public License as published by the
diff --git a/sal-gen_unbounded_definite_stacks.ads
b/sal-gen_unbounded_definite_stacks.ads
index 413071f..b0cb65c 100644
--- a/sal-gen_unbounded_definite_stacks.ads
+++ b/sal-gen_unbounded_definite_stacks.ads
@@ -2,7 +2,7 @@
--
-- Stack implementation.
--
--- Copyright (C) 1998-2000, 2002-2003, 2009, 2015, 2017, 2018 Stephen Leake.
All Rights Reserved.
+-- Copyright (C) 1998-2000, 2002-2003, 2009, 2015, 2017, 2018 Free Software
Foundation, Inc.
--
-- SAL is free software; you can redistribute it and/or modify it
-- under terms of the GNU General Public License as published by the
diff --git a/sal-gen_unbounded_definite_vectors-gen_comparable.adb
b/sal-gen_unbounded_definite_vectors-gen_comparable.adb
index 1bd9251..16c1fe8 100644
--- a/sal-gen_unbounded_definite_vectors-gen_comparable.adb
+++ b/sal-gen_unbounded_definite_vectors-gen_comparable.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_unbounded_definite_vectors-gen_comparable.ads
b/sal-gen_unbounded_definite_vectors-gen_comparable.ads
index a12f81a..56d84c0 100644
--- a/sal-gen_unbounded_definite_vectors-gen_comparable.ads
+++ b/sal-gen_unbounded_definite_vectors-gen_comparable.ads
@@ -2,7 +2,7 @@
--
-- Add "<" to parent
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_unbounded_definite_vectors-gen_image.adb
b/sal-gen_unbounded_definite_vectors-gen_image.adb
index 03a1c5f..929994a 100644
--- a/sal-gen_unbounded_definite_vectors-gen_image.adb
+++ b/sal-gen_unbounded_definite_vectors-gen_image.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_unbounded_definite_vectors-gen_image.ads
b/sal-gen_unbounded_definite_vectors-gen_image.ads
index 1ace2fe..274e1f1 100644
--- a/sal-gen_unbounded_definite_vectors-gen_image.ads
+++ b/sal-gen_unbounded_definite_vectors-gen_image.ads
@@ -2,7 +2,7 @@
--
-- Image of parent.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_unbounded_definite_vectors.adb
b/sal-gen_unbounded_definite_vectors.adb
index 8faaf88..74f3497 100644
--- a/sal-gen_unbounded_definite_vectors.adb
+++ b/sal-gen_unbounded_definite_vectors.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal-gen_unbounded_definite_vectors.ads
b/sal-gen_unbounded_definite_vectors.ads
index 799e73c..6ad1684 100644
--- a/sal-gen_unbounded_definite_vectors.ads
+++ b/sal-gen_unbounded_definite_vectors.ads
@@ -8,7 +8,7 @@
-- It provides no checking of cursor tampering; higher level code
-- must ensure that.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/sal.adb b/sal.adb
index 6c5013e..13a5276 100644
--- a/sal.adb
+++ b/sal.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 1997 - 2004, 2006, 2009 Stephen Leake. All Rights Reserved.
+-- Copyright (C) 1997 - 2004, 2006, 2009 Free Software Foundation, Inc.
--
-- SAL is free software; you can redistribute it and/or modify it
-- under terms of the GNU General Public License as published by the
@@ -26,7 +26,7 @@ package body SAL is
function Version return String is
begin
- return "SAL 2.01";
+ return "SAL 3.0";
end Version;
end SAL;
diff --git a/sal.ads b/sal.ads
index 0d5a4e6..1e63dbc 100644
--- a/sal.ads
+++ b/sal.ads
@@ -9,7 +9,7 @@
--
-- Contact Stephe at stephen_leake@stephe-leake.org.
--
--- Copyright (C) 1997 - 2004, 2008, 2009, 2015, 2017, 2018 Stephen Leake.
All Rights Reserved.
+-- Copyright (C) 1997 - 2004, 2008, 2009, 2015, 2017, 2018 Free Software
Foundation, Inc.
--
-- SAL is free software; you can redistribute it and/or modify it
-- under terms of the GNU General Public License as published by the
diff --git a/standard_common.gpr b/standard_common.gpr
index 82e2fc9..b51f8ed 100644
--- a/standard_common.gpr
+++ b/standard_common.gpr
@@ -1,4 +1,21 @@
--- Standard settings for all of Stephe's Ada projects.
+-- Abstract :
+--
+-- Standard settings for all of Stephe's Ada projects.
+--
+-- Copyright (C) 2018 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.
+
project Standard_Common is
for Source_Dirs use ();
diff --git a/wisi.adb b/wisi.adb
index 9b184b7..0c00735 100644
--- a/wisi.adb
+++ b/wisi.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/wisi.ads b/wisi.ads
index cfc61e1..4203930 100644
--- a/wisi.ads
+++ b/wisi.ads
@@ -10,7 +10,7 @@
--
-- [3] wisi-process-parse.el - defines elisp/process API
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/wisi.el b/wisi.el
index 00719a2..4a6b7ad 100755
--- a/wisi.el
+++ b/wisi.el
@@ -7,7 +7,7 @@
;; Keywords: parser
;; indentation
;; navigation
-;; Version: 2.0.0
+;; Version: 2.0.1
;; package-requires: ((cl-lib "1.0") (emacs "25.0") (seq "2.20"))
;; URL: http://www.nongnu.org/ada-mode/wisi/wisi.html
;;
diff --git a/wisitoken-bnf-generate.adb b/wisitoken-bnf-generate.adb
index 7569ffb..8d2da44 100644
--- a/wisitoken-bnf-generate.adb
+++ b/wisitoken-bnf-generate.adb
@@ -3,7 +3,7 @@
-- Parser for Wisi grammar files, producing Ada or Elisp source
-- files for a parser.
--
--- Copyright (C) 2012 - 2015, 2017, 2018 Stephen Leake. All Rights Reserved.
+-- Copyright (C) 2012 - 2015, 2017, 2018 Free Software Foundation, Inc.
--
-- The WisiToken package is free software; you can redistribute it
-- and/or modify it under terms of the GNU General Public License as
@@ -54,7 +54,7 @@ is
begin
-- verbosity meaning is actually determined by output choice;
-- they should be consistent with this description.
- Put_Line (Standard_Error, "version 1.0");
+ Put_Line (Standard_Error, "version 1.0.1");
Put_Line (Standard_Error, "wisi-generate [options] {wisi grammar file}");
Put_Line (Standard_Error, "Generate source code implementing a parser
for the grammar.");
New_Line (Standard_Error);
@@ -349,7 +349,7 @@ begin
Lexer_Done (Input_Data.User_Lexer) := True;
if Input_Data.User_Lexer = re2c_Lexer then
WisiToken.BNF.Output_Ada_Common.Create_re2c
- (Input_Data, Tuple, Generate_Data, -Output_File_Name_Root,
Input_Data.User_Names.Regexps);
+ (Input_Data, Tuple, Generate_Data, -Output_File_Name_Root);
end if;
end if;
diff --git a/wisitoken-bnf-generate_grammar.adb
b/wisitoken-bnf-generate_grammar.adb
index 03ef661..2264dcf 100644
--- a/wisitoken-bnf-generate_grammar.adb
+++ b/wisitoken-bnf-generate_grammar.adb
@@ -2,7 +2,7 @@
--
-- Output Ada source code to recreate Grammar.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-bnf-generate_packrat.adb
b/wisitoken-bnf-generate_packrat.adb
index ee43b16..8c785c6 100644
--- a/wisitoken-bnf-generate_packrat.adb
+++ b/wisitoken-bnf-generate_packrat.adb
@@ -6,7 +6,7 @@
--
-- See wisitoken-parse-packrat.ads.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-bnf-generate_utils.ads b/wisitoken-bnf-generate_utils.ads
index d7347de..9e2ff96 100644
--- a/wisitoken-bnf-generate_utils.ads
+++ b/wisitoken-bnf-generate_utils.ads
@@ -3,7 +3,7 @@
-- Utilities for translating input file structures to WisiToken
-- structures needed for LALR.Generate.
--
--- Copyright (C) 2014, 2015, 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2014, 2015, 2017, 2018 Free Software Foundation, Inc.
--
-- The WisiToken package is free software; you can redistribute it
-- and/or modify it under terms of the GNU General Public License as
diff --git a/wisitoken-bnf-output_ada.adb b/wisitoken-bnf-output_ada.adb
index ee24c7e..0d99340 100644
--- a/wisitoken-bnf-output_ada.adb
+++ b/wisitoken-bnf-output_ada.adb
@@ -4,7 +4,7 @@
-- parameters, and a parser for that grammar. The grammar parser
-- actions must be Ada.
--
--- Copyright (C) 2017, 2018 Stephen Leake. All Rights Reserved.
+-- Copyright (C) 2017, 2018 Free Software Foundation, Inc.
--
-- The WisiToken package is free software; you can redistribute it
-- and/or modify it under terms of the GNU General Public License as
diff --git a/wisitoken-bnf-output_ada_common.adb
b/wisitoken-bnf-output_ada_common.adb
index 3267ebb..de9db8c 100644
--- a/wisitoken-bnf-output_ada_common.adb
+++ b/wisitoken-bnf-output_ada_common.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
@@ -950,8 +950,7 @@ package body WisiToken.BNF.Output_Ada_Common is
(Input_Data : in
WisiToken_Grammar_Runtime.User_Data_Type;
Tuple : in Generate_Tuple;
Generate_Data : aliased in
WisiToken.BNF.Generate_Utils.Generate_Data;
- Output_File_Name_Root : in String;
- Elisp_Regexps : in WisiToken.BNF.String_Pair_Lists.List)
+ Output_File_Name_Root : in String)
is
use Ada.Strings.Fixed;
use Generate_Utils;
@@ -1176,7 +1175,7 @@ package body WisiToken.BNF.Output_Ada_Common is
New_Line;
-- Regexps used in definitions
- for Pair of Input_Data.Tokens.Regexps loop
+ for Pair of Input_Data.Tokens.re2c_Regexps loop
Indent_Line (-Pair.Name & " = " & (-Pair.Value) & ";");
end loop;
New_Line;
@@ -1184,41 +1183,31 @@ package body WisiToken.BNF.Output_Ada_Common is
-- definitions
for I in All_Tokens (Generate_Data).Iterate (Non_Grammar => True,
Nonterminals => False) loop
- declare
- Val : constant String :=
- (if Is_Present (Elisp_Regexps, Value (I))
- then Value (Elisp_Regexps, Value (I))
- else Value (I));
- begin
- if 0 /= Index (Source => Val, Pattern => "/") then
- -- trailing context syntax; forbidden in definitions
- null;
+ if 0 /= Index (Source => Value (I), Pattern => "/") then
+ -- trailing context syntax; forbidden in definitions
+ null;
- elsif Kind (I) = "EOI" then
- Indent_Line (Name (I) & " = [\x04];");
+ elsif Kind (I) = "EOI" then
+ Indent_Line (Name (I) & " = [\x04];");
- elsif Kind (I) = "delimited-text" then
- -- not declared in definitions
- null;
+ elsif Kind (I) = "delimited-text" then
+ -- not declared in definitions
+ null;
- elsif Kind (I) = "keyword" and
Input_Data.Language_Params.Case_Insensitive then
- Indent_Line (Name (I) & " = '" & Strip_Quotes (Val) & "';");
+ elsif Kind (I) = "keyword" and
Input_Data.Language_Params.Case_Insensitive then
+ Indent_Line (Name (I) & " = '" & Strip_Quotes (Value (I)) & "';");
- else
- -- Other kinds have values that are regular expressions, in
re2c syntax
- Indent_Line (Name (I) & " = " & Val & ";");
- end if;
- end;
+ else
+ -- Other kinds have values that are regular expressions, in re2c
syntax
+ Indent_Line (Name (I) & " = " & Value (I) & ";");
+ end if;
end loop;
New_Line;
-- lexer rules
for I in All_Tokens (Generate_Data).Iterate (Non_Grammar => True,
Nonterminals => False) loop
declare
- Val : constant String :=
- (if Is_Present (Elisp_Regexps, Value (I))
- then Value (Elisp_Regexps, Value (I))
- else Value (I));
+ Val : constant String := Value (I);
begin
if Kind (I) = "non-reporting" then
diff --git a/wisitoken-bnf-output_ada_common.ads
b/wisitoken-bnf-output_ada_common.ads
index b4d8923..44d7a63 100644
--- a/wisitoken-bnf-output_ada_common.ads
+++ b/wisitoken-bnf-output_ada_common.ads
@@ -2,7 +2,7 @@
--
-- Types and operations shared by Ada and Ada_Emacs outputs.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
@@ -83,9 +83,8 @@ package WisiToken.BNF.Output_Ada_Common is
(Input_Data : in
WisiToken_Grammar_Runtime.User_Data_Type;
Tuple : in Generate_Tuple;
Generate_Data : aliased in
WisiToken.BNF.Generate_Utils.Generate_Data;
- Output_File_Name_Root : in String;
- Elisp_Regexps : in WisiToken.BNF.String_Pair_Lists.List);
- -- Create_re2c is called from wisi-generate, which does not declare
+ Output_File_Name_Root : in String);
+ -- Create_re2c is called from wisitoken-bnf-generate, which does not
declare
-- Common_Data.
end WisiToken.BNF.Output_Ada_Common;
diff --git a/wisitoken-bnf-output_ada_emacs.adb
b/wisitoken-bnf-output_ada_emacs.adb
index 136c6d3..30da8c4 100644
--- a/wisitoken-bnf-output_ada_emacs.adb
+++ b/wisitoken-bnf-output_ada_emacs.adb
@@ -12,7 +12,7 @@
-- If run in an Emacs dynamically loaded module, the parser actions
-- call the elisp actions directly.
--
--- Copyright (C) 2012 - 2015, 2017, 2018 Stephen Leake. All Rights Reserved.
+-- Copyright (C) 2012 - 2015, 2017, 2018 Free Software Foundation, Inc.
--
-- The WisiToken package is free software; you can redistribute it
-- and/or modify it under terms of the GNU General Public License as
diff --git a/wisitoken-bnf-output_elisp.adb b/wisitoken-bnf-output_elisp.adb
index 8317ac7..8007bd2 100644
--- a/wisitoken-bnf-output_elisp.adb
+++ b/wisitoken-bnf-output_elisp.adb
@@ -2,7 +2,7 @@
--
-- Output Elisp code implementing the grammar defined by the parameters.
--
--- Copyright (C) 2012 - 2015, 2017, 2018 Stephen Leake. All Rights Reserved.
+-- Copyright (C) 2012 - 2015, 2017, 2018 Free Software Foundation, Inc.
--
-- The WisiToken package is free software; you can redistribute it
-- and/or modify it under terms of the GNU General Public License as
diff --git a/wisitoken-bnf-output_elisp_common.adb
b/wisitoken-bnf-output_elisp_common.adb
index fc37469..9d46b4f 100644
--- a/wisitoken-bnf-output_elisp_common.adb
+++ b/wisitoken-bnf-output_elisp_common.adb
@@ -2,7 +2,7 @@
--
-- See spec
--
--- Copyright (C) 2012, 2013, 2015, 2017, 2018 Stephen Leake. All Rights
Reserved.
+-- Copyright (C) 2012, 2013, 2015, 2017, 2018 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
diff --git a/wisitoken-bnf-output_elisp_common.ads
b/wisitoken-bnf-output_elisp_common.ads
index cb4e94b..040bd5e 100644
--- a/wisitoken-bnf-output_elisp_common.ads
+++ b/wisitoken-bnf-output_elisp_common.ads
@@ -2,7 +2,7 @@
--
-- Subprograms common to Output_Elisp and Output_Ada_Emacs
--
--- Copyright (C) 2012, 2013, 2015, 2017, 2018 Stephen Leake. All Rights
Reserved.
+-- Copyright (C) 2012, 2013, 2015, 2017, 2018 Free Software Foundation, Inc.
--
-- The WisiToken package is free software; you can redistribute it
-- and/or modify it under terms of the GNU General Public License as
diff --git a/wisitoken-bnf-utils.adb b/wisitoken-bnf-utils.adb
index 4ff91b6..71e340f 100644
--- a/wisitoken-bnf-utils.adb
+++ b/wisitoken-bnf-utils.adb
@@ -2,7 +2,7 @@
--
-- See spec
--
--- Copyright (C) 2012, 2013, 2015, 2017, 2018 Stephen Leake. All Rights
Reserved.
+-- Copyright (C) 2012, 2013, 2015, 2017, 2018 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
diff --git a/wisitoken-bnf-utils.ads b/wisitoken-bnf-utils.ads
index 4d82f32..6062ff9 100644
--- a/wisitoken-bnf-utils.ads
+++ b/wisitoken-bnf-utils.ads
@@ -1,8 +1,8 @@
-- Abstract :
--
--- Utilities for generating source code from Wisi source files
+-- Utilities for generating source code from BNF source files
--
--- Copyright (C) 2012, 2013, 2015, 2017, 2018 Stephen Leake. All Rights
Reserved.
+-- Copyright (C) 2012, 2013, 2015, 2017, 2018 Free Software Foundation, Inc.
--
-- The WisiToken package is free software; you can redistribute it
-- and/or modify it under terms of the GNU General Public License as
diff --git a/wisitoken-bnf.adb b/wisitoken-bnf.adb
index cd49de7..22492f0 100644
--- a/wisitoken-bnf.adb
+++ b/wisitoken-bnf.adb
@@ -2,7 +2,7 @@
--
-- see spec
--
--- Copyright (C) 2012 - 2015, 2017, 2018 Stephen Leake. All Rights Reserved.
+-- Copyright (C) 2012 - 2015, 2017, 2018 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
diff --git a/wisitoken-bnf.ads b/wisitoken-bnf.ads
index 60fb96a..cd40975 100644
--- a/wisitoken-bnf.ads
+++ b/wisitoken-bnf.ads
@@ -13,7 +13,7 @@
-- [1] https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form
-- [2] http://www.nongnu.org/ada-mode/wisi/wisi-user_guide.html, (info
"(wisi-user_guide)Top")
--
--- Copyright (C) 2012 - 2015, 2017, 2018 Stephen Leake. All Rights Reserved.
+-- Copyright (C) 2012 - 2015, 2017, 2018 Free Software Foundation, Inc.
--
-- The WisiToken package is free software; you can redistribute it
-- and/or modify it under terms of the GNU General Public License as
@@ -250,16 +250,16 @@ package WisiToken.BNF is
function Is_Present (Rules : in Rule_Lists.List; LHS : in String) return
Boolean;
type Tokens is record
- Non_Grammar : Token_Lists.List;
- Keywords : String_Pair_Lists.List;
- Tokens : Token_Lists.List;
- Rules : Rule_Lists.List;
+ Non_Grammar : Token_Lists.List;
+ Keywords : String_Pair_Lists.List;
+ Tokens : Token_Lists.List;
+ Rules : Rule_Lists.List;
-- Rules included here because they define the nonterminal tokens, as
-- well as the productions.
- Regexps : String_Pair_Lists.List;
- -- Regexps included here because they are used in defining the
- -- Tokens.
+ re2c_Regexps : String_Pair_Lists.List;
+ -- From %re2c_regexp; included here because they are used in defining
+ -- the Tokens.
end record;
type User_Names is record
@@ -269,7 +269,6 @@ package WisiToken.BNF is
Faces : String_Lists.List; -- %elisp_face
Indents : String_Pair_Lists.List; -- %elisp_indent
- Regexps : String_Pair_Lists.List; -- %regexp_name
end record;
function "+" (Item : in String) return
Ada.Strings.Unbounded.Unbounded_String
diff --git a/wisitoken-gen_token_enum.adb b/wisitoken-gen_token_enum.adb
index 87e5f6d..0b17832 100644
--- a/wisitoken-gen_token_enum.adb
+++ b/wisitoken-gen_token_enum.adb
@@ -2,7 +2,7 @@
--
-- See spec
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/wisitoken-gen_token_enum.ads b/wisitoken-gen_token_enum.ads
index b14be0d..cfd508b 100644
--- a/wisitoken-gen_token_enum.ads
+++ b/wisitoken-gen_token_enum.ads
@@ -2,7 +2,7 @@
--
-- Support for an enumerated token type
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/wisitoken-generate-lr-lalr_generate.adb
b/wisitoken-generate-lr-lalr_generate.adb
index d886077..0558f74 100644
--- a/wisitoken-generate-lr-lalr_generate.adb
+++ b/wisitoken-generate-lr-lalr_generate.adb
@@ -2,8 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2002 - 2005, 2008 - 2015, 2017, 2018 Stephe Leake
--- Copyright (C) 1999 Ted Dennison
+-- Copyright (C) 2002 - 2005, 2008 - 2015, 2017, 2018 Free Software
Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-generate-lr-lalr_generate.ads
b/wisitoken-generate-lr-lalr_generate.ads
index 01c65ca..80cc165 100644
--- a/wisitoken-generate-lr-lalr_generate.ads
+++ b/wisitoken-generate-lr-lalr_generate.ads
@@ -2,8 +2,7 @@
--
-- Generalized LALR parse table generator.
--
--- Copyright (C) 2002 - 2003, 2009 - 2010, 2013 - 2015, 2017, 2018 Stephe
Leake
--- Copyright (C) 1999 Ted Dennison
+-- Copyright (C) 2002 - 2003, 2009 - 2010, 2013 - 2015, 2017, 2018 Free
Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-generate-lr-lr1_generate.adb
b/wisitoken-generate-lr-lr1_generate.adb
index 14fa5db..53507ba 100644
--- a/wisitoken-generate-lr-lr1_generate.adb
+++ b/wisitoken-generate-lr-lr1_generate.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2017, 2018 Stephe Leake
+-- Copyright (C) 2017, 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-generate-lr-lr1_generate.ads
b/wisitoken-generate-lr-lr1_generate.ads
index 7dea371..7a3c6f6 100644
--- a/wisitoken-generate-lr-lr1_generate.ads
+++ b/wisitoken-generate-lr-lr1_generate.ads
@@ -7,7 +7,7 @@
-- [dragon] "Compilers Principles, Techniques, and Tools" by Aho,
-- Sethi, and Ullman (aka: "The [Red] Dragon Book").
--
--- Copyright (C) 2017, 2018 Stephe Leake
+-- Copyright (C) 2017, 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-generate-lr.adb b/wisitoken-generate-lr.adb
index 32689c0..c124327 100644
--- a/wisitoken-generate-lr.adb
+++ b/wisitoken-generate-lr.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/wisitoken-generate-lr.ads b/wisitoken-generate-lr.ads
index 6000dab..4a57ff8 100644
--- a/wisitoken-generate-lr.ads
+++ b/wisitoken-generate-lr.ads
@@ -2,7 +2,7 @@
--
-- Common utilities for LR parser table generators.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/wisitoken-generate-lr1_items.adb b/wisitoken-generate-lr1_items.adb
index a62a4af..05ad564 100644
--- a/wisitoken-generate-lr1_items.adb
+++ b/wisitoken-generate-lr1_items.adb
@@ -2,8 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2002, 2003, 2008, 2009, 2012 - 2015, 2017, 2018 Stephe Leake
--- Copyright (C) 1999 Ted Dennison
+-- Copyright (C) 2002, 2003, 2008, 2009, 2012 - 2015, 2017, 2018 Free
Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-generate-lr1_items.ads b/wisitoken-generate-lr1_items.ads
index ff90e4a..d776e4a 100644
--- a/wisitoken-generate-lr1_items.ads
+++ b/wisitoken-generate-lr1_items.ads
@@ -2,8 +2,7 @@
--
-- Types and operatorion for LR(1) items.
--
--- Copyright (C) 2003, 2008, 2013-2015, 2017, 2018 Stephe Leake
--- Copyright (C) 1999 Ted Dennison
+-- Copyright (C) 2003, 2008, 2013-2015, 2017, 2018 Free Software Foundation,
Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-generate-packrat.adb b/wisitoken-generate-packrat.adb
index 068b6d0..80a4c10 100644
--- a/wisitoken-generate-packrat.adb
+++ b/wisitoken-generate-packrat.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-generate-packrat.ads b/wisitoken-generate-packrat.ads
index 152dd99..ec9a4cb 100644
--- a/wisitoken-generate-packrat.ads
+++ b/wisitoken-generate-packrat.ads
@@ -10,7 +10,7 @@
--
-- See wisitoken-parse-packrat.ads.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-generate.adb b/wisitoken-generate.adb
index aba997b..81ae9da 100644
--- a/wisitoken-generate.adb
+++ b/wisitoken-generate.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-generate.ads b/wisitoken-generate.ads
index 19648d2..28636d4 100644
--- a/wisitoken-generate.ads
+++ b/wisitoken-generate.ads
@@ -12,7 +12,7 @@
--
-- See wisitoken.ads
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-lexer-re2c.adb b/wisitoken-lexer-re2c.adb
index c5bc6af..5eae70d 100644
--- a/wisitoken-lexer-re2c.adb
+++ b/wisitoken-lexer-re2c.adb
@@ -2,7 +2,7 @@
--
-- see spec.
--
--- Copyright (C) 2017, 2018 Stephe Leake
+-- Copyright (C) 2017, 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-lexer-re2c.ads b/wisitoken-lexer-re2c.ads
index 9bb33f5..0472908 100644
--- a/wisitoken-lexer-re2c.ads
+++ b/wisitoken-lexer-re2c.ads
@@ -6,7 +6,7 @@
--
-- [1] http://re2c.org/
--
--- Copyright (C) 2017, 2018 Stephe Leake
+-- Copyright (C) 2017, 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-lexer-regexp.adb b/wisitoken-lexer-regexp.adb
index d355080..8eb2242 100644
--- a/wisitoken-lexer-regexp.adb
+++ b/wisitoken-lexer-regexp.adb
@@ -2,7 +2,7 @@
--
-- See spec
--
--- Copyright (C) 2015, 2017, 2018 Stephe Leake
+-- Copyright (C) 2015, 2017, 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-lexer-regexp.ads b/wisitoken-lexer-regexp.ads
index 33bda9b..8a94560 100644
--- a/wisitoken-lexer-regexp.ads
+++ b/wisitoken-lexer-regexp.ads
@@ -6,7 +6,7 @@
-- used in most of the WisiToken unit tests. Since it uses regexp, it
-- is easy to convert to an Aflex lexer.
--
--- Copyright (C) 2015, 2017, 2018 Stephe Leake
+-- Copyright (C) 2015, 2017, 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-lexer.adb b/wisitoken-lexer.adb
index 6d3d546..8ceff80 100644
--- a/wisitoken-lexer.adb
+++ b/wisitoken-lexer.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/wisitoken-lexer.ads b/wisitoken-lexer.ads
index b854004..0e9c6a1 100644
--- a/wisitoken-lexer.ads
+++ b/wisitoken-lexer.ads
@@ -2,7 +2,7 @@
--
-- An abstract lexer interface.
--
--- Copyright (C) 2014 - 2015, 2017, 2018 Stephe Leake
+-- Copyright (C) 2014 - 2015, 2017, 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-parse-lr-mckenzie_recover-base.adb
b/wisitoken-parse-lr-mckenzie_recover-base.adb
index 52ddeac..17301b2 100644
--- a/wisitoken-parse-lr-mckenzie_recover-base.adb
+++ b/wisitoken-parse-lr-mckenzie_recover-base.adb
@@ -2,7 +2,7 @@
--
-- Base utilities for McKenzie_Recover
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-parse-lr-mckenzie_recover-base.ads
b/wisitoken-parse-lr-mckenzie_recover-base.ads
index 1d292d6..e7592d4 100644
--- a/wisitoken-parse-lr-mckenzie_recover-base.ads
+++ b/wisitoken-parse-lr-mckenzie_recover-base.ads
@@ -2,7 +2,7 @@
--
-- Base utilities for McKenzie_Recover
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-parse-lr-mckenzie_recover-explore.adb
b/wisitoken-parse-lr-mckenzie_recover-explore.adb
index 15910f7..f47ed68 100644
--- a/wisitoken-parse-lr-mckenzie_recover-explore.adb
+++ b/wisitoken-parse-lr-mckenzie_recover-explore.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-parse-lr-mckenzie_recover-explore.ads
b/wisitoken-parse-lr-mckenzie_recover-explore.ads
index 12e4871..1777728 100644
--- a/wisitoken-parse-lr-mckenzie_recover-explore.ads
+++ b/wisitoken-parse-lr-mckenzie_recover-explore.ads
@@ -2,7 +2,7 @@
--
-- Code to explore parse table, enqueuing new configs to check.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-parse-lr-mckenzie_recover-parse.adb
b/wisitoken-parse-lr-mckenzie_recover-parse.adb
index 0d78fcd..c9a7475 100644
--- a/wisitoken-parse-lr-mckenzie_recover-parse.adb
+++ b/wisitoken-parse-lr-mckenzie_recover-parse.adb
@@ -2,7 +2,7 @@
--
-- See spec
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-parse-lr-mckenzie_recover-parse.ads
b/wisitoken-parse-lr-mckenzie_recover-parse.ads
index eb1eeee..0db7178 100644
--- a/wisitoken-parse-lr-mckenzie_recover-parse.ads
+++ b/wisitoken-parse-lr-mckenzie_recover-parse.ads
@@ -2,7 +2,7 @@
--
-- Config parsing subprograms.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-parse-lr-mckenzie_recover.adb
b/wisitoken-parse-lr-mckenzie_recover.adb
index 26d75df..c92e2ed 100644
--- a/wisitoken-parse-lr-mckenzie_recover.adb
+++ b/wisitoken-parse-lr-mckenzie_recover.adb
@@ -2,7 +2,7 @@
--
-- See spec
--
--- Copyright (C) 2017 - 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017 - 2018 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
diff --git a/wisitoken-parse-lr-mckenzie_recover.ads
b/wisitoken-parse-lr-mckenzie_recover.ads
index 533ed87..f92897b 100644
--- a/wisitoken-parse-lr-mckenzie_recover.ads
+++ b/wisitoken-parse-lr-mckenzie_recover.ads
@@ -11,7 +11,7 @@
-- [Grune 2008] Parsing Techniques, A Practical Guide, Second
-- Edition. Dick Grune, Ceriel J.H. Jacobs.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/wisitoken-parse-lr-parser.adb b/wisitoken-parse-lr-parser.adb
index 5d3eedb..9f8aa66 100644
--- a/wisitoken-parse-lr-parser.adb
+++ b/wisitoken-parse-lr-parser.adb
@@ -2,8 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2002 - 2005, 2008 - 2015, 2017, 2018 Stephe Leake
--- Copyright (C) 1999 Ted Dennison
+-- Copyright (C) 2002 - 2005, 2008 - 2015, 2017, 2018 Free Software
Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-parse-lr-parser.ads b/wisitoken-parse-lr-parser.ads
index 8aa5906..f5b7405 100644
--- a/wisitoken-parse-lr-parser.ads
+++ b/wisitoken-parse-lr-parser.ads
@@ -5,8 +5,7 @@
-- In a child package of Parser.LR partly for historical reasons,
-- partly to allow McKenzie_Recover to be in a sibling package.
--
--- Copyright (C) 2002, 2003, 2009, 2010, 2013-2015, 2017, 2018 Stephe Leake
--- Copyright (C) 1999 Ted Dennison
+-- Copyright (C) 2002, 2003, 2009, 2010, 2013-2015, 2017, 2018 Free Software
Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-parse-lr-parser_lists.ads
b/wisitoken-parse-lr-parser_lists.ads
index 6c44892..dcaa268 100644
--- a/wisitoken-parse-lr-parser_lists.ads
+++ b/wisitoken-parse-lr-parser_lists.ads
@@ -2,7 +2,7 @@
--
-- Generalized LR parser state.
--
--- Copyright (C) 2014-2015, 2017, 2018 Stephe Leake
+-- Copyright (C) 2014-2015, 2017, 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-parse-lr-parser_no_recover.adb
b/wisitoken-parse-lr-parser_no_recover.adb
index c82544a..48d9e4f 100644
--- a/wisitoken-parse-lr-parser_no_recover.adb
+++ b/wisitoken-parse-lr-parser_no_recover.adb
@@ -2,8 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2002 - 2005, 2008 - 2015, 2017, 2018 Stephe Leake
--- Copyright (C) 1999 Ted Dennison
+-- Copyright (C) 2002 - 2005, 2008 - 2015, 2017, 2018 Free Software
Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-parse-lr-parser_no_recover.ads
b/wisitoken-parse-lr-parser_no_recover.ads
index 17d1766..1f91e3d 100644
--- a/wisitoken-parse-lr-parser_no_recover.ads
+++ b/wisitoken-parse-lr-parser_no_recover.ads
@@ -6,8 +6,7 @@
-- to not depend on wisitoken-lr-mckenzie_recover, so editing that
-- does not cause everything to be regenerated/compiled.
--
--- Copyright (C) 2002, 2003, 2009, 2010, 2013-2015, 2017, 2018 Stephe Leake
--- Copyright (C) 1999 Ted Dennison
+-- Copyright (C) 2002, 2003, 2009, 2010, 2013-2015, 2017, 2018 Free Software
Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-parse-lr.adb b/wisitoken-parse-lr.adb
index 307985c..74dcb98 100644
--- a/wisitoken-parse-lr.adb
+++ b/wisitoken-parse-lr.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2013-2015, 2017, 2018 Stephe Leake
+-- Copyright (C) 2013-2015, 2017, 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-parse-lr.ads b/wisitoken-parse-lr.ads
index 7bd38ad..6c9db82 100644
--- a/wisitoken-parse-lr.ads
+++ b/wisitoken-parse-lr.ads
@@ -9,8 +9,7 @@
--
-- See wisitoken.ads
--
--- Copyright (C) 2002, 2003, 2009, 2010, 2013-2015, 2017 - 2018 Stephe Leake
--- Copyright (C) 1999 Ted Dennison
+-- Copyright (C) 2002, 2003, 2009, 2010, 2013-2015, 2017 - 2018 Free Software
Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-parse-packrat-generated.adb
b/wisitoken-parse-packrat-generated.adb
index c71e57c..0e1adb0 100644
--- a/wisitoken-parse-packrat-generated.adb
+++ b/wisitoken-parse-packrat-generated.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-parse-packrat-generated.ads
b/wisitoken-parse-packrat-generated.ads
index 408d48e..80d6cee 100644
--- a/wisitoken-parse-packrat-generated.ads
+++ b/wisitoken-parse-packrat-generated.ads
@@ -7,7 +7,7 @@
--
-- see parent.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-parse-packrat-procedural.adb
b/wisitoken-parse-packrat-procedural.adb
index 8ec9559..1e5024c 100644
--- a/wisitoken-parse-packrat-procedural.adb
+++ b/wisitoken-parse-packrat-procedural.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-parse-packrat-procedural.ads
b/wisitoken-parse-packrat-procedural.ads
index bd6d86f..ecd14de 100644
--- a/wisitoken-parse-packrat-procedural.ads
+++ b/wisitoken-parse-packrat-procedural.ads
@@ -9,7 +9,7 @@
--
-- See parent.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-parse-packrat.adb b/wisitoken-parse-packrat.adb
index fd5f586..14fd2bb 100644
--- a/wisitoken-parse-packrat.adb
+++ b/wisitoken-parse-packrat.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-parse-packrat.ads b/wisitoken-parse-packrat.ads
index 50ff2f0..40eeba0 100644
--- a/wisitoken-parse-packrat.ads
+++ b/wisitoken-parse-packrat.ads
@@ -14,7 +14,7 @@
-- [warth 2008] Warth, A., Douglass, J.R. and Millstein, T.D., 2008. Packrat
-- parsers can support left recursion. PEPM, 8, pp.103-110.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-parse.adb b/wisitoken-parse.adb
index 0573a95..52870e0 100644
--- a/wisitoken-parse.adb
+++ b/wisitoken-parse.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-parse.ads b/wisitoken-parse.ads
index 271163f..38574ed 100644
--- a/wisitoken-parse.ads
+++ b/wisitoken-parse.ads
@@ -2,7 +2,7 @@
--
-- Subprograms common to more than one parser, higher-level than in
wisitoken.ads
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-productions.adb b/wisitoken-productions.adb
index 4d5079a..f95210b 100644
--- a/wisitoken-productions.adb
+++ b/wisitoken-productions.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephe Leake
+-- Copyright (C) 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-productions.ads b/wisitoken-productions.ads
index 19f8dfa..0ae651e 100644
--- a/wisitoken-productions.ads
+++ b/wisitoken-productions.ads
@@ -2,7 +2,7 @@
--
-- Type and operations for building grammar productions.
--
--- Copyright (C) 2018 Stephe Leake
+-- Copyright (C) 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-regexp.adb b/wisitoken-regexp.adb
deleted file mode 100644
index b978bf9..0000000
--- a/wisitoken-regexp.adb
+++ /dev/null
@@ -1,1347 +0,0 @@
--- Abstract:
---
--- See spec.
---
--- Copyright (C) 2015, 2017 Stephen Leake
--- Copyright (C) 1998-2010, AdaCore
---
--- This file is part of the WisiToken package.
---
--- The WisiToken package 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. The WisiToken package 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.
---
--- As a special exception, if other files instantiate generics from
--- this unit, or you link this unit with other files to produce an
--- executable, this unit does not by itself cause the resulting
--- executable to be covered by the GNU General Public License. This
--- exception does not however invalidate any other reasons why the
--- executable file might be covered by the GNU Public License.
---
--- You should have received a copy of the GNU General Public License
--- and a copy of the GCC Runtime Library Exception distributed with
--- the WisiToken package; see files GPL.txt and GPL_runtime.txt. If
--- not, see <http://www.gnu.org/licenses/>.
-
-pragma License (Modified_GPL);
-
-with Ada.Unchecked_Deallocation;
-with GNAT.Case_Util;
-package body WisiToken.Regexp is
-
- Initial_Max_States_In_Primary_Table : constant := 100;
- -- Initial size for the number of states in the indefinite state
- -- machine. The number of states will be increased as needed.
- --
- -- This is also used as the maximal number of meta states (groups of
- -- states) in the secondary table.
-
- Open_Paren : constant Character := '(';
- Close_Paren : constant Character := ')';
- Open_Bracket : constant Character := '[';
- Close_Bracket : constant Character := ']';
-
- type State_Index is new Natural;
- type Column_Index is new Natural;
-
- type Regexp_Array is array
- (State_Index range <>, Column_Index range <>) of State_Index;
- -- First index is for the state number. Second index is for the character
- -- type. Contents is the new State.
-
- type Regexp_Array_Access is access Regexp_Array;
- -- Use this type through the functions Set below, so that it can grow
- -- dynamically depending on the needs.
-
- type Mapping is array (Character'Range) of Column_Index;
- -- Mapping between characters and column in the Regexp_Array
-
- type Boolean_Array is array (State_Index range <>) of Boolean;
-
- type Regexp_Value
- (Alphabet_Size : Column_Index;
- Num_States : State_Index) is
- record
- Map : Mapping;
- States : Regexp_Array (1 .. Num_States, 0 .. Alphabet_Size);
- Is_Final : Boolean_Array (1 .. Num_States);
- Case_Sensitive : Boolean;
- State : State_Index;
- end record;
- -- Deterministic finite-state machine
-
- -----------------------
- -- Local Subprograms --
- -----------------------
-
- procedure Set
- (Table : in out Regexp_Array_Access;
- State : State_Index;
- Column : Column_Index;
- Value : State_Index);
- -- Sets a value in the table. If the table is too small, reallocate it
- -- dynamically so that (State, Column) is a valid index in it.
-
- function Get
- (Table : Regexp_Array_Access;
- State : State_Index;
- Column : Column_Index) return State_Index;
- -- Returns the value in the table at (State, Column). If this index does
- -- not exist in the table, returns zero.
-
- procedure Free is new Ada.Unchecked_Deallocation
- (Regexp_Array, Regexp_Array_Access);
-
- overriding procedure Adjust (R : in out Regexp) is
- Tmp : Regexp_Access;
- begin
- if R.R /= null then
- Tmp := new Regexp_Value (Alphabet_Size => R.R.Alphabet_Size,
- Num_States => R.R.Num_States);
- Tmp.all := R.R.all;
- R.R := Tmp;
- end if;
- end Adjust;
-
- procedure Clear (R : in out Regexp)
- is begin
- R.R.State := 1;
- end Clear;
-
- function Compile
- (Pattern : String;
- Case_Sensitive : Boolean := True) return Regexp
- is
- S : String := Pattern;
- -- The pattern which is really compiled (when the pattern is case
- -- insensitive, we convert this string to lower-cases
-
- Map : Mapping := (others => 0);
- -- Mapping between characters and columns in the tables
-
- Alphabet_Size : Column_Index := 0;
- -- Number of significant characters in the regular expression.
- -- This total does not include special operators, such as *, (, ...
-
- procedure Check_Well_Formed_Pattern;
- -- Check that the pattern to compile is well-formed, so that subsequent
- -- code can rely on this without performing each time the checks to
- -- avoid accessing the pattern outside its bounds. However, not all
- -- well-formedness rules are checked. In particular, rules about special
- -- characters not being treated as regular characters are not checked.
-
- procedure Create_Mapping;
- -- Creates a mapping between characters in the regexp and columns
- -- in the tables representing the regexp. Test that the regexp is
- -- well-formed Modifies Alphabet_Size and Map
-
- procedure Create_Primary_Table
- (Table : out Regexp_Array_Access;
- Num_States : out State_Index;
- Start_State : out State_Index;
- End_State : out State_Index);
- -- Creates the first version of the regexp (this is a non deterministic
- -- finite state machine, which is unadapted for a fast pattern
- -- matching algorithm). We use a recursive algorithm to process the
- -- parenthesis sub-expressions.
- --
- -- Table : at the end of the procedure : Column 0 is for any character
- -- ('.') and the last columns are for no character (closure). Num_States
- -- is set to the number of states in the table Start_State is the number
- -- of the starting state in the regexp End_State is the number of the
- -- final state when the regexp matches.
-
- function Create_Secondary_Table
- (First_Table : Regexp_Array_Access;
- Start_State : State_Index;
- End_State : State_Index) return Regexp;
- -- Creates the definitive table representing the regular expression
- -- This is actually a transformation of the primary table First_Table,
- -- where every state is grouped with the states in its 'no-character'
- -- columns. The transitions between the new states are then recalculated
- -- and if necessary some new states are created.
- --
- -- Note that the resulting finite-state machine is not optimized in
- -- terms of the number of states : it would be more time-consuming to
- -- add a third pass to reduce the number of states in the machine, with
- -- no speed improvement...
-
- procedure Raise_Exception (M : String; Index : Integer);
- pragma No_Return (Raise_Exception);
- -- Raise an exception, indicating an error at character Index in S
-
- -------------------------------
- -- Check_Well_Formed_Pattern --
- -------------------------------
-
- procedure Check_Well_Formed_Pattern is
- J : Integer;
-
- Past_Elmt : Boolean := False;
- -- Set to True everywhere an elmt has been parsed,
- -- meaning there can be now an occurrence of '*', '+' and '?'.
-
- Past_Term : Boolean := False;
- -- Set to True everywhere a term has been parsed,
- -- meaning there can be now an occurrence of '|'.
-
- Parenthesis_Level : Integer := 0;
-
- Last_Open : Integer := S'First - 1;
- -- The last occurrence of an opening parenthesis.
-
- procedure Raise_Exception_If_No_More_Chars (K : Integer := 0);
- -- If no more characters are raised, call Raise_Exception
-
- --------------------------------------
- -- Raise_Exception_If_No_More_Chars --
- --------------------------------------
-
- procedure Raise_Exception_If_No_More_Chars (K : Integer := 0) is
- begin
- if J + K > S'Last then
- Raise_Exception ("Ill-formed pattern while parsing", J);
- end if;
- end Raise_Exception_If_No_More_Chars;
-
- -- Start of processing for Check_Well_Formed_Pattern
-
- begin
- J := S'First;
- while J <= S'Last loop
- case S (J) is
- when Open_Bracket =>
- J := J + 1;
- Raise_Exception_If_No_More_Chars;
-
- if S (J) = '^' then
- J := J + 1;
- Raise_Exception_If_No_More_Chars;
- end if;
-
- -- The first character never has a special meaning
-
- if S (J) = ']' or else S (J) = '-' then
- J := J + 1;
- Raise_Exception_If_No_More_Chars;
- end if;
-
- -- The set of characters cannot be empty
-
- if S (J) = ']' then
- Raise_Exception
- ("Set of characters cannot be empty in regular "
- & "expression", J);
- end if;
-
- declare
- Possible_Range_Start : Boolean := True;
- -- Set True everywhere a range character '-' can occur
-
- begin
- loop
- exit when S (J) = Close_Bracket;
-
- -- The current character should be followed by a
- -- closing bracket.
-
- Raise_Exception_If_No_More_Chars (1);
-
- if S (J) = '-'
- and then S (J + 1) /= Close_Bracket
- then
- if not Possible_Range_Start then
- Raise_Exception
- ("No mix of ranges is allowed in "
- & "regular expression", J);
- end if;
-
- J := J + 1;
- Raise_Exception_If_No_More_Chars;
-
- -- Range cannot be followed by '-' character,
- -- except as last character in the set.
-
- Possible_Range_Start := False;
-
- else
- Possible_Range_Start := True;
- end if;
-
- if S (J) = '\' then
- J := J + 1;
- Raise_Exception_If_No_More_Chars;
- end if;
-
- J := J + 1;
- end loop;
- end;
-
- -- A closing bracket can end an elmt or term
-
- Past_Elmt := True;
- Past_Term := True;
-
- when Close_Bracket =>
-
- -- A close bracket must follow a open_bracket, and cannot be
- -- found alone on the line.
-
- Raise_Exception
- ("Incorrect character ']' in regular expression", J);
-
- when '\' =>
- if J < S'Last then
- J := J + 1;
-
- -- Any character can be an elmt or a term
-
- Past_Elmt := True;
- Past_Term := True;
-
- else
- -- \ not allowed at the end of the regexp
-
- Raise_Exception
- ("Incorrect character '\' in regular expression", J);
- end if;
-
- when Open_Paren =>
- Parenthesis_Level := Parenthesis_Level + 1;
- Last_Open := J;
-
- -- An open parenthesis does not end an elmt or term
-
- Past_Elmt := False;
- Past_Term := False;
-
- when Close_Paren =>
- Parenthesis_Level := Parenthesis_Level - 1;
-
- if Parenthesis_Level < 0 then
- Raise_Exception
- ("')' is not associated with '(' in regular "
- & "expression", J);
- end if;
-
- if J = Last_Open + 1 then
- Raise_Exception
- ("Empty parentheses not allowed in regular "
- & "expression", J);
- end if;
-
- if not Past_Term then
- Raise_Exception
- ("Closing parenthesis not allowed here in regular "
- & "expression", J);
- end if;
-
- -- A closing parenthesis can end an elmt or term
-
- Past_Elmt := True;
- Past_Term := True;
-
- when '{' =>
- -- Any character can be an elmt or a term
-
- Past_Elmt := True;
- Past_Term := True;
-
- -- No need to check for ',' as the code always accepts them
-
- when '}' =>
- -- Any character can be an elmt or a term
-
- Past_Elmt := True;
- Past_Term := True;
-
- when '*' | '?' | '+' =>
- -- These operators must apply to an elmt sub-expression,
- -- and cannot be found if one has not just been parsed.
-
- if not Past_Elmt then
- Raise_Exception
- ("'*', '+' and '?' operators must be "
- & "applied to an element in regular expression", J);
- end if;
-
- Past_Elmt := False;
- Past_Term := True;
-
- when '|' =>
- -- This operator must apply to a term sub-expression,
- -- and cannot be found if one has not just been parsed.
-
- if not Past_Term then
- Raise_Exception
- ("'|' operator must be "
- & "applied to a term in regular expression", J);
- end if;
-
- Past_Elmt := False;
- Past_Term := False;
-
- when others =>
- -- Any character can be an elmt or a term
-
- Past_Elmt := True;
- Past_Term := True;
- end case;
-
- J := J + 1;
- end loop;
-
- -- A closing parenthesis must follow an open parenthesis
-
- if Parenthesis_Level /= 0 then
- Raise_Exception
- ("'(' must always be associated with a ')'", J);
- end if;
- end Check_Well_Formed_Pattern;
-
- --------------------
- -- Create_Mapping --
- --------------------
-
- procedure Create_Mapping is
-
- procedure Add_In_Map (C : Character);
- -- Add a character in the mapping, if it is not already defined
-
- ----------------
- -- Add_In_Map --
- ----------------
-
- procedure Add_In_Map (C : Character) is
- begin
- if Map (C) = 0 then
- Alphabet_Size := Alphabet_Size + 1;
- Map (C) := Alphabet_Size;
- end if;
- end Add_In_Map;
-
- J : Integer := S'First;
- Parenthesis_Level : Integer := 0;
- Last_Open : Integer := S'First - 1;
-
- -- Start of processing for Create_Mapping
-
- begin
- while J <= S'Last loop
- case S (J) is
- when Open_Bracket =>
- J := J + 1;
-
- if S (J) = '^' then
- J := J + 1;
- end if;
-
- if S (J) = ']' or else S (J) = '-' then
- J := J + 1;
- end if;
-
- -- The first character never has a special meaning
-
- loop
- if J > S'Last then
- Raise_Exception
- ("Ran out of characters while parsing ", J);
- end if;
-
- exit when S (J) = Close_Bracket;
-
- if S (J) = '-'
- and then S (J + 1) /= Close_Bracket
- then
- declare
- Start : constant Integer := J - 1;
-
- begin
- J := J + 1;
-
- if S (J) = '\' then
- J := J + 1;
- end if;
-
- for Char in S (Start) .. S (J) loop
- Add_In_Map (Char);
- end loop;
- end;
- else
- if S (J) = '\' then
- J := J + 1;
- end if;
-
- Add_In_Map (S (J));
- end if;
-
- J := J + 1;
- end loop;
-
- -- A close bracket must follow a open_bracket and cannot be
- -- found alone on the line
-
- when Close_Bracket =>
- Raise_Exception
- ("Incorrect character ']' in regular expression", J);
-
- when '\' =>
- if J < S'Last then
- J := J + 1;
- Add_In_Map (S (J));
-
- else
- -- Back slash \ not allowed at the end of the regexp
-
- Raise_Exception
- ("Incorrect character '\' in regular expression", J);
- end if;
-
- when Open_Paren =>
- Parenthesis_Level := Parenthesis_Level + 1;
- Last_Open := J;
-
- when Close_Paren =>
- Parenthesis_Level := Parenthesis_Level - 1;
-
- if Parenthesis_Level < 0 then
- Raise_Exception
- ("')' is not associated with '(' in regular "
- & "expression", J);
- end if;
-
- if J = Last_Open + 1 then
- Raise_Exception
- ("Empty parenthesis not allowed in regular "
- & "expression", J);
- end if;
-
- when '*' | '?' =>
- if J = S'First then
- Raise_Exception
- ("'*', '+', '?' and '|' operators cannot be in "
- & "first position in regular expression", J);
- end if;
-
- when '|' | '+' =>
- if J = S'First then
-
- -- These operators must apply to a sub-expression,
- -- and cannot be found at the beginning of the line
-
- Raise_Exception
- ("'*', '+', '?' and '|' operators cannot be in "
- & "first position in regular expression", J);
- end if;
-
- when others =>
- Add_In_Map (S (J));
- end case;
-
- J := J + 1;
- end loop;
-
- -- A closing parenthesis must follow an open parenthesis
-
- if Parenthesis_Level /= 0 then
- Raise_Exception
- ("'(' must always be associated with a ')'", J);
- end if;
-
- end Create_Mapping;
-
- --------------------------
- -- Create_Primary_Table --
- --------------------------
-
- procedure Create_Primary_Table
- (Table : out Regexp_Array_Access;
- Num_States : out State_Index;
- Start_State : out State_Index;
- End_State : out State_Index)
- is
- Empty_Char : constant Column_Index := Alphabet_Size + 1;
-
- Current_State : State_Index := 0;
- -- Index of the last created state
-
- procedure Add_Empty_Char
- (State : State_Index;
- To_State : State_Index);
- -- Add a empty-character transition from State to To_State
-
- procedure Create_Repetition
- (Repetition : Character;
- Start_Prev : State_Index;
- End_Prev : State_Index;
- New_Start : out State_Index;
- New_End : in out State_Index);
- -- Create the table in case we have a '*', '+' or '?'.
- -- Start_Prev .. End_Prev should indicate respectively the start and
- -- end index of the previous expression, to which '*', '+' or '?' is
- -- applied.
-
- procedure Create_Simple
- (Start_Index : Integer;
- End_Index : Integer;
- Start_State : out State_Index;
- End_State : out State_Index);
- -- Fill the table for the regexp Simple. This is the recursive
- -- procedure called to handle () expressions If End_State = 0, then
- -- the call to Create_Simple creates an independent regexp, not a
- -- concatenation Start_Index .. End_Index is the starting index in
- -- the string S.
- --
- -- Warning: it may look like we are creating too many empty-string
- -- transitions, but they are needed to get the correct regexp.
- -- The table is filled as follow ( s means start-state, e means
- -- end-state) :
- --
- -- regexp state_num | a b * empty_string
- -- ------- ------------------------------
- -- a 1 (s) | 2 - - -
- -- 2 (e) | - - - -
- --
- -- ab 1 (s) | 2 - - -
- -- 2 | - - - 3
- -- 3 | - 4 - -
- -- 4 (e) | - - - -
- --
- -- a|b 1 | 2 - - -
- -- 2 | - - - 6
- -- 3 | - 4 - -
- -- 4 | - - - 6
- -- 5 (s) | - - - 1,3
- -- 6 (e) | - - - -
- --
- -- a* 1 | 2 - - -
- -- 2 | - - - 4
- -- 3 (s) | - - - 1,4
- -- 4 (e) | - - - 3
- --
- -- (a) 1 (s) | 2 - - -
- -- 2 (e) | - - - -
- --
- -- a+ 1 | 2 - - -
- -- 2 | - - - 4
- -- 3 (s) | - - - 1
- -- 4 (e) | - - - 3
- --
- -- a? 1 | 2 - - -
- -- 2 | - - - 4
- -- 3 (s) | - - - 1,4
- -- 4 (e) | - - - -
- --
- -- . 1 (s) | 2 2 2 -
- -- 2 (e) | - - - -
-
- function Next_Sub_Expression
- (Start_Index : Integer;
- End_Index : Integer) return Integer;
- -- Returns the index of the last character of the next sub-expression
- -- in Simple. Index cannot be greater than End_Index.
-
- --------------------
- -- Add_Empty_Char --
- --------------------
-
- procedure Add_Empty_Char
- (State : State_Index;
- To_State : State_Index)
- is
- J : Column_Index := Empty_Char;
-
- begin
- while Get (Table, State, J) /= 0 loop
- J := J + 1;
- end loop;
-
- Set (Table, State, J, To_State);
- end Add_Empty_Char;
-
- -----------------------
- -- Create_Repetition --
- -----------------------
-
- procedure Create_Repetition
- (Repetition : Character;
- Start_Prev : State_Index;
- End_Prev : State_Index;
- New_Start : out State_Index;
- New_End : in out State_Index)
- is
- begin
- New_Start := Current_State + 1;
-
- if New_End /= 0 then
- Add_Empty_Char (New_End, New_Start);
- end if;
-
- Current_State := Current_State + 2;
- New_End := Current_State;
-
- Add_Empty_Char (End_Prev, New_End);
- Add_Empty_Char (New_Start, Start_Prev);
-
- if Repetition /= '+' then
- Add_Empty_Char (New_Start, New_End);
- end if;
-
- if Repetition /= '?' then
- Add_Empty_Char (New_End, New_Start);
- end if;
- end Create_Repetition;
-
- -------------------
- -- Create_Simple --
- -------------------
-
- procedure Create_Simple
- (Start_Index : Integer;
- End_Index : Integer;
- Start_State : out State_Index;
- End_State : out State_Index)
- is
- J : Integer := Start_Index;
- Last_Start : State_Index := 0;
-
- begin
- Start_State := 0;
- End_State := 0;
- while J <= End_Index loop
- case S (J) is
- when Open_Paren =>
- declare
- J_Start : constant Integer := J + 1;
- Next_Start : State_Index;
- Next_End : State_Index;
-
- begin
- J := Next_Sub_Expression (J, End_Index);
- Create_Simple (J_Start, J - 1, Next_Start, Next_End);
-
- if J < End_Index
- and then (S (J + 1) = '*' or else
- S (J + 1) = '+' or else
- S (J + 1) = '?')
- then
- J := J + 1;
- Create_Repetition
- (S (J),
- Next_Start,
- Next_End,
- Last_Start,
- End_State);
-
- else
- Last_Start := Next_Start;
-
- if End_State /= 0 then
- Add_Empty_Char (End_State, Last_Start);
- end if;
-
- End_State := Next_End;
- end if;
- end;
-
- when '|' =>
- declare
- Start_Prev : constant State_Index := Start_State;
- End_Prev : constant State_Index := End_State;
- Start_J : constant Integer := J + 1;
- Start_Next : State_Index := 0;
- End_Next : State_Index := 0;
-
- begin
- J := Next_Sub_Expression (J, End_Index);
-
- -- Create a new state for the start of the alternative
-
- Current_State := Current_State + 1;
- Last_Start := Current_State;
- Start_State := Last_Start;
-
- -- Create the tree for the second part of alternative
-
- Create_Simple (Start_J, J, Start_Next, End_Next);
-
- -- Create the end state
-
- Add_Empty_Char (Last_Start, Start_Next);
- Add_Empty_Char (Last_Start, Start_Prev);
- Current_State := Current_State + 1;
- End_State := Current_State;
- Add_Empty_Char (End_Prev, End_State);
- Add_Empty_Char (End_Next, End_State);
- end;
-
- when Open_Bracket =>
- Current_State := Current_State + 1;
-
- declare
- Next_State : State_Index := Current_State + 1;
-
- begin
- J := J + 1;
-
- if S (J) = '^' then
- J := J + 1;
-
- Next_State := 0;
-
- for Column in 0 .. Alphabet_Size loop
- Set (Table, Current_State, Column,
- Value => Current_State + 1);
- end loop;
- end if;
-
- -- Automatically add the first character
-
- if S (J) = '-' or else S (J) = ']' then
- Set (Table, Current_State, Map (S (J)),
- Value => Next_State);
- J := J + 1;
- end if;
-
- -- Loop till closing bracket found
-
- loop
- exit when S (J) = Close_Bracket;
-
- if S (J) = '-'
- and then S (J + 1) /= ']'
- then
- declare
- Start : constant Integer := J - 1;
-
- begin
- J := J + 1;
-
- if S (J) = '\' then
- J := J + 1;
- end if;
-
- for Char in S (Start) .. S (J) loop
- Set (Table, Current_State, Map (Char),
- Value => Next_State);
- end loop;
- end;
-
- else
- if S (J) = '\' then
- J := J + 1;
- end if;
-
- Set (Table, Current_State, Map (S (J)),
- Value => Next_State);
- end if;
- J := J + 1;
- end loop;
- end;
-
- Current_State := Current_State + 1;
-
- -- If the next symbol is a special symbol
-
- if J < End_Index
- and then (S (J + 1) = '*' or else
- S (J + 1) = '+' or else
- S (J + 1) = '?')
- then
- J := J + 1;
- Create_Repetition
- (S (J),
- Current_State - 1,
- Current_State,
- Last_Start,
- End_State);
-
- else
- Last_Start := Current_State - 1;
-
- if End_State /= 0 then
- Add_Empty_Char (End_State, Last_Start);
- end if;
-
- End_State := Current_State;
- end if;
-
- when '*' | '+' | '?' | Close_Paren | Close_Bracket =>
- Raise_Exception
- ("Incorrect character in regular expression :", J);
-
- when others =>
- Current_State := Current_State + 1;
-
- -- Create the state for the symbol S (J)
-
- if S (J) = '.' then
- for K in 0 .. Alphabet_Size loop
- Set (Table, Current_State, K,
- Value => Current_State + 1);
- end loop;
-
- else
- if S (J) = '\' then
- J := J + 1;
- end if;
-
- Set (Table, Current_State, Map (S (J)),
- Value => Current_State + 1);
- end if;
-
- Current_State := Current_State + 1;
-
- -- If the next symbol is a special symbol
-
- if J < End_Index
- and then (S (J + 1) = '*' or else
- S (J + 1) = '+' or else
- S (J + 1) = '?')
- then
- J := J + 1;
- Create_Repetition
- (S (J),
- Current_State - 1,
- Current_State,
- Last_Start,
- End_State);
-
- else
- Last_Start := Current_State - 1;
-
- if End_State /= 0 then
- Add_Empty_Char (End_State, Last_Start);
- end if;
-
- End_State := Current_State;
- end if;
-
- end case;
-
- if Start_State = 0 then
- Start_State := Last_Start;
- end if;
-
- J := J + 1;
- end loop;
- end Create_Simple;
-
- -------------------------
- -- Next_Sub_Expression --
- -------------------------
-
- function Next_Sub_Expression
- (Start_Index : Integer;
- End_Index : Integer) return Integer
- is
- J : Integer := Start_Index;
- Start_On_Alter : Boolean := False;
-
- begin
- if S (J) = '|' then
- Start_On_Alter := True;
- end if;
-
- loop
- exit when J = End_Index;
- J := J + 1;
-
- case S (J) is
- when '\' =>
- J := J + 1;
-
- when Open_Bracket =>
- loop
- J := J + 1;
- exit when S (J) = Close_Bracket;
-
- if S (J) = '\' then
- J := J + 1;
- end if;
- end loop;
-
- when Open_Paren =>
- J := Next_Sub_Expression (J, End_Index);
-
- when Close_Paren =>
- return J;
-
- when '|' =>
- if Start_On_Alter then
- return J - 1;
- end if;
-
- when others =>
- null;
- end case;
- end loop;
-
- return J;
- end Next_Sub_Expression;
-
- -- Start of Create_Primary_Table
-
- begin
- Table.all := (others => (others => 0));
- Create_Simple (S'First, S'Last, Start_State, End_State);
- Num_States := Current_State;
- end Create_Primary_Table;
-
- ----------------------------
- -- Create_Secondary_Table --
- ----------------------------
-
- function Create_Secondary_Table
- (First_Table : Regexp_Array_Access;
- Start_State : State_Index;
- End_State : State_Index) return Regexp
- is
- Last_Index : constant State_Index := First_Table'Last (1);
-
- type Meta_State is array (0 .. Last_Index) of Boolean;
- pragma Pack (Meta_State);
- -- Whether a state from first_table belongs to a metastate.
-
- No_States : constant Meta_State := (others => False);
-
- type Meta_States_Array is array (State_Index range <>) of Meta_State;
- type Meta_States_List is access all Meta_States_Array;
- procedure Unchecked_Free is new Ada.Unchecked_Deallocation
- (Meta_States_Array, Meta_States_List);
- Meta_States : Meta_States_List;
- -- Components of meta-states. A given state might belong to
- -- several meta-states.
- -- This array grows dynamically.
-
- type Char_To_State is array (0 .. Alphabet_Size) of State_Index;
- type Meta_States_Transition_Arr is
- array (State_Index range <>) of Char_To_State;
- type Meta_States_Transition is access all Meta_States_Transition_Arr;
- procedure Unchecked_Free is new Ada.Unchecked_Deallocation
- (Meta_States_Transition_Arr, Meta_States_Transition);
- Table : Meta_States_Transition;
- -- Documents the transitions between each meta-state. The
- -- first index is the meta-state, the second column is the
- -- character seen in the input, the value is the new meta-state.
-
- Temp_State_Not_Null : Boolean;
-
- Current_State : State_Index := 1;
- -- The current meta-state we are creating
-
- Nb_State : State_Index := 1;
- -- The total number of meta-states created so far.
-
- procedure Closure
- (Meta_State : State_Index;
- State : State_Index);
- -- Compute the closure of the state (that is every other state which
- -- has a empty-character transition) and add it to the state
-
- procedure Ensure_Meta_State (Meta : State_Index);
- -- grows the Meta_States array as needed to make sure that there
- -- is enough space to store the new meta state.
-
- -----------------------
- -- Ensure_Meta_State --
- -----------------------
-
- procedure Ensure_Meta_State (Meta : State_Index) is
- Tmp : Meta_States_List := Meta_States;
- Tmp2 : Meta_States_Transition := Table;
-
- begin
- if Meta_States = null then
- Meta_States := new Meta_States_Array
- (1 .. State_Index'Max (Last_Index, Meta) + 1);
- Meta_States (Meta_States'Range) := (others => No_States);
-
- Table := new Meta_States_Transition_Arr
- (1 .. State_Index'Max (Last_Index, Meta) + 1);
- Table.all := (others => (others => 0));
-
- elsif Meta > Meta_States'Last then
- Meta_States := new Meta_States_Array
- (1 .. State_Index'Max (2 * Tmp'Last, Meta));
- Meta_States (Tmp'Range) := Tmp.all;
- Meta_States (Tmp'Last + 1 .. Meta_States'Last) :=
- (others => No_States);
- Unchecked_Free (Tmp);
-
- Table := new Meta_States_Transition_Arr
- (1 .. State_Index'Max (2 * Tmp2'Last, Meta) + 1);
- Table (Tmp2'Range) := Tmp2.all;
- Table (Tmp2'Last + 1 .. Table'Last) :=
- (others => (others => 0));
- Unchecked_Free (Tmp2);
- end if;
- end Ensure_Meta_State;
-
- -------------
- -- Closure --
- -------------
-
- procedure Closure
- (Meta_State : State_Index;
- State : State_Index)
- is
- begin
- if not Meta_States (Meta_State)(State) then
- Meta_States (Meta_State)(State) := True;
-
- -- For each transition on empty-character
-
- for Column in Alphabet_Size + 1 .. First_Table'Last (2) loop
- exit when First_Table (State, Column) = 0;
- Closure (Meta_State, First_Table (State, Column));
- end loop;
- end if;
- end Closure;
-
- -- Start of processing for Create_Secondary_Table
-
- begin
- -- Create a new state
-
- Ensure_Meta_State (Current_State);
- Closure (Current_State, Start_State);
-
- while Current_State <= Nb_State loop
-
- -- We will be trying, below, to create the next meta-state
-
- Ensure_Meta_State (Nb_State + 1);
-
- -- For every character in the regexp, calculate the possible
- -- transitions from Current_State.
-
- for Column in 0 .. Alphabet_Size loop
- Temp_State_Not_Null := False;
-
- for K in Meta_States (Current_State)'Range loop
- if Meta_States (Current_State)(K)
- and then First_Table (K, Column) /= 0
- then
- Closure (Nb_State + 1, First_Table (K, Column));
- Temp_State_Not_Null := True;
- end if;
- end loop;
-
- -- If at least one transition existed
-
- if Temp_State_Not_Null then
-
- -- Check if this new state corresponds to an old one
-
- for K in 1 .. Nb_State loop
- if Meta_States (K) = Meta_States (Nb_State + 1) then
- Table (Current_State)(Column) := K;
-
- -- Reset data, for the next time we try that state
-
- Meta_States (Nb_State + 1) := No_States;
- exit;
- end if;
- end loop;
-
- -- If not, create a new state
-
- if Table (Current_State)(Column) = 0 then
- Nb_State := Nb_State + 1;
- Ensure_Meta_State (Nb_State + 1);
- Table (Current_State)(Column) := Nb_State;
- end if;
- end if;
- end loop;
-
- Current_State := Current_State + 1;
- end loop;
-
- -- Returns the regexp
-
- declare
- R : Regexp_Access;
-
- begin
- R := new Regexp_Value (Alphabet_Size => Alphabet_Size,
- Num_States => Nb_State);
- R.Map := Map;
- R.Case_Sensitive := Case_Sensitive;
-
- for S in 1 .. Nb_State loop
- R.Is_Final (S) := Meta_States (S)(End_State);
- end loop;
-
- for State in 1 .. Nb_State loop
- for K in 0 .. Alphabet_Size loop
- R.States (State, K) := Table (State)(K);
- end loop;
- end loop;
-
- Unchecked_Free (Meta_States);
- Unchecked_Free (Table);
-
- return (Ada.Finalization.Controlled with R => R);
- end;
- end Create_Secondary_Table;
-
- ---------------------
- -- Raise_Exception --
- ---------------------
-
- procedure Raise_Exception (M : String; Index : Integer) is
- begin
- raise Error_In_Regexp with M & " at offset" & Index'Img;
- end Raise_Exception;
-
- -- Start of processing for Compile
-
- begin
- if S = "" then
- raise Error_In_Regexp with "empty string";
- end if;
-
- if not Case_Sensitive then
- GNAT.Case_Util.To_Lower (S);
- end if;
-
- -- Check the pattern is well-formed before any treatment
-
- Check_Well_Formed_Pattern;
-
- Create_Mapping;
-
- -- Creates the primary table
-
- declare
- Table : Regexp_Array_Access;
- Num_States : State_Index;
- Start_State : State_Index;
- End_State : State_Index;
- R : Regexp;
-
- begin
- Table := new Regexp_Array (1 .. Initial_Max_States_In_Primary_Table,
- 0 .. Alphabet_Size + 10);
-
- Create_Primary_Table (Table, Num_States, Start_State, End_State);
-
- -- Creates the secondary table
-
- R := Create_Secondary_Table (Table, Start_State, End_State);
- Free (Table);
- return R;
- end;
- end Compile;
-
- overriding procedure Finalize (R : in out Regexp) is
- procedure Free is new
- Ada.Unchecked_Deallocation (Regexp_Value, Regexp_Access);
- begin
- Free (R.R);
- end Finalize;
-
- function Get
- (Table : Regexp_Array_Access;
- State : State_Index;
- Column : Column_Index) return State_Index
- is
- begin
- if State <= Table'Last (1)
- and then Column <= Table'Last (2)
- then
- return Table (State, Column);
- else
- return 0;
- end if;
- end Get;
-
- -----------
- -- Match --
- -----------
-
- function Match (R : in out Regexp; S : String; Next : Integer) return
Match_State
- is begin
- if R.R = null then
- raise Constraint_Error;
- end if;
-
- if R.R.State = 0 then
- return Error;
- end if;
-
- if R.R.Case_Sensitive then
- R.R.State := R.R.States (R.R.State, R.R.Map (S (Next)));
- else
- R.R.State :=
- R.R.States (R.R.State,
- R.R.Map (GNAT.Case_Util.To_Lower (S (Next))));
- end if;
-
- if R.R.State = 0 then
- return Error;
- elsif R.R.Is_Final (R.R.State) then
- return Final;
- else
- return Matching;
- end if;
- end Match;
-
- procedure Set
- (Table : in out Regexp_Array_Access;
- State : State_Index;
- Column : Column_Index;
- Value : State_Index)
- is
- New_Lines : State_Index;
- New_Columns : Column_Index;
- New_Table : Regexp_Array_Access;
-
- begin
- if State <= Table'Last (1)
- and then Column <= Table'Last (2)
- then
- Table (State, Column) := Value;
- else
- -- Doubles the size of the table until it is big enough that
- -- (State, Column) is a valid index.
-
- New_Lines := Table'Last (1) * (State / Table'Last (1) + 1);
- New_Columns := Table'Last (2) * (Column / Table'Last (2) + 1);
- New_Table := new Regexp_Array (Table'First (1) .. New_Lines,
- Table'First (2) .. New_Columns);
- New_Table.all := (others => (others => 0));
-
- for J in Table'Range (1) loop
- for K in Table'Range (2) loop
- New_Table (J, K) := Table (J, K);
- end loop;
- end loop;
-
- Free (Table);
- Table := New_Table;
- Table (State, Column) := Value;
- end if;
- end Set;
-
- function State (R : in Regexp) return Match_State
- is begin
- if R.R.State = 0 then
- return Error;
- elsif R.R.Is_Final (R.R.State) then
- return Final;
- else
- return Matching;
- end if;
- end State;
-
-end WisiToken.Regexp;
--- Local Variables:
--- jit-lock-defer-time: 0.5
--- End:
diff --git a/wisitoken-regexp.ads b/wisitoken-regexp.ads
deleted file mode 100644
index b7cf9ba..0000000
--- a/wisitoken-regexp.ads
+++ /dev/null
@@ -1,139 +0,0 @@
--- Abstract:
---
--- Regular expressions, for WisiToken.Lexer.Regexp. It supports a
--- subset of the syntax of regular expressions copied from familiar
--- Unix style utilities.
---
--- Copied from GNAT System.Regexp, modified to expose the matcher
--- state machine to allow matching substrings.
---
--- Copyright (C) 2015 Stephen Leake
--- Copyright (C) 1998-2010, AdaCore
---
--- This file is part of the WisiToken package.
---
--- The WisiToken package 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. The WisiToken package 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.
---
--- As a special exception, if other files instantiate generics from
--- this unit, or you link this unit with other files to produce an
--- executable, this unit does not by itself cause the resulting
--- executable to be covered by the GNU General Public License. This
--- exception does not however invalidate any other reasons why the
--- executable file might be covered by the GNU Public License.
---
--- You should have received a copy of the
--- GNU General Public License and
--- a copy of the GCC Runtime Library Exception distributed with the WisiToken
package;
--- see files GPL.txt and GPL_runtime.txt. If not, see
--- <http://www.gnu.org/licenses/>.
-
-pragma License (Modified_GPL);
-
-with Ada.Finalization;
-package WisiToken.Regexp is
-
- -- The regular expression must first be compiled, using the Compile
- -- function, which creates a finite state matching table, allowing
- -- very fast matching.
-
- -- The following is the form of a regular expression, expressed in Ada
- -- reference manual style BNF
-
- -- regexp ::= term
-
- -- regexp ::= term | term -- alternation (term or term ...)
-
- -- term ::= item
-
- -- term ::= item item ... -- concatenation (item then item)
-
- -- item ::= elmt -- match elmt
- -- item ::= elmt * -- zero or more elmt's
- -- item ::= elmt + -- one or more elmt's
- -- item ::= elmt ? -- matches elmt or nothing
-
- -- elmt ::= nchr -- matches given character
- -- elmt ::= [nchr nchr ...] -- matches any character listed
- -- elmt ::= [^ nchr nchr ...] -- matches any character not listed
- -- elmt ::= [char - char] -- matches chars in given range
- -- elmt ::= . -- matches any single character
- -- elmt ::= ( regexp ) -- parens used for grouping
-
- -- char ::= any character, including special characters
- -- nchr ::= any character except \()[].*+?^ or \char to match char
- -- ... is used to indication repetition (one or more terms)
-
- -- See also regexp(1) man page on Unix systems for further details
-
- type Regexp is private;
-
- Error_In_Regexp : exception;
-
- function Compile
- (Pattern : String;
- Case_Sensitive : Boolean := True)
- return Regexp;
- -- Compile a Pattern. If the syntax of the given
- -- expression is invalid (does not match above grammar), Error_In_Regexp
- -- is raised.
- --
- -- If Pattern is the empty string it will raise Error_In_Regexp
- --
- -- Raises Error_In_Regexp when an error is found in the regular
- -- expression
-
- procedure Clear (R : in out Regexp);
- -- Clear R internal state, to prepare for a new Match.
-
- type Match_State is (Matching, Final, Error);
-
- function Match (R : in out Regexp; S : String; Next : Integer) return
Match_State;
- -- Compute match for S (Next), assuming Next is the next character
- -- in S after the previous call to Match. If this is the first
- -- call, Next must be S'First.
- --
- -- S'First, S'Last may change between calls to Match.
- --
- -- The return values mean:
- --
- -- Matching: S (S'First .. Next) matches R, but more characters
- -- are needed to complete the match.
- --
- -- Final: S (S'First .. Next) matches R; more characters may also.
- --
- -- Error: S (S'First .. Next) does not match R.
- --
- -- Raises Constraint_Error if R is not a compiled regular
- -- expression.
-
- function State (R : in Regexp) return Match_State;
- -- Return the current state of R; if Matching, it is useful to
- -- call Match again.
- --
- -- After Clear (R), State (R) returns Matching.
-
-private
- type Regexp_Value;
-
- type Regexp_Access is access Regexp_Value;
-
- type Regexp is new Ada.Finalization.Controlled with record
- R : Regexp_Access := null;
- end record;
-
- pragma Finalize_Storage_Only (Regexp);
-
- overriding procedure Finalize (R : in out Regexp);
- -- Free the memory occupied by R
-
- overriding procedure Adjust (R : in out Regexp);
- -- Deep copy R.R.all
-
-end WisiToken.Regexp;
diff --git a/wisitoken-semantic_checks.adb b/wisitoken-semantic_checks.adb
index af83b7f..e90fb59 100644
--- a/wisitoken-semantic_checks.adb
+++ b/wisitoken-semantic_checks.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/wisitoken-semantic_checks.ads b/wisitoken-semantic_checks.ads
index 49811d6..5fb5807 100644
--- a/wisitoken-semantic_checks.ads
+++ b/wisitoken-semantic_checks.ads
@@ -2,7 +2,7 @@
--
-- Grammar semantic check routines.
--
--- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017, 2018 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
diff --git a/wisitoken-syntax_trees.adb b/wisitoken-syntax_trees.adb
index 249065f..fa6602c 100644
--- a/wisitoken-syntax_trees.adb
+++ b/wisitoken-syntax_trees.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-syntax_trees.ads b/wisitoken-syntax_trees.ads
index dc04946..b9cf380 100644
--- a/wisitoken-syntax_trees.ads
+++ b/wisitoken-syntax_trees.ads
@@ -7,12 +7,12 @@
-- We provide Base_Tree and Tree in one package, because only Tree
-- needs an API; the only way Base_Tree is accessed is via Tree.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 Free Software Foundation, Inc.
-- There is one syntax tree for each parser. There is one shared
-- Terminals array, matching the actual input text.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
diff --git a/wisitoken-text_io_trace.adb b/wisitoken-text_io_trace.adb
index 1329cff..daa9f4c 100644
--- a/wisitoken-text_io_trace.adb
+++ b/wisitoken-text_io_trace.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2017 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017 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
diff --git a/wisitoken-text_io_trace.ads b/wisitoken-text_io_trace.ads
index 6deaf51..ad421dd 100644
--- a/wisitoken-text_io_trace.ads
+++ b/wisitoken-text_io_trace.ads
@@ -2,7 +2,7 @@
--
-- Trace output to Ada.Text_IO
--
--- Copyright (C) 2017 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2017 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
diff --git a/wisitoken-user_guide.info b/wisitoken-user_guide.info
new file mode 100644
index 0000000..4d2bb1d
--- /dev/null
+++ b/wisitoken-user_guide.info
@@ -0,0 +1,556 @@
+This is wisitoken-user_guide.info, produced by makeinfo version 6.3 from
+wisitoken-user_guide.texinfo.
+
+Copyright (C) 2014-2015, 2017, 2018 Stephen Leake.
+
+ 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".
+INFO-DIR-SECTION Parser generators
+START-INFO-DIR-ENTRY
+* wisitoken-bnf-generate: (wisitoken-bnf-generate). Ada and Elisp
parser generator
+END-INFO-DIR-ENTRY
+
+
+File: wisitoken-user_guide.info, Node: Top, Next: Overview, Up: (dir)
+
+WisiToken User Guide
+********************
+
+Copyright (C) 2014-2015, 2017, 2018 Stephen Leake.
+
+ 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".
+
+* Menu:
+
+* Overview::
+* Common grammar problems::
+* Grammar File Syntax::
+
+
+File: wisitoken-user_guide.info, Node: Overview, Next: Common grammar
problems, Prev: Top, Up: Top
+
+1 Overview
+**********
+
+WisiToken is a parser and parser generator toolkit, supporting
+generalized LR (both LALR and LR1) and packrat parsers. The grammar can
+be expressed as either Ada source code statements, or in an EBNF file.
+The parser generator generates either Ada or elisp source (the elisp
+source assumes the Emacs wisi Gnu ELPA package).
+
+ At one point, "wisi" was short for "Wisent Indentation engine"; the
+Emacs 'wisi' package implements an indentation engine that used to be
+based on the Emacs wisent parser. However, that parser has now been
+replaced by a generalized LALR parser with error recovery, so "wisi" is
+just a name.
+
+* Menu:
+
+* Install::
+
+
+File: wisitoken-user_guide.info, Node: Install, Up: Overview
+
+1.1 Install
+===========
+
+WisiToken is available as source code only.
+
+ To use the Ada runtime, you will also need to install a lexer
+generator. WisiToken supports re2c, and other lexers can be added.
+
+ re2c is available from <http://re2c.org/>. WisiToken uses the
+environment variable RE2C_HOME to locate re2c.
+
+
+File: wisitoken-user_guide.info, Node: Common grammar problems, Next:
Grammar File Syntax, Prev: Overview, Up: Top
+
+2 Common grammar problems
+*************************
+
+LALR grammars are tricky. Here we describe some common problems people
+run into.
+
+* Menu:
+
+* Empty choice in list::
+
+
+File: wisitoken-user_guide.info, Node: Empty choice in list, Up: Common
grammar problems
+
+2.1 Empty choice in list
+========================
+
+Many programming languages have lists in the grammar. For example, Ada
+has lists of declarations:
+
+ package_body
+ : PACKAGE name IS declaration_list BEGIN statement_list END SEMICOLON
+ ;
+
+ declaration_list
+ : declaration
+ | declaration_list declaration
+ ;
+
+ declaration
+ : object_declaration
+ | subprogram_declaration
+ ;; ...
+ ;
+
+ Note that the above grammar fragment does not allow an empty
+declaration_list. But Ada does, so the question is how can we add that
+to the grammar.
+
+ There are four choices:
+
+ 1. Add an empty declaration choice to declaration_list:
+
+ declaration_list
+ : ;; empty list
+ | declaration
+ | declaration_list declaration
+ ;
+ This is now redundant; since declaration_list can be empty, the
+ second choice is not needed:
+ declaration_list
+ : ;; empty list
+ | declaration_list declaration
+ ;
+
+ 2. Add an empty declaration choice to declaration:
+
+ declaration
+ : ;; empty declaration
+ | object_declaration
+ | subprogram_declaration
+ ;; ...
+ ;
+
+ 3. Add another rule with the empty production:
+
+ package_body
+ : PACKAGE name IS declarative_part BEGIN statement_list END
SEMICOLON
+ ;
+
+ declarative_part
+ : ;; empty
+ | declaration_list
+ ;
+
+ declaration_list
+ : declaration
+ | declaration_list declaration
+ ;
+
+ declaration
+ : object_declaration
+ | subprogram_declaration
+ ;; ...
+ ;
+
+ 4. Add another choice in package_body that leaves out
+ declaration_list:
+ package_body
+ : PACKAGE name IS declaration_list BEGIN statement_list END
SEMICOLON
+ | PACKAGE name IS BEGIN statement_list END SEMICOLON
+ ;
+
+ Choice 1 is redundant, giving parse errors at parse time. Consider
+the following statements, where "<empty>" is used to indicate an empty
+declaration:
+
+ 1) package One is <empty> begin end ; 2) package One is package One
+is <empty> begin end ; begin end ; 3) package One is <empty> package One
+is <empty declaration> begin end ; begin end ;
+
+ In parsing 3), the second 'package' causes a shift/reduce conflict;
+shift to start the nested declaration (as in 2), reduce to the empty
+declaration. Both are correct according to the grammar.
+
+ Choice 2 leads to a shift/reduce conflict in the production for
+package_body; implementing the wisi parser as a generalized LALR parser
+allows it to handle this option.
+
+ Choice 2 is the preferred choice for Ada, since it involves the least
+modifications to the original Ada grammar in the Ada reference manual.
+
+
+File: wisitoken-user_guide.info, Node: Grammar File Syntax, Prev: Common
grammar problems, Up: Top
+
+3 Grammar File Syntax
+*********************
+
+The grammar file syntax is based on Gnu bison syntax with some additions
+and deletions (*note Bison: (bison)Top.).
+
+ (The grammar is specified in the WisiToken grammar file
+'wisitoken_grammar.wy').
+
+ The top level file structure is a list of declarations and
+nonterminals.
+
+ Comments are started by ";;" and terminated by end of line.
+
+* Menu:
+
+* Declarations::
+* Nonterminals::
+* Conditional code::
+
+
+File: wisitoken-user_guide.info, Node: Declarations, Next: Nonterminals,
Up: Grammar File Syntax
+
+3.1 Declarations
+================
+
+The Declarations sections declares terminal tokens, conflicts, and other
+parser parameters.
+
+* Menu:
+
+* Raw Code::
+* Keywords::
+* Tokens::
+* Error recovery::
+* Other declarations::
+
+
+File: wisitoken-user_guide.info, Node: Raw Code, Next: Keywords, Up:
Declarations
+
+3.1.1 Raw code
+--------------
+
+%code { actions | copyright_license } [spec | body | context | pre | post]...
%{ <output language code> }%
+
+ Raw code declarations contain arbitrary code, copied verbatim into
+the output.
+
+ For Elisp output, the generator adds the necessary 'require' forms
+for the elisp lexer, parser, and wisi actions; you only need to add add
+additional code if you use other actions.
+
+ For Ada output, the keywords following '%code' determine where the
+section is output.
+
+
+File: wisitoken-user_guide.info, Node: Keywords, Next: Tokens, Prev: Raw
Code, Up: Declarations
+
+3.1.2 Keywords
+--------------
+
+%keyword <name> <string>
+
+example:
+%keyword SEMICOLON ";"
+
+ "Keywords" are reserved words or symbols in the target language; the
+lexers recognize them by the given string.
+
+
+File: wisitoken-user_guide.info, Node: Tokens, Next: Error recovery, Prev:
Keywords, Up: Declarations
+
+3.1.3 Tokens
+------------
+
+%token < kind > name regexp
+
+example:
+%token <symbol> IDENTIFIER
+%token <punctuation> TICK "'"
+
+ The meaning of 'kind' is determined by the lexer and parser runtime.
+The syntax of the regular expression is determined by the lexer
+generator.
+
+ In the Emacs wisi lexer, the token kinds are recognized by Emacs
+syntax properties:
+
+'<punctuation>'
+ %token <punctuation> TICK "'"
+ A string of characters that have punctuation syntax, and match the
+ token string.
+
+'<symbol>'
+ %token <symbol> IDENTIFIER
+ A string of characters that have word syntax, that match no other
+ token.
+
+'<string-double>'
+ %token <string-double> STRING_LITERAL
+ A string of characters that have string syntax, with double quote
+ delimiters.
+
+'<string-single>'
+ %token <string-single> CHARACTER_LITERAL
+ A string of characters that have string syntax, with single quote
+ delimiters.
+
+'<number>'
+ %token <number> NUMERIC_LITERAL ada-wisi-number-p ada-wisi
+ A string of characters that have word syntax, recognized by the
+ function given in the third parameter. The fourth parameter is the
+ source file for the recognizer (included via 'require').
+
+'<whitespace>'
+ %token <whitespace> WHITESPACE [ \t\n]
+ Not used by the wisi lexer; required by the Ada lexer.
+
+'<comment>'
+ %token <line_comment> COMMENT "--"[^\n]*[\n]
+ Not used by the wisi lexer; required by the Ada lexer. The third
+ argument is the regular expression to recognize the entire comment.
+
+
+File: wisitoken-user_guide.info, Node: Error recovery, Next: Other
declarations, Prev: Tokens, Up: Declarations
+
+3.1.4 Error recovery
+--------------------
+
+The parser can use error recovery algorithms when it encounters syntax
+errors; if a solution is found, the parse continues.
+
+ Error recovery uses multiple tasks to take advantage of multiple CPU
+cores. Unfortunately, this means there is a race condition; the
+solutions found can be delivered in different orders on different runs.
+This matters because each solution results in a successful parse,
+possibly with different actions (different indentation computed, for
+example). Which solution finally succeeds depends on which are
+terminated due to identical parser stacks, which in turn depends on the
+order they were delivered. See
+'ada-mode/tests/ada_mode-interactive_2.adb' for an example.
+
+ Once the syntax errors are fixed, only the ambiguities in the grammar
+itself can cause a similar problem.
+
+ Several declarations set parameters for the error recovery. If none
+of these parameters are present in the grammar file, the generated
+parser does not do error recovery.
+
+'%mckenzie_check_limit <limit>'
+ The number of tokens past the error point that must be parsed
+ successfully for a solution to be deemed successful. Smaller
+ values give faster recovery; larger values give better solutions.
+ Too large a value risks encountering another user error, making a
+ solution impossible. 3 or 4 works well in practice.
+
+'mckenzie_check_delta_limit <limit>'
+ When error recovery is entered with multiple parsers active, once a
+ solution has been found for one parser, the other parsers are
+ allowed to check only 'mckenzie_check_delta_limit' possible
+ solutions before they fail. This prevents long recovery times.
+
+'%mckenzie_cost_default <insert> <delete> <push back> <ignore check fail>'
+ McKenzie error recovery default costs for insert, delete, push back
+ single tokens, and for ignoring a semantic check failure; four
+ floating point numbers.
+
+ "Push back" means undo parsing; remove tokens from the parse stack
+ and put them back into the input stream. This moves the
+ insert/delete point, allowing better solutions.
+
+ If not specified, costs are zero. Costs can be negative; they all
+ add linearly.
+
+'%mckenzie_cost_delete <token> <cost>'
+ McKenzie error recovery delete cost for a specific token.
+
+'%mckenzie_cost_insert <token> <cost>'
+ McKenzie error recovery insert cost for a specific token.
+
+'%mckenzie_cost_limit <integer>'
+ McKenzie error recovery limit on cost of solutions; default max
+ integer.
+
+'%mckenzie_cost_push_back <token> <cost>'
+ McKenzie error recovery push back cost for a specific token.
+
+'%mckenzie_enqueue_limit <integer>'
+ McKenzie error recovery limit on possible solutions enqueued (to be
+ checked); default max integer.
+
+ The error recovery algorithm generates possible solutions based on
+ the grammar preceding the error point, by inserting, deleting, or
+ pushing back tokens. Each possible solution is given a cost, and
+ enqueued to be checked later. Solutions are checked in cost order
+ (lowest first).
+
+
+File: wisitoken-user_guide.info, Node: Other declarations, Prev: Error
recovery, Up: Declarations
+
+3.1.5 Other declarations
+------------------------
+
+'%case_insensitive'
+ If present, keywords are case insensitive in the lexer.
+
+'%conflict <conflict description>'
+ Declare a known conflict.
+
+ Example conflict declaration:
+ %conflict REDUCE/REDUCE in state abstract_limited_opt,
abstract_limited_synchronized_opt on token NEW
+
+ The conflict description is output by 'wisitoken-bnf-generate' when
+ an undeclared conflict is detected. If the user decides to not fix
+ the conflict, the description can be copied into the grammar source
+ file, so it will be ignored next time around.
+
+ Resolving conflicts in the grammar can be difficult, but leaving
+ them in can increase parse time and cause ambiguous parses.
+
+'%elisp_face <name>'
+ Declare a name for an elisp face constant.
+
+ When generating Ada code for Emacs, the elisp faces applied by
+ 'wisi-face-apply' actions must be declared, so the elisp and Ada
+ code aggree on what they mean.
+
+'%elisp_indent <name>'
+ Declare a name for an elisp indent variable.
+
+ When generating Ada code for Emacs, the elisp indent variables used
+ in 'wisi-indent' actions must be declared, so the elisp and Ada
+ code aggree on what they mean.
+
+'embedded_quote_escape_doubled'
+ If present, quote characters embedded in strings are escaped by
+ doubling (as in Ada); otherwise they are escaped by preceding with
+ backslash (as in C). Default is backslash.
+
+'end_names_optional_option <name>'
+ When generating Ada code for Emacs, the name of the Ada variable
+ determining whether end block names are optional.
+
+ In the Ada language, block names can be repeated at the end; for
+ example:
+
+ Get_Inputs :
+ loop
+ ...
+ end loop Get_Inputs;
+
+ These names are optional in the Ada standard. Making them required
+ improves error recovery; the recovery algorithm can use matching
+ names to isolate the error.
+
+'generate <generate_algorithm> <output_language> [text_rep |'
+ elisp | re2c | process | module]
+
+ '<generate_algorithm>' is one of 'LALR | LR1 | Packrat_Gen |
+ Packrat_Proc | External'
+
+ '<output_language>' is one of 'Ada | Ada_Emacs | elisp'
+
+ Declare one output source set. Multiple sets can be declared; they
+ are all generated together.
+
+ 'elisp | re2c' determine the lexer used by the generated code.
+
+ 'process | module' determine the style of code generated by
+ 'Ada_Emacs'; an external process executable, or an Emacs loadable
+ module.
+
+ 'text_rep' determines how the parse table is represented; if
+ present, it is in a text file that is loaded at parser run time.
+ If absent, it is in the code. For very large parse tables, such as
+ for an LR1 parser for a large language like Ada, the text
+ representation may be needed, because the Ada compiler can't handle
+ the very large number of statements that represent the parser table
+ in the code. The text file can take a long time to read at parser
+ startup (a few seconds for the Ada language).
+
+'%no_language_runtime'
+ When generating Ada code for Emacs, '%no_language_runtime' causes
+ the generated code to not include the runtime. Some grammars may
+ need no runtime, particularly if they are small grammars intendend
+ to test some generator feature.
+
+'%no_enum'
+ By default, the generated Ada code includes an enumeration type
+ declaring each token. This makes the language-specific runtime
+ easier to write (without this type, tokens are identified by
+ integers).
+
+ '%no_enum' causes the generated code to not include the token
+ enumeration type.
+
+'%start'
+ The start token for the grammar.
+
+'regexp_name <name>'
+ Declare a named regular expression. The name may then occur in
+ another regular expression.
+
+ The re2c lexer supports this usage; other lexers may not.
+
+
+File: wisitoken-user_guide.info, Node: Nonterminals, Next: Conditional code,
Prev: Declarations, Up: Grammar File Syntax
+
+3.2 Nonterminals
+================
+
+The nonterminals section declares the nonterminal tokens, and the
+associated production rules and actions.
+
+ The syntax of nonterminals is:
+
+{nonterminal} : {token} ... [ %( action code )% [| {token} ... [ %(
+action code )% ] ]... ;
+
+ Each nonterminal gives the expansion of a nonterminal token into a
+list of tokens (both terminal and nonterminal); optional productions are
+separated by "|". Each list of tokens is followed by an "action", which
+is output-language code (enclosed in '%( )%'), that will be executed
+when the production is reduced.
+
+
+File: wisitoken-user_guide.info, Node: Conditional code, Prev: Nonterminals,
Up: Grammar File Syntax
+
+3.3 Conditional code
+====================
+
+The elisp and elisp lexers support different regular expression syntax,
+so it is sometimes necessary to include or exclude some declarations and
+portions of rules based on the lexer.
+
+ In addition, LALR parsers can have more conflicts than LR1 parsers.
+
+ Therefore the EBNF supports '%if ... %end if':
+%if {lexer | parser} = {<lexer> | <generate_algorithm>}
+...
+%end if
+
+ The lines between '%if' and '%end if' are ignored if the current
+lexer or parser is not the one specified in the '%if' condition.
+
+ '%if ... %end if' cannot be nested.
+
+
+
+Tag Table:
+Node: Top721
+Node: Overview1366
+Node: Install2139
+Node: Common grammar problems2523
+Node: Empty choice in list2816
+Node: Grammar File Syntax5798
+Node: Declarations6355
+Node: Raw Code6675
+Node: Keywords7260
+Node: Tokens7569
+Node: Error recovery9217
+Node: Other declarations12453
+Node: Nonterminals16476
+Node: Conditional code17193
+
+End Tag Table
diff --git a/wisitoken-wisi_ada.adb b/wisitoken-wisi_ada.adb
index ba0285d..4a098c8 100644
--- a/wisitoken-wisi_ada.adb
+++ b/wisitoken-wisi_ada.adb
@@ -2,8 +2,7 @@
--
-- see spec
--
--- Copyright (C) 2013, 2014, 2015, 2017, 2018 Stephe Leake
--- Copyright (C) 1999 Ted Dennison
+-- Copyright (C) 2013, 2014, 2015, 2017, 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken-wisi_ada.ads b/wisitoken-wisi_ada.ads
index 0678d06..a78643f 100644
--- a/wisitoken-wisi_ada.ads
+++ b/wisitoken-wisi_ada.ads
@@ -2,8 +2,7 @@
--
-- Type and operations for building a grammar directly in Ada source.
--
--- Copyright (C) 2003, 2013 - 2015, 2017, 2018 Stephe Leake
--- Copyright (C) 1999 Ted Dennison
+-- Copyright (C) 2003, 2013 - 2015, 2017, 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken.adb b/wisitoken.adb
index 3553e4a..ce72d3f 100644
--- a/wisitoken.adb
+++ b/wisitoken.adb
@@ -1,6 +1,8 @@
--------------------------------------------------------------------------------
+-- Abstract:
+--
+-- See spec
--
--- Copyright (C) 2009, 2014-2015, 2017, 2018 Stephe Leake
+-- Copyright (C) 2009, 2014-2015, 2017, 2018 Free Software Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken.ads b/wisitoken.ads
index 734ff4a..81fc519 100644
--- a/wisitoken.ads
+++ b/wisitoken.ads
@@ -16,8 +16,7 @@
-- Sethi, and Ullman (aka: "The [Red] Dragon Book" due to the dragon
-- on the cover).
--
--- Copyright (C) 2009, 2010, 2013 - 2015, 2017, 2018 Stephe Leake
--- Copyright (C) 1999 FlightSafety International and Ted Dennison
+-- Copyright (C) 2009, 2010, 2013 - 2015, 2017, 2018 Free Software
Foundation, Inc.
--
-- This file is part of the WisiToken package.
--
diff --git a/wisitoken.gpr b/wisitoken.gpr
index 82b23de..2b0064d 100644
--- a/wisitoken.gpr
+++ b/wisitoken.gpr
@@ -1,5 +1,21 @@
--- For the wisi ELPA package; provide WisiToken to other ELPA packages
--- SAL sources are also in the wisi package.
+-- Abstract :
+--
+-- Provide SAL and WisiToken to other ELPA packages
+--
+-- Copyright (C) 2018 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 "gnatcoll";
with "standard_common";
project WisiToken is
diff --git a/wisitoken_grammar_runtime.adb b/wisitoken_grammar_runtime.adb
index 905b7a5..412ffef 100644
--- a/wisitoken_grammar_runtime.adb
+++ b/wisitoken_grammar_runtime.adb
@@ -2,7 +2,7 @@
--
-- See spec.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
@@ -444,18 +444,12 @@ package body WisiToken_Grammar_Runtime is
((Name => +Get_Child_Text (Data, Tree, Tokens (3), 1,
Strip_Quotes => True),
Value => +Get_Child_Text (Data, Tree, Tokens (3), 2)));
- elsif Kind = "regexp_name" then
- Data.User_Names.Regexps.Append
- ((Name => +Get_Child_Text (Data, Tree, Tokens (3), 1),
- Value => +Get_Child_Text (Data, Tree, Tokens (3), 2)));
-
elsif Kind = "embedded_quote_escape_doubled" then
Data.Language_Params.Embedded_Quote_Escape_Doubled := True;
elsif Kind = "end_names_optional_option" then
Data.Language_Params.End_Names_Optional_Option := +Get_Text
(Data, Tree, Tokens (3));
-
elsif Kind = "generate" then
declare
Children : constant Syntax_Trees.Valid_Node_Index_Array
:= Tree.Get_Terminals (Tokens (3));
@@ -557,7 +551,7 @@ package body WisiToken_Grammar_Runtime is
Data.Language_Params.Start_Token := +Get_Text (Data, Tree,
Tokens (3));
elsif Kind = "re2c_regexp" then
- Data.Tokens.Regexps.Append
+ Data.Tokens.re2c_Regexps.Append
((+Get_Child_Text (Data, Tree, Tokens (3), 1),
+Get_Child_Text (Data, Tree, Tokens (3), 2)));
diff --git a/wisitoken_grammar_runtime.ads b/wisitoken_grammar_runtime.ads
index 1e87241..62aaf9a 100644
--- a/wisitoken_grammar_runtime.ads
+++ b/wisitoken_grammar_runtime.ads
@@ -2,7 +2,7 @@
--
-- Runtime utils for wisi_grammar.wy actions.
--
--- Copyright (C) 2018 Stephen Leake All Rights Reserved.
+-- Copyright (C) 2018 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
- [elpa] externals/wisi e91f482 03/35: * wisi: Fix up dependency and sectioning style., (continued)
- [elpa] externals/wisi e91f482 03/35: * wisi: Fix up dependency and sectioning style., Stefan Monnier, 2020/11/28
- [elpa] externals/wisi 60b8ef1 15/35: Update ada-mode, wisi, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi d10db37 22/35: Release ada-mode version 6.0. Release wisi version 2.0, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi a4e4907 01/35: Add ada-mode, wisi packages, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi 922e27f 04/35: * wisi: Fix warnings and a few 80-columns overruns, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi 0635f1a 14/35: * packages/wisi: Use lexical binding. Fix dos EOL. Fix EOB markers, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi 7cb03cb 10/35: * packages/ada-mode/* : version 5.1.5, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi cb45dd5 07/35: * packages/ada-mode: version 5.1.1: fix wisi packaging bug, add -a in gnat-find, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi 8bdcee1 11/35: publish ada-mode 5.1.6, wisi 1.0.6, new package ada-ref-man, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi 364da46 20/35: Update ada-mode to version 5.2.2, wisi to version 1.1.5, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi 89eee25 23/35: Release ada-mode 6.0.1, wisi 2.0.1; fix copyright, packaging bugs,
Stefan Monnier <=
- [elpa] externals/wisi d0eac6a 34/35: Forgot some new files in wisi, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi a6b3115 24/35: * ada-mode, wisi: Fix file access rights, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi bd1884c 02/35: Fix up copyright notices., Stefan Monnier, 2020/11/28
- [elpa] externals/wisi c282a4b 13/35: update ada-mode, wisi, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi 27db81d 17/35: Fix some quoting problems in doc strings, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi 724a763 31/35: In wisi sal-gen_unbounded_definite_red_black_trees.adb, correct WORKAROUND, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi abbb0c2 19/35: Release wisi 1.1.4, ada-mode 5.2.1, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi 5becb56 29/35: Release ada-mode 7.0.1, wisi 3.0.1, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi 2114f5a 28/35: In ada-mode and wisi, release ada-mode 6.2.1, wisi 2.2.1; fix packaging bugs, Stefan Monnier, 2020/11/28
- [elpa] externals/wisi 2636b79 25/35: Release ada-mode 6.1.0, wisi 2.1.0, Stefan Monnier, 2020/11/28