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 cfa37a7b 2004-04-10 devnull .IR 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 cfa37a7b 2004-04-10 devnull .PP
90 cfa37a7b 2004-04-10 devnull The specification of
91 cfa37a7b 2004-04-10 devnull .I yacc
92 cfa37a7b 2004-04-10 devnull itself is essentially the same as the UNIX version
93 cfa37a7b 2004-04-10 devnull described in the references mentioned below.
94 cfa37a7b 2004-04-10 devnull Besides the
95 cfa37a7b 2004-04-10 devnull .B -D
96 cfa37a7b 2004-04-10 devnull option, the main relevant differences are:
97 cfa37a7b 2004-04-10 devnull .IP
98 cfa37a7b 2004-04-10 devnull The interface to the C environment is by default through
99 cfa37a7b 2004-04-10 devnull .B <libc.h>
100 cfa37a7b 2004-04-10 devnull rather than
101 cfa37a7b 2004-04-10 devnull .BR <stdio.h> ;
102 cfa37a7b 2004-04-10 devnull the
103 cfa37a7b 2004-04-10 devnull .B -S
104 cfa37a7b 2004-04-10 devnull option reverses this.
105 cfa37a7b 2004-04-10 devnull .IP
106 cfa37a7b 2004-04-10 devnull The parser accepts
107 cfa37a7b 2004-04-10 devnull .SM UTF
108 cfa37a7b 2004-04-10 devnull input text (see
109 058b0118 2005-01-03 devnull .IR utf (7)),
110 cfa37a7b 2004-04-10 devnull which has a couple of effects.
111 cfa37a7b 2004-04-10 devnull First, the return value of
112 cfa37a7b 2004-04-10 devnull .B yylex()
113 cfa37a7b 2004-04-10 devnull no longer fits in a
114 cfa37a7b 2004-04-10 devnull .BR short ;
115 cfa37a7b 2004-04-10 devnull second, the starting value for non-terminals is now 0xE000 rather than 257.
116 cfa37a7b 2004-04-10 devnull .IP
117 cfa37a7b 2004-04-10 devnull The generated parser can be recursive: actions can call
118 cfa37a7b 2004-04-10 devnull .IR yyparse ,
119 cfa37a7b 2004-04-10 devnull for example to implement a sort of
120 cfa37a7b 2004-04-10 devnull .B #include
121 cfa37a7b 2004-04-10 devnull statement in an interpreter.
122 cfa37a7b 2004-04-10 devnull .IP
123 cfa37a7b 2004-04-10 devnull Finally, some undocumented inner workings of the parser have been
124 cfa37a7b 2004-04-10 devnull changed, which may affect programs that know too much about its structure.
125 cfa37a7b 2004-04-10 devnull .SH FILES
126 b5fdffee 2004-04-19 devnull .TF y.debug.xxxxx
127 cfa37a7b 2004-04-10 devnull .TP
128 cfa37a7b 2004-04-10 devnull .B y.output
129 cfa37a7b 2004-04-10 devnull .TP
130 cfa37a7b 2004-04-10 devnull .B y.tab.c
131 cfa37a7b 2004-04-10 devnull .TP
132 cfa37a7b 2004-04-10 devnull .B y.tab.h
133 cfa37a7b 2004-04-10 devnull .TP
134 cfa37a7b 2004-04-10 devnull .B y.debug
135 cfa37a7b 2004-04-10 devnull .TP
136 cfa37a7b 2004-04-10 devnull .B y.tmp.*
137 cfa37a7b 2004-04-10 devnull temporary file
138 cfa37a7b 2004-04-10 devnull .TP
139 cfa37a7b 2004-04-10 devnull .B y.acts.*
140 cfa37a7b 2004-04-10 devnull temporary file
141 cfa37a7b 2004-04-10 devnull .TP
142 c3674de4 2005-01-11 devnull .B \*9/lib/yaccpar
143 cfa37a7b 2004-04-10 devnull parser prototype
144 cfa37a7b 2004-04-10 devnull .TP
145 c3674de4 2005-01-11 devnull .B \*9/lib/yaccpars
146 cfa37a7b 2004-04-10 devnull parser prototype using stdio
147 cfa37a7b 2004-04-10 devnull .SH SOURCE
148 c8b6342d 2005-01-13 devnull .B \*9/src/cmd/yacc.c
149 cfa37a7b 2004-04-10 devnull .SH "SEE ALSO"
150 cfa37a7b 2004-04-10 devnull .IR lex (1)
151 cfa37a7b 2004-04-10 devnull .br
152 cfa37a7b 2004-04-10 devnull S. C. Johnson and R. Sethi,
153 cfa37a7b 2004-04-10 devnull ``Yacc: A parser generator'',
154 cfa37a7b 2004-04-10 devnull .I
155 cfa37a7b 2004-04-10 devnull Unix Research System Programmer's Manual,
156 cfa37a7b 2004-04-10 devnull Tenth Edition, Volume 2
157 cfa37a7b 2004-04-10 devnull .br
158 cfa37a7b 2004-04-10 devnull B. W. Kernighan and Rob Pike,
159 cfa37a7b 2004-04-10 devnull .I
160 cfa37a7b 2004-04-10 devnull The UNIX Programming Environment,
161 cfa37a7b 2004-04-10 devnull Prentice Hall, 1984
162 cfa37a7b 2004-04-10 devnull .SH BUGS
163 cfa37a7b 2004-04-10 devnull The parser may not have full information when it writes to
164 cfa37a7b 2004-04-10 devnull .B y.debug
165 cfa37a7b 2004-04-10 devnull so that the names of the tokens returned by
166 cfa37a7b 2004-04-10 devnull .L yylex
167 cfa37a7b 2004-04-10 devnull may be missing.