SOURCE "label~: value"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(0, 13)
  Some("expr") Expr_MissingExpr loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(0, 13)
    Some("label") Syntax_Token("POST_LABEL") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(0, 6)
      Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(0, 5)
        Some("payload") Leaf(String("label")) loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(0, 5)
      Some("payload") Leaf(String("label")) loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(0, 6)
    Some("op") Syntax_Token(":") loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
    Some("error") Error loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(8, 13)
      Some("item") Syntax_Unexpected("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(8, 13)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(8, 13)
          Some("payload") Leaf(String("value")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(8, 13)
        Some("payload") Leaf(String("value")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(8, 13)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 13 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(13, 13)
[{"type":"Error","loc":{"file":"","start":{"line":1,"column":9},"end":{"line":1,"column":14}},"msg":"Unexpected token id (lowercase start), you may expect `{`, `for`, `while`."}]
SOURCE "// 🐇\nlabel~:"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 2, bol: 5, cnum: 12 } span=(0, 13)
  Some("expr") Expr_MissingExpr loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 12 } span=(6, 13)
    Some("label") Syntax_Token("POST_LABEL") loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 11 } span=(6, 12)
      Some("name_value") Name_Identifier loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 10 } span=(6, 11)
        Some("payload") Leaf(String("label")) loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 10 } span=(6, 11)
      Some("payload") Leaf(String("label")) loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 11 } span=(6, 12)
    Some("op") Syntax_Token(":") loc={ fname: "", lnum: 2, bol: 5, cnum: 11 },{ fname: "", lnum: 2, bol: 5, cnum: 12 } span=(12, 13)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 2, bol: 5, cnum: 12 },{ fname: "", lnum: 2, bol: 5, cnum: 12 } span=(13, 13)
