yacc man page on OpenIndiana

Man page or keyword search:  
man Server   20441 pages
apropos Keyword Search (all sections)
Output format
OpenIndiana logo
[printable version]

yacc(1)				 User Commands			       yacc(1)

NAME
       yacc - yet another compiler-compiler

SYNOPSIS
       yacc [-dltVv] [-b file_prefix] [-Q [y | n]]
	     [-P parser] [-p sym_prefix] file

DESCRIPTION
       The  yacc  command converts a context-free grammar into a set of tables
       for a simple automaton that executes an LALR(1) parsing algorithm.  The
       grammar	can be ambiguous. Specified precedence rules are used to break
       ambiguities.

       The output file, y.tab.c, must be compiled by the C compiler to produce
       a function yyparse(). This program must be loaded with the lexical ana‐
       lyzer program, yylex(), as well as main() and yyerror(), an error  han‐
       dling  routine. These routines must be supplied by the user. The lex(1)
       command is useful for creating lexical analyzers usable by yacc.

OPTIONS
       The following options are supported:

       -b file_prefix	 Uses file_prefix instead of y as the prefix  for  all
			 output	 files. The code file y.tab.c, the header file
			 y.tab.h (created  when	 -d  is	 specified),  and  the
			 description  file y.output (created when -v is speci‐
			 fied), is  changed  to	 file_prefix.tab.c,  file_pre‐
			 fix.tab.h, and file_prefix.output, respectively.

       -d		 Generates  the	 file  y.tab.h with the #define state‐
			 ments that associate the  yacc	 user-assigned	"token
			 codes"	 with  the  user-declared  "token names". This
			 association allows source files other than y.tab.c to
			 access the token codes.

       -l		 Specifies  that the code produced in y.tab.c does not
			 contain any #line constructs. This option should only
			 be  used after the grammar and the associated actions
			 are fully debugged.

       -p sym_prefix	 Uses sym_prefix instead of yy as the prefix  for  all
			 external  names  produced by yacc. The names affected
			 include the functions yyparse(),  yylex()  and	 yyer‐
			 ror(),	 and the variables yylval, yychar and yydebug.
			 (In the remainder of this section,  the  six  symbols
			 cited	are  referenced using their default names only
			 as a notational convenience.) Local names can also be
			 affected  by  the  -p	option. However, the -p option
			 does not affect #define symbols generated by yacc.

       -P parser	 Allows you to	specify	 the  parser  of  your	choice
			 instead  of  /usr/share/lib/ccs/yaccpar. For example,
			 you can specify:

			   example% yacc -P ~/myparser parser.y

       -Q[y|n]		 The -Qy option puts the version stamping  information
			 in  y.tab.c.  This allows you to know what version of
			 yacc built the file. The  -Qn	option	(the  default)
			 writes no version information.

       -t		 Compiles  runtime  debugging code by default. Runtime
			 debugging code is always generated in	y.tab.c	 under
			 conditional  compilation  control.  By	 default, this
			 code  is  not	included  when	y.tab.c	 is  compiled.
			 Whether  or  not  the	-t option is used, the runtime
			 debugging code is under the control of	 YYDEBUG  ,  a
			 preprocessor symbol. If YYDEBUG has a non-zero value,
			 then the debugging code is included. If its value  is
			 0, then the code is not included. The size and execu‐
			 tion time of a program produced without  the  runtime
			 debugging code is smaller and slightly faster.

       -v		 Prepares the file y.output, which contains a descrip‐
			 tion of the parsing tables and a report on  conflicts
			 generated by ambiguities in the grammar.

       -V		 Prints	 on  the  standard  error  output  the version
			 information for yacc.

OPERANDS
       The following operand is required:

       file    A path name of a	 file  containing  instructions	 for  which  a
	       parser is to be created.

EXAMPLES
       Example 1 Accessing the yacc Library

       Access  to the yacc library is obtained with library search operands to
       cc. To use the yacc library main:

	 example% cc y.tab.c -ly

       Both the lex library and the yacc library contain main. To  access  the
       yacc main:

	 example% cc y.tab.c lex.yy.c -ly -ll

       This  ensures that the yacc library is searched first, so that its main
       is used.

       The historical yacc libraries have contained two simple functions  that
       are  normally  coded by the application programmer. These library func‐
       tions are similar to the following code:

	 #include <locale.h>
	 int main(void)
	 {
		 extern int yyparse();

		 setlocale(LC_ALL, "");

		 /* If the following parser is one created by lex, the
		    application must be careful to ensure that LC_CTYPE
		    and LC_COLLATE are set to the POSIX locale.	 */
		 (void) yyparse();
		 return (0);
	 }

	 #include <stdio.h>

	 int yyerror(const char *msg)
	 {
		 (void) fprintf(stderr, "%s\n", msg);
		 return (0);
	 }

ENVIRONMENT VARIABLES
       See environ(5) for descriptions of the following environment  variables
       that affect the execution of yacc: LANG, LC_ALL, LC_CTYPE, LC_MESSAGES,
       and NLSPATH.

       yacc can handle characters from EUC primary and supplementary  codesets
       as  one-token  symbols.	EUC  codes can only be single character quoted
       terminal symbols. yacc expects  yylex()	to  return  a  wide  character
       (wchar_t) value for these one-token symbols.

EXIT STATUS
       The following exit values are returned:

       0     Successful completion.

       >0    An error occurred.

FILES
       y.output	     state transitions of the generated parser

       y.tab.c	     source code of the generated parser

       y.tab.h	     header file for the generated parser

       yacc.acts     temporary file

       yacc.debug    temporary file

       yacc.tmp	     temporary file

       yaccpar	     parser prototype for C programs

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌─────────────────────────────┬─────────────────────────────┐
       │      ATTRIBUTE TYPE	     │	    ATTRIBUTE VALUE	   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Availability		     │developer/object-file	   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Interface Stability	     │Committed			   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Standard		     │See standards(5).		   │
       └─────────────────────────────┴─────────────────────────────┘

SEE ALSO
       lex(1), attributes(5), environ(5), standards(5)

DIAGNOSTICS
       The  number  of reduce-reduce and shift-reduce conflicts is reported on
       the standard error output. A more  detailed  report  is	found  in  the
       y.output	 file.	Similarly,  if	some  rules are not reachable from the
       start symbol, this instance is also reported.

NOTES
       Because file names are fixed, at most one yacc process can be active in
       a given directory at a given time.

       Users are encouraged to avoid using $ as part of any identifier name.

SunOS 5.11			  24 Aug 2009			       yacc(1)
[top]

List of man pages available for OpenIndiana

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net