09-113r1
To: J3
From: Malcolm Cohen/Stan Whitlock
Subject: Spurious defined terms in clause 3.
Date: 2009 February 10
1. Introduction
---------------
The system for "defining" terms we used in previous versions of the
standard is not in accordance with the ISO guidelines, so we need to stop
using it. We have already introduced the ISO-compliant defined terms
subclause, and moved/copied many definitions into it. However, quite a lot
have not been revised. These should either
- be turned into normal text ("untermified")
or
- become proper defined terms.
For the "untermify" case, just unemboldening the text is generally
sufficient; however, often they should continue to be indexed.
This paper deals with the terms in clause 3.
Some additional clarifying edits are included.
2. Terms and what to do with them
---------------------------------
- control character: Normal Usage (also defined by other standards);
= untermify, index all uses (c03, c04, c09).
- graphic character: Normal Usage (also defined by other standards);
= untermify, index all uses (c03, c04, c10);
reword c03.
- Fortran character set: Hardly Used.
= untermify, index one use and add cross-reference
(don't index [19:6], that is not a significant use).
- letter: non-BNF version of BNF term, also Normal Usage;
= untermify, don't index (except as BNF).
I claim that all non-BNF usage is consistent with all reasonable
meanings of "letter", because the universe of discourse is very
limited, e.g. limited to the listed I/O specifiers etc.
- digit: non-BNF version of BNF term, also Normal Usage;
= untermify, don't index (except as BNF).
- special characters; Hardly Used;
in fact this is only used in R301 , and R301 is
*Never Referenced*. These BNF rules should both be deleted,
since we cannot get to them (pointless definitions).
References to "special character" (non-BNF) can be rewritten.
- low-level syntax; Normal Usage;
= untermify, don't index.
- lexical token; we want our definition;
= termify.
(Actually, apart from one single usage in c01 this is only used within
c03, so I'd be happy if people prefer not to add an extra term.)
- delimiter; Normal Usage, plus the defn does not match the usage!
= untermify, don't index.
- free source form: Hardly Used;
= untermify, index the definition. Don't index the usage in c04 as
this is not significant.
- comment: Hardly Used;
= untermify, index ... also index Namelist comments as comments?
- fixed source form: Hardly Used;
= untermify.
- INCLUDE line: only used in c03;
= untermify, index.
4. Edits to 09-007
------------------
[11:40+(1.3.76-)] Define term
"\term{lexical token}
keyword, name, literal constant other than a complex literal constant,
operator, label, delimiter, comma, =, =>, :, ::, ;, or %
(\ref{D3:Low-level syntax})"
Note to editor: be careful with the percent!
{Define term with cross-reference to where the listed things are found.}
[19:4(1.4.1p1)] Make "lexical tokens" into a term reference.
{Only if we add it as a term though.}
[39:4-5(3.1.1p1)] Unembolden "control character", retain indexing, not a
definition.
{Determify. We don't actually define it, so don't index as a definition.}
[39:5(3.1.1p1)] Unembolden "graphic character", retain indexing, not a
definition.
{Determify. We don't want to define it, that's SC2's job.}
[39:7(3.1.1p2)] Append to paragraph
"Together, the set of letters, digits, and underscore define the syntax
class \si{alphanumeric-character}."
{Otherwise why are we suddenly dumping some syntax rules into the middle
of this subclause without referring to it anywhere?}
[39:8-9(3.1.1,R301)] Delete unused BNF rule R301 .
{Unused = waste of space.}
[39:16(3.1.2p1)] Unembolden "letters", do not index.
{The BNF term is unaffected.}
[39:22(3.1.3p1)] Unembolden "digits", do not index.
{The BNF term is unaffected.}
[40:2(3.1.5p1)] Unembolden "special characters", index "special character".
[40:3(3.1.5p2)] Delete "The special ... .".
{Totally useless BNF definition, not used except in now-deleted R301.}
[40:10] Unembolden "low-level syntax" and do not index it.
[40:10-11] Replace "<> ... ::, ;, and" with
"A lexical token is a keyword, name, literal constant other than a
complex literal constant, operator, statement label, delimiter, comma,
=, =>, :, ::, ; or",
where "lexical token" is a term reference.
{Delete useless incorrect waffle - lots of things are the building blocks
of a program, but what we mean by lexical token is one of the items in the
list. Also, convert to singular. Also, change "label" to "statement
label"; the latter is what we actually call these, only when the context
is clear do we omit the qualifying word "statement".}
[43:6-10(3.2.6p1-5)] Replace entire subclause with
"A lexical token that is a delimiter is a (, ), /, [, ], (/, or /)."
{Untermify. Clarify that we're only talking about tokens at this point,
not delimiters in general (we use it for quotes in i/o for example).
the fact that they are paired is interesting but not germane - the
pairing is explicit in the higher-level syntax. For the purposes of
tokenization, all we need to do here is to list them. Oh, and the
paragraphing was broken before too.}
{If we really must, we could insert some useless waffle at the end of
the sentence, like "; such tokens are used to enclose syntactic lists",
but I'd prefer not to.}
[43:21(3.3.2.1p1)] Unembolden "free source form", index as a definition.
[44:4(3.3.2.3p1)] Unembolden "comment", index as a definition.
[45:9(3.3.3.1p1)] Unembolden "fixed source form", index as a definition.
[45:13(3.3.3.2p1)] Unembolden "comment", index as a definition.
[46:5(3.4p1)] Unembolden "INCLUDE line", index as a definition.
[55:8(4.4.5.2p3)] Index "Fortran character set", change
"Fortran character set" to
"characters in the Fortran character set (3.1)";
3.1 is "Processor character set".
{Index and cross-reference: this is the only significant use of the term.
Tweak wording.}
[56:28(4.4.5.3p3)] Index "graphic character".
[56:30(4.4.5.3p3)] Index "control character".
[56:between 30 and 31] Delete note 4.11.
{This note is totally ancient history, and provides no useful info.}
[57:16(4.4.5.4p3)]
Replace "Except for blank, there" with "There",
replace "the special characters and underscore"
with "any other character"; making the whole paragraph read
"There are no constraints on the location of any other character in the
collating sequence, nor is there any specified collating sequence
relationship between the upper-case and lower-case letters."
{Previous version forgot about all the extra processor-dependent characters
and there is no reason to limit the comment to the "special characters".}
[58:3] "letters ... characters"->"Fortran character set".
{Why say what the FCS is but then repeat the definition here?
Perhaps left over from F95?}
[199:31(9.2.2p1)] Index "control character", change reference
"(3.1)" (Processor character set) to "(3.1.1)"
(Characters).
{3.1 is much too broad, control chars only mentioned in 3.1.1.}
[202:41(9.3.3.4)p4] Index "control character", change reference
"(3.1)" (Processor character set) to "(3.1.1)"
(Characters).
{3.1 is much too broad, control chars only mentioned in 3.1.1.}
[271:20(10.11.3.7p1)] Index "comment".
{This is for namelist comments.}
[271:21(10.11.3.7p1)] Index "graphic character".
[357:27(13.7.70)] Delete "lexical".
{These functions are *not* described as "lexical comparison" anywhere else,
and it just confuses people who think there is a connection to lexical
tokens.}
===END===