[{"type":"Error","loc":{"file":"","start":{"line":2,"column":8},"end":{"line":2,"column":8}},"msg":"Unexpected end of file, missing `{`, `for`, `while` here."}]
SOURCE "match x { // first\n // second\n { a: , b, .. } => 0 }"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 3, bol: 30, cnum: 52 } span=(0, 52)
  Some("expr") Expr_Match loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 3, bol: 30, cnum: 52 } span=(0, 52)
    Some("kw") Syntax_Token("match") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(0, 5)
    Some("expr") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
      Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
          Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
        Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
      Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
        Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
          Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
            Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
    Some("open") Syntax_Token("{") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
    Some("trivia") Syntax_Token("COMMENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(10, 18)
      Some("comment") Comment_InlineTrailing loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(10, 18)
        Some("content") Comment_Content loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(10, 18)
          Some("payload") Leaf(String("// first")) loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(10, 18)
        Some("consumed_by_docstring") Comment_ConsumedByDocstring loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 10 } span=(10, 10)
          Some("payload") Leaf(Bool(false)) loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 10 } span=(10, 10)
    Some("trivia") Syntax_Token("COMMENT") loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 29 } span=(20, 29)
      Some("comment") Comment_Ownline loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 29 } span=(20, 29)
        Some("content") Comment_Content loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 29 } span=(20, 29)
          Some("payload") Leaf(String("// second")) loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 29 } span=(20, 29)
        Some("leading_blank_line") Comment_LeadingBlankLine loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 20 } span=(20, 20)
          Some("payload") Leaf(Bool(false)) loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 20 } span=(20, 20)
        Some("trailing_blank_line") Comment_TrailingBlankLine loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 20 } span=(20, 20)
          Some("payload") Leaf(Bool(false)) loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 20 } span=(20, 20)
        Some("consumed_by_docstring") Comment_ConsumedByDocstring loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 20 } span=(20, 20)
          Some("payload") Leaf(Bool(false)) loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 20 } span=(20, 20)
    Some("case") Case_MatchCase loc={ fname: "", lnum: 3, bol: 30, cnum: 31 },{ fname: "", lnum: 3, bol: 30, cnum: 50 } span=(31, 50)
      Some("pattern") Pattern_Record loc={ fname: "", lnum: 3, bol: 30, cnum: 31 },{ fname: "", lnum: 3, bol: 30, cnum: 45 } span=(31, 45)
        Some("body") List_RecordPatternFieldList loc={ fname: "", lnum: 3, bol: 30, cnum: 31 },{ fname: "", lnum: 3, bol: 30, cnum: 45 } span=(31, 45)
          Some("open") Syntax_Token("{") loc={ fname: "", lnum: 3, bol: 30, cnum: 31 },{ fname: "", lnum: 3, bol: 30, cnum: 32 } span=(31, 32)
          Some("item") Field_Pattern loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 35 } span=(33, 35)
            Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
              Some("name_value") Name_Identifier loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
                Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
              Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
            Some("op") Syntax_Token(":") loc={ fname: "", lnum: 3, bol: 30, cnum: 34 },{ fname: "", lnum: 3, bol: 30, cnum: 35 } span=(34, 35)
            Some("semantic_name") Name_Field loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
              Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
                Some("component") Name_Identifier loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
                  Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
            Some("pun") Flag_Pun loc={ fname: "", lnum: 3, bol: 30, cnum: 35 },{ fname: "", lnum: 3, bol: 30, cnum: 35 } span=(35, 35)
              Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 3, bol: 30, cnum: 35 },{ fname: "", lnum: 3, bol: 30, cnum: 35 } span=(35, 35)
            Some("pattern") Pattern_Var loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
              Some("name") Name_Identifier loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
                Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
              Some("semantic_name") Name_Binder loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
                Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
                  Some("component") Name_Identifier loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
                    Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 34 } span=(33, 34)
          Some("sep") Syntax_Token(",") loc={ fname: "", lnum: 3, bol: 30, cnum: 36 },{ fname: "", lnum: 3, bol: 30, cnum: 37 } span=(36, 37)
            Some("trailing") TrailingMark_Comma loc={ fname: "", lnum: 3, bol: 30, cnum: 36 },{ fname: "", lnum: 3, bol: 30, cnum: 36 } span=(36, 36)
          Some("item") Field_Pattern loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
            Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
              Some("name_value") Name_Identifier loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
                Some("payload") Leaf(String("b")) loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
              Some("payload") Leaf(String("b")) loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
            Some("semantic_name") Name_Field loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
              Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
                Some("component") Name_Identifier loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
                  Some("payload") Leaf(String("b")) loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
            Some("pun") Flag_Pun loc={ fname: "", lnum: 3, bol: 30, cnum: 39 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(39, 39)
              Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 3, bol: 30, cnum: 39 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(39, 39)
            Some("pattern") Pattern_Var loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
              Some("name") Name_Identifier loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
                Some("payload") Leaf(String("b")) loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
              Some("semantic_name") Name_Binder loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
                Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
                  Some("component") Name_Identifier loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
                    Some("payload") Leaf(String("b")) loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
          Some("sep") Syntax_Token(",") loc={ fname: "", lnum: 3, bol: 30, cnum: 39 },{ fname: "", lnum: 3, bol: 30, cnum: 40 } span=(39, 40)
            Some("trailing") TrailingMark_Comma loc={ fname: "", lnum: 3, bol: 30, cnum: 39 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(39, 39)
          Some("item") Pattern_Rest loc={ fname: "", lnum: 3, bol: 30, cnum: 41 },{ fname: "", lnum: 3, bol: 30, cnum: 43 } span=(41, 43)
            Some("op") Syntax_Token("..") loc={ fname: "", lnum: 3, bol: 30, cnum: 41 },{ fname: "", lnum: 3, bol: 30, cnum: 43 } span=(41, 43)
              Some("operator") Operator_Infix loc={ fname: "", lnum: 3, bol: 30, cnum: 41 },{ fname: "", lnum: 3, bol: 30, cnum: 43 } span=(41, 43)
                Some("payload") Leaf(String("..")) loc={ fname: "", lnum: 3, bol: 30, cnum: 41 },{ fname: "", lnum: 3, bol: 30, cnum: 43 } span=(41, 43)
          Some("close") Syntax_Token("}") loc={ fname: "", lnum: 3, bol: 30, cnum: 44 },{ fname: "", lnum: 3, bol: 30, cnum: 45 } span=(44, 45)
        Some("openness") Openness_Open loc={ fname: "", lnum: 3, bol: 30, cnum: 45 },{ fname: "", lnum: 3, bol: 30, cnum: 45 } span=(45, 45)
      Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 3, bol: 30, cnum: 46 },{ fname: "", lnum: 3, bol: 30, cnum: 48 } span=(46, 48)
      Some("body") Expr_Constant loc={ fname: "", lnum: 3, bol: 30, cnum: 49 },{ fname: "", lnum: 3, bol: 30, cnum: 50 } span=(49, 50)
        Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 3, bol: 30, cnum: 49 },{ fname: "", lnum: 3, bol: 30, cnum: 50 } span=(49, 50)
          Some("constant") Constant_Int loc={ fname: "", lnum: 3, bol: 30, cnum: 49 },{ fname: "", lnum: 3, bol: 30, cnum: 50 } span=(49, 50)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 3, bol: 30, cnum: 49 },{ fname: "", lnum: 3, bol: 30, cnum: 50 } span=(49, 50)
          Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 3, bol: 30, cnum: 49 },{ fname: "", lnum: 3, bol: 30, cnum: 50 } span=(49, 50)
        Some("constant") Constant_Int loc={ fname: "", lnum: 3, bol: 30, cnum: 49 },{ fname: "", lnum: 3, bol: 30, cnum: 50 } span=(49, 50)
          Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 3, bol: 30, cnum: 49 },{ fname: "", lnum: 3, bol: 30, cnum: 50 } span=(49, 50)
        Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 3, bol: 30, cnum: 49 },{ fname: "", lnum: 3, bol: 30, cnum: 50 } span=(49, 50)
          Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 3, bol: 30, cnum: 49 },{ fname: "", lnum: 3, bol: 30, cnum: 50 } span=(49, 50)
    Some("close") Syntax_Token("}") loc={ fname: "", lnum: 3, bol: 30, cnum: 51 },{ fname: "", lnum: 3, bol: 30, cnum: 52 } span=(51, 52)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 3, bol: 30, cnum: 52 },{ fname: "", lnum: 3, bol: 30, cnum: 52 } span=(52, 52)
