[A68-JARGON][COMMITTED] New term 'actual declarer'

Jose E. Marchesi jemarch@gnu.org
Thu Jun 5 08:25:17 GMT 2025


---
 src/Makefile.am          |  4 +-
 src/a68-jargon.texi      |  4 +-
 src/actual-declarer.texi | 94 ++++++++++++++++++++++++++++++++++++++++
 src/declarer.texi        |  4 +-
 src/formal-declarer.texi |  6 ++-
 5 files changed, 106 insertions(+), 6 deletions(-)
 create mode 100644 src/actual-declarer.texi

diff --git a/src/Makefile.am b/src/Makefile.am
index 44f419f..fa9cc00 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -19,7 +19,8 @@ AUTOMAKE_OPTIONS = info-in-builddir
 
 info_TEXINFOS = a68-jargon.texi
 
-a68_jargon_TEXINFOS = actual-parameter.texi \
+a68_jargon_TEXINFOS = actual-declarer.texi \
+                      actual-parameter.texi \
                       affirmation.texi \
                       aleph.texi \
                       comment.texi \
@@ -77,6 +78,7 @@ A68_JARGON_MANPAGES = $(A68_JARGON_POD_FILES:.pod=.7algol)
 $(A68_JARGON_POD_FILES): $(algol68_jargon_TEXINFOS)
 
 man_MANS = a68-jargon.7algol \
+           actual-declarer.7algol \
            actual-parameter.7algol \
            affirmation.7algol \
            aleph.7algol \
diff --git a/src/a68-jargon.texi b/src/a68-jargon.texi
index 73a05fe..36b4cd9 100644
--- a/src/a68-jargon.texi
+++ b/src/a68-jargon.texi
@@ -92,7 +92,7 @@ Metalanguage
 @c * VW Grammar::
 
 Language
-@c * Actual Declarer::
+* Actual Declarer::
 * Actual Parameter::
 * Affirmation::
 @c * Applied Identifier::
@@ -366,6 +366,7 @@ Jose E. Marchesi <jemarch@gnu.org>
 @chapter Language
 
 @menu
+* Actual Declarer::
 * Actual Parameter::
 * Affirmation::
 * Comment::
@@ -407,6 +408,7 @@ Jose E. Marchesi <jemarch@gnu.org>
 * Worthy Character::
 @end menu
 
+@include actual-declarer.texi
 @include actual-parameter.texi
 @include affirmation.texi
 @include comment.texi
diff --git a/src/actual-declarer.texi b/src/actual-declarer.texi
new file mode 100644
index 0000000..581a7a6
--- /dev/null
+++ b/src/actual-declarer.texi
@@ -0,0 +1,94 @@
+@c This file is part of the Algol 68 Jargon File.
+@c
+@c Copyright (C) 2024 Jose E. Marchesi
+@c
+@c You can redistribute and/or modify this document under the terms of
+@c the GNU General Public License as published by the Free Software
+@c Foundation, either version 3 of the License, or (at your option) any
+@c later version.
+@c
+@c Alternatively, permission is granted to copy, distribute and/or modify
+@c this document under the terms of the GNU Free Documentation License,
+@c Version 1.3 or any later version published by the Free Software
+@c Foundation; with no Invariant Sections, no Front-Cover Texts, and no
+@c Back-Cover Texts.
+
+@node Actual Declarer
+@section Actual Declarer
+
+@c man title actual-declarer modes of generated values
+
+@subheading Meaning
+@c man begin MEANING
+An @dfn{actual declarer} specifies the mode of the value being created
+by a generator.  The generator may be either explicit, or the implicit
+sample-generator in a variable declaration.  For example, in the
+following identity declaration the @code{@B{int}} declarer specified
+in the heap generator is an actual declarer:
+
+@example
+@B{int} datum = @B{heap} @B{int};
+@end example
+
+@noindent
+In the following equivalent variable declarations, the @code{@B{int}}
+declarers are an actual declarer used by the sample-generators:
+
+@example
+@B{heap} @B{int} foo;
+@B{loc} @B{int} bar;
+@B{int} baz;
+@end example
+
+Actual declarers specifying row modes shall include bounds
+information.  The bounds information provides enough information to
+the generators to calculate the total size of the generated value.
+For example, the following variable declaration declares a variable
+referring to an array of @code{n} integers:
+
+@example
+[n]@B{int} numbers;
+@end example
+
+Another construct that uses actual declarers is the mode declaration,
+which associates a name to some given mode.  The mode at the
+right-hand side of a mode declaration shall be specified by an actual
+declarer.  For example, consider the following mode declaration:
+
+@example
+@B{mode} @B{matrix} = [3,3]@B{real};
+@end example
+
+@noindent
+The declaration above declares a mode @code{@B{matrix}} to be a
+row-row-real, specified by the actual declarer @code{[3,3]@B{real}}.
+The mode indication @B{matrix} can now be used to denote that mode,
+like for example:
+
+@example
+@B{matrix} m = @B{heap} @B{matrix};
+@end example
+
+@noindent
+Where the first instance of @code{@B{matrix}} is used as a formal
+declarer and bounds are ignored.  The second instance of
+@code{@B{matrix}} is used as an actual declarer, and bounds are
+significant.
+@c man end
+
+@subheading See Also
+
+@itemize @bullet
+@item @R{Declarer,Declarer}
+@item @R{Formal Declarer,Formal Declarer}
+@c @item @R{Virtual Declarer}
+@end itemize
+
+@ignore
+@c man begin AUTHOR
+Jose E. Marchesi <jemarch@gnu.org>
+@c man end
+@c man begin SEEALSO
+declarer(7algol), formal-declarer(7algol)
+@c man end
+@end ignore
diff --git a/src/declarer.texi b/src/declarer.texi
index 0286d16..3f5917a 100644
--- a/src/declarer.texi
+++ b/src/declarer.texi
@@ -49,8 +49,8 @@ Declarer,formal declarers}, actual declarers and virtual declarers.
 @subheading See Also
 
 @itemize @bullet
-@item @ref{Formal Declarer}
-@item Actual Declarer
+@item @R{Formal Declarer,Formal Declarer}
+@item @R{Actual Declarer, Actual Declarer}
 @item Virtual Declarer
 @item Mode
 @item [RR 4.6]
diff --git a/src/formal-declarer.texi b/src/formal-declarer.texi
index a977ed0..8361053 100644
--- a/src/formal-declarer.texi
+++ b/src/formal-declarer.texi
@@ -98,7 +98,9 @@ the standard representation.
 @subheading See Also
 
 @itemize @bullet
-@c @item @ref{Identity Declaration}
+@item @R{Declarer,Declarer}
+@item @R{Actual Declarer,Actual Declarer}
+@c @item @R{Virtual Declarer}
 @item [II 2.2.1]
 @item [RR 4.4.1.c,4.6.1.r,5.5.1.a]
 @end itemize
@@ -108,6 +110,6 @@ the standard representation.
 Jose E. Marchesi <jemarch@gnu.org>
 @c man end
 @c man begin SEEALSO
-identity-declaration(7algol), [RR 4.4.1.c,4.6.1.r,5.5.1.1.a], [II 2.2.1]
+declarer(7algol), actual-declarer(7algol), [RR 4.4.1.c,4.6.1.r,5.5.1.1.a], [II 2.2.1]
 @c man end
 @end ignore
-- 
2.30.2


More information about the Algol68 mailing list