changed font 5 references to font CW references
This commit is contained in:
parent
003eed2758
commit
defbe00b6a
1 changed files with 19 additions and 19 deletions
|
@ -151,7 +151,7 @@ used for grouping.
|
||||||
.PP
|
.PP
|
||||||
We can describe the syntax of an ECF syntax with an ECF syntax :
|
We can describe the syntax of an ECF syntax with an ECF syntax :
|
||||||
.DS
|
.DS
|
||||||
.ft 5
|
.ft CW
|
||||||
grammar : rule +
|
grammar : rule +
|
||||||
;
|
;
|
||||||
.ft R
|
.ft R
|
||||||
|
@ -159,7 +159,7 @@ grammar : rule +
|
||||||
This grammar rule states that a grammar consists of one or more
|
This grammar rule states that a grammar consists of one or more
|
||||||
rules.
|
rules.
|
||||||
.DS
|
.DS
|
||||||
.ft 5
|
.ft CW
|
||||||
rule : nonterminal ':' productionrule ';'
|
rule : nonterminal ':' productionrule ';'
|
||||||
;
|
;
|
||||||
.ft R
|
.ft R
|
||||||
|
@ -169,7 +169,7 @@ followed by ":",
|
||||||
the \fBproduce symbol\fR, followed by a production rule, followed by a
|
the \fBproduce symbol\fR, followed by a production rule, followed by a
|
||||||
";", in\%di\%ca\%ting the end of the rule.
|
";", in\%di\%ca\%ting the end of the rule.
|
||||||
.DS
|
.DS
|
||||||
.ft 5
|
.ft CW
|
||||||
productionrule : production [ '|' production ]*
|
productionrule : production [ '|' production ]*
|
||||||
;
|
;
|
||||||
.ft R
|
.ft R
|
||||||
|
@ -178,7 +178,7 @@ A production rule consists of one or
|
||||||
more alternative productions separated by "|". This symbol is called the
|
more alternative productions separated by "|". This symbol is called the
|
||||||
\fBalternation symbol\fR.
|
\fBalternation symbol\fR.
|
||||||
.DS
|
.DS
|
||||||
.ft 5
|
.ft CW
|
||||||
production : term *
|
production : term *
|
||||||
;
|
;
|
||||||
.ft R
|
.ft R
|
||||||
|
@ -186,14 +186,14 @@ production : term *
|
||||||
A production consists of a possibly empty list of terms.
|
A production consists of a possibly empty list of terms.
|
||||||
So, empty productions are allowed.
|
So, empty productions are allowed.
|
||||||
.DS
|
.DS
|
||||||
.ft 5
|
.ft CW
|
||||||
term : element repeats
|
term : element repeats
|
||||||
;
|
;
|
||||||
.ft R
|
.ft R
|
||||||
.DE
|
.DE
|
||||||
A term is an element, possibly with a repeat specification.
|
A term is an element, possibly with a repeat specification.
|
||||||
.DS
|
.DS
|
||||||
.ft 5
|
.ft CW
|
||||||
element : LITERAL
|
element : LITERAL
|
||||||
| IDENTIFIER
|
| IDENTIFIER
|
||||||
| '[' productionrule ']'
|
| '[' productionrule ']'
|
||||||
|
@ -205,7 +205,7 @@ between apostrophes, it can be an IDENTIFIER, which is either a
|
||||||
nonterminal or a token, and it can be a production rule
|
nonterminal or a token, and it can be a production rule
|
||||||
between square parentheses.
|
between square parentheses.
|
||||||
.DS
|
.DS
|
||||||
.ft 5
|
.ft CW
|
||||||
repeats : '?'
|
repeats : '?'
|
||||||
| [ '*' | '+' ] NUMBER ?
|
| [ '*' | '+' ] NUMBER ?
|
||||||
| NUMBER ?
|
| NUMBER ?
|
||||||
|
@ -287,7 +287,7 @@ Names representing tokens must be declared before they are used.
|
||||||
This can be done using the "\fB%token\fR" keyword,
|
This can be done using the "\fB%token\fR" keyword,
|
||||||
by writing
|
by writing
|
||||||
.nf
|
.nf
|
||||||
.ft 5
|
.ft CW
|
||||||
.sp 1
|
.sp 1
|
||||||
%token name1, name2, . . . ;
|
%token name1, name2, . . . ;
|
||||||
.ft R
|
.ft R
|
||||||
|
@ -301,7 +301,7 @@ The start symbols must be declared explicitly using the
|
||||||
"\fB%start\fR" keyword. It can be used whenever a declaration is
|
"\fB%start\fR" keyword. It can be used whenever a declaration is
|
||||||
legal, f.i.:
|
legal, f.i.:
|
||||||
.nf
|
.nf
|
||||||
.ft 5
|
.ft CW
|
||||||
.sp 1
|
.sp 1
|
||||||
%start LLparse, specification ;
|
%start LLparse, specification ;
|
||||||
.ft R
|
.ft R
|
||||||
|
@ -340,7 +340,7 @@ In order to facilitate communication between the actions and
|
||||||
\fILLparse\fR,
|
\fILLparse\fR,
|
||||||
the parsing routines can be given C-like parameters. So, for example
|
the parsing routines can be given C-like parameters. So, for example
|
||||||
.nf
|
.nf
|
||||||
.ft 5
|
.ft CW
|
||||||
.sp 1
|
.sp 1
|
||||||
expr(int *pval;) { int fact; } :
|
expr(int *pval;) { int fact; } :
|
||||||
/*
|
/*
|
||||||
|
@ -464,7 +464,7 @@ By default, for terms with a repetition count containing "*" or
|
||||||
"?" the default choice is to continue with the rest of the rule
|
"?" the default choice is to continue with the rest of the rule
|
||||||
in which the term appears, and
|
in which the term appears, and
|
||||||
.sp 1
|
.sp 1
|
||||||
.ft 5
|
.ft CW
|
||||||
.nf
|
.nf
|
||||||
term+
|
term+
|
||||||
.fi
|
.fi
|
||||||
|
@ -473,7 +473,7 @@ in which the term appears, and
|
||||||
is treated as
|
is treated as
|
||||||
.sp 1
|
.sp 1
|
||||||
.nf
|
.nf
|
||||||
.ft 5
|
.ft CW
|
||||||
term term* .
|
term term* .
|
||||||
.ft R
|
.ft R
|
||||||
.fi
|
.fi
|
||||||
|
@ -488,7 +488,7 @@ the skipping of such a term can be prevented by
|
||||||
using the keyword "\fB%persistent\fR".
|
using the keyword "\fB%persistent\fR".
|
||||||
For instance, the rule
|
For instance, the rule
|
||||||
.sp 1
|
.sp 1
|
||||||
.ft 5
|
.ft CW
|
||||||
.nf
|
.nf
|
||||||
commandlist : command* ;
|
commandlist : command* ;
|
||||||
.fi
|
.fi
|
||||||
|
@ -496,7 +496,7 @@ commandlist : command* ;
|
||||||
.sp 1
|
.sp 1
|
||||||
could be changed to
|
could be changed to
|
||||||
.sp 1
|
.sp 1
|
||||||
.ft 5
|
.ft CW
|
||||||
.nf
|
.nf
|
||||||
commandlist : [ %persistent command ]* ;
|
commandlist : [ %persistent command ]* ;
|
||||||
.fi
|
.fi
|
||||||
|
@ -592,7 +592,7 @@ returning 1 if the parameter supplied can start a specified
|
||||||
nonterminal, f.i.:
|
nonterminal, f.i.:
|
||||||
.sp 1
|
.sp 1
|
||||||
.nf
|
.nf
|
||||||
.ft 5
|
.ft CW
|
||||||
%first fmac, nonterm ;
|
%first fmac, nonterm ;
|
||||||
.ft R
|
.ft R
|
||||||
.sp 1
|
.sp 1
|
||||||
|
@ -675,7 +675,7 @@ This keyword can be used wherever a declaration is legal and may appear
|
||||||
only once in the grammar specification, f.i.:
|
only once in the grammar specification, f.i.:
|
||||||
.sp 1
|
.sp 1
|
||||||
.nf
|
.nf
|
||||||
.ft 5
|
.ft CW
|
||||||
%lexical scanner ;
|
%lexical scanner ;
|
||||||
.ft R
|
.ft R
|
||||||
.fi
|
.fi
|
||||||
|
@ -717,7 +717,7 @@ This appendix has a description of the \fILLgen\fR input syntax,
|
||||||
as a \fILLgen\fR specification. As a matter of fact, the current
|
as a \fILLgen\fR specification. As a matter of fact, the current
|
||||||
version of \fILLgen\fR is written with \fILLgen\fR.
|
version of \fILLgen\fR is written with \fILLgen\fR.
|
||||||
.nf
|
.nf
|
||||||
.ft 5
|
.ft CW
|
||||||
.sp 2
|
.sp 2
|
||||||
/*
|
/*
|
||||||
* First the declarations of the terminals
|
* First the declarations of the terminals
|
||||||
|
@ -846,7 +846,7 @@ priority. The example shows how we can do it all with one
|
||||||
nonterminal, no matter how many priority levels there are.
|
nonterminal, no matter how many priority levels there are.
|
||||||
.sp 1
|
.sp 1
|
||||||
.nf
|
.nf
|
||||||
.ft 5
|
.ft CW
|
||||||
{
|
{
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
@ -1007,7 +1007,7 @@ one file.
|
||||||
As usual, there is a way around this problem.
|
As usual, there is a way around this problem.
|
||||||
A sample makefile follows:
|
A sample makefile follows:
|
||||||
.sp 1
|
.sp 1
|
||||||
.ft 5
|
.ft CW
|
||||||
.nf
|
.nf
|
||||||
# The grammar exists of the files decl.g, stat.g and expr.g.
|
# The grammar exists of the files decl.g, stat.g and expr.g.
|
||||||
# The ".o"-files are the result of a C-compilation.
|
# The ".o"-files are the result of a C-compilation.
|
||||||
|
|
Loading…
Reference in a new issue