diff doc/manual/ra.tex @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/manual/ra.tex	Sat Dec 22 17:52:45 2007 -0500
@@ -0,0 +1,415 @@
+\chapter{Running AnaGram}
+
+
+\section{Overview}
+
+AnaGram's main window is a small
+\index{\agwindow{Control Panel}}\agwindow{Control Panel}
+with menus, a toolbar, a status indicator, and a simple search
+facility.  Its default position is at the upper right of your screen.
+AnaGram's two basic commands,
+\index{Analyze Grammar}\agmenu{Analyze Grammar}
+and
+\index{Build Parser}\agmenu{Build Parser},
+are available from the \agmenu{Action} menu of the \agwindow{Control
+Panel}.
+
+% XXX remove the stuff about time; nowadays it's all instantaneous
+The commands take as input a syntax file containing the specifications
+of your grammar.  \agmenu{Build Parser} creates a parser file, in C or
+C++, and a header file.  \agmenu{Analyze Grammar} does not write any
+\index{Output files}\index{File}output files, and therefore takes a
+little less time than \agmenu{Build Parser} to run.  Normally you
+would use \agmenu{Build Parser} when you are ready to start compiling
+and testing your parser.  You would use \agmenu{Analyze Grammar} while
+you are working on the grammar itself.
+
+% XXX s/build/create/
+Both of these commands cause AnaGram to build a number of tables
+describing your grammar.  These tables, accessible from the
+\agmenu{Browse} menu, will interest you mainly when you are debugging
+your grammar.  These tables and their use are described in Chapters 6
+and 7.  An alphabetic listing of the tables with summaries of their
+content may be found in Appendix C.
+
+The primary purpose of AnaGram's user interface is to enable you to
+inspect the grammar tables, and to use the \agwindow{Grammar Trace}
+and \agwindow{File Trace} facilities to study, at any level of detail
+you wish, how your parser analyzes any sequence of input characters or
+tokens.
+
+AnaGram is documented with an extensive, hypertext \agwindow{Online
+Help} system in addition to this User's Guide.  Supplementary
+documentation in browser-readable format can be found in the
+\agfile{html} directory distributed with AnaGram.
+
+
+\section{Executables}
+\index{Executables}
+
+% XXX s/make files/makefiles/
+% (better do a global search and replace)
+
+\index{Make files}\index{\agfile{ag.exe}}\index{\agfile{agcl.exe}}
+AnaGram has two executables: one interactive, \agfile{ag.exe}, and
+one, \agfile{agcl.exe}, for use in make files.
+
+\index{Command line}
+If you provide \agfile{ag.exe} with a syntax file name on the command
+line, AnaGram will load the file and do either \agmenu{Analyze
+Grammar} or \agmenu{Build Parser}, depending on the setting of the
+\index{\agoption{Autobuild}}\agoption{Autobuild} option.
+
+The command line version, \agfile{agcl.exe}, builds a parser for the
+syntax file specified on the command line.  Warning and error messages
+from \agfile{agcl.exe} are directed to \agcode{stdout}.
+
+\index{File extension}\index{syn}\index{.syn}
+The default extension for syntax files appearing on the command line
+is \agfile{.syn}.
+
+
+\section{Input Files}
+\index{Input Files}\index{Files}\index{File}
+
+Input files for AnaGram are called syntax files and usually have the
+\index{File extension}\index{syn}\index{.syn}
+extension \agfile{.syn}.
+\index{Syntax file}\index{File}
+Syntax files are written in a variant
+of
+\index{Backus-Naur form}Backus-Naur form,
+and may include reduction procedures written in C or C++ as well as
+other embedded C or C++ code.  The general theory of syntax files is
+given in Chapter 4.  The rules for writing syntax files are given in
+Chapter 8.
+
+When you run AnaGram and analyze a grammar, the syntax file you have
+chosen will appear in the \agmenu{Browse} menu under the heading
+\agmenu{Syntax File} followed by the file name.  It will also appear
+in a window on your screen unless you have turned the
+\index{Show Syntax}\agoption{Show Syntax} option off.
+
+
+\section{Output Files}
+\index{Output Files}\index{Files}\index{File}
+
+% XXX s/parser file/source file/
+When you choose the \agmenu{Build Parser} command, AnaGram builds two
+output files: a header file and a parser file.  Normally these files
+have the same name as your syntax file and the \index{File
+extension}extensions \agfile{.h} and \agfile{.c}, respectively.  You
+may change the names or the extensions by use of the
+\index{File name}\index{Header file name}\agparam{header file name}
+and
+\index{File name}\index{Parser file name}\agparam{parser file name}
+\index{Configuration parameters}configuration parameters
+(see Appendix A).  If you are using C++, you will probably wish to set
+% XXX s/in your configuration file/accordingly/
+the \agparam{parser file name} parameter in your configuration file.
+Include the following line in your configuration file or section:
+
+% This is really part of the preceding paragraph and latex won't
+% space it accordingly even if you don't have any line breaks in
+% between. This looks unsightly at first glance but it makes things
+% clearer when actually reading.
+\vskip -1.25ex
+
+% This was 1 inch, but wp2latex must have made that up out of thin air
+\begin{indentingcode}{0.4in}
+parser file name = "\#.cpp"
+\end{indentingcode}
+
+The \index{Header file}\index{File}header file contains typedef
+statements and macro definitions which are needed by the parser and
+which you may need to use in other modules to interface your parser to
+the rest of your program.
+
+The \index{Parser file}\index{File}parser file contains the reduction
+procedures and embedded C or C++ code that AnaGram finds in your
+syntax file, a number of tables which summarize your grammar, and a
+parsing engine customized to your requirements.  The
+\index{Parsing engine}parsing engine
+is written in C.  Care has been taken to assure that it can be
+compiled by almost any C/C++ compiler.  The content of the header file
+and the parser file is described in Chapter 9.
+
+
+\section{AnaGram's Help}
+\index{Help}\index{Online help}
+
+There are three main ways to access AnaGram's \agwindow{Online Help}:
+
+\begin{itemize}
+\item Press F1 for context-sensitive help from most windows and menu
+items.
+\item Similarly, use the \agwindow{Help Cursor} on the
+\agwindow{Control Panel} toolbar (described below) from most windows
+and menu items.
+\item From the \agmenu{Help} menu on the \agwindow{Control Panel}, you
+can bring up a complete list of help topics and choose a topic.
+\end{itemize}
+
+You can also get fly-over help for the toolbar buttons on the
+\agwindow{Control Panel}.  \agwindow{File} and \agwindow{Grammar
+Traces} have a \agmenu{Help} button.
+
+AnaGram's \agwindow{Help} windows remain on-screen until you dismiss
+them.  This means you can refer to several topics at once.  They have
+hypertext links to other Help topics.  Also, right-clicking the mouse
+on a \agwindow{Help} window or pressing F1 will pop up an Auxiliary
+Windows menu of all linked topics in the window.  ``Using Help'' is
+always available from this popup menu.
+
+% XXX s/that,/that/
+Note that, for the \agwindow{Warnings}, \agwindow{Configuration
+Parameters} and \agwindow{Help Topics} windows, F1 will give you help
+for the item on the highlighted line, whereas the \agwindow{Help
+Cursor} allows you to select any line by clicking on it.
+
+AnaGram also has browser-readable documentation of examples, a
+glossary, brief descriptions of the \agwindow{File} and
+\agwindow{Grammar Traces}, and some further topics in the
+\agfile{html} directory distributed with AnaGram.
+
+
+\section{Control Panel Components}
+\index{Control Panel}
+
+\index{Action Menu}\index{Menu}\subsection{Action Menu}
+In addition to the basic \agmenu{Analyze Grammar} and \agmenu{Build
+Parser} commands, the \agmenu{Action} menu provides some variations on
+these commands for your convenience:
+
+\begin{itemize}
+
+\item If a grammar has already been analyzed, but not yet built, there
+will also be an extra \agmenu{Build} command with the name of your
+syntax file.
+
+\item The \agmenu{Reanalyze} and \agmenu{Rebuild} commands are
+initially greyed out.  They become available if the current syntax
+file is changed externally by another program.
+
+\item At the bottom of the menu is a list of up to six recently used
+syntax files. Clicking on one of these gives the same effect as
+\agmenu{Analyze Grammar}, or if the
+\index{\agoption{Autobuild}}\agoption{Autobuild} option
+is on, the same effect as \agmenu{Build Parser}.
+
+\end{itemize}
+
+Before executing an \agmenu{Analyze Grammar} or \agmenu{Build Parser}
+command, AnaGram closes all windows related to the current syntax
+file, if any, and resets
+\index{Configuration parameters}configuration parameters to their initial
+values, as determined by the built in defaults and the configuration
+files read at program initialization.
+
+The \agmenu{Action} menu also lets you select a \agmenu{File Trace} or
+\agmenu{Grammar Trace}, and if the
+\index{error trace}\agparam{error trace}
+\index{Configuration parameters}configuration switch is
+enabled, an \agmenu{Error Trace}.  The traces are covered in Chapter
+5.
+
+
+\subsection{Browse Menu}
+\index{Menu}\index{Browse Menu}
+
+Most of the \agmenu{Browse} menu entries are tables describing your
+grammar which become available as soon as you analyze it.  The tables
+are described in Chapters 6 and 7.  The tables themselves often have
+associated tables available via an
+\index{Auxiliary Windows}\agmenu{Auxiliary Windows}
+menu which pops up when you right-click on a highlighted
+line.
+
+A window showing your syntax file is also available from this window.
+Do not overlook the 
+% noindex (XXX?)
+\agmenu{Configuration Parameters}
+entry.  AnaGram has a great many parameters available so you can make
+AnaGram behave in a variety of ways and produce parsers with the
+features you want.  Configuration parameters are documented in
+Appendix A.
+
+
+\subsection{Options Menu}
+\index{Options Menu}\index{Menu}
+
+Items you set from the \agmenu{Options} menu will be saved in the
+Windows Registry so they can be restored every time you start AnaGram.
+
+\paragraph{Fonts and Colors.}
+\index{Fonts}\index{Colors}
+You can set AnaGram's fonts and colors to suit your own tastes.  Make
+sure that the \agmenu{Marked Tokens} font is very distinctive so these
+tokens show up clearly even if they are only one or two characters
+long.  Try an underlined font for them if you like.  Notice also that
+the \agwindow{Test File} pane requires three different sets of text
+and background colors.  You should make sure that the backgrounds, at
+least, can be easily distinguished from each other so the trace
+information can be properly displayed.  You also want to take care
+that an active pane in a \agwindow{File} or \agwindow{Grammar Trace}
+can be distinguished from inactive panes.
+
+Color changes pertain only to the client areas of AnaGram windows.
+The remaining parts of your windows will have the customary colors you
+have chosen for your system.
+
+\paragraph{Autobuild.}
+\index{Autobuild}
+When \agoption{Autobuild} is checked, selecting a file from the list
+of most recently used files on the \agmenu{Action} menu invokes the
+\agmenu{Build Parser} command.  Otherwise, the \agmenu{Analyze
+Grammar} command is invoked.
+
+\index{Show Statistics}\index{Statistics}
+\paragraph{Show Statistics.}
+If this entry is checked, AnaGram will leave the \agwindow{Statistical
+Summary} window on the screen after it has analyzed your grammar.  If
+the entry is not checked or you have closed the window, you can select
+it from the \agmenu{Browse} menu.
+
+\paragraph{Show Syntax.}
+\index{Show Syntax}\index{Syntax}
+If this entry is checked, AnaGram will display the syntax file when it
+has analyzed your grammar.  If this entry is not checked or you have
+closed the syntax file window, you can select the window from the
+\agmenu{Browse} menu.
+
+\paragraph{Stay On Top.}
+\index{Stay On Top}
+This entry allows you to specify whether the \agwindow{Control Panel}
+stays on top of other AnaGram windows.
+
+
+\subsection{Windows Menu}
+\index{Windows Menu}\index{Menu}
+
+In addition to the list of open (including hidden) windows, this menu
+has the customary \agmenu{Cascade}, \agmenu{Close}, \agmenu{Hide} and
+\agmenu{Restore Windows} commands.  A \agmenu{Copy} feature lets you
+copy the currently active table or \agwindow{Help} topic to the
+\index{Copy}\index{Clipboard}clipboard.
+
+
+\subsection{Help Menu}
+\index{Help Menu}\index{Menu}
+
+The \agmenu{Help} menu has \agmenu{Getting Started}, \agmenu{Using
+Help}, and \agmenu{What's New} entries, all of which you will probably
+want to take a look at when you begin using AnaGram.  In the long
+term, you will probably find
+\index{Help}\index{Help Topics}\agmenu{Help Topics} to be the most
+useful item in this menu.  It provides a complete list of
+\agwindow{Help Topics} titles.  You can bring up the window for a
+highlighted topic by double-clicking with the left mouse button,
+pressing F1, or using the \agwindow{Help Cursor}.  You may want to use
+the \agmenu{Search} facility in this window.
+
+
+\subsection{Control Panel Toolbar}
+\index{Control Panel}\index{Toolbar}
+
+The first four toolbar buttons provide quick access to the
+\agmenu{Analyze Grammar}, \agmenu{Build Parser}, \agmenu{File Trace}
+and \agmenu{Grammar Trace} commands.  Two more buttons bring up the
+\agwindow{Warnings} and \agwindow{Conflicts} windows if they have any
+entries.
+
+The last button, with a question mark, enables a \agwindow{Help
+Cursor}, which is convenient for getting help on warnings,
+\agmenu{Browse} tables, menu items, and so on.  Once enabled, the
+\agwindow{Help Cursor} can be dragged with the mouse.  A further mouse
+click will provide help for the item under the cursor.  Note that
+AnaGram also has F1 help which you may find simpler and faster than
+the \agwindow{Help Cursor}.
+
+
+\subsection{Status Indicator}
+\index{Status Indicator}\index{Indicator}
+
+The status indicator at the right of the \agwindow{Control Panel} has
+six possible states: Ready, Loaded, Error, Parsed, Analyzed, and
+Built.  ``Ready'' appears only when no grammar has been selected.
+``Loaded'' and ``Parsed'' should be transitory.  If ``Error'' appears,
+one or more syntax errors have been found in your grammar and AnaGram
+cannot continue its analysis.  Check the Warnings window to determine
+the nature of the problem.  ``Analyzed'' means that analysis of the
+grammar has been completed.  ``Built'' means the analysis has been
+completed and also output files have been written.
+
+
+\subsection{Search}
+\index{Search}
+
+\index{Searching for text}AnaGram has a simple search facility to let
+you search for text strings in AnaGram windows.  A text entry field on
+the \agwindow{Control Panel} is provided for you to enter text.
+Left-clicking on the neighboring \agmenu{Find Next} and \agmenu{Find
+Previous} buttons lets you search either forward or backward for a
+line in the active window which contains at least one instance of the
+text.
+
+Note that the search begins at the next line after the highlighted
+line for forward search; at the line preceding the highlighted line
+for backward search.
+\index{Case sensitivity}Searches are not case sensitive.
+
+
+\section{Statistical Summary}
+\index{Statistical Summary}\index{Summary}
+
+While your grammar is being analyzed, a \agwindow{Statistical Summary}
+window pops up to show you the progress of the analysis.  Unless you
+have turned off \agmenu{Show Statistics} on the \agmenu{Options} menu,
+this window will remain on-screen for your reference.  Among other
+things, it shows you the number of rules and states in your grammar,
+and the number of conflicts and warnings, if any.
+
+Note that if your grammar is small and you have \agmenu{Show
+Statistics} turned off, the appearance of this window on your monitor
+may be exceedingly brief -- you may just see a flash.
+
+If this window is turned off or you have closed it, you can select it
+from the \agmenu{Browse} menu.
+
+
+\section{Auxiliary Windows Popup Menu}
+\index{Auxiliary Windows}\index{Popup Menu}\index{Menu}
+
+For many tables you can get more detailed information keyed to the
+highlighted item by right clicking the mouse to pop up the
+\agmenu{Auxiliary Windows} menu.
+
+Some auxiliary windows are keyed simply to a state number, a token
+number, a rule number, a character set number, or a partition set
+number identified by the highlighted item.  Others are keyed to some
+combination of these numbers.  If the cursor bar is highlighting a
+marked rule, the \index{Marked Token}\index{Token}marked token is the
+token to which the auxiliary window is keyed.  The key, whether it is
+a state number, token number, or other identifier, is always displayed
+on the title bar of the window.
+
+Help windows also have popup \agmenu{Auxiliary Windows} menus.  For a
+Help window, the popup menu shows all linked topics in the window.
+
+
+\section{Keyboard Control}
+\index{Keyboard}
+
+AnaGram can be controlled entirely from the keyboard.  In the
+\agwindow{Control Panel}, you can tab to any button and press Enter to
+select it.  In addition to the conventional Windows keyboard
+functions, the following keys have been implemented:
+
+% XXX this doesn't look so great
+\index{Escape}\index{F8}\index{F10}\index{F10}
+\begin{tabular}{rll}
+$\bullet$&Escape&Closes any AnaGram window except the Control Panel.\\
+$\bullet$&F8&Toggles between an active AnaGram window and the Control Panel.\\
+$\bullet$&F10&Accesses the Control Panel menu from any AnaGram Window.\\
+$\bullet$&Shift F10&Pops up the Auxiliary Windows menu.\\
+\end{tabular}