blob: 0ce8d6fb83d9ed269fab1988f5e4cd0a85b5dedf [file] [log] [blame]
David K. Bainbridgee05cf0c2021-08-19 03:16:50 +00001// Copyright 2018 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// Package text implements the text format for protocol buffers.
6// This package has no semantic understanding for protocol buffers and is only
7// a parser and composer for the format.
8//
9// There is no formal specification for the protobuf text format, as such the
10// C++ implementation (see google::protobuf::TextFormat) is the reference
11// implementation of the text format.
12//
13// This package is neither a superset nor a subset of the C++ implementation.
14// This implementation permits a more liberal grammar in some cases to be
15// backwards compatible with the historical Go implementation.
16// Future parsings unique to Go should not be added.
17// Some grammars allowed by the C++ implementation are deliberately
18// not implemented here because they are considered a bug by the protobuf team
19// and should not be replicated.
20//
21// The Go implementation should implement a sufficient amount of the C++
22// grammar such that the default text serialization by C++ can be parsed by Go.
23// However, just because the C++ parser accepts some input does not mean that
24// the Go implementation should as well.
25//
26// The text format is almost a superset of JSON except:
27// * message keys are not quoted strings, but identifiers
28// * the top-level value must be a message without the delimiters
29package text