Patrick Welche <prlw1@cam.ac.uk>
[netbsd-mini2440.git] / usr.bin / yacc / yacc.1
blobc5baeccd97e87a665b4fe4e455bdc4de90923e63
1 .\"     $NetBSD: yacc.1,v 1.12 2003/02/25 10:36:03 wiz Exp $
2 .\"
3 .\" Copyright (c) 1989, 1990 The Regents of the University of California.
4 .\" All rights reserved.
5 .\"
6 .\" This code is derived from software contributed to Berkeley by
7 .\" Robert Paul Corbett.
8 .\"
9 .\" Redistribution and use in source and binary forms, with or without
10 .\" modification, are permitted provided that the following conditions
11 .\" are met:
12 .\" 1. Redistributions of source code must retain the above copyright
13 .\"    notice, this list of conditions and the following disclaimer.
14 .\" 2. Redistributions in binary form must reproduce the above copyright
15 .\"    notice, this list of conditions and the following disclaimer in the
16 .\"    documentation and/or other materials provided with the distribution.
17 .\" 3. Neither the name of the University nor the names of its contributors
18 .\"    may be used to endorse or promote products derived from this software
19 .\"    without specific prior written permission.
20 .\"
21 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 .\" SUCH DAMAGE.
32 .\"
33 .\"     from: @(#)yacc.1        5.7 (Berkeley) 7/30/91
34 .\"     $NetBSD: yacc.1,v 1.12 2003/02/25 10:36:03 wiz Exp $
35 .\"
36 .Dd July 30, 1991
37 .Dt YACC 1
38 .Os
39 .Sh NAME
40 .Nm yacc
41 .Nd an
42 .Tn LALR(1)
43 parser generator
44 .Sh SYNOPSIS
45 .Nm
46 .Op Fl dlrtv
47 .Op Fl b Ar prefix
48 .Op Fl o Ar outputfile
49 .Op Fl p Ar symbol_prefix
50 .Ar filename
51 .Sh DESCRIPTION
52 .Nm
53 reads the grammar specification in the file
54 .Ar filename
55 and generates an
56 .Tn LR(1)
57 parser for it.
58 The parsers consist of a set of
59 .Tn LALR(1)
60 parsing tables and a driver routine
61 written in the C programming language.
62 .Nm
63 normally writes the parse tables and the driver routine to the file
64 .Pa y.tab.c .
65 .Pp
66 The following options are available:
67 .Bl -tag -width Ar
68 .It Fl b Ar prefix
69 The
70 .Fl b
71 option changes the prefix prepended to the output file names to
72 the string denoted by
73 .Ar prefix .
74 The default prefix is the character
75 .Ar y .
76 .It Fl d
77 The
78 .Fl d
79 option causes the header file
80 .Pa y.tab.h
81 to be written.
82 .It Fl l
83 If the
84 .Fl l
85 option is not specified,
86 .Nm
87 will insert #line directives in the generated code.
88 The #line directives let the C compiler relate errors in the
89 generated code to the user's original code.
90 If the
91 .Fl l
92 option is specified,
93 .Nm
94 will not insert the #line directives.
95 #line directives specified by the user will be retained.
96 .It Fl o Ar outputfile
97 The
98 .Fl o
99 option specifies an explicit output file name should be used instead
100 of the default.
101 .It Fl p Ar symbol_prefix
103 .Fl p
104 option changes the prefix prepended to yacc-generated symbols to
105 the string denoted by
106 .Ar symbol_prefix .
107 The default prefix is the string
108 .Ar yy .
109 .It Fl r
111 .Fl r
112 option causes
114 to produce separate files for code and tables.
115 The code file is named
116 .Pa y.code.c ,
117 and the tables file is named
118 .Pa y.tab.c .
119 .It Fl t
121 .Fl t
122 option changes the preprocessor directives generated by
124 so that debugging statements will be incorporated in the compiled code.
125 .It Fl v
127 .Fl v
128 option causes a human-readable description of the generated parser to
129 be written to the file
130 .Pa y.output .
132 .Sh ENVIRONMENT
133 The following environment variable is referenced by
134 .Nm :
135 .Bl -tag -width TMPDIR
136 .It Ev TMPDIR
137 If the environment variable
138 .Ev TMPDIR
139 is set, the string denoted by
140 .Ev TMPDIR
141 will be used as the name of the directory where the temporary
142 files are created.
144 .Sh TABLES
145 The names of the tables generated by this version of
148 .Dq yylhs ,
149 .Dq yylen ,
150 .Dq yydefred ,
151 .Dq yydgoto ,
152 .Dq yysindex ,
153 .Dq yyrindex ,
154 .Dq yygindex ,
155 .Dq yytable ,
157 .Dq yycheck .
158 Two additional tables,
159 .Dq yyname
161 .Dq yyrule ,
162 are created if
163 .Dv YYDEBUG
164 is defined and non-zero.
165 .Sh FILES
166 .Bl -tag -width /tmp/yacc.uXXXXXXXX -compact
167 .It Pa y.code.c
168 .It Pa y.tab.c
169 .It Pa y.tab.h
170 .It Pa y.output
171 .It Pa /tmp/yacc.aXXXXXX
172 .It Pa /tmp/yacc.tXXXXXX
173 .It Pa /tmp/yacc.uXXXXXX
175 .Sh DIAGNOSTICS
176 If there are rules that are never reduced, the number of such rules is
177 written to the standard error.
178 If there are any
179 .Tn LALR(1)
180 conflicts, the number of conflicts is also written
181 to the standard error.
182 .\" .Sh SEE ALSO
183 .\" .Xr yyfix 1
184 .Sh STANDARDS
187 utility conforms to
188 .St -p1003.2 .