Annotation of lucent/sys/man/1/yacc, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.