                                                  Thursday, August 30, 1990

    Gary Olsen's Interpretation of the "Newick's 8:45" Tree Format Standard

    (Here is the reason for the Newick name)

    Conventions:
       Items in { } may appear zero or more times.
       Items in [ ] are optional, they may appear once or not at all.
       All other punctuation marks (colon, semicolon, parentheses, comma and
             single quote) are required parts of the format.

                  tree ==> descendant_list [ root_label ] [ : branch_length ] ;

       descendant_list ==> ( subtree { , subtree } )

               subtree ==> descendant_list [internal_node_label] [: branch_length]
                       ==> leaf_label [: branch_length]

                root_label ==> label
       internal_node_label ==> label
                leaf_label ==> label

                     label ==> unquoted_label
                           ==> quoted_label

            unquoted_label ==> string_of_printing_characters
              quoted_label ==> ' string_of_printing_characters '

             branch_length ==> signed_number
                           ==> unsigned_number

    Notes:
       Unquoted labels may not contain blanks, parentheses, square brackets,
            single_quotes, colons, semicolons, or commas.
       Underscore characters in unquoted labels are converted to blanks.
       Single quote characters in a quoted label are represented by two single
            quotes.
       Blanks or tabs may appear anywhere except within unquoted labels or
            branch_lengths.
       Newlines may appear anywhere except within labels or branch_lengths.
       Comments are enclosed in square brackets and may appear anywhere
            newlines are permitted.

    Other notes:
       PAUP (David Swofford) allows nesting of comments.
       TreeAlign (Jotun Hein) writes a root node branch length (with a value of
            0.0).
       PHYLIP (Joseph Felsenstein) requires that an unrooted tree begin with a
            trifurcation; it will not "uproot" a rooted tree.

    Example:

       (((One:0.2,Two:0.3):0.3,(Three:0.5,Four:0.3):0.2):0.3,Five:0.7):0.0;

               +-+ One
            +--+
            |  +--+ Two
         +--+
         |  |  +----+ Three
         |  +--+
         |     +--+ Four
         +
         +------+ Five