--- }

{<Id.Lit_RBrace "}">}

--- ,

{<Id.Lit_Comma ",">}

--- B-{a,b}-E

{<Id.Lit_Chars B-> <Id.Lit_LBrace "{"> <Id.Lit_Chars a> <Id.Lit_Comma ","> <Id.Lit_Chars b> 
  <Id.Lit_RBrace "}"> <Id.Lit_Chars -E>
}
(word.BracedTree
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: (SourceLine line_num:1 content:"B-{a,b}-E" src:(source.MainFile path:word_parse_test.py))
    )
    (word_part.BracedTuple
      words: [
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:3 line:...0x7f3a25429db8)])
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:5 line:...0x7f3a25429db8)])
      ]
    )
    (Token id:Id.Lit_Chars length:2 col:7 line:...0x7f3a25429db8)
  ]
)--

--- B-{a"a",b"b",c"c"}-E

{<Id.Lit_Chars B-> <Id.Lit_LBrace "{"> <Id.Lit_Chars a> (DQ <Id.Lit_Chars a>) <Id.Lit_Comma ","> 
  <Id.Lit_Chars b> (DQ <Id.Lit_Chars b>) <Id.Lit_Comma ","> <Id.Lit_Chars c> (DQ <Id.Lit_Chars c>) <Id.Lit_RBrace "}"> 
  <Id.Lit_Chars -E>
}
(word.BracedTree
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a\"a\",b\"b\",c\"c\"}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (word_part.BracedTuple
      words: [
        (CompoundWord
          parts: [
            (Token id:Id.Lit_Chars length:1 col:3 line:...0x7f3a25429e10)
            (DoubleQuoted
              left: (Token id:Id.Left_DoubleQuote length:1 col:4 line:...0x7f3a25429e10)
              parts: [(Token id:Id.Lit_Chars length:1 col:5 line:...0x7f3a25429e10)]
              right: (Token id:Id.Right_DoubleQuote length:1 col:6 line:...0x7f3a25429e10)
            )
          ]
        )
        (CompoundWord
          parts: [
            (Token id:Id.Lit_Chars length:1 col:8 line:...0x7f3a25429e10)
            (DoubleQuoted
              left: (Token id:Id.Left_DoubleQuote length:1 col:9 line:...0x7f3a25429e10)
              parts: [(Token id:Id.Lit_Chars length:1 col:10 line:...0x7f3a25429e10)]
              right: (Token id:Id.Right_DoubleQuote length:1 col:11 line:...0x7f3a25429e10)
            )
          ]
        )
        (CompoundWord
          parts: [
            (Token id:Id.Lit_Chars length:1 col:13 line:...0x7f3a25429e10)
            (DoubleQuoted
              left: (Token id:Id.Left_DoubleQuote length:1 col:14 line:...0x7f3a25429e10)
              parts: [(Token id:Id.Lit_Chars length:1 col:15 line:...0x7f3a25429e10)]
              right: (Token id:Id.Right_DoubleQuote length:1 col:16 line:...0x7f3a25429e10)
            )
          ]
        )
      ]
    )
    (Token id:Id.Lit_Chars length:2 col:18 line:...0x7f3a25429e10)
  ]
)--

--- B-{a,b}--{c,d}-E

{<Id.Lit_Chars B-> <Id.Lit_LBrace "{"> <Id.Lit_Chars a> <Id.Lit_Comma ","> <Id.Lit_Chars b> 
  <Id.Lit_RBrace "}"> <Id.Lit_Chars --> <Id.Lit_LBrace "{"> <Id.Lit_Chars c> <Id.Lit_Comma ","> <Id.Lit_Chars d> 
  <Id.Lit_RBrace "}"> <Id.Lit_Chars -E>
}
(word.BracedTree
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,b}--{c,d}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (word_part.BracedTuple
      words: [
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:3 line:...0x7f3a25429db8)])
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:5 line:...0x7f3a25429db8)])
      ]
    )
    (Token id:Id.Lit_Chars length:2 col:7 line:...0x7f3a25429db8)
    (word_part.BracedTuple
      words: [
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:10 line:...0x7f3a25429db8)])
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:12 line:...0x7f3a25429db8)])
      ]
    )
    (Token id:Id.Lit_Chars length:2 col:14 line:...0x7f3a25429db8)
  ]
)--

