09-113 To: J3 From: Malcolm Cohen Subject: Spurious defined terms in clause 3. Date: 2009 January 26 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 ------------------ THIS ONE IS OPTIONAL: [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(3.2.6p1-5)] Replace entire subclause with "A lexical token that is 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:31(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===