[]
SOURCE "match x { // first\n // second\n { \"k\": , .. } => 0 }"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 3, bol: 30, cnum: 51 } span=(0, 51)
  Some("expr") Expr_Match loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 3, bol: 30, cnum: 51 } span=(0, 51)
    Some("kw") Syntax_Token("match") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(0, 5)
    Some("expr") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
      Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
          Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
        Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
      Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
        Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
          Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
            Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
    Some("open") Syntax_Token("{") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
    Some("trivia") Syntax_Token("COMMENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(10, 18)
      Some("comment") Comment_InlineTrailing loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(10, 18)
        Some("content") Comment_Content loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(10, 18)
          Some("payload") Leaf(String("// first")) loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(10, 18)
        Some("consumed_by_docstring") Comment_ConsumedByDocstring loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 10 } span=(10, 10)
          Some("payload") Leaf(Bool(false)) loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 10 } span=(10, 10)
    Some("trivia") Syntax_Token("COMMENT") loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 29 } span=(20, 29)
      Some("comment") Comment_Ownline loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 29 } span=(20, 29)
        Some("content") Comment_Content loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 29 } span=(20, 29)
          Some("payload") Leaf(String("// second")) loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 29 } span=(20, 29)
        Some("leading_blank_line") Comment_LeadingBlankLine loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 20 } span=(20, 20)
          Some("payload") Leaf(Bool(false)) loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 20 } span=(20, 20)
        Some("trailing_blank_line") Comment_TrailingBlankLine loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 20 } span=(20, 20)
          Some("payload") Leaf(Bool(false)) loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 20 } span=(20, 20)
        Some("consumed_by_docstring") Comment_ConsumedByDocstring loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 20 } span=(20, 20)
          Some("payload") Leaf(Bool(false)) loc={ fname: "", lnum: 2, bol: 19, cnum: 20 },{ fname: "", lnum: 2, bol: 19, cnum: 20 } span=(20, 20)
    Some("case") Case_MatchCase loc={ fname: "", lnum: 3, bol: 30, cnum: 31 },{ fname: "", lnum: 3, bol: 30, cnum: 49 } span=(31, 49)
      Some("pattern") Pattern_Map loc={ fname: "", lnum: 3, bol: 30, cnum: 31 },{ fname: "", lnum: 3, bol: 30, cnum: 44 } span=(31, 44)
        Some("body") List_MapPatternFieldList loc={ fname: "", lnum: 3, bol: 30, cnum: 31 },{ fname: "", lnum: 3, bol: 30, cnum: 44 } span=(31, 44)
          Some("open") Syntax_Token("{") loc={ fname: "", lnum: 3, bol: 30, cnum: 31 },{ fname: "", lnum: 3, bol: 30, cnum: 32 } span=(31, 32)
          Some("item") Field_MapPattern loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 37 } span=(33, 37)
            Some("key") Syntax_Token("STRING") loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 36 } span=(33, 36)
              Some("constant") Constant_String loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 36 } span=(33, 36)
                Some("payload") Leaf(String("k")) loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 36 } span=(33, 36)
              Some("payload") Leaf(String("k")) loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 36 } span=(33, 36)
            Some("constant") Constant_String loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 36 } span=(33, 36)
              Some("payload") Leaf(String("k")) loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 36 } span=(33, 36)
            Some("op") Syntax_Token(":") loc={ fname: "", lnum: 3, bol: 30, cnum: 36 },{ fname: "", lnum: 3, bol: 30, cnum: 37 } span=(36, 37)
            Some("semantic_constant") Constant_String loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 36 } span=(33, 36)
              Some("payload") Leaf(String("k")) loc={ fname: "", lnum: 3, bol: 30, cnum: 33 },{ fname: "", lnum: 3, bol: 30, cnum: 36 } span=(33, 36)
            Some("match_absent") Flag_MatchAbsent loc={ fname: "", lnum: 3, bol: 30, cnum: 37 },{ fname: "", lnum: 3, bol: 30, cnum: 37 } span=(37, 37)
              Some("payload") Leaf(Bool(false)) loc={ fname: "", lnum: 3, bol: 30, cnum: 37 },{ fname: "", lnum: 3, bol: 30, cnum: 37 } span=(37, 37)
          Some("sep") Syntax_Token(",") loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 39 } span=(38, 39)
            Some("trailing") TrailingMark_Comma loc={ fname: "", lnum: 3, bol: 30, cnum: 38 },{ fname: "", lnum: 3, bol: 30, cnum: 38 } span=(38, 38)
          Some("item") Pattern_Rest loc={ fname: "", lnum: 3, bol: 30, cnum: 40 },{ fname: "", lnum: 3, bol: 30, cnum: 42 } span=(40, 42)
            Some("op") Syntax_Token("..") loc={ fname: "", lnum: 3, bol: 30, cnum: 40 },{ fname: "", lnum: 3, bol: 30, cnum: 42 } span=(40, 42)
              Some("operator") Operator_Infix loc={ fname: "", lnum: 3, bol: 30, cnum: 40 },{ fname: "", lnum: 3, bol: 30, cnum: 42 } span=(40, 42)
                Some("payload") Leaf(String("..")) loc={ fname: "", lnum: 3, bol: 30, cnum: 40 },{ fname: "", lnum: 3, bol: 30, cnum: 42 } span=(40, 42)
          Some("close") Syntax_Token("}") loc={ fname: "", lnum: 3, bol: 30, cnum: 43 },{ fname: "", lnum: 3, bol: 30, cnum: 44 } span=(43, 44)
        Some("openness") Openness_Open loc={ fname: "", lnum: 3, bol: 30, cnum: 44 },{ fname: "", lnum: 3, bol: 30, cnum: 44 } span=(44, 44)
      Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 3, bol: 30, cnum: 45 },{ fname: "", lnum: 3, bol: 30, cnum: 47 } span=(45, 47)
      Some("body") Expr_Constant loc={ fname: "", lnum: 3, bol: 30, cnum: 48 },{ fname: "", lnum: 3, bol: 30, cnum: 49 } span=(48, 49)
        Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 3, bol: 30, cnum: 48 },{ fname: "", lnum: 3, bol: 30, cnum: 49 } span=(48, 49)
          Some("constant") Constant_Int loc={ fname: "", lnum: 3, bol: 30, cnum: 48 },{ fname: "", lnum: 3, bol: 30, cnum: 49 } span=(48, 49)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 3, bol: 30, cnum: 48 },{ fname: "", lnum: 3, bol: 30, cnum: 49 } span=(48, 49)
          Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 3, bol: 30, cnum: 48 },{ fname: "", lnum: 3, bol: 30, cnum: 49 } span=(48, 49)
        Some("constant") Constant_Int loc={ fname: "", lnum: 3, bol: 30, cnum: 48 },{ fname: "", lnum: 3, bol: 30, cnum: 49 } span=(48, 49)
          Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 3, bol: 30, cnum: 48 },{ fname: "", lnum: 3, bol: 30, cnum: 49 } span=(48, 49)
        Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 3, bol: 30, cnum: 48 },{ fname: "", lnum: 3, bol: 30, cnum: 49 } span=(48, 49)
          Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 3, bol: 30, cnum: 48 },{ fname: "", lnum: 3, bol: 30, cnum: 49 } span=(48, 49)
    Some("close") Syntax_Token("}") loc={ fname: "", lnum: 3, bol: 30, cnum: 50 },{ fname: "", lnum: 3, bol: 30, cnum: 51 } span=(50, 51)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 3, bol: 30, cnum: 51 },{ fname: "", lnum: 3, bol: 30, cnum: 51 } span=(51, 51)
