home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / online / source / c / compilers / mpw-perl-byacc1.8.1.sit.hqx / mpw-perl-byacc1.8.1 / manpage < prev    next >
Text File  |  1992-07-02  |  3KB  |  149 lines

  1. .\"    %W%    %R% (Berkeley) %E%
  2. .\"
  3. .TH YACC 1 "July\ 15,\ 1990"
  4. .UC 6
  5. .SH NAME
  6. Yacc \- an LALR(1) parser generator
  7. .SH SYNOPSIS
  8. .B yacc [ -cdlprtv ] [ -b
  9. .I prefix
  10. .B ]
  11. .I filename
  12. .SH DESCRIPTION
  13. .I Yacc
  14. reads the grammar specification in the file
  15. .I filename
  16. and generates an LR(1) parser for it.
  17. The parsers consist of a set of LALR(1) parsing tables and a driver routine
  18. written in the C or Perl programming languages.
  19. .I Yacc
  20. normally writes the parse tables and the driver routine to the file
  21. .IR y.tab.c ,
  22. using the C programming language.
  23. .PP
  24. The following options are available:
  25. .RS
  26. .TP
  27. \fB-b \fIprefix\fR
  28. The
  29. .B -b
  30. option changes the prefix prepended to the output file names to
  31. the string denoted by
  32. .IR prefix.
  33. The default prefix is the character
  34. .IR y.
  35. .TP
  36. .B -c
  37. Use the C programming language (default).
  38. .TP
  39. .B -d
  40. The \fB-d\fR option causes the header file
  41. .IR y.tab.h
  42. to be written (or
  43. .IR y.tab.ph ,
  44. for Perl).
  45. .TP
  46. .B -l
  47. If the
  48. .B -l
  49. option is not specified,
  50. .I yacc
  51. will insert \#line directives in the generated code.
  52. The \#line directives let the C compiler relate errors in the
  53. generated code to the user's original code.
  54. If the \fB-l\fR option is specified,
  55. .I yacc
  56. will not insert the \#line directives.
  57. \&\#line directives specified by the user will be retained.
  58. .TP
  59. .B -p
  60. Use the Perl programming language.  The output files have extensions
  61. .I .tab.pl
  62. and
  63. .IR .tab.ph .
  64. .TP
  65. .B -r
  66. The
  67. .B -r
  68. option causes
  69. .I yacc
  70. to produce separate files for code and tables.  The code file
  71. is named
  72. .IR y.code.c,
  73. and the tables file is named
  74. .IR y.tab.c.
  75. In Perl mode, the file name extension is
  76. .IR .pl ,
  77. but the use of this option is not recommended.
  78. .TP
  79. .B -t
  80. The
  81. .B -t
  82. option changes the preprocessor directives generated by
  83. .I yacc
  84. so that debugging statements will be incorporated in the compiled code.
  85. .TP
  86. .B -v
  87. The
  88. .B -v
  89. option causes a human-readable description of the generated parser to
  90. be written to the file
  91. .IR y.output.
  92. .RE
  93. .PP
  94. If the environment variable TMPDIR is set, the string denoted by
  95. TMPDIR will be used as the name of the directory where the temporary
  96. files are created.
  97. .PP
  98. In C mode, the user's code at the end of the
  99. .SM YACC
  100. file is inserted before the
  101. .I yyparse
  102. subroutine,
  103. but in Perl mode, it is appended to
  104. .I yyparse
  105. so it can contain the main program.
  106. In Perl mode, there is no library, so the user must
  107. supply the
  108. .I yyerror
  109. and
  110. .I yylex
  111. subroutines and a main program that calls
  112. .IR yyparse .
  113. For example:
  114. .RS
  115. .nf
  116. %%
  117. .I ...grammar...
  118. %%
  119. sub yyerror { print STDERR "$.: $@\en"; }
  120. sub yylex { ... }
  121. exit &yyparse;
  122. .fi
  123. .RE
  124. .SH FILES
  125. .IR y.code.c
  126. .br
  127. .IR y.tab.c
  128. .br
  129. .IR y.tab.h
  130. .br
  131. .IR y.code.pl
  132. .br
  133. .IR y.tab.pl
  134. .br
  135. .IR y.tab.ph
  136. .br
  137. .IR y.output
  138. .br
  139. .IR /tmp/yacc.aXXXXXX
  140. .br
  141. .IR /tmp/yacc.tXXXXXX
  142. .br
  143. .IR /tmp/yacc.uXXXXXX
  144. .SH DIAGNOSTICS
  145. If there are rules that are never reduced, the number of such rules is
  146. reported on standard error.
  147. If there are any LALR(1) conflicts, the number of conflicts is reported
  148. on standard error.
  149.