.('', '\t\t', <Unexpected end of input (loc.Word
  w: 
    (Token
      id: Id.Eof_Real
      length: 0
      col: 0
      line: (SourceLine line_num:0 content:"" src:(source.MainFile path:"<arith_parse_test.py>"))
    )
)>)
(')', '\t\t', <Token can't be used in prefix position (loc.Word
  w: 
    (Token
      id: Id.Arith_RParen
      length: 1
      col: 0
      line: (SourceLine line_num:1 content:")" src:(source.MainFile path:"<arith_parse_test.py>"))
    )
)>)
('(', '\t\t', <Unexpected end of input (loc.Word
  w: 
    (Token
      id: Id.Eof_Real
      length: 0
      col: 1
      line: (SourceLine line_num:1 content:"(" src:(source.MainFile path:"<arith_parse_test.py>"))
    )
)>)
('()', '\t\t', <Token can't be used in prefix position (loc.Word
  w: 
    (Token
      id: Id.Arith_RParen
      length: 1
      col: 1
      line: (SourceLine line_num:1 content:"()" src:(source.MainFile path:"<arith_parse_test.py>"))
    )
)>)
('( 1', '\t\t', <Parser expected Id.Arith_RParen, got Id.Eof_Real (loc.Word
  w: 
    (Token
      id: Id.Eof_Real
      length: 0
      col: 3
      line: (SourceLine line_num:1 content:"( 1" src:(source.MainFile path:"<arith_parse_test.py>"))
    )
)>)
('(1 + (3 * 4)', '\t\t', <Parser expected Id.Arith_RParen, got Id.Eof_Real (loc.Word
  w: 
    (Token
      id: Id.Eof_Real
      length: 0
      col: 12
      line: 
        (SourceLine
          line_num: 1
          content: "(1 + (3 * 4)"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
)>)
('(1 + (3 * 4) 5', '\t\t', <Parser expected Id.Arith_RParen, got Id.Word_Compound (loc.Word
  w: 
    (CompoundWord
      parts: [
        (Token
          id: Id.Lit_Digits
          length: 1
          col: 13
          line: 
            (SourceLine
              line_num: 1
              content: "(1 + (3 * 4) 5"
              src: (source.MainFile path:"<arith_parse_test.py>")
            )
        )
      ]
    )
)>)
(';', '\t\t', <Token can't be used in prefix position (loc.Word
  w: 
    (Token
      id: Id.Arith_Semi
      length: 1
      col: 0
      line: (SourceLine line_num:1 content:";" src:(source.MainFile path:"<arith_parse_test.py>"))
    )
)>)
('- ;', '\t\t', <Token can't be used in prefix position (loc.Word
  w: 
    (Token
      id: Id.Arith_Semi
      length: 1
      col: 2
      line: (SourceLine line_num:1 content:"- ;" src:(source.MainFile path:"<arith_parse_test.py>"))
    )
)>)
('expression:', '(7)')
('node:', (CompoundWord
  parts: [
    (Token
      id: Id.Lit_Digits
      length: 1
      col: 1
      line: (SourceLine line_num:1 content:"(7)" src:(source.MainFile path:"<arith_parse_test.py>"))
    )
  ]
))
('expression:', '1 + 2 - 3')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Minus
      length: 1
      col: 6
      line: 
        (SourceLine
          line_num: 1
          content: "1 + 2 - 3"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
  left: 
    (arith_expr.Binary
      op: (Token id:Id.Arith_Plus length:1 col:2 line:...0x7f2e0e7ec3c0)
      left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:0 line:...0x7f2e0e7ec3c0)])
      right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:4 line:...0x7f2e0e7ec3c0)])
    )
  right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:8 line:...0x7f2e0e7ec3c0)])
))
('expression:', '1 + 2 * 3')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Plus
      length: 1
      col: 2
      line: 
        (SourceLine
          line_num: 1
          content: "1 + 2 * 3"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
  left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:0 line:...0x7f2e0e7ec3c0)])
  right: 
    (arith_expr.Binary
      op: (Token id:Id.Arith_Star length:1 col:6 line:...0x7f2e0e7ec3c0)
      left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:4 line:...0x7f2e0e7ec3c0)])
      right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:8 line:...0x7f2e0e7ec3c0)])
    )
))
('expression:', '7 - 9 * (2 - 3)')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Minus
      length: 1
      col: 2
      line: 
        (SourceLine
          line_num: 1
          content: "7 - 9 * (2 - 3)"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
  left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:0 line:...0x7f2e0e7ec3c0)])
  right: 
    (arith_expr.Binary
      op: (Token id:Id.Arith_Star length:1 col:6 line:...0x7f2e0e7ec3c0)
      left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:4 line:...0x7f2e0e7ec3c0)])
      right: 
        (arith_expr.Binary
          op: (Token id:Id.Arith_Minus length:1 col:11 line:...0x7f2e0e7ec3c0)
          left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:9 line:...0x7f2e0e7ec3c0)])
          right: 
            (CompoundWord
              parts: [(Token id:Id.Lit_Digits length:1 col:13 line:...0x7f2e0e7ec3c0)]
            )
        )
    )
))
('expression:', '2 * 3 * 4')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Star
      length: 1
      col: 6
      line: 
        (SourceLine
          line_num: 1
          content: "2 * 3 * 4"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
  left: 
    (arith_expr.Binary
      op: (Token id:Id.Arith_Star length:1 col:2 line:...0x7f2e0e7ec3c0)
      left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:0 line:...0x7f2e0e7ec3c0)])
      right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:4 line:...0x7f2e0e7ec3c0)])
    )
  right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:8 line:...0x7f2e0e7ec3c0)])
))
('expression:', '2 ** 3 ** 4')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_DStar
      length: 2
      col: 2
      line: 
        (SourceLine
          line_num: 1
          content: "2 ** 3 ** 4"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
  left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:0 line:...0x7f2e0e7ec3c0)])
  right: 
    (arith_expr.Binary
      op: (Token id:Id.Arith_DStar length:2 col:7 line:...0x7f2e0e7ec3c0)
      left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:5 line:...0x7f2e0e7ec3c0)])
      right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:10 line:...0x7f2e0e7ec3c0)])
    )
))
('expression:', '(2 ** 3) ** 4')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_DStar
      length: 2
      col: 9
      line: 
        (SourceLine
          line_num: 1
          content: "(2 ** 3) ** 4"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
  left: 
    (arith_expr.Binary
      op: (Token id:Id.Arith_DStar length:2 col:3 line:...0x7f2e0e7ec3c0)
      left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:1 line:...0x7f2e0e7ec3c0)])
      right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:6 line:...0x7f2e0e7ec3c0)])
    )
  right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:12 line:...0x7f2e0e7ec3c0)])
))
('expression:', '5')
('node:', (CompoundWord
  parts: [
    (Token
      id: Id.Lit_Digits
      length: 1
      col: 0
      line: (SourceLine line_num:1 content:5 src:(source.MainFile path:"<arith_parse_test.py>"))
    )
  ]
))
('expression:', '4 + 2')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Plus
      length: 1
      col: 2
      line: (SourceLine line_num:1 content:"4 + 2" src:(source.MainFile path:"<arith_parse_test.py>"))
    )
  left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:0 line:...0x7f2e0e7ec3c0)])
  right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:4 line:...0x7f2e0e7ec3c0)])
))
('expression:', '9 - 8 - 7')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Minus
      length: 1
      col: 6
      line: 
        (SourceLine
          line_num: 1
          content: "9 - 8 - 7"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
  left: 
    (arith_expr.Binary
      op: (Token id:Id.Arith_Minus length:1 col:2 line:...0x7f2e0e7ec3c0)
      left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:0 line:...0x7f2e0e7ec3c0)])
      right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:4 line:...0x7f2e0e7ec3c0)])
    )
  right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:8 line:...0x7f2e0e7ec3c0)])
))
('expression:', '9 - (8 - 7)')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Minus
      length: 1
      col: 2
      line: 
        (SourceLine
          line_num: 1
          content: "9 - (8 - 7)"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
  left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:0 line:...0x7f2e0e7ec3c0)])
  right: 
    (arith_expr.Binary
      op: (Token id:Id.Arith_Minus length:1 col:7 line:...0x7f2e0e7ec3c0)
      left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:5 line:...0x7f2e0e7ec3c0)])
      right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:9 line:...0x7f2e0e7ec3c0)])
    )
))
('expression:', '(9 - 8) - 7')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Minus
      length: 1
      col: 8
      line: 
        (SourceLine
          line_num: 1
          content: "(9 - 8) - 7"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
  left: 
    (arith_expr.Binary
      op: (Token id:Id.Arith_Minus length:1 col:3 line:...0x7f2e0e7ec3c0)
      left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:1 line:...0x7f2e0e7ec3c0)])
      right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:5 line:...0x7f2e0e7ec3c0)])
    )
  right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:10 line:...0x7f2e0e7ec3c0)])
))
('expression:', '2 + 3 ** 2 * 3 + 4')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Plus
      length: 1
      col: 15
      line: 
        (SourceLine
          line_num: 1
          content: "2 + 3 ** 2 * 3 + 4"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
  left: 
    (arith_expr.Binary
      op: (Token id:Id.Arith_Plus length:1 col:2 line:...0x7f2e0e7ec3c0)
      left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:0 line:...0x7f2e0e7ec3c0)])
      right: 
        (arith_expr.Binary
          op: (Token id:Id.Arith_Star length:1 col:11 line:...0x7f2e0e7ec3c0)
          left: 
            (arith_expr.Binary
              op: (Token id:Id.Arith_DStar length:2 col:6 line:...0x7f2e0e7ec3c0)
              left: 
                (CompoundWord
                  parts: [(Token id:Id.Lit_Digits length:1 col:4 line:...0x7f2e0e7ec3c0)]
                )
              right: 
                (CompoundWord
                  parts: [(Token id:Id.Lit_Digits length:1 col:9 line:...0x7f2e0e7ec3c0)]
                )
            )
          right: 
            (CompoundWord
              parts: [(Token id:Id.Lit_Digits length:1 col:13 line:...0x7f2e0e7ec3c0)]
            )
        )
    )
  right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:17 line:...0x7f2e0e7ec3c0)])
))
('expression:', '4 * 3 / 2')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Slash
      length: 1
      col: 6
      line: 
        (SourceLine
          line_num: 1
          content: "4 * 3 / 2"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
  left: 
    (arith_expr.Binary
      op: (Token id:Id.Arith_Star length:1 col:2 line:...0x7f2e0e7ec3c0)
      left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:0 line:...0x7f2e0e7ec3c0)])
      right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:4 line:...0x7f2e0e7ec3c0)])
    )
  right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:8 line:...0x7f2e0e7ec3c0)])
))
('expression:', '3 * 2 % 4')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Percent
      length: 1
      col: 6
      line: 
        (SourceLine
          line_num: 1
          content: "3 * 2 % 4"
          src: (source.MainFile path:"<arith_parse_test.py>")
    .    )
    )
  left: 
    (arith_expr.Binary
      op: (Token id:Id.Arith_Star length:1 col:2 line:...0x7f2e0e7ec3c0)
      left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:0 line:...0x7f2e0e7ec3c0)])
      right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:4 line:...0x7f2e0e7ec3c0)])
    )
  right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:8 line:...0x7f2e0e7ec3c0)])
))
('expression:', '+ 1')
('node:', (arith_expr.Unary
  op_id: Id.Node_UnaryPlus
  child: 
    (CompoundWord
      parts: [
        (Token
          id: Id.Lit_Digits
          length: 1
          col: 2
          line: 
            (SourceLine
              line_num: 1
              content: "+ 1"
              src: (source.MainFile path:"<arith_parse_test.py>")
            )
        )
      ]
    )
))
('expression:', '- 5')
('node:', (arith_expr.Unary
  op_id: Id.Node_UnaryMinus
  child: 
    (CompoundWord
      parts: [
        (Token
          id: Id.Lit_Digits
          length: 1
          col: 2
          line: 
            (SourceLine
              line_num: 1
              content: "- 5"
              src: (source.MainFile path:"<arith_parse_test.py>")
            )
        )
      ]
    )
))
('expression:', '-2-3')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Minus
      length: 1
      col: 2
      line: (SourceLine line_num:1 content:-2-3 src:(source.MainFile path:"<arith_parse_test.py>"))
    )
  left: 
    (arith_expr.Unary
      op_id: Id.Node_UnaryMinus
      child: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:1 line:...0x7f2e0e7ec3c0)])
    )
  right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:3 line:...0x7f2e0e7ec3c0)])
))
('expression:', '1 ? 2 : 3, 4 ? 5 : 6')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Comma
      length: 1
      col: 9
      line: 
        (SourceLine
          line_num: 1
          content: "1 ? 2 : 3, 4 ? 5 : 6"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
  left: 
    (arith_expr.TernaryOp
      cond: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:0 line:...0x7f2e0e7ec3c0)])
      true_expr: 
        (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:4 line:...0x7f2e0e7ec3c0)])
      false_expr: 
        (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:8 line:...0x7f2e0e7ec3c0)])
    )
  right: 
    (arith_expr.TernaryOp
      cond: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:11 line:...0x7f2e0e7ec3c0)])
      true_expr: 
        (CompoundWord
          parts: [(Token id:Id.Lit_Digits length:1 col:15 line:...0x7f2e0e7ec3c0)]
        )
      false_expr: 
        (CompoundWord
          parts: [(Token id:Id.Lit_Digits length:1 col:19 line:...0x7f2e0e7ec3c0)]
        )
    )
))
('expression:', '1 , 2, 3')
('node:', (arith_expr.Binary
  op: 
    (Token
      id: Id.Arith_Comma
      length: 1
      col: 5
      line: 
        (SourceLine
          line_num: 1
          content: "1 , 2, 3"
          src: (source.MainFile path:"<arith_parse_test.py>")
        )
    )
  left: 
    (arith_expr.Binary
      op: (Token id:Id.Arith_Comma length:1 col:2 line:...0x7f2e0e7ec4c8)
      left: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:0 line:...0x7f2e0e7ec4c8)])
      right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:4 line:...0x7f2e0e7ec4c8)])
    )
  right: (CompoundWord parts:[(Token id:Id.Lit_Digits length:1 col:7 line:...0x7f2e0e7ec4c8)])
))
('expression:', '011')
('node:', (CompoundWord
  parts: [
    (Token
      id: Id.Lit_Digits
      length: 3
      col: 0
      line: (SourceLine line_num:1 content:011 src:(source.MainFile path:"<arith_parse_test.py>"))
    )
  ]
))
('expression:', '0xA')
('node:', (CompoundWord
  parts: [
    (Token
      id: Id.Lit_Digits
      length: 1
      col: 0
      line: (SourceLine line_num:1 content:0xA src:(source.MainFile path:"<arith_parse_test.py>"))
    )
    (Token id:Id.Lit_ArithVarLike length:2 col:1 line:...0x7f2e0e7ec4c8)
  ]
))
('expression:', '64#z')
('node:', (Compou.
----------------------------------------------------------------------
Ran 3 tests in 0.033s

OK
ndWord
  parts: [
    (Token
      id: Id.Lit_Digits
      length: 2
      col: 0
      line: (SourceLine line_num:1 content:"64#z" src:(source.MainFile path:"<arith_parse_test.py>"))
    )
    (Token id:Id.Lit_Pound length:1 col:2 line:...0x7f2e0e7ec4c8)
    (Token id:Id.Lit_ArithVarLike length:1 col:3 line:...0x7f2e0e7ec4c8)
  ]
))
('expression:', '64#Z')
('node:', (CompoundWord
  parts: [
    (Token
      id: Id.Lit_Digits
      length: 2
      col: 0
      line: (SourceLine line_num:1 content:"64#Z" src:(source.MainFile path:"<arith_parse_test.py>"))
    )
    (Token id:Id.Lit_Pound length:1 col:2 line:...0x7f2e0e7ec4c8)
    (Token id:Id.Lit_ArithVarLike length:1 col:3 line:...0x7f2e0e7ec4c8)
  ]
))
('expression:', '64#@')
('node:', (CompoundWord
  parts: [
    (Token
      id: Id.Lit_Digits
      length: 2
      col: 0
      line: (SourceLine line_num:1 content:"64#@" src:(source.MainFile path:"<arith_parse_test.py>"))
    )
    (Token id:Id.Lit_Pound length:1 col:2 line:...0x7f2e0e7ec4c8)
    (Token id:Id.Lit_At length:1 col:3 line:...0x7f2e0e7ec4c8)
  ]
))
('expression:', '64#_')
('node:', (CompoundWord
  parts: [
    (Token
      id: Id.Lit_Digits
      length: 2
      col: 0
      line: (SourceLine line_num:1 content:"64#_" src:(source.MainFile path:"<arith_parse_test.py>"))
    )
    (Token id:Id.Lit_Pound length:1 col:2 line:...0x7f2e0e7ec4c8)
    (Token id:Id.Lit_ArithVarLike length:1 col:3 line:...0x7f2e0e7ec4c8)
  ]
))