--- B-{a,b,c,={d,e}}-E

{<Id.Lit_Chars B-> <Id.Lit_LBrace "{"> <Id.Lit_Chars a> <Id.Lit_Comma ","> <Id.Lit_Chars b> 
  <Id.Lit_Comma ","> <Id.Lit_Chars c> <Id.Lit_Comma ","> <Id.Lit_Equals "="> <Id.Lit_LBrace "{"> <Id..Lit_Chars d> 
  <Id.Lit_Comma ","> <Id.Lit_Chars e> <Id.Lit_RBrace "}"> <Id.Lit_RBrace "}"> <Id.Lit_Chars -E>
}
(word.BracedTree
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,b,c,={d,e}}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (word_part.BracedTuple
      words: [
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:3 line:...0x7f3a25429e10)])
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:5 line:...0x7f3a25429e10)])
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:7 line:...0x7f3a25429e10)])
        (CompoundWord
          parts: [
            (Token id:Id.Lit_Equals length:1 col:9 line:...0x7f3a25429e10)
            (word_part.BracedTuple
              words: [
                (CompoundWord
                  parts: [(Token id:Id.Lit_Chars length:1 col:11 line:...0x7f3a25429e10)]
                )
                (CompoundWord
                  parts: [(Token id:Id.Lit_Chars length:1 col:13 line:...0x7f3a25429e10)]
                )
              ]
            )
          ]
        )
      ]
    )
    (Token id:Id.Lit_Chars length:2 col:16 line:...0x7f3a25429e10)
  ]
)
--- B-{a,={b,c}=,d}-E

{<Id.Lit_Chars B-> <Id.Lit_LBrace "{"> <Id.Lit_Chars a> <Id.Lit_Comma ","> <Id.Lit_Equals "="> 
  <Id.Lit_LBrace "{"> <Id.Lit_Chars b> <Id.Lit_Comma ","> <Id.Lit_Chars c> <Id.Lit_RBrace "}"> <Id.Lit_Equals "="> 
  <Id.Lit_Comma ","> <Id.Lit_Chars d> <Id.Lit_RBrace "}"> <Id.Lit_Chars -E>
}
(word.BracedTree
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,={b,c}=,d}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (word_part.BracedTuple
      words: [
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:3 line:...0x7f3a25429db8)])
        (CompoundWord
          parts: [
            (Token id:Id.Lit_Equals length:1 col:5 line:...0x7f3a25429db8)
            (word_part.BracedTuple
              words: [
                (CompoundWord
                  parts: [(Token id:Id.Lit_Chars length:1 col:7 line:...0x7f3a25429db8)]
                )
                (CompoundWord
                  parts: [(Token id:Id.Lit_Chars length:1 col:9 line:...0x7f3a25429db8)]
                )
              ]
            )
            (Token id:Id.Lit_Equals length:1 col:11 line:...0x7f3a25429db8)
          ]
        )
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:13 line:...0x7f3a25429db8)])
      ]
    )
    (Token id:Id.Lit_Chars length:2 col:15 line:...0x7f3a25429db8)
  ]
)(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 1
      col: 3
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,={b,c}=,d}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
  ]
)
--- {a,b,}

{<Id.Lit_LBrace "{"> <Id.Lit_Chars a> <Id.Lit_Comma ","> <Id.Lit_Chars b> <Id.Lit_Comma ","> 
  <Id.Lit_RBrace "}">
}
(word.BracedTree
  parts: [
    (word_part.BracedTuple
      words: [
        (CompoundWord
          parts: [
            (Token
              id: Id.Lit_Chars
              length: 1
              col: 1
              line: 
                (SourceLine
                  line_num: 1
                  content: "{a,b,}"
                  src: (source.MainFile path:word_parse_test.py)
                )
            )
          ]
        )
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:3 line:...0x7f3a25429e68)])
        (CompoundWord parts:[])
      ]
    )
  ]
)
--- hi

{<Id.Lit_Chars hi>}
(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: (SourceLine line_num:1 content:hi src:(source.MainFile path:word_parse_test.py))
    )
  ]
)

