doc-src/Ref/syntax.tex
changeset 3485 f27a30a18a17
parent 3135 233aba197bf2
child 4375 ef2a7b589004
     1.1 --- a/doc-src/Ref/syntax.tex	Wed Jul 02 11:59:10 1997 +0200
     1.2 +++ b/doc-src/Ref/syntax.tex	Wed Jul 02 16:46:36 1997 +0200
     1.3 @@ -114,7 +114,7 @@
     1.4  \begin{itemize}
     1.5  \item Name tokens: $\astofpt{t} = \Variable s$, where $t$ is an \ndx{id},
     1.6    \ndx{var}, \ndx{tid}, \ndx{tvar}, \ndx{xnum} or \ndx{xstr} token, and $s$
     1.7 -  its associated string. Note that for {\tt xstr} this does not include the
     1.8 +  its associated string.  Note that for {\tt xstr} this does not include the
     1.9    quotes.
    1.10  
    1.11  \item Copy productions:\index{productions!copy}
    1.12 @@ -606,7 +606,7 @@
    1.13  The nonterminal is declared as the type~{\tt is}, but with no {\tt arities}
    1.14  declaration.  Hence {\tt is} is not a logical type and may be used safely as
    1.15  a new nonterminal for custom syntax.  The nonterminal~{\tt is} can later be
    1.16 -re-used for other enumerations of type~{\tt i} like lists or tuples. If we
    1.17 +re-used for other enumerations of type~{\tt i} like lists or tuples.  If we
    1.18  had needed polymorphic enumerations, we could have used the predefined
    1.19  nonterminal symbol \ndx{args} and skipped this part altogether.
    1.20  
    1.21 @@ -850,7 +850,7 @@
    1.22  constraint might appear.
    1.23  
    1.24  Also note that we are responsible to mark free identifiers that
    1.25 -actually represent bound variables. This is achieved by
    1.26 +actually represent bound variables.  This is achieved by
    1.27  \ttindex{Syntax.variant_abs'} and \ttindex{Syntax.mark_boundT} above.
    1.28  Failing to do so may cause these names to be printed in the wrong
    1.29  style.  \index{translations|)} \index{syntax!transformations|)}
    1.30 @@ -861,24 +861,24 @@
    1.31  %
    1.32  Isabelle's meta-logic features quite a lot of different kinds of
    1.33  identifiers, namely {\em class}, {\em tfree}, {\em tvar}, {\em free},
    1.34 -{\em bound}, {\em var}. One might want to have these printed in
    1.35 +{\em bound}, {\em var}.  One might want to have these printed in
    1.36  different styles, e.g.\ in bold or italic, or even transcribed into
    1.37  something more readable like $\alpha, \alpha', \beta$ instead of {\tt
    1.38 -  'a}, {\tt 'aa}, {\tt 'b} for type variables. Token translations
    1.39 +  'a}, {\tt 'aa}, {\tt 'b} for type variables.  Token translations
    1.40  provide a means to such ends, enabling the user to install certain
    1.41  \ML{} functions associated with any logical \rmindex{token class} and
    1.42  depending on some \rmindex{print mode}.
    1.43  
    1.44  The logical class of identifiers can not necessarily be determined by
    1.45 -its syntactic category, though. For example, consider free vs.\ bound
    1.46 -variables. So Isabelle's pretty printing mechanism, starting from
    1.47 +its syntactic category, though.  For example, consider free vs.\ bound
    1.48 +variables.  So Isabelle's pretty printing mechanism, starting from
    1.49  fully typed terms, has to be careful to preserve this additional
    1.50  information\footnote{This is done by marking atoms in abstract syntax
    1.51 -  trees appropriately. The marks are actually visible by print
    1.52 +  trees appropriately.  The marks are actually visible by print
    1.53    translation functions -- they are just special constants applied to
    1.54    atomic asts, for example \texttt{("_bound" x)}.}.  In particular,
    1.55  user-supplied print translation functions operating on terms have to
    1.56 -be well-behaved in this respect. Free identifiers introduced to
    1.57 +be well-behaved in this respect.  Free identifiers introduced to
    1.58  represent bound variables have to be marked appropriately (cf.\ the
    1.59  example at the end of \S\ref{sec:tr_funs}).
    1.60  
    1.61 @@ -890,12 +890,12 @@
    1.62  \end{ttbox}\index{token_translation}
    1.63  The elements of this list are of the form $(m, c, f)$, where $m$ is a
    1.64  print mode identifier, $c$ a token class, and $f\colon string \to
    1.65 -string \times int$ the actual translation function. Assuming that $x$
    1.66 +string \times int$ the actual translation function.  Assuming that $x$
    1.67  is of identifier class $c$, and print mode $m$ is the first one of all
    1.68  currently active modes that provide some translation for $c$, then $x$
    1.69 -is output according to $f(x) = (x', len)$. Thereby $x'$ is the
    1.70 +is output according to $f(x) = (x', len)$.  Thereby $x'$ is the
    1.71  modified identifier name and $len$ its visual length approximated in
    1.72 -terms of whole characters. Thus $x'$ may include non-printing parts
    1.73 +terms of whole characters.  Thus $x'$ may include non-printing parts
    1.74  like control sequences or markup information for typesetting systems.
    1.75  
    1.76  %FIXME example (?)