summaryrefslogtreecommitdiff
path: root/src/cmd/goyacc/doc.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/goyacc/doc.go')
-rw-r--r--src/cmd/goyacc/doc.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/cmd/goyacc/doc.go b/src/cmd/goyacc/doc.go
new file mode 100644
index 000000000..5dd6abe69
--- /dev/null
+++ b/src/cmd/goyacc/doc.go
@@ -0,0 +1,46 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+/*
+
+Goyacc is a version of yacc for Go.
+It is written in Go and generates parsers written in Go.
+
+It is largely transliterated from the Inferno version written in Limbo
+which in turn was largely transliterated from the Plan 9 version
+written in C and documented at
+
+ http://plan9.bell-labs.com/magic/man2html/1/yacc
+
+Yacc adepts will have no trouble adapting to this form of the tool.
+
+The file units.y in this directory is a yacc grammar for a version of
+the Unix tool units, also written in Go and largely transliterated
+from the Plan 9 C version. It needs the flag "-p units_" (see
+below).
+
+The generated parser is reentrant. Parse expects to be given an
+argument that conforms to the following interface:
+
+ type yyLexer interface {
+ Lex(lval *yySymType) int
+ Error(e string)
+ }
+
+Lex should return the token identifier, and place other token
+information in lval (which replaces the usual yylval).
+Error is equivalent to yyerror in the original yacc.
+
+Code inside the parser may refer to the variable yylex,
+which holds the yyLexer passed to Parse.
+
+Multiple grammars compiled into a single program should be placed in
+distinct packages. If that is impossible, the "-p prefix" flag to
+goyacc sets the prefix, by default yy, that begins the names of
+symbols, including types, the parser, and the lexer, generated and
+referenced by goyacc's generated code. Setting it to distinct values
+allows multiple grammars to be placed in a single package.
+
+*/
+package documentation