@cindex safety of functions
Some major modes, such as SES, call functions that are stored in user
-files. (@inforef{Top, ,ses}, for more information on SES@.) User
-files sometimes have poor pedigrees---you can get a spreadsheet from
-someone you've just met, or you can get one through email from someone
-you've never met. So it is risky to call a function whose source code
-is stored in a user file until you have determined that it is safe.
+files. (@xref{Top, Simple Emacs Spreadsheet,,ses}, for more
+information on SES@.) User files sometimes have poor pedigrees---you
+can get a spreadsheet from someone you've just met, or you can get one
+through email from someone you've never met. So it is risky to call a
+function whose source code is stored in a user file until you have
+determined that it is safe.
@defun unsafep form &optional unsafep-vars
Returns @code{nil} if @var{form} is a @dfn{safe} Lisp expression, or
implementation of an @acronym{LL} parser. It is good for simple
languages. It has many conveniences making grammar writing easy. The
conveniences make it less powerful than a Bison-like @acronym{LALR}
-parser. For more information, @inforef{Top, The Wisent Parser Manual,
+parser. For more information, @pxref{Top,, Wisent Parser Development,
wisent}.
Bovine @acronym{LL} grammars are stored in files with a @file{.by}
extension. When compiled, the contents is converted into a file of
the form @file{NAME-by.el}. This, in turn is byte compiled.
-@inforef{top, Grammar Framework Manual, grammar-fw}.
+@xref{top,, Grammar Framework Manual, grammar-fw}.
@ifnottex
@insertcopying
In Bison, one and only one nonterminal is designated as the ``start''
symbol. In @semantic{}, one or more nonterminals can be designated as
the ``start'' symbol. They are declared following the @code{%start}
-keyword separated by spaces. @inforef{start Decl, ,grammar-fw}.
+keyword separated by spaces. @xref{start Decl,, Grammar Framework
+Manual, grammar-fw}.
If no @code{%start} keyword is used in a grammar, then the very first
is used. Internally the first start nonterminal is targeted by the
To find locally defined variables, the local context handler needs to
parse the body of functional code. The @code{scopestart} declaration
specifies the name of a nonterminal used as the goal to parse a local
-context, @inforef{scopestart Decl, ,grammar-fw}. Internally the
+context, @pxref{scopestart Decl,, Grammar Framework Manual,
+grammar-fw}. Internally the
scopestart nonterminal is targeted by the reserved symbol
@code{bovine-inner-scope}, so it can be found by the parser harness.
The rules are what allow the compiler to create tags from a language
file. Once the setup is done in the prologue, you can start writing
-rules. @inforef{Grammar Rules, ,grammar-fw}.
+rules. @xref{Grammar Rules,, Grammar Framework Manual, grammar-fw}.
@example
@var{result} : @var{components1} @var{optional-semantic-action1})
the parser's goal. It is designated by a @code{%start} statement
(@pxref{Starting Rules}). The value returned by the associated
@var{optional-semantic-action} is the parser's result. It should be
-a tree of @semantic{} @dfn{tags}, @inforef{Semantic Tags, ,
-semantic-appdev}.
+a tree of @semantic{} @dfn{tags}, @pxref{Semantic Tags,, Semantic
+Application Development, semantic-appdev}.
@var{components} is made up of symbols. A symbol such as @code{FOO}
means that a syntactic token of class @code{FOO} must be matched.
@end example
Means that @code{FOO} is a reserved language keyword, matched as such
-by looking up into a keyword table, @inforef{keyword Decl,
-,grammar-fw}. This is because @code{"foo"} will be converted to
+by looking up into a keyword table, @pxref{keyword Decl,, Grammar
+Framework Manual, grammar-fw}. This is because @code{"foo"} will be
+converted to
@code{FOO} in the lexical analysis stage. Thus the symbol @code{FOO}
won't be available any other way.
Create a tag with @var{name} of respectively the class
@code{variable}, @code{function}, @code{type}, @code{include},
@code{package}, and @code{code}.
-See @inforef{Creating Tags, , semantic-appdev} for the lisp
-functions these translate into.
+See @ref{Creating Tags,, Semantic Application Development,
+semantic-appdev}, for the lisp functions these translate into.
@end table
If the symbol @code{%quotemode backquote} is specified, then use
your grammar in @dfn{WY} form, a grammar format very close
to the one used by Bison.
-Please @inforef{top, Semantic Grammar Framework Manual, grammar-fw}
+Please see @ref{top, Semantic Grammar Framework Manual,, grammar-fw},
for more information on @semantic{} grammars.
@menu
@findex semantic-lex
The lexical analysis step of @semantic{} is performed by the general
-function @code{semantic-lex}. For more information, @inforef{Writing
-Lexers, ,semantic-langdev}.
+function @code{semantic-lex}. For more information, see @ref{Writing
+Lexers, Semantic Language Development,,semantic-langdev}.
@code{semantic-lex} produces lexical tokens of the form: