...
 
Commits (3)
\annex{Alphabetic list of words} % F (informative annex)}}}
\label{annex:index}
In the following list, the last, four-digit, part of the reference
number establishes a sequence corresponding to the alphabetic ordering
of all standard words. The first two or three parts indicate the word
set and glossary section in which the word is defined.
~\par
\makeatletter
% \indexentry{section}{number}{sub}{name}{wordset}{ext}{proposal}{label}[english]
\newcommand{\indexentry}{
\@starfalse
\@ifnextchar*{\alpha@star}{\alpha@entry}
}
\newcommand{\alpha@star}[1]{
\@startrue
\alpha@entry
}
\newlength{\alpha@length}
\ifshowref
\setlength{\alpha@length}{0.2\textwidth}
\else
\setlength{\alpha@length}{0.3\textwidth}
\fi
\newcommand{\alpha@entry}[9]{%
\def\Prop{#7}
%
% Enable the change bar for * words
%
\if@star\cbstart\fi%
%
% Word Number - Hyper linked to its definition
%
\def\Tmp{#2}%
\makebox[5em][r]{\hyperref{}{#5}{#8}{%
#1.\ifx\Tmp\empty\rule[.8ex]{2em}{.5pt}\else
\ifx\Prop\empty #2\else\uline{#2}\fi
\fi}}%
%
% The word sub-number
%
\def\Tmp{#3}% {12}%
\makebox[2em][l]{%
\ifx\Tmp\empty\else\hyperref{}{#5}{#8}{%
\ifx\Prop\empty .#3\else\uline{.#3}\fi
}\fi}
%
% Standard Extension Proposal
%
% \ifdraft
\def\Tmp{#7}%
\ifx\Tmp\empty\else
\marginpar{\textsf{\sout{\tiny #7}}}
\fi%
% \fi%
%
% Word Label - If we are showing reference
%
\ifshowref
\makebox[6em]{%
\def\Tmpa{#8}%
\def\Tmpb{#4}%
\ifx\Tmpa\Tmpb\else\texttt{\small #8}\fi
}%
\fi%
%
% Word Name - Hyperlinked to its definition
%
\makebox[\alpha@length][l]{%
\hyperref{}{#5}{#8}{\textbf{\texttt{#4}}}
\quad
\dotfill
}%
%
% English Pronunciation (if given)
%
\def\Tmp{#9}%
\ifx\Tmp\empty ~\else ``#9''\fi
\dotfill%
%
% Word list
%
\MakeUppercase{#5}%
\def\Tmp{#6}%
\ifx\Tmp\empty\else ~EXT\fi
%
% Page reference
%
\makebox[3em]{\dotfill\pageref{#5:#8}}%
%
% Disable the change bar
%
\if@star\cbend\fi%
\@starfalse
%
% End of line - \par is need to flush the marginpar
%
\par
}
\makeatother
\begingroup
\parskip=0pt
\IfFileExists{\jobname.wds}{
\input{\jobname.wds}
}{
\IfFileExists{\jobname.wrd}{
\begin{center}
\textbf{Unsorted List}
\end{center}
\input{\jobname.wrd}
}{
File not found !
}
}
\endgroup
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
% history package
%
% Actually it should be called changes but that is already used by
% the docstrip system.
%
% This is a first draft of a change history package and is not
% ready for public distribution. It is provided on an "as you find
% it" basis, and no support is offered.
%
% The code has been developed by Dr. Peter Knaggs.
%
% 0.1 PjK Original Code
% 0.2 PjK Complete rewrite of original code
% Introducing \@history@test
% 0.3 PjK Added History Log
% 0.4 PjK \@history@test now useable in inner paragraphs
% Fixed problem with \openhistory
% Added silent labelling on same page (\@history@label)
\def\fileversion{0.4}
\def\filedate{04 Aug 2007 17:08:00 BST}
\def\filename{history.sty}
\def\Copyright{Copyright (C) 2007 Peter Knaggs,
University of Bournemouth, England}
\NeedsTeXFormat{LaTeX2e}[1996/06/01]
\ProvidesPackage{history}[2007/08/04]
\typeout{Package `history' <\filedate>.}
\typeout{\Copyright}
\newif\if@history@final
\DeclareOption{final}{\@history@finaltrue}
\DeclareOption{draft}{\@history@finalfalse}
\ExecuteOptions{draft}
\ProcessOptions
\RequirePackage[outerbars]{changebar}[2004/02/20]
\setlength{\changebarwidth}{1pt}
\RequirePackage[normalem]{ulem}[2000/05/26]
% Define a file to record the changes / history
\newwrite\@history@file
\newif\if@history@open
\@history@openfalse
\newcommand{\openhistory}[1][\jobname.hst]{%
\if@history@open
\immediate\closeout\@history@file
\fi
\immediate\openout\@history@file=#1
\@history@opentrue
\typeout{Writing Change History to #1}
}
\newcommand{\closehistory}{%
\if@history@open
\immediate\closeout\@history@file
\@history@openfalse
\fi
}
% Define a list of accepted changes
\def\@history@accepted{}
\def\accept#1{\edef\@history@accepted{\zap@space#1 \@empty,\@history@accepted}}
\@onlypreamble\accept
% Define a list of rejected changes
\def\@history@rejected{}
\def\reject#1{\edef\@history@rejected{\zap@space#1 \@empty,\@history@rejected}}
\@onlypreamble\reject
\newcommand{\listaccepted}{%
\@for\temp@a:=\@history@accepted\do{\temp@a }
}
\newcommand{\listrejected}{%
\@for\temp@a:=\@history@rejected\do{\temp@a }
}
\newcommand{\@history@nolabel}{\@latex@error
{Change on line \the\inputlineno\space has no label}
{Give the damn thing a label.}%
}
\newcommand{\@history@review}{\@latex@error
{The change \temp@a\space is neither accepted or rejected}
{Add the change label to either the \noexpand\accept or \noexpand\reject list.}%
}
% The \@history@label macro is used to hold the last displayed label.
% It is used to control the printing of the change label in the margin
% note.
\def\@history@label{}
% The \@history@test macro is the work horse of this package. It take
% a number of parameters as follows:
%
% label: The label of a change (may be left blank)
% accept: The Latex code required to typeset the change if it has been
% accepted
% reject: The LaTeX code for typesetting the change if it was rejected
% review: The code to typeset a change under review
%
% log: the log entry text
%
% If the label is blank a warning will be produced.
\newif\if@tempswb
\newcommand{\@history@test}[5]{% {label}{accept}{reject}{review}{log}
\edef\temp@a{#1}% Remember the change label
\@tempswatrue % Change Processed
\@tempswbfalse % Don't Log the change
%
\ifx\temp@a\empty % The label is empty
\if@history@final
\@history@nolabel
\fi
\def\temp@a{noname}%
\fi
%
% Change is accepted
%
\@for\temp@b:=\@history@accepted\do
{\ifx\temp@a\temp@b
\@tempswafalse % Change shown
\@tempswbtrue % Log the change
{#2}% % Show the accepted text
\fi}%
%
% Change is rejected
%
\@for\temp@b:=\@history@rejected\do
{\ifx\temp@a\temp@b
\@tempswafalse % Change Shown
{#3}% % Show the rejected text
\fi}%
%
% Neither Accepted or Rejected, so must be in review
%
\if@tempswa
\if@history@final
% Review in a Final revision - Something wrong with this
\@history@review
\fi
\@tempswbtrue% Log the review
\ifinner\@tempswatrue\else\@tempswafalse\fi
\cbstart% Start the change bar
\if@tempswa
% We are in an inner paragraph
% Fix the extra vspace \cbstart puts in for us.
\vspace*{-0.5\baselineskip}%
\fi%
{#4}% Output the change text
\if@tempswa
% Margin par is not allowed in an inner paragraph
\else
% Make up the last displayed label, on this page
\edef\temp@b{\thepage.\temp@a}
% Have we seen this label before?
\ifx\temp@b\@history@label
% Yes - then ignore the label
\else
% No - Must be a either a new label, or the
% first label on this page. Output the label
\marginpar{\tiny\temp@a{\color{white}c:b}}
% Remember the label for next time.
\edef\@history@label{\temp@b}
\fi
\fi
\cbend% Make the end of the Change bar
\fi
%
% Write a log entry
%
\if@history@open
\if@tempswb
\immediate\write\@history@file{%
\string\@historylog@%
{\temp@a}% Change Label
{\thepage}% Page Number
{\@currentlabel}%
#5% Log entry
}%
\fi
\fi
}
\newcommand{\place}[2]{% {label}{text}
\@history@test%
{#1}% Change Label
{#2}% Accepted text
{}% Rejected text
{\uline{#2}}% Review text
{place{#2}}% Log text
}
\newcommand{\remove}[2]{% {label}{text}
\@history@test%
{#1}% Change Label
{}% Accepted text
{#2}% Rejected text
{\sout{#2}}% Review text
{remove{#2}}% Log text
}
\newcommand{\replace}[3]{% {label}{old}{new}
\@history@test%
{#1}% Change Label
{#3}% Accepted text
{#2}% Rejected text
{\sout{#2}\uline{#3}}% Review text
{replace{#2}{#3}}% Log text
}
{\Large\bfseries
American National Standard for Information Systems --- \\[2pt]
Programming Language --- \\[2pt]
Forth
}
\chapter{Introduction}
\section{Purpose}
The purpose of this Standard is to promote the portability of Forth
programs for use on a wide variety of computing systems, to facilitate
the communication of programs, programming techniques, and ideas among
Forth programmers, and to serve as a basis for the future evolution of
the Forth language.
\section{Scope}
This Standard specifies an interface between a Forth System and a
Forth Program by defining the words provided by a Standard System.
\subsection{Inclusions}
This Standard specifies:
\begin{itemize}
\item the forms that a program written in the Forth language may take;
\item the rules for interpreting the meaning of a program and its data.
\end{itemize}
\subsection{Exclusions} % 1.2.2
\label{intro:exclusions}
This Standard does not specify:
\begin{itemize}
\item the mechanism by which programs are transformed for use on
computing systems;
\item the operations required for setup and control of the use of
programs on computing systems;
\item the method of transcription of programs or their input or
output data to or from a storage medium;
\item the program and Forth system behavior when the rules of this
Standard fail to establish an interpretation;
\item the size or complexity of a program and its data that will
exceed the capacity of any specific computing system or the
capability of a particular Forth system;
\item the physical properties of input/output records, files, and units;
\item the physical properties and implementation of storage.
\end{itemize}
\section{Document organization}
\subsection{Word sets}
This Standard groups Forth words and capabilities into \emph{word sets}
under a name indicating some shared aspect, typically their common
functional area. Each word set may have an extension, containing words
that offer additional functionality. These words are not required in an
implementation of the word set.
The ``Core'' word set, defined in sections 1 through 6, contains the
required words and capabilities of a Standard System. The other word
sets, defined in sections \ref{wordlist:block} through
\ref{wordlist:string}, are optional, making it possible to provide
Standard Systems with tailored levels of functionality.
\subsubsection{Text sections}
Within each word set, section 1 contains introductory and explanatory
material and section 2 introduces terms and notation used throughout
the Standard. There are no requirements in these sections.
Sections 3 and 4 contain the usage and documentation requirements,
respectively, for Standard Systems and Programs, while section 5
specifies their labeling.
\subsubsection{Glossary sections}
Section 6 of each word set specifies the required behavior of the
definitions in the word set and the extensions word set.
\subsection{Annexes}
The annexes do not contain any required material.
Annex \ref{annex:rationale} provides some of the rationale behind the
committee's decisions in creating this Standard, as well as
implementation examples. It has the same section numbering as the
body of the Standard to make it easy to relate each requirements
section to its rationale section.
Annex \ref{annex:bib} is a short bibliography on Forth.
Annex \ref{annex:intro} provides an introduction to Forth.
Annex \ref{annex:diff} discusses the compatibility of ANS Forth
with earlier Forths, emphasizing the differences from Forth 83.
Annex \ref{annex:port} presents some techniques for writing portable
programs in ANS Forth.
\remove{x:rc0}{%
Annex \ref{annex:test} presents a test suite to test the operation
of a system complies with the definitions documented in this
standard.}
Annex \ref{annex:index} includes the words from all word sets in a
single list, and serves as an index of ANS Forth words.
\section{Future directions}
\subsection{New technology}
This Standard adopts certain words and practices that are
increasingly found in common practice. New words have also
been adopted to ease creation of portable programs.
\subsection{Obsolescent features}
\label{intro:obsoleat}
This Standard adopts certain words and practices that cause
some previously used words and practices to become obsolescent.
Although retained here because of their widespread use, their
use in new implementations or new programs is discouraged,
as they may be withdrawn from future revisions of the Standard.
This Standard designates the following word as obsolescent:
\setwordlist{core}
\begin{tabular}{rl@{\qquad}rl@{\qquad}rl}
\ref{tools:FORGET} & \word[tools]{FORGET} \\
\end{tabular}
This standard designates the following practice as obsolescent:
\begin{itemize}
\item Requiring floating-point numbers to be kept on the data stack.
(This has always been an environmental dependency.)
\item Using \word{ENVIRONMENTq} to enquire whether a word set is present.
\end{itemize}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.