Blame


1 cfa37a7b 2004-04-10 devnull .TH YACC 1
2 cfa37a7b 2004-04-10 devnull .SH NAME
3 cfa37a7b 2004-04-10 devnull yacc \- yet another compiler-compiler
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B yacc
6 cfa37a7b 2004-04-10 devnull [
7 cfa37a7b 2004-04-10 devnull .I option ...
8 cfa37a7b 2004-04-10 devnull ]
9 cfa37a7b 2004-04-10 devnull .I grammar
10 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
11 cfa37a7b 2004-04-10 devnull .I Yacc
12 cfa37a7b 2004-04-10 devnull converts a context-free grammar and translation code
13 cfa37a7b 2004-04-10 devnull into a set of
14 cfa37a7b 2004-04-10 devnull tables for an LR(1) parser and translator.
15 cfa37a7b 2004-04-10 devnull The grammar may be ambiguous;
16 cfa37a7b 2004-04-10 devnull specified precedence rules are used to break ambiguities.
17 cfa37a7b 2004-04-10 devnull .PP
18 cfa37a7b 2004-04-10 devnull The output file,
19 cfa37a7b 2004-04-10 devnull .BR y.tab.c ,
20 cfa37a7b 2004-04-10 devnull must be compiled by the C compiler
21 cfa37a7b 2004-04-10 devnull to produce a program
22 cfa37a7b 2004-04-10 devnull .LR yyparse .
23 cfa37a7b 2004-04-10 devnull This program must be loaded with a lexical analyzer function,
24 cfa37a7b 2004-04-10 devnull .B yylex(void)
25 cfa37a7b 2004-04-10 devnull (often generated by
26 d32deab1 2020-08-16 rsc .MR lex (1) ),
27 cfa37a7b 2004-04-10 devnull with a
28 cfa37a7b 2004-04-10 devnull .B main(int argc, char *argv[])
29 cfa37a7b 2004-04-10 devnull program, and with an error handling routine,
30 cfa37a7b 2004-04-10 devnull .BR yyerror(char*) .
31 cfa37a7b 2004-04-10 devnull .PP
32 cfa37a7b 2004-04-10 devnull The options are
33 cfa37a7b 2004-04-10 devnull .TP "\w'\fL-o \fIoutput\fLXX'u"
34 cfa37a7b 2004-04-10 devnull .BI -o " output
35 cfa37a7b 2004-04-10 devnull Direct output to the specified file instead of
36 cfa37a7b 2004-04-10 devnull .BR y.tab.c .
37 cfa37a7b 2004-04-10 devnull .TP
38 cfa37a7b 2004-04-10 devnull .BI -D n
39 cfa37a7b 2004-04-10 devnull Create file
40 cfa37a7b 2004-04-10 devnull .BR y.debug ,
41 cfa37a7b 2004-04-10 devnull containing diagnostic messages.
42 cfa37a7b 2004-04-10 devnull To incorporate them in the parser, compile it with preprocessor symbol
43 cfa37a7b 2004-04-10 devnull .B yydebug
44 cfa37a7b 2004-04-10 devnull defined.
45 cfa37a7b 2004-04-10 devnull The amount of
46 cfa37a7b 2004-04-10 devnull diagnostic output from the parser is regulated by
47 cfa37a7b 2004-04-10 devnull value
48 cfa37a7b 2004-04-10 devnull .IR n .
49 cfa37a7b 2004-04-10 devnull The value 0 reports errors; 1 reports reductions;
50 cfa37a7b 2004-04-10 devnull higher values (up to 4) include more information about
51 cfa37a7b 2004-04-10 devnull state transitions.
52 cfa37a7b 2004-04-10 devnull .TP
53 cfa37a7b 2004-04-10 devnull .B -v
54 cfa37a7b 2004-04-10 devnull Create file
55 cfa37a7b 2004-04-10 devnull .BR y.output ,
56 cfa37a7b 2004-04-10 devnull containing a description of the parsing tables and of
57 cfa37a7b 2004-04-10 devnull conflicts arising from ambiguities in the grammar.
58 cfa37a7b 2004-04-10 devnull .TP
59 cfa37a7b 2004-04-10 devnull .B -d
60 cfa37a7b 2004-04-10 devnull Create file
61 cfa37a7b 2004-04-10 devnull .BR y.tab.h ,
62 cfa37a7b 2004-04-10 devnull containing
63 cfa37a7b 2004-04-10 devnull .B #define
64 cfa37a7b 2004-04-10 devnull statements that associate
65 cfa37a7b 2004-04-10 devnull .IR yacc -assigned
66 cfa37a7b 2004-04-10 devnull `token codes' with user-declared `token names'.
67 cfa37a7b 2004-04-10 devnull Include it in source files other than
68 cfa37a7b 2004-04-10 devnull .B y.tab.c
69 cfa37a7b 2004-04-10 devnull to give access to the token codes.
70 cfa37a7b 2004-04-10 devnull .TP
71 cfa37a7b 2004-04-10 devnull .BI -s " stem
72 cfa37a7b 2004-04-10 devnull Change the prefix
73 cfa37a7b 2004-04-10 devnull .L y
74 cfa37a7b 2004-04-10 devnull of the file names
75 cfa37a7b 2004-04-10 devnull .BR y.tab.c ,
76 cfa37a7b 2004-04-10 devnull .BR y.tab.h ,
77 cfa37a7b 2004-04-10 devnull .BR y.debug ,
78 cfa37a7b 2004-04-10 devnull and
79 cfa37a7b 2004-04-10 devnull .B y.output
80 cfa37a7b 2004-04-10 devnull to
81 cfa37a7b 2004-04-10 devnull .IR stem .
82 cfa37a7b 2004-04-10 devnull .TP
83 cfa37a7b 2004-04-10 devnull .B -S
84 cfa37a7b 2004-04-10 devnull Write a parser that uses
85 cfa37a7b 2004-04-10 devnull Stdio
86 cfa37a7b 2004-04-10 devnull instead of the
87 cfa37a7b 2004-04-10 devnull .B print
88 cfa37a7b 2004-04-10 devnull routines in libc.
89 cae9bfe9 2005-02-14 devnull .TP
90 cae9bfe9 2005-02-14 devnull .BI -l
91 cae9bfe9 2005-02-14 devnull Disable #line directives in the generated parser.
92 cae9bfe9 2005-02-14 devnull .TP
93 cae9bfe9 2005-02-14 devnull .BI -a
94 cae9bfe9 2005-02-14 devnull Generate a parser that takes an argument of type Yyarg
95 cae9bfe9 2005-02-14 devnull and passes this argument to each invocation of the lexer
96 cae9bfe9 2005-02-14 devnull function, yylex. Yyarg contains per-instance state
97 cae9bfe9 2005-02-14 devnull and a single user-visible member, arg, of type void*.
98 cfa37a7b 2004-04-10 devnull .PP
99 cfa37a7b 2004-04-10 devnull The specification of
100 cfa37a7b 2004-04-10 devnull .I yacc
101 cfa37a7b 2004-04-10 devnull itself is essentially the same as the UNIX version
102 cfa37a7b 2004-04-10 devnull described in the references mentioned below.
103 cfa37a7b 2004-04-10 devnull Besides the
104 cfa37a7b 2004-04-10 devnull .B -D
105 cfa37a7b 2004-04-10 devnull option, the main relevant differences are:
106 cfa37a7b 2004-04-10 devnull .IP
107 cfa37a7b 2004-04-10 devnull The interface to the C environment is by default through
108 cfa37a7b 2004-04-10 devnull .B <libc.h>
109 cfa37a7b 2004-04-10 devnull rather than
110 cfa37a7b 2004-04-10 devnull .BR <stdio.h> ;
111 cfa37a7b 2004-04-10 devnull the
112 cfa37a7b 2004-04-10 devnull .B -S
113 cfa37a7b 2004-04-10 devnull option reverses this.
114 cfa37a7b 2004-04-10 devnull .IP
115 cfa37a7b 2004-04-10 devnull The parser accepts
116 cfa37a7b 2004-04-10 devnull .SM UTF
117 cfa37a7b 2004-04-10 devnull input text (see
118 d32deab1 2020-08-16 rsc .MR utf (7) ),
119 cfa37a7b 2004-04-10 devnull which has a couple of effects.
120 cfa37a7b 2004-04-10 devnull First, the return value of
121 cfa37a7b 2004-04-10 devnull .B yylex()
122 cfa37a7b 2004-04-10 devnull no longer fits in a
123 cfa37a7b 2004-04-10 devnull .BR short ;
124 cfa37a7b 2004-04-10 devnull second, the starting value for non-terminals is now 0xE000 rather than 257.
125 cfa37a7b 2004-04-10 devnull .IP
126 cfa37a7b 2004-04-10 devnull The generated parser can be recursive: actions can call
127 cfa37a7b 2004-04-10 devnull .IR yyparse ,
128 cfa37a7b 2004-04-10 devnull for example to implement a sort of
129 cfa37a7b 2004-04-10 devnull .B #include
130 cfa37a7b 2004-04-10 devnull statement in an interpreter.
131 cfa37a7b 2004-04-10 devnull .IP
132 cfa37a7b 2004-04-10 devnull Finally, some undocumented inner workings of the parser have been
133 cfa37a7b 2004-04-10 devnull changed, which may affect programs that know too much about its structure.
134 cfa37a7b 2004-04-10 devnull .SH FILES
135 b5fdffee 2004-04-19 devnull .TF y.debug.xxxxx
136 cfa37a7b 2004-04-10 devnull .TP
137 cfa37a7b 2004-04-10 devnull .B y.output
138 cfa37a7b 2004-04-10 devnull .TP
139 cfa37a7b 2004-04-10 devnull .B y.tab.c
140 cfa37a7b 2004-04-10 devnull .TP
141 cfa37a7b 2004-04-10 devnull .B y.tab.h
142 cfa37a7b 2004-04-10 devnull .TP
143 cfa37a7b 2004-04-10 devnull .B y.debug
144 cfa37a7b 2004-04-10 devnull .TP
145 cfa37a7b 2004-04-10 devnull .B y.tmp.*
146 cfa37a7b 2004-04-10 devnull temporary file
147 cfa37a7b 2004-04-10 devnull .TP
148 cfa37a7b 2004-04-10 devnull .B y.acts.*
149 cfa37a7b 2004-04-10 devnull temporary file
150 cfa37a7b 2004-04-10 devnull .TP
151 c3674de4 2005-01-11 devnull .B \*9/lib/yaccpar
152 cfa37a7b 2004-04-10 devnull parser prototype
153 cfa37a7b 2004-04-10 devnull .TP
154 c3674de4 2005-01-11 devnull .B \*9/lib/yaccpars
155 cfa37a7b 2004-04-10 devnull parser prototype using stdio
156 cfa37a7b 2004-04-10 devnull .SH SOURCE
157 c8b6342d 2005-01-13 devnull .B \*9/src/cmd/yacc.c
158 cfa37a7b 2004-04-10 devnull .SH "SEE ALSO"
159 d32deab1 2020-08-16 rsc .MR lex (1)
160 cfa37a7b 2004-04-10 devnull .br
161 cfa37a7b 2004-04-10 devnull S. C. Johnson and R. Sethi,
162 cfa37a7b 2004-04-10 devnull ``Yacc: A parser generator'',
163 cfa37a7b 2004-04-10 devnull .I
164 cfa37a7b 2004-04-10 devnull Unix Research System Programmer's Manual,
165 cfa37a7b 2004-04-10 devnull Tenth Edition, Volume 2
166 cfa37a7b 2004-04-10 devnull .br
167 cfa37a7b 2004-04-10 devnull B. W. Kernighan and Rob Pike,
168 cfa37a7b 2004-04-10 devnull .I
169 cfa37a7b 2004-04-10 devnull The UNIX Programming Environment,
170 cfa37a7b 2004-04-10 devnull Prentice Hall, 1984
171 cfa37a7b 2004-04-10 devnull .SH BUGS
172 cfa37a7b 2004-04-10 devnull The parser may not have full information when it writes to
173 cfa37a7b 2004-04-10 devnull .B y.debug
174 cfa37a7b 2004-04-10 devnull so that the names of the tokens returned by
175 cfa37a7b 2004-04-10 devnull .L yylex
176 cfa37a7b 2004-04-10 devnull may be missing.