doc.go raw

   1  // 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
  29  package text
  30