[]
SOURCE "f(x~, y?, z=)"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(0, 13)
  Some("expr") Expr_Apply loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(0, 13)
    Some("func") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 1 } span=(0, 1)
      Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 1 } span=(0, 1)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 1 } span=(0, 1)
          Some("payload") Leaf(String("f")) loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 1 } span=(0, 1)
        Some("payload") Leaf(String("f")) loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 1 } span=(0, 1)
      Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 1 } span=(0, 1)
        Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 1 } span=(0, 1)
          Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 1 } span=(0, 1)
            Some("payload") Leaf(String("f")) loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 1 } span=(0, 1)
    Some("arg") List_ArgumentList loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(1, 13)
      Some("open") Syntax_Token("(") loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
      Some("item") Argument_LabelledPun loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 4 } span=(2, 4)
        Some("name") Syntax_Token("POST_LABEL") loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 4 } span=(2, 4)
          Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(2, 3)
            Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(2, 3)
          Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 4 } span=(2, 4)
        Some("semantic_name") Name_Label loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 4 } span=(2, 4)
          Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 4 } span=(2, 4)
            Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(2, 3)
              Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(2, 3)
        Some("pun") Flag_Pun loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 4 } span=(4, 4)
          Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 4 } span=(4, 4)
        Some("expr") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(2, 3)
          Some("name") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(2, 3)
            Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(2, 3)
          Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(2, 3)
            Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(2, 3)
              Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(2, 3)
                Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(2, 3)
      Some("sep") Syntax_Token(",") loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(4, 5)
        Some("trailing") TrailingMark_Comma loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 4 } span=(4, 4)
      Some("item") Argument_LabelledOptionPun loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(6, 8)
        Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
          Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
            Some("payload") Leaf(String("y")) loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
          Some("payload") Leaf(String("y")) loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
        Some("op") Syntax_Token("?") loc={ fname: "", lnum: 1, bol: 0, cnum: 7 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(7, 8)
          Some("operator") Operator_Infix loc={ fname: "", lnum: 1, bol: 0, cnum: 7 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(7, 8)
            Some("payload") Leaf(String("?")) loc={ fname: "", lnum: 1, bol: 0, cnum: 7 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(7, 8)
        Some("semantic_name") Name_Label loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
          Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
            Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
              Some("payload") Leaf(String("y")) loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
        Some("pun") Flag_Pun loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(8, 8)
          Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(8, 8)
        Some("expr") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
          Some("name") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
            Some("payload") Leaf(String("y")) loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
          Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
            Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
              Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
                Some("payload") Leaf(String("y")) loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
      Some("sep") Syntax_Token(",") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("trailing") TrailingMark_Comma loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(8, 8)
      Some("item") Argument_Labelled loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 12 } span=(10, 12)
        Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
          Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
            Some("payload") Leaf(String("z")) loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
          Some("payload") Leaf(String("z")) loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
        Some("op") Syntax_Token("=") loc={ fname: "", lnum: 1, bol: 0, cnum: 11 },{ fname: "", lnum: 1, bol: 0, cnum: 12 } span=(11, 12)
          Some("operator") Operator_Infix loc={ fname: "", lnum: 1, bol: 0, cnum: 11 },{ fname: "", lnum: 1, bol: 0, cnum: 12 } span=(11, 12)
            Some("payload") Leaf(String("=")) loc={ fname: "", lnum: 1, bol: 0, cnum: 11 },{ fname: "", lnum: 1, bol: 0, cnum: 12 } span=(11, 12)
        Some("expr") Expr_MissingExpr loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 12 } span=(12, 12)
        Some("semantic_name") Name_Label loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
          Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
            Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
              Some("payload") Leaf(String("z")) loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
        Some("pun") Flag_Pun loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 12 } span=(12, 12)
          Some("payload") Leaf(Bool(false)) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 12 } span=(12, 12)
      Some("close") Syntax_Token(")") loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(12, 13)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 13 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(13, 13)
[{"type":"Error","loc":{"file":"","start":{"line":1,"column":13},"end":{"line":1,"column":14}},"msg":"Unexpected token `)`, you may expect simple expression."}]
SOURCE "try f() catch { _ => }"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 22 } span=(0, 22)
  Some("expr") Expr_Try loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 22 } span=(0, 22)
    Some("kw") Syntax_Token("try") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(0, 3)
    Some("body") Expr_Apply loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(4, 7)
      Some("func") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(4, 5)
        Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(4, 5)
          Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(4, 5)
            Some("payload") Leaf(String("f")) loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(4, 5)
          Some("payload") Leaf(String("f")) loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(4, 5)
        Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(4, 5)
          Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(4, 5)
            Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(4, 5)
              Some("payload") Leaf(String("f")) loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(4, 5)
      Some("arg") List_ArgumentList loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(5, 7)
        Some("open") Syntax_Token("(") loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
        Some("close") Syntax_Token(")") loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
    Some("kw") Syntax_Token("catch") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(8, 13)
    Some("case") List_MatchCaseList loc={ fname: "", lnum: 1, bol: 0, cnum: 14 },{ fname: "", lnum: 1, bol: 0, cnum: 22 } span=(14, 22)
      Some("open") Syntax_Token("{") loc={ fname: "", lnum: 1, bol: 0, cnum: 14 },{ fname: "", lnum: 1, bol: 0, cnum: 15 } span=(14, 15)
      Some("case") Case_MatchCase loc={ fname: "", lnum: 1, bol: 0, cnum: 16 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(16, 21)
        Some("pattern") Pattern_Any loc={ fname: "", lnum: 1, bol: 0, cnum: 16 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(16, 17)
          Some("name") Syntax_Token("_") loc={ fname: "", lnum: 1, bol: 0, cnum: 16 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(16, 17)
            Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 16 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(16, 17)
              Some("payload") Leaf(String("_")) loc={ fname: "", lnum: 1, bol: 0, cnum: 16 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(16, 17)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(18, 20)
        Some("body") Expr_MissingExpr loc={ fname: "", lnum: 1, bol: 0, cnum: 21 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(21, 21)
      Some("close") Syntax_Token("}") loc={ fname: "", lnum: 1, bol: 0, cnum: 21 },{ fname: "", lnum: 1, bol: 0, cnum: 22 } span=(21, 22)
    Some("has_try") Flag_HasTry loc={ fname: "", lnum: 1, bol: 0, cnum: 22 },{ fname: "", lnum: 1, bol: 0, cnum: 22 } span=(22, 22)
      Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 1, bol: 0, cnum: 22 },{ fname: "", lnum: 1, bol: 0, cnum: 22 } span=(22, 22)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 22 },{ fname: "", lnum: 1, bol: 0, cnum: 22 } span=(22, 22)
[{"type":"Error","loc":{"file":"","start":{"line":1,"column":22},"end":{"line":1,"column":23}},"msg":"Unexpected token `}`, you may expect simple expression."}]
SOURCE "async fn {"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 10 } span=(0, 10)
  Some("expr") Expr_Function loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 10 } span=(0, 10)
    Some("kw") Syntax_Token("async") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(0, 5)
      Some("flag") Flag_Async loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 0 } span=(0, 0)
        Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 0 } span=(0, 0)
    Some("kw") Syntax_Token("fn") loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(6, 8)
    Some("error") Error loc={ fname: "", lnum: 1, bol: 0, cnum: 9 },{ fname: "", lnum: 1, bol: 0, cnum: 10 } span=(9, 10)
      Some("item") Syntax_Unexpected("{") loc={ fname: "", lnum: 1, bol: 0, cnum: 9 },{ fname: "", lnum: 1, bol: 0, cnum: 10 } span=(9, 10)
    Some("async") Flag_Async loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 10 } span=(10, 10)
      Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 10 } span=(10, 10)
    Some("fn_kind") FnKind_Lambda loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 10 } span=(10, 10)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 10 } span=(10, 10)
