Home Man
Search
Today's Posts
Register

Linux & Unix Commands - Search Man Pages

Plan 9 - man page for yacc (plan9 section 1)

YACC(1) 			     General Commands Manual				  YACC(1)

NAME
       yacc - yet another compiler-compiler

SYNOPSIS
       yacc [ option ...  ] grammar

DESCRIPTION
       Yacc  converts  a  context-free	grammar  and translation code into a set of tables for an
       LR(1) parser and translator.  The grammar may 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 program This
       program must be loaded with a lexical analyzer function, yylex(void) (often  generated  by
       lex(1)),  with a main(int argc, char *argv[]) program, and with an error handling routine,
       yyerror(char*).

       The options are

       -o output  Direct output to the specified file instead of y.tab.c.

       -Dn	  Create file y.debug, containing diagnostic messages.	To  incorporate  them  in
		  the parser, compile it with preprocessor symbol yydebug defined.  The amount of
		  diagnostic output from the parser is regulated by value n.  The value 0 reports
		  errors;  1 reports reductions; higher values (up to 4) include more information
		  about state transitions.

       -v	  Create file y.output, containing a description of the  parsing  tables  and  of
		  conflicts arising from ambiguities in the grammar.

       -d	  Create file y.tab.h, containing #define statements that associate yacc-assigned
		  `token codes' with user-declared `token names'.  Include  it	in  source  files
		  other than y.tab.c to give access to the token codes.

       -s stem	  Change  the prefix of the file names y.tab.c, y.tab.h, y.debug, and y.output to
		  stem.

       -S	  Write a parser that uses Stdio instead of the print routines in libc.

       The specification of yacc itself is essentially the same as the UNIX version described  in
       the references mentioned below.	Besides the -D option, the main relevant differences are:

	      The  interface  to  the  C  environment  is by default through <libc.h> rather than
	      <stdio.h>; the -S option reverses this.

	      The parser accepts UTF input text (see utf(6)), which  has  a  couple  of  effects.
	      First,  the return value of yylex() no longer fits in a short; second, the starting
	      value for non-terminals is now 0xE000 rather than 257.

	      The generated parser can be recursive: actions can call  yyparse,  for  example  to
	      implement a sort of #include statement in an interpreter.

	      Finally,	some  undocumented  inner workings of the parser have been changed, which
	      may affect programs that know too much about its structure.

FILES
       y.output

       y.tab.c

       y.tab.h

       y.debug

       y.tmp.*
	      temporary file

       y.acts.*
	      temporary file

       /sys/lib/yaccpar
	      parser prototype

       /sys/lib/yaccpars
	      parser prototype using stdio

SOURCE
       /sys/src/cmd/yacc.c

SEE ALSO
       lex(1)
       S. C. Johnson and R. Sethi, ``Yacc: A parser generator'', Unix  Research  System  Program-
       mer's Manual, Tenth Edition, Volume 2
       B. W. Kernighan and Rob Pike, The UNIX Programming Environment, Prentice Hall, 1984

BUGS
       The  parser  may  not have full information when it writes to y.debug so that the names of
       the tokens returned by may be missing.

											  YACC(1)


All times are GMT -4. The time now is 06:00 PM.

Unix & Linux Forums Content Copyrightę1993-2018. All Rights Reserved.
UNIX.COM Login
Username:
Password:  
Show Password