--- B-{a,b}-E

{<Id.Lit_Chars B-> <Id.Lit_LBrace "{"> <Id.Lit_Chars a> <Id.Lit_Comma ","> <Id.Lit_Chars b> 
  <Id.Lit_RBrace "}"> <Id.Lit_Chars -E>
}
(word.BracedTree
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: (SourceLine line_num:1 content:"B-{a,b}-E" src:(source.MainFile path:word_parse_test.py))
    )
    (word_part.BracedTuple
      words: [
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:3 line:...0x7f3a25429db8)])
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:5 line:...0x7f3a25429db8)])
      ]
    )
    (Token id:Id.Lit_Chars length:2 col:7 line:...0x7f3a25429db8)
  ]
)(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: (SourceLine line_num:1 content:"B-{a,b}-E" src:(source.MainFile path:word_parse_test.py))
    )
    (Token id:Id.Lit_Chars length:1 col:3 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:2 col:7 line:...0x7f3a25429db8)
  ]
)
(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: (SourceLine line_num:1 content:"B-{a,b}-E" src:(source.MainFile path:word_parse_test.py))
    )
    (Token id:Id.Lit_Chars length:1 col:5 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:2 col:7 line:...0x7f3a25429db8)
  ]
)

--- B-{a,={b,c,d}=,e}-E

{<Id.Lit_Chars B-> <Id.Lit_LBrace "{"> <Id.Lit_Chars a> <Id.Lit_Comma ","> <Id.Lit_Equals "="> 
  <Id.Lit_LBrace "{"> <Id.Lit_Chars b> <Id.Lit_Comma ","> <Id.Lit_Chars c> <Id.Lit_Comma ","> <Id.Lit_Chars d> 
  <Id.Lit_RBrace "}"> <Id.Lit_Equals "="> <Id.Lit_Comma ","> <Id.Lit_Chars e> <Id.Lit_RBrace "}"> <Id.Lit_Chars -E>
}
(word.BracedTree
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,={b,c,d}=,e}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (word_part.BracedTuple
      words: [
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:3 line:...0x7f3a25429e68)])
        (CompoundWord
          parts: [
            (Token id:Id.Lit_Equals length:1 col:5 line:...0x7f3a25429e68)
            (word_part.BracedTuple
              words: [
                (CompoundWord
                  parts: [(Token id:Id.Lit_Chars length:1 col:7 line:...0x7f3a25429e68)]
                )
                (CompoundWord
                  parts: [(Token id:Id.Lit_Chars length:1 col:9 line:...0x7f3a25429e68)]
                )
                (CompoundWord
                  parts: [(Token id:Id.Lit_Chars length:1 col:11 line:...0x7f3a25429e68)]
                )
              ]
            )
            (Token id:Id.Lit_Equals length:1 col:13 line:...0x7f3a25429e68)
          ]
        )
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:15 line:...0x7f3a25429e68)])
      ]
    )
    (Token id:Id.Lit_Chars length:2 col:17 line:...0x7f3a25429e68)
  ]
)(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,={b,c,d}=,e}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (Token id:Id.Lit_Chars length:1 col:3 line:...0x7f3a25429e68)
    (Token id:Id.Lit_Chars length:2 col:17 line:...0x7f3a25429e68)
  ]
)
(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,={b,c,d}=,e}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (Token id:Id.Lit_Equals length:1 col:5 line:...0x7f3a25429e68)
    (Token id:Id.Lit_Chars length:1 col:7 line:...0x7f3a25429e68)
    (Token id:Id.Lit_Equals length:1 col:13 line:...0x7f3a25429e68)
    (Token id:Id.Lit_Chars length:2 col:17 line:...0x7f3a25429e68)
  ]
)
(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,={b,c,d}=,e}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (Token id:Id.Lit_Equals length:1 col:5 line:...0x7f3a25429e68)
    (Token id:Id.Lit_Chars length:1 col:9 line:...0x7f3a25429e68)
    (Token id:Id.Lit_Equals length:1 col:13 line:...0x7f3a25429e68)
    (Token id:Id.Lit_Chars length:2 col:17 line:...0x7f3a25429e68)
  ]
)
(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,={b,c,d}=,e}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (Token id:Id.Lit_Equals length:1 col:5 line:...0x7f3a25429e68)
    (Token id:Id.Lit_Chars length:1 col:11 line:...0x7f3a25429e68)
    (Token id:Id.Lit_Equals length:1 col:13 line:...0x7f3a25429e68)
    (Token id:Id.Lit_Chars length:2 col:17 line:...0x7f3a25429e68)
  ]
)
(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,={b,c,d}=,e}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (Token id:Id.Lit_Chars length:1 col:15 line:...0x7f3a25429e68)
    (Token id:Id.Lit_Chars length:2 col:17 line:...0x7f3a25429e68)
  ]
)