[{"type":"Error","loc":{"file":"","start":{"line":1,"column":10},"end":{"line":1,"column":11}},"msg":"Failed to parse func: expected '(' or '{', got LBRACE"}]
SOURCE "// 🐇\nx +\n\nlet"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 4, bol: 10, cnum: 13 } span=(0, 14)
  Some("expr") Expr_Infix loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 4, bol: 10, cnum: 13 } span=(6, 14)
    Some("lhs") Expr_Ident loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 6 } span=(6, 7)
      Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 6 } span=(6, 7)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 6 } span=(6, 7)
          Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 6 } span=(6, 7)
        Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 6 } span=(6, 7)
      Some("semantic_name") Name_Var loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 6 } span=(6, 7)
        Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 6 } span=(6, 7)
          Some("component") Name_Identifier loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 6 } span=(6, 7)
            Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 6 } span=(6, 7)
    Some("op") Syntax_Token("+") loc={ fname: "", lnum: 2, bol: 5, cnum: 7 },{ fname: "", lnum: 2, bol: 5, cnum: 8 } span=(8, 9)
      Some("operator") Operator_Infix loc={ fname: "", lnum: 2, bol: 5, cnum: 7 },{ fname: "", lnum: 2, bol: 5, cnum: 8 } span=(8, 9)
        Some("payload") Leaf(String("+")) loc={ fname: "", lnum: 2, bol: 5, cnum: 7 },{ fname: "", lnum: 2, bol: 5, cnum: 8 } span=(8, 9)
    Some("operator") Operator_Infix loc={ fname: "", lnum: 2, bol: 5, cnum: 7 },{ fname: "", lnum: 2, bol: 5, cnum: 8 } span=(8, 9)
      Some("payload") Leaf(String("+")) loc={ fname: "", lnum: 2, bol: 5, cnum: 7 },{ fname: "", lnum: 2, bol: 5, cnum: 8 } span=(8, 9)
    Some("rhs") Expr_MissingExpr loc={ fname: "", lnum: 2, bol: 5, cnum: 8 },{ fname: "", lnum: 4, bol: 10, cnum: 13 } span=(9, 14)
      Some("trivia") Syntax_Token("NEWLINE") loc={ fname: "", lnum: 2, bol: 5, cnum: 8 },{ fname: "", lnum: 2, bol: 5, cnum: 9 } span=(9, 10)
      Some("trivia") Syntax_Token("NEWLINE") loc={ fname: "", lnum: 3, bol: 9, cnum: 9 },{ fname: "", lnum: 3, bol: 9, cnum: 10 } span=(10, 11)
      Some("expr") Expr_MissingExpr loc={ fname: "", lnum: 4, bol: 10, cnum: 10 },{ fname: "", lnum: 4, bol: 10, cnum: 13 } span=(11, 14)
        Some("error") Error loc={ fname: "", lnum: 4, bol: 10, cnum: 10 },{ fname: "", lnum: 4, bol: 10, cnum: 13 } span=(11, 14)
          Some("item") Syntax_Unexpected("let") loc={ fname: "", lnum: 4, bol: 10, cnum: 10 },{ fname: "", lnum: 4, bol: 10, cnum: 13 } span=(11, 14)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 4, bol: 10, cnum: 13 },{ fname: "", lnum: 4, bol: 10, cnum: 13 } span=(14, 14)
