\input texinfo @c -*-texinfo-*-
@c %**start of header
-@setfilename ../../info/wisent
+@setfilename ../../info/wisent.info
@set TITLE Wisent Parser Development
@set AUTHOR Eric M. Ludlam, David Ponce, and Richard Y. Kim
@settitle @value{TITLE}
@c @footnotestyle separate
@c @paragraphindent 2
@c @@smallbook
+@documentencoding UTF-8
@c %**end of header
@copying
-Copyright @copyright{} 1988-1993, 1995, 1998-2004, 2007, 2012
+Copyright @copyright{} 1988--1993, 1995, 1998--2004, 2007, 2012--2014
Free Software Foundation, Inc.
@c Since we are both GNU manuals, we do not need to ack each other here.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
-Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
+Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
and with the Back-Cover Texts as in (a) below. A copy of the license
is included in the section entitled ``GNU Free Documentation License''.
(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
-modify this GNU manual. Buying copies from the FSF supports it in
-developing GNU and promoting software freedom.''
+modify this GNU manual.''
@end quotation
@end copying
of GNU Bison 1.28 & 1.31.
For more details on the basic concepts for understanding Wisent, it is
-worthwhile to read the @ref{Top, Bison Manual, bison}.
-@ifhtml
-@uref{http://www.gnu.org/manual/bison/html_node/index.html}.
-@end ifhtml
+worthwhile to read the @ref{Top, Bison Manual, , bison}.
Wisent can generate compilers compatible with the @semantic{} tool set.
See the @ref{Top, Semantic Manual, , semantic}.
@item
For generating the lookahead sets, Wisent uses the well-known
-technique of F. DeRemer and A. Pennello they described in:
+technique of F. DeRemer and T. Pennello described in:
@quotation
-@cite{Efficient Construction of LALR(1) Lookahead Sets}@*
-October 1982, ACM TOPLS Vol 4 No 4.
+@cite{Efficient Computation of LALR(1) Look-Ahead Sets}@*
+October 1982, ACM TOPLAS Vol 4 No 4, 615--49,
+@uref{http://dx.doi.org/10.1145/69622.357187}.
@end quotation
@item
* Conflicts::
@end menu
-@node Grammar format, Example, Wisent Grammar, Wisent Grammar
-@comment node-name, next, previous, up
+@node Grammar format
@section Grammar format
@cindex grammar format
Says that two groupings of type @samp{exp}, with a @samp{+} token in
between, can be combined into a larger grouping of type @samp{exp}.
-
+
@cindex grammar coding conventions
By convention, a nonterminal symbol should be in lower case, such as
@samp{exp}, @samp{stmt} or @samp{declaration}. Terminal symbols
can match the empty string. For example, here is how to define a
comma-separated sequence of zero or more @samp{exp} groupings:
-@example
+@smallexample
@group
(expseq (nil) ;; expseq: ;; empty
((expseq1)) ;; | expseq1
((expseq1 ?, exp)) ;; | expseq1 ',' exp
) ;; ;
@end group
-@end example
+@end smallexample
@cindex precedence level
@item precedence
Now the precedence of @code{UMINUS} can be used in specific rules:
-@example
+@smallexample
@group
(exp @dots{} ;; exp: @dots{}
((exp ?- exp)) ;; | exp '-' exp
@dots{} ;; @dots{}
) ;; ;
@end group
-@end example
+@end smallexample
If you forget to append @code{[UMINUS]} to the rule for unary minus,
Wisent silently assumes that minus has its usual precedence. This
@end table
@end table
-@node Example, Compiling a grammar, Grammar format, Wisent Grammar
-@comment node-name, next, previous, up
+@node Example
@section Example
@cindex grammar example
@end group
@end example
-@node Compiling a grammar, Conflicts, Example, Wisent Grammar
-@comment node-name, next, previous, up
+@node Compiling a grammar
@section Compiling a grammar
@cindex automaton
@end table
@end defun
-@node Conflicts, , Compiling a grammar, Wisent Grammar
-@comment node-name, next, previous, up
+@node Conflicts
@section Conflicts
Normally, a grammar should produce an automaton where at each state
@end deffn
The verbose report is printed in the temporary buffer
-@code{*wisent-log*} when running interactively, or in file
+@file{*wisent-log*} when running interactively, or in file
@file{wisent.output} when running in batch mode. Different
reports are separated from each other by a line like this:
@end group
@end example
-The @samp{*wisent-log*} buffer details things!
+The @file{*wisent-log*} buffer details things!
The first section reports conflicts that were solved using precedence
and/or associativity:
$default reduce using rule 2 (exp)
-
state 9
exp -> exp . '+' exp (rule 1)
$default reduce using rule 3 (exp)
-
state 10
exp -> exp . '+' exp (rule 1)
@item start
@itemx end
-Are the optionals beginning and end positions of @var{value} in the
+Are the optional beginning and ending positions of @var{value} in the
input stream.
@end table
@example
@group
-(stmnt (( error ?; )) ;; on error, skip until ';' is read
- )
+(statement (( error ?; )) ;; on error, skip until ';' is read
+ )
@end group
@end example
@defun wisent-skip-token
@anchor{wisent-skip-token}
Skip the lookahead token in order to resume parsing.
-Return nil.
+Return @code{nil}.
Must be used in error recovery semantic actions.
It typically looks like this:
@findex wisent-skip-block
@defun wisent-skip-block
Safely skip a block in order to resume parsing.
-Return nil.
+Return @code{nil}.
Must be used in error recovery semantic actions.
A block is data between an open-delimiter (syntax class @code{(}) and
* Useful functions::
@end menu
-@node Iterative style, Bison style, Grammar styles, Grammar styles
+@node Iterative style
@subsection Iterative style
@cindex grammar iterative style