--- B-{a,b}-{c,d}-E

{<Id.Lit_Chars B-> <Id.Lit_LBrace "{"> <Id.Lit_Chars a> <Id.Lit_Comma ","> <Id.Lit_Chars b> 
  <Id.Lit_RBrace "}"> <Id.Lit_Chars -> <Id.Lit_LBrace "{"> <Id.Lit_Chars c> <Id.Lit_Comma ","> <Id.Lit_Chars d> 
  <Id.Lit_RBrace "}"> <Id.Lit_Chars -E>
}
(word.BracedTree
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,b}-{c,d}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (word_part.BracedTuple
      words: [
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:3 line:...0x7f3a25429db8)])
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:5 line:...0x7f3a25429db8)])
      ]
    )
    (Token id:Id.Lit_Chars length:1 col:7 line:...0x7f3a25429db8)
    (word_part.BracedTuple
      words: [
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:9 line:...0x7f3a25429db8)])
        (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:11 line:...0x7f3a25429db8)])
      ]
    )
    (Token id:Id.Lit_Chars length:2 col:13 line:...0x7f3a25429db8)
  ]
)(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,b}-{c,d}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (Token id:Id.Lit_Chars length:1 col:3 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:1 col:7 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:1 col:9 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:2 col:13 line:...0x7f3a25429db8)
  ]
)
(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,b}-{c,d}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (Token id:Id.Lit_Chars length:1 col:3 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:1 col:7 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:1 col:11 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:2 col:13 line:...0x7f3a25429db8)
  ]
)
(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,b}-{c,d}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (Token id:Id.Lit_Chars length:1 col:5 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:1 col:7 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:1 col:9 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:2 col:13 line:...0x7f3a25429db8)
  ]
)
(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 2
      col: 0
      line: 
        (SourceLine
          line_num: 1
          content: "B-{a,b}-{c,d}-E"
          src: (source.MainFile path:word_parse_test.py)
        )
    )
    (Token id.''	None
'1'	None
'1..'	None
'1'	(word_part.BracedRange
  blame_tok: (Token id:Id.Lit_Chars length:4 col:0 line:(SourceLine line_num:1 content:1..3 src:(source__Interactive)))
  kind: Id.Range_Int
  start: 1
  end: 3
  step: 1
)
'3'	(word_part.BracedRange
  blame_tok: (Token id:Id.Lit_Chars length:10 col:0 line:(SourceLine line_num:1 content:3..-10..-2 src:(source__Interactive)))
  kind: Id.Range_Int
  start: 3
  end: -10
  step: -2
)
'3..-10..-2..'	None
'a'	None
'a..'	None
'a'	(word_part.BracedRange
  blame_tok: (Token id:Id.Lit_Chars length:4 col:0 line:(SourceLine line_num:1 content:a..z src:(source__Interactive)))
  kind: Id.Range_Char
  start: a
  end: z
  step: 1
)
'a..z..'	None
'z'	(word_part.BracedRange
  blame_tok: (Token id:Id.Lit_Chars length:8 col:0 line:(SourceLine line_num:1 content:z..a..-1 src:(source__Interactive)))
  kind: Id.Range_Char
  start: z
  end: a
  step: -1
)
.
----------------------------------------------------------------------
Ran 3 tests in 0.016s

OK
:Id.Lit_Chars length:1 col:5 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:1 col:7 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:1 col:11 line:...0x7f3a25429db8)
    (Token id:Id.Lit_Chars length:2 col:13 line:...0x7f3a25429db8)
  ]
)