[{"type":"Error","loc":{"file":"","start":{"line":4,"column":1},"end":{"line":4,"column":4}},"msg":"Unexpected token `let`, you may expect simple expression."}]
SOURCE "{ \"k\": }"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(0, 8)
  Some("expr") Expr_Map loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(0, 8)
    Some("body") List_MapFieldList loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(0, 8)
      Some("open") Syntax_Token("{") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 1 } span=(0, 1)
      Some("item") Field_MapExpression loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(2, 6)
        Some("key") Syntax_Token("STRING") loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(2, 5)
          Some("constant") Constant_String loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(2, 5)
            Some("payload") Leaf(String("k")) loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(2, 5)
          Some("payload") Leaf(String("k")) loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(2, 5)
        Some("constant") Constant_String loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(2, 5)
          Some("payload") Leaf(String("k")) loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(2, 5)
        Some("op") Syntax_Token(":") loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
        Some("semantic_constant") Constant_String loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(2, 5)
          Some("payload") Leaf(String("k")) loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(2, 5)
      Some("close") Syntax_Token("}") loc={ fname: "", lnum: 1, bol: 0, cnum: 7 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(7, 8)
      Some("trailing") TrailingMark_None loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(8, 8)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(8, 8)
[]
