tools/llvm: Do not build with symbols
[minix3.git] / external / bsd / byacc / bin / yacc.1
blobbe5bdc184824edcc216158e1629f39e2a1f1f67f
1 .\"     $NetBSD: yacc.1,v 1.4 2011/09/10 21:38:59 christos 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 .\"     from: Id: yacc.1,v 1.12 2011/09/08 00:40:44 tom Exp
35 .\"     $NetBSD: yacc.1,v 1.4 2011/09/10 21:38:59 christos Exp $
36 .\"
37 .Dd September 7, 2011
38 .Dt YACC 1
39 .Os
40 .Sh NAME
41 .Nm yacc
42 .Nd an
43 .Tn LALR(1)
44 parser generator
45 .Sh SYNOPSIS
46 .Nm
47 .Op Fl dgilPrtVv
48 .Op Fl b Ar prefix
49 .Op Fl o Ar outputfile
50 .Op Fl p Ar symbol_prefix
51 .Ar filename
52 .Sh DESCRIPTION
53 .Nm
54 reads the grammar specification in the file
55 .Ar filename
56 and generates an
57 .Tn LALR(1)
58 parser for it.
59 The parsers consist of a set of
60 .Tn LALR(1)
61 parsing tables and a driver routine
62 written in the C programming language.
63 .Nm
64 normally writes the parse tables and the driver routine to the file
65 .Pa y.tab.c .
66 .Pp
67 The following options are available:
68 .Bl -tag -width Ar
69 .It Fl b Ar prefix
70 The
71 .Fl b
72 option changes the prefix prepended to the output file names to
73 the string denoted by
74 .Ar prefix .
75 The default prefix is the character
76 .Ar y .
77 .It Fl d
78 The
79 .Fl d
80 option causes the header file
81 .Pa y.tab.h
82 to be written.
83 It contains #define's for the token identifiers.
84 .It Fl g
85 The
86 .Fl g
87 option causes a graphical description of the generated
88 .Tn LALR(1)
89 parser to be written to the file
90 .Pa y.dot
91 in graphviz format, ready to be processed by
92 .Xr dot 1 .
93 .It Fl i
94 The 
95 .Fl i
96 option causes a supplementary header file
97 .Pa y.tab.i
98 to be written.
99 It contains extern declarations
100 and supplementary #define's as needed to map the conventional
102 yy-prefixed names to whatever the
103 .Fl p
104 option may specify.
105 The code file, e.g., 
106 .Pa y.tab.c
107 is modified to #include this file
108 as well as the
109 .Pa y.tab.h
110 file, enforcing consistent usage of the symbols defined in those files.
111 The supplementary header file makes it simpler to separate compilation
112 of lex- and yacc-files.
113 .It Fl l
114 If the
115 .Fl l
116 option is not specified,
118 will insert #line directives in the generated code.
119 The #line directives let the C compiler relate errors in the
120 generated code to the user's original code.
121 If the
122 .Fl l
123 option is specified,
125 will not insert the #line directives.
126 #line directives specified by the user will be retained.
127 .It Fl o Ar outputfile
129 .Fl o
130 option specifies an explicit output file name should be used instead
131 of the default.
132 .It Fl P
134 .Fl P
135 options instructs
137 to create a reentrant parser, like
138 .Dq %pure-parser
139 does.
140 .It Fl p Ar symbol_prefix
142 .Fl p
143 option changes the prefix prepended to yacc-generated symbols to
144 the string denoted by
145 .Ar symbol_prefix .
146 The default prefix is the string
147 .Ar yy .
148 .It Fl r
150 .Fl r
151 option causes
153 to produce separate files for code and tables.
154 The code file is named
155 .Pa y.code.c ,
156 and the tables file is named
157 .Pa y.tab.c .
158 .It Fl t
160 .Fl t
161 option changes the preprocessor directives generated by
163 so that debugging statements will be incorporated in the compiled code.
164 .It Fl V
166 .Fl V
167 option prints the version number to the standard output.
168 .It Fl v
170 .Fl v
171 option causes a human-readable description of the generated parser to
172 be written to the file
173 .Pa y.output .
175 .Sh EXTENSIONS
177 provides some extensions for compatibility with 
178 .Xr bison 1
179 and other implementations
180 of 
181 .Nm :
183 .Bl -tag -width "%expect-rr number" -compact
184 .It Dv %expect Ar number
185 Tell
187 the expected number of shift/reduce conflicts.
188 That makes it only report the number if it differs.
189 .It Dv %expect-rr Ar number
190 Tell 
192 the expected number of reduce/reduce conflicts.
193 That makes it only report the number if it differs.
194 This is (unlike
195 .Xr bison 1 )
196 allowable in
197 .Tn LALR(1)
198 parsers.
199 .It Dv %lex-param Ar { Ar argument-declaration Ar }
200 By default, the lexer accepts no parameters, e.g., 
201 .Fn yylex .
202 Use this directive to add parameter declarations for your customized lexer.
203 .It Dv %parse-param Ar { Ar argument-declaration Ar }
204 By default, the parser accepts no parameters, e.g.,
205 .Fn yyparse .
206 Use this directive to add parameter declarations for your customized parser.
207 .It Dv %pure-parser
208 Most variables (other than 
209 .Fa yydebug
211 .Fa yynerrs )
212 are allocated on the stack within
213 .Fn yyparse ,
214 making the parser reasonably reentrant.
216 .Sh ENVIRONMENT
217 The following environment variable is referenced by
218 .Nm :
219 .Bl -tag -width TMPDIR
220 .It Ev TMPDIR
221 If the environment variable
222 .Ev TMPDIR
223 is set, the string denoted by
224 .Ev TMPDIR
225 will be used as the name of the directory where the temporary
226 files are created.
228 .Sh TABLES
229 The names of the tables generated by this version of
232 .Dq yylhs ,
233 .Dq yylen ,
234 .Dq yydefred ,
235 .Dq yydgoto ,
236 .Dq yysindex ,
237 .Dq yyrindex ,
238 .Dq yygindex ,
239 .Dq yytable ,
241 .Dq yycheck .
242 Two additional tables,
243 .Dq yyname
245 .Dq yyrule ,
246 are created if
247 .Dv YYDEBUG
248 is defined and non-zero.
249 .Sh FILES
250 .Bl -tag -width /tmp/yacc.uXXXXXXXX -compact
251 .It Pa y.code.c
252 .It Pa y.tab.c
253 .It Pa y.tab.h
254 .It Pa y.output
255 .It Pa /tmp/yacc.aXXXXXX
256 .It Pa /tmp/yacc.tXXXXXX
257 .It Pa /tmp/yacc.uXXXXXX
259 .Sh DIAGNOSTICS
260 If there are rules that are never reduced, the number of such rules is
261 written to the standard error.
262 If there are any
263 .Tn LALR(1)
264 conflicts, the number of conflicts is also written
265 to the standard error.
266 .\" .Sh SEE ALSO
267 .\" .Xr yyfix 1
268 .Sh STANDARDS
271 utility conforms to
272 .St -p1003.2 .