SOURCE "lexscan s { name => 0; _ => 1; ... }"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(0, 36)
  Some("expr") Expr_LexScan loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(0, 36)
    Some("kw") Syntax_Token("lexscan") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(0, 7)
    Some("expr") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
            Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
    Some("case") List_LexScanCaseList loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(10, 36)
      Some("open") Syntax_Token("{") loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(12, 21)
        Some("pattern") Pattern_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
          Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
            Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
              Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
            Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
          Some("semantic_name") Name_Binder loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
            Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
              Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
                Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
          Some("lex_scan_case_pattern") LexScanCasePattern_Binder loc={ fname: "", lnum: 1, bol: 0, cnum: 16 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(16, 16)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 17 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(17, 19)
        Some("body") Expr_Constant loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(20, 21)
          Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(20, 21)
            Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(20, 21)
              Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(20, 21)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(20, 21)
          Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(20, 21)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(20, 21)
          Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(20, 21)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(20, 21)
      Some("sep") Syntax_Token("SEMI") loc={ fname: "", lnum: 1, bol: 0, cnum: 21 },{ fname: "", lnum: 1, bol: 0, cnum: 22 } span=(21, 22)
        Some("trailing") TrailingMark_Semi loc={ fname: "", lnum: 1, bol: 0, cnum: 21 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(21, 21)
        Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 1, bol: 0, cnum: 21 },{ fname: "", lnum: 1, bol: 0, cnum: 22 } span=(21, 22)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 1, bol: 0, cnum: 23 },{ fname: "", lnum: 1, bol: 0, cnum: 29 } span=(23, 29)
        Some("pattern") Pattern_Any loc={ fname: "", lnum: 1, bol: 0, cnum: 23 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(23, 24)
          Some("name") Syntax_Token("_") loc={ fname: "", lnum: 1, bol: 0, cnum: 23 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(23, 24)
            Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 23 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(23, 24)
              Some("payload") Leaf(String("_")) loc={ fname: "", lnum: 1, bol: 0, cnum: 23 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(23, 24)
          Some("lex_scan_case_pattern") LexScanCasePattern_Wildcard loc={ fname: "", lnum: 1, bol: 0, cnum: 24 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(24, 24)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 27 } span=(25, 27)
        Some("body") Expr_Constant loc={ fname: "", lnum: 1, bol: 0, cnum: 28 },{ fname: "", lnum: 1, bol: 0, cnum: 29 } span=(28, 29)
          Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 1, bol: 0, cnum: 28 },{ fname: "", lnum: 1, bol: 0, cnum: 29 } span=(28, 29)
            Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 28 },{ fname: "", lnum: 1, bol: 0, cnum: 29 } span=(28, 29)
              Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 28 },{ fname: "", lnum: 1, bol: 0, cnum: 29 } span=(28, 29)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 28 },{ fname: "", lnum: 1, bol: 0, cnum: 29 } span=(28, 29)
          Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 28 },{ fname: "", lnum: 1, bol: 0, cnum: 29 } span=(28, 29)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 28 },{ fname: "", lnum: 1, bol: 0, cnum: 29 } span=(28, 29)
          Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 28 },{ fname: "", lnum: 1, bol: 0, cnum: 29 } span=(28, 29)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 28 },{ fname: "", lnum: 1, bol: 0, cnum: 29 } span=(28, 29)
      Some("sep") Syntax_Token("SEMI") loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
        Some("trailing") TrailingMark_Semi loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 29 } span=(29, 29)
        Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 1, bol: 0, cnum: 31 },{ fname: "", lnum: 1, bol: 0, cnum: 34 } span=(31, 34)
        Some("pattern") Pattern_MissingPattern loc={ fname: "", lnum: 1, bol: 0, cnum: 31 },{ fname: "", lnum: 1, bol: 0, cnum: 34 } span=(31, 34)
          Some("token") Syntax_Token("...") loc={ fname: "", lnum: 1, bol: 0, cnum: 31 },{ fname: "", lnum: 1, bol: 0, cnum: 34 } span=(31, 34)
          Some("lex_scan_case_pattern") LexScanCasePattern_Wildcard loc={ fname: "", lnum: 1, bol: 0, cnum: 34 },{ fname: "", lnum: 1, bol: 0, cnum: 34 } span=(34, 34)
        Some("op") Syntax_Token("...") loc={ fname: "", lnum: 1, bol: 0, cnum: 31 },{ fname: "", lnum: 1, bol: 0, cnum: 34 } span=(31, 34)
        Some("body") Expr_Hole loc={ fname: "", lnum: 1, bol: 0, cnum: 31 },{ fname: "", lnum: 1, bol: 0, cnum: 34 } span=(31, 34)
          Some("token") Syntax_Token("...") loc={ fname: "", lnum: 1, bol: 0, cnum: 31 },{ fname: "", lnum: 1, bol: 0, cnum: 34 } span=(31, 34)
          Some("hole_kind") HoleKind_Todo loc={ fname: "", lnum: 1, bol: 0, cnum: 34 },{ fname: "", lnum: 1, bol: 0, cnum: 34 } span=(34, 34)
      Some("close") Syntax_Token("}") loc={ fname: "", lnum: 1, bol: 0, cnum: 35 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(35, 36)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 36 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(36, 36)
[]
SOURCE "lexscan s { re\"a\" + re\"b\" => 0; re\"a\" | re\"b\" => 1 }"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 52 } span=(0, 52)
  Some("expr") Expr_LexScan loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 52 } span=(0, 52)
    Some("kw") Syntax_Token("lexscan") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(0, 7)
    Some("expr") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
            Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
    Some("case") List_LexScanCaseList loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 52 } span=(10, 52)
      Some("open") Syntax_Token("{") loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(12, 30)
        Some("pattern") RegexPattern_Sequence loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(12, 25)
          Some("lhs") RegexPattern_Literal loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
            Some("token") Syntax_Token("REGEX_LITERAL") loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
              Some("constant") Constant_Regex loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
                Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
              Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
            Some("lex_literal") LexLiteral_Regex loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
              Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
          Some("op") Syntax_Token("+") loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
            Some("operator") Operator_Infix loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
              Some("payload") Leaf(String("+")) loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
          Some("rhs") RegexPattern_Literal loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(20, 25)
            Some("token") Syntax_Token("REGEX_LITERAL") loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(20, 25)
              Some("constant") Constant_Regex loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(20, 25)
                Some("payload") Leaf(String("b")) loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(20, 25)
              Some("payload") Leaf(String("b")) loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(20, 25)
            Some("lex_literal") LexLiteral_Regex loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(20, 25)
              Some("payload") Leaf(String("b")) loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(20, 25)
          Some("lex_scan_case_pattern") LexScanCasePattern_Pattern loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(25, 25)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 26 },{ fname: "", lnum: 1, bol: 0, cnum: 28 } span=(26, 28)
        Some("body") Expr_Constant loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
          Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
            Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
              Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
          Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
          Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
      Some("sep") Syntax_Token("SEMI") loc={ fname: "", lnum: 1, bol: 0, cnum: 30 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(30, 31)
        Some("trailing") TrailingMark_Semi loc={ fname: "", lnum: 1, bol: 0, cnum: 30 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(30, 30)
        Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 1, bol: 0, cnum: 30 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(30, 31)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(32, 50)
        Some("pattern") RegexPattern_Alternation loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(32, 45)
          Some("lhs") RegexPattern_Literal loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(32, 37)
            Some("token") Syntax_Token("REGEX_LITERAL") loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(32, 37)
              Some("constant") Constant_Regex loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(32, 37)
                Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(32, 37)
              Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(32, 37)
            Some("lex_literal") LexLiteral_Regex loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(32, 37)
              Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(32, 37)
          Some("op") Syntax_Token("|") loc={ fname: "", lnum: 1, bol: 0, cnum: 38 },{ fname: "", lnum: 1, bol: 0, cnum: 39 } span=(38, 39)
            Some("operator") Operator_Infix loc={ fname: "", lnum: 1, bol: 0, cnum: 38 },{ fname: "", lnum: 1, bol: 0, cnum: 39 } span=(38, 39)
              Some("payload") Leaf(String("|")) loc={ fname: "", lnum: 1, bol: 0, cnum: 38 },{ fname: "", lnum: 1, bol: 0, cnum: 39 } span=(38, 39)
          Some("rhs") RegexPattern_Literal loc={ fname: "", lnum: 1, bol: 0, cnum: 40 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(40, 45)
            Some("token") Syntax_Token("REGEX_LITERAL") loc={ fname: "", lnum: 1, bol: 0, cnum: 40 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(40, 45)
              Some("constant") Constant_Regex loc={ fname: "", lnum: 1, bol: 0, cnum: 40 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(40, 45)
                Some("payload") Leaf(String("b")) loc={ fname: "", lnum: 1, bol: 0, cnum: 40 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(40, 45)
              Some("payload") Leaf(String("b")) loc={ fname: "", lnum: 1, bol: 0, cnum: 40 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(40, 45)
            Some("lex_literal") LexLiteral_Regex loc={ fname: "", lnum: 1, bol: 0, cnum: 40 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(40, 45)
              Some("payload") Leaf(String("b")) loc={ fname: "", lnum: 1, bol: 0, cnum: 40 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(40, 45)
          Some("lex_scan_case_pattern") LexScanCasePattern_Pattern loc={ fname: "", lnum: 1, bol: 0, cnum: 45 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(45, 45)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 46 },{ fname: "", lnum: 1, bol: 0, cnum: 48 } span=(46, 48)
        Some("body") Expr_Constant loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
          Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
            Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
              Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
          Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
          Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
      Some("close") Syntax_Token("}") loc={ fname: "", lnum: 1, bol: 0, cnum: 51 },{ fname: "", lnum: 1, bol: 0, cnum: 52 } span=(51, 52)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 52 },{ fname: "", lnum: 1, bol: 0, cnum: 52 } span=(52, 52)
[]
SOURCE "lexscan s { re\"a\" as name => 0; @pkg.pattern => 1 }"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 51 } span=(0, 51)
  Some("expr") Expr_LexScan loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 51 } span=(0, 51)
    Some("kw") Syntax_Token("lexscan") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(0, 7)
    Some("expr") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
            Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
    Some("case") List_LexScanCaseList loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 51 } span=(10, 51)
      Some("open") Syntax_Token("{") loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(12, 30)
        Some("pattern") RegexPattern_Alias loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(12, 25)
          Some("pattern") RegexPattern_Literal loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
            Some("token") Syntax_Token("REGEX_LITERAL") loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
              Some("constant") Constant_Regex loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
                Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
              Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
            Some("lex_literal") LexLiteral_Regex loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
              Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 17 } span=(12, 17)
          Some("kw") Syntax_Token("as") loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(18, 20)
          Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 21 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(21, 25)
            Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 21 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(21, 25)
              Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 21 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(21, 25)
            Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 21 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(21, 25)
          Some("lex_scan_case_pattern") LexScanCasePattern_Pattern loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(25, 25)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 26 },{ fname: "", lnum: 1, bol: 0, cnum: 28 } span=(26, 28)
        Some("body") Expr_Constant loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
          Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
            Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
              Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
          Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
          Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
      Some("sep") Syntax_Token("SEMI") loc={ fname: "", lnum: 1, bol: 0, cnum: 30 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(30, 31)
        Some("trailing") TrailingMark_Semi loc={ fname: "", lnum: 1, bol: 0, cnum: 30 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(30, 30)
        Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 1, bol: 0, cnum: 30 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(30, 31)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 49 } span=(32, 49)
        Some("pattern") RegexPattern_Reference loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(32, 44)
          Some("name") Syntax_Token("PACKAGE_NAME") loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
            Some("name_value") Name_Package loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
              Some("payload") Leaf(String("pkg")) loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
            Some("payload") Leaf(String("pkg")) loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
          Some("name") Syntax_Token("DOT_LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 37 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(37, 44)
            Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 37 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(37, 44)
              Some("payload") Leaf(String("pattern")) loc={ fname: "", lnum: 1, bol: 0, cnum: 37 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(37, 44)
            Some("accessor") Accessor_Label loc={ fname: "", lnum: 1, bol: 0, cnum: 37 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(37, 44)
              Some("payload") Leaf(String("pattern")) loc={ fname: "", lnum: 1, bol: 0, cnum: 37 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(37, 44)
            Some("payload") Leaf(String("pattern")) loc={ fname: "", lnum: 1, bol: 0, cnum: 37 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(37, 44)
          Some("semantic_name") LongIdent_Dot loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(32, 44)
            Some("component") Name_Package loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
              Some("payload") Leaf(String("pkg")) loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
            Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 37 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(37, 44)
              Some("payload") Leaf(String("pattern")) loc={ fname: "", lnum: 1, bol: 0, cnum: 37 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(37, 44)
          Some("lex_scan_case_pattern") LexScanCasePattern_Pattern loc={ fname: "", lnum: 1, bol: 0, cnum: 44 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(44, 44)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 45 },{ fname: "", lnum: 1, bol: 0, cnum: 47 } span=(45, 47)
        Some("body") Expr_Constant loc={ fname: "", lnum: 1, bol: 0, cnum: 48 },{ fname: "", lnum: 1, bol: 0, cnum: 49 } span=(48, 49)
          Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 1, bol: 0, cnum: 48 },{ fname: "", lnum: 1, bol: 0, cnum: 49 } span=(48, 49)
            Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 48 },{ fname: "", lnum: 1, bol: 0, cnum: 49 } span=(48, 49)
              Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 48 },{ fname: "", lnum: 1, bol: 0, cnum: 49 } span=(48, 49)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 48 },{ fname: "", lnum: 1, bol: 0, cnum: 49 } span=(48, 49)
          Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 48 },{ fname: "", lnum: 1, bol: 0, cnum: 49 } span=(48, 49)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 48 },{ fname: "", lnum: 1, bol: 0, cnum: 49 } span=(48, 49)
          Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 48 },{ fname: "", lnum: 1, bol: 0, cnum: 49 } span=(48, 49)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 48 },{ fname: "", lnum: 1, bol: 0, cnum: 49 } span=(48, 49)
      Some("close") Syntax_Token("}") loc={ fname: "", lnum: 1, bol: 0, cnum: 50 },{ fname: "", lnum: 1, bol: 0, cnum: 51 } span=(50, 51)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 51 },{ fname: "", lnum: 1, bol: 0, cnum: 51 } span=(51, 51)
[{"type":"Error","loc":{"file":"","start":{"line":1,"column":38},"end":{"line":1,"column":45}},"msg":"Unexpected lowercase identifier pattern, expected uppercase identifier in qualified upper identifier."}]
SOURCE "lexscan s { (re\"a\", name=value) => 0 }"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 38 } span=(0, 38)
  Some("expr") Expr_LexScan loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 38 } span=(0, 38)
    Some("kw") Syntax_Token("lexscan") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(0, 7)
    Some("expr") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
            Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
    Some("case") List_LexScanCaseList loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 38 } span=(10, 38)
      Some("open") Syntax_Token("{") loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(12, 36)
        Some("pattern") RegexPattern_Placeholder loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(12, 31)
          Some("open") Syntax_Token("(") loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(12, 13)
          Some("pattern") RegexPattern_Literal loc={ fname: "", lnum: 1, bol: 0, cnum: 13 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(13, 18)
            Some("token") Syntax_Token("REGEX_LITERAL") loc={ fname: "", lnum: 1, bol: 0, cnum: 13 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(13, 18)
              Some("constant") Constant_Regex loc={ fname: "", lnum: 1, bol: 0, cnum: 13 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(13, 18)
                Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 1, bol: 0, cnum: 13 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(13, 18)
              Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 1, bol: 0, cnum: 13 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(13, 18)
            Some("lex_literal") LexLiteral_Regex loc={ fname: "", lnum: 1, bol: 0, cnum: 13 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(13, 18)
              Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 1, bol: 0, cnum: 13 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(13, 18)
          Some("bindings") List_RegexBindingList loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(18, 30)
            Some("sep") Syntax_Token(",") loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
              Some("trailing") TrailingMark_Comma loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(18, 18)
            Some("item") Binding_Regex loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(20, 30)
              Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(20, 24)
                Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(20, 24)
                  Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(20, 24)
                Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(20, 24)
              Some("op") Syntax_Token("=") loc={ fname: "", lnum: 1, bol: 0, cnum: 24 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(24, 25)
                Some("operator") Operator_Infix loc={ fname: "", lnum: 1, bol: 0, cnum: 24 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(24, 25)
                  Some("payload") Leaf(String("=")) loc={ fname: "", lnum: 1, bol: 0, cnum: 24 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(24, 25)
              Some("binder") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(25, 30)
                Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(25, 30)
                  Some("payload") Leaf(String("value")) loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(25, 30)
                Some("payload") Leaf(String("value")) loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(25, 30)
              Some("semantic_label") Name_Label loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(20, 24)
                Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(20, 24)
                  Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(20, 24)
                    Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(20, 24)
              Some("semantic_binder") Name_Binder loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(25, 30)
                Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(25, 30)
                  Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(25, 30)
                    Some("payload") Leaf(String("value")) loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(25, 30)
          Some("close") Syntax_Token(")") loc={ fname: "", lnum: 1, bol: 0, cnum: 30 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(30, 31)
          Some("lex_scan_case_pattern") LexScanCasePattern_Pattern loc={ fname: "", lnum: 1, bol: 0, cnum: 31 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(31, 31)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 34 } span=(32, 34)
        Some("body") Expr_Constant loc={ fname: "", lnum: 1, bol: 0, cnum: 35 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(35, 36)
          Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 1, bol: 0, cnum: 35 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(35, 36)
            Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 35 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(35, 36)
              Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 35 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(35, 36)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 35 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(35, 36)
          Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 35 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(35, 36)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 35 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(35, 36)
          Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 35 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(35, 36)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 35 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(35, 36)
      Some("close") Syntax_Token("}") loc={ fname: "", lnum: 1, bol: 0, cnum: 37 },{ fname: "", lnum: 1, bol: 0, cnum: 38 } span=(37, 38)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 38 },{ fname: "", lnum: 1, bol: 0, cnum: 38 } span=(38, 38)
[]
SOURCE "lexscan s { name as alias => 0; name ..< last => 1 }"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 52 } span=(0, 52)
  Some("expr") Expr_LexScan loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 52 } span=(0, 52)
    Some("kw") Syntax_Token("lexscan") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(0, 7)
    Some("expr") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
            Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
    Some("case") List_LexScanCaseList loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 52 } span=(10, 52)
      Some("open") Syntax_Token("{") loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(12, 30)
        Some("pattern") Pattern_Alias loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(12, 25)
          Some("pattern") Pattern_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
            Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
              Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
                Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
              Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
            Some("semantic_name") Name_Binder loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
              Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
                Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
                  Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
          Some("op") Syntax_Token("as") loc={ fname: "", lnum: 1, bol: 0, cnum: 17 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(17, 19)
          Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(20, 25)
            Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(20, 25)
              Some("payload") Leaf(String("alias")) loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(20, 25)
            Some("payload") Leaf(String("alias")) loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(20, 25)
          Some("lex_scan_case_pattern") LexScanCasePattern_Pattern loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(25, 25)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 26 },{ fname: "", lnum: 1, bol: 0, cnum: 28 } span=(26, 28)
        Some("body") Expr_Constant loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
          Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
            Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
              Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
          Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
          Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 29 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(29, 30)
      Some("sep") Syntax_Token("SEMI") loc={ fname: "", lnum: 1, bol: 0, cnum: 30 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(30, 31)
        Some("trailing") TrailingMark_Semi loc={ fname: "", lnum: 1, bol: 0, cnum: 30 },{ fname: "", lnum: 1, bol: 0, cnum: 30 } span=(30, 30)
        Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 1, bol: 0, cnum: 30 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(30, 31)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(32, 50)
        Some("pattern") Pattern_Range loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(32, 45)
          Some("lhs") Pattern_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
            Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
              Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
                Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
              Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
            Some("semantic_name") Name_Binder loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
              Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
                Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
                  Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 36 } span=(32, 36)
          Some("op") Syntax_Token("..<") loc={ fname: "", lnum: 1, bol: 0, cnum: 37 },{ fname: "", lnum: 1, bol: 0, cnum: 40 } span=(37, 40)
            Some("operator") Operator_Infix loc={ fname: "", lnum: 1, bol: 0, cnum: 37 },{ fname: "", lnum: 1, bol: 0, cnum: 40 } span=(37, 40)
              Some("payload") Leaf(String("..<")) loc={ fname: "", lnum: 1, bol: 0, cnum: 37 },{ fname: "", lnum: 1, bol: 0, cnum: 40 } span=(37, 40)
          Some("rhs") Pattern_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(41, 45)
            Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(41, 45)
              Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(41, 45)
                Some("payload") Leaf(String("last")) loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(41, 45)
              Some("payload") Leaf(String("last")) loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(41, 45)
            Some("semantic_name") Name_Binder loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(41, 45)
              Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(41, 45)
                Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(41, 45)
                  Some("payload") Leaf(String("last")) loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(41, 45)
          Some("range_kind") RangeKind_Exclusive loc={ fname: "", lnum: 1, bol: 0, cnum: 45 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(45, 45)
          Some("lex_scan_case_pattern") LexScanCasePattern_Pattern loc={ fname: "", lnum: 1, bol: 0, cnum: 45 },{ fname: "", lnum: 1, bol: 0, cnum: 45 } span=(45, 45)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 46 },{ fname: "", lnum: 1, bol: 0, cnum: 48 } span=(46, 48)
        Some("body") Expr_Constant loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
          Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
            Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
              Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
          Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
          Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 49 },{ fname: "", lnum: 1, bol: 0, cnum: 50 } span=(49, 50)
      Some("close") Syntax_Token("}") loc={ fname: "", lnum: 1, bol: 0, cnum: 51 },{ fname: "", lnum: 1, bol: 0, cnum: 52 } span=(51, 52)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 52 },{ fname: "", lnum: 1, bol: 0, cnum: 52 } span=(52, 52)
[]
SOURCE "lexscan s { name | _ => 0; name : Int => 1 }"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(0, 44)
  Some("expr") Expr_LexScan loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(0, 44)
    Some("kw") Syntax_Token("lexscan") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(0, 7)
    Some("expr") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
            Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
    Some("case") List_LexScanCaseList loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(10, 44)
      Some("open") Syntax_Token("{") loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(12, 25)
        Some("pattern") Pattern_Or loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(12, 20)
          Some("lhs") Pattern_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
            Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
              Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
                Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
              Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
            Some("semantic_name") Name_Binder loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
              Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
                Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
                  Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
          Some("op") Syntax_Token("|") loc={ fname: "", lnum: 1, bol: 0, cnum: 17 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(17, 18)
            Some("operator") Operator_Infix loc={ fname: "", lnum: 1, bol: 0, cnum: 17 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(17, 18)
              Some("payload") Leaf(String("|")) loc={ fname: "", lnum: 1, bol: 0, cnum: 17 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(17, 18)
          Some("rhs") Pattern_Any loc={ fname: "", lnum: 1, bol: 0, cnum: 19 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(19, 20)
            Some("name") Syntax_Token("_") loc={ fname: "", lnum: 1, bol: 0, cnum: 19 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(19, 20)
              Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 19 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(19, 20)
                Some("payload") Leaf(String("_")) loc={ fname: "", lnum: 1, bol: 0, cnum: 19 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(19, 20)
          Some("lex_scan_case_pattern") LexScanCasePattern_Pattern loc={ fname: "", lnum: 1, bol: 0, cnum: 20 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(20, 20)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 21 },{ fname: "", lnum: 1, bol: 0, cnum: 23 } span=(21, 23)
        Some("body") Expr_Constant loc={ fname: "", lnum: 1, bol: 0, cnum: 24 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(24, 25)
          Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 1, bol: 0, cnum: 24 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(24, 25)
            Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 24 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(24, 25)
              Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 24 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(24, 25)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 24 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(24, 25)
          Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 24 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(24, 25)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 24 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(24, 25)
          Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 24 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(24, 25)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 24 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(24, 25)
      Some("sep") Syntax_Token("SEMI") loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 26 } span=(25, 26)
        Some("trailing") TrailingMark_Semi loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 25 } span=(25, 25)
        Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 26 } span=(25, 26)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 1, bol: 0, cnum: 27 },{ fname: "", lnum: 1, bol: 0, cnum: 42 } span=(27, 42)
        Some("pattern") Pattern_Constraint loc={ fname: "", lnum: 1, bol: 0, cnum: 27 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(27, 37)
          Some("pattern") Pattern_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 27 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(27, 31)
            Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 27 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(27, 31)
              Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 27 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(27, 31)
                Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 27 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(27, 31)
              Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 27 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(27, 31)
            Some("semantic_name") Name_Binder loc={ fname: "", lnum: 1, bol: 0, cnum: 27 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(27, 31)
              Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 27 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(27, 31)
                Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 27 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(27, 31)
                  Some("payload") Leaf(String("name")) loc={ fname: "", lnum: 1, bol: 0, cnum: 27 },{ fname: "", lnum: 1, bol: 0, cnum: 31 } span=(27, 31)
          Some("op") Syntax_Token(":") loc={ fname: "", lnum: 1, bol: 0, cnum: 32 },{ fname: "", lnum: 1, bol: 0, cnum: 33 } span=(32, 33)
          Some("type") Type_Name loc={ fname: "", lnum: 1, bol: 0, cnum: 34 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(34, 37)
            Some("name") Syntax_Token("UIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 34 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(34, 37)
              Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 34 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(34, 37)
                Some("payload") Leaf(String("Int")) loc={ fname: "", lnum: 1, bol: 0, cnum: 34 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(34, 37)
              Some("payload") Leaf(String("Int")) loc={ fname: "", lnum: 1, bol: 0, cnum: 34 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(34, 37)
            Some("semantic_name") Name_ConstrId loc={ fname: "", lnum: 1, bol: 0, cnum: 34 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(34, 37)
              Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 34 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(34, 37)
                Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 34 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(34, 37)
                  Some("payload") Leaf(String("Int")) loc={ fname: "", lnum: 1, bol: 0, cnum: 34 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(34, 37)
          Some("lex_scan_case_pattern") LexScanCasePattern_Pattern loc={ fname: "", lnum: 1, bol: 0, cnum: 37 },{ fname: "", lnum: 1, bol: 0, cnum: 37 } span=(37, 37)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 38 },{ fname: "", lnum: 1, bol: 0, cnum: 40 } span=(38, 40)
        Some("body") Expr_Constant loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 42 } span=(41, 42)
          Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 42 } span=(41, 42)
            Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 42 } span=(41, 42)
              Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 42 } span=(41, 42)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 42 } span=(41, 42)
          Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 42 } span=(41, 42)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 42 } span=(41, 42)
          Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 42 } span=(41, 42)
            Some("payload") Leaf(String("1")) loc={ fname: "", lnum: 1, bol: 0, cnum: 41 },{ fname: "", lnum: 1, bol: 0, cnum: 42 } span=(41, 42)
      Some("close") Syntax_Token("}") loc={ fname: "", lnum: 1, bol: 0, cnum: 43 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(43, 44)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 44 },{ fname: "", lnum: 1, bol: 0, cnum: 44 } span=(44, 44)
[]
SOURCE "// 🐇\nlexscan s { re\"a\" value }"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 2, bol: 5, cnum: 30 } span=(0, 31)
  Some("expr") Expr_LexScan loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 30 } span=(6, 31)
    Some("kw") Syntax_Token("lexscan") loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 12 } span=(6, 13)
    Some("expr") Expr_Ident loc={ fname: "", lnum: 2, bol: 5, cnum: 13 },{ fname: "", lnum: 2, bol: 5, cnum: 14 } span=(14, 15)
      Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 2, bol: 5, cnum: 13 },{ fname: "", lnum: 2, bol: 5, cnum: 14 } span=(14, 15)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 2, bol: 5, cnum: 13 },{ fname: "", lnum: 2, bol: 5, cnum: 14 } span=(14, 15)
          Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 2, bol: 5, cnum: 13 },{ fname: "", lnum: 2, bol: 5, cnum: 14 } span=(14, 15)
        Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 2, bol: 5, cnum: 13 },{ fname: "", lnum: 2, bol: 5, cnum: 14 } span=(14, 15)
      Some("semantic_name") Name_Var loc={ fname: "", lnum: 2, bol: 5, cnum: 13 },{ fname: "", lnum: 2, bol: 5, cnum: 14 } span=(14, 15)
        Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 2, bol: 5, cnum: 13 },{ fname: "", lnum: 2, bol: 5, cnum: 14 } span=(14, 15)
          Some("component") Name_Identifier loc={ fname: "", lnum: 2, bol: 5, cnum: 13 },{ fname: "", lnum: 2, bol: 5, cnum: 14 } span=(14, 15)
            Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 2, bol: 5, cnum: 13 },{ fname: "", lnum: 2, bol: 5, cnum: 14 } span=(14, 15)
    Some("case") List_LexScanCaseList loc={ fname: "", lnum: 2, bol: 5, cnum: 15 },{ fname: "", lnum: 2, bol: 5, cnum: 30 } span=(16, 31)
      Some("open") Syntax_Token("{") loc={ fname: "", lnum: 2, bol: 5, cnum: 15 },{ fname: "", lnum: 2, bol: 5, cnum: 16 } span=(16, 17)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 2, bol: 5, cnum: 17 },{ fname: "", lnum: 2, bol: 5, cnum: 28 } span=(18, 29)
        Some("pattern") RegexPattern_Literal loc={ fname: "", lnum: 2, bol: 5, cnum: 17 },{ fname: "", lnum: 2, bol: 5, cnum: 22 } span=(18, 23)
          Some("token") Syntax_Token("REGEX_LITERAL") loc={ fname: "", lnum: 2, bol: 5, cnum: 17 },{ fname: "", lnum: 2, bol: 5, cnum: 22 } span=(18, 23)
            Some("constant") Constant_Regex loc={ fname: "", lnum: 2, bol: 5, cnum: 17 },{ fname: "", lnum: 2, bol: 5, cnum: 22 } span=(18, 23)
              Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 2, bol: 5, cnum: 17 },{ fname: "", lnum: 2, bol: 5, cnum: 22 } span=(18, 23)
            Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 2, bol: 5, cnum: 17 },{ fname: "", lnum: 2, bol: 5, cnum: 22 } span=(18, 23)
          Some("lex_literal") LexLiteral_Regex loc={ fname: "", lnum: 2, bol: 5, cnum: 17 },{ fname: "", lnum: 2, bol: 5, cnum: 22 } span=(18, 23)
            Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 2, bol: 5, cnum: 17 },{ fname: "", lnum: 2, bol: 5, cnum: 22 } span=(18, 23)
          Some("lex_scan_case_pattern") LexScanCasePattern_Pattern loc={ fname: "", lnum: 2, bol: 5, cnum: 22 },{ fname: "", lnum: 2, bol: 5, cnum: 22 } span=(23, 23)
        Some("op") Missing loc={ fname: "", lnum: 2, bol: 5, cnum: 23 },{ fname: "", lnum: 2, bol: 5, cnum: 23 } span=(24, 24)
        Some("body") Expr_Ident loc={ fname: "", lnum: 2, bol: 5, cnum: 23 },{ fname: "", lnum: 2, bol: 5, cnum: 28 } span=(24, 29)
          Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 2, bol: 5, cnum: 23 },{ fname: "", lnum: 2, bol: 5, cnum: 28 } span=(24, 29)
            Some("name_value") Name_Identifier loc={ fname: "", lnum: 2, bol: 5, cnum: 23 },{ fname: "", lnum: 2, bol: 5, cnum: 28 } span=(24, 29)
              Some("payload") Leaf(String("value")) loc={ fname: "", lnum: 2, bol: 5, cnum: 23 },{ fname: "", lnum: 2, bol: 5, cnum: 28 } span=(24, 29)
            Some("payload") Leaf(String("value")) loc={ fname: "", lnum: 2, bol: 5, cnum: 23 },{ fname: "", lnum: 2, bol: 5, cnum: 28 } span=(24, 29)
          Some("semantic_name") Name_Var loc={ fname: "", lnum: 2, bol: 5, cnum: 23 },{ fname: "", lnum: 2, bol: 5, cnum: 28 } span=(24, 29)
            Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 2, bol: 5, cnum: 23 },{ fname: "", lnum: 2, bol: 5, cnum: 28 } span=(24, 29)
              Some("component") Name_Identifier loc={ fname: "", lnum: 2, bol: 5, cnum: 23 },{ fname: "", lnum: 2, bol: 5, cnum: 28 } span=(24, 29)
                Some("payload") Leaf(String("value")) loc={ fname: "", lnum: 2, bol: 5, cnum: 23 },{ fname: "", lnum: 2, bol: 5, cnum: 28 } span=(24, 29)
      Some("close") Syntax_Token("}") loc={ fname: "", lnum: 2, bol: 5, cnum: 29 },{ fname: "", lnum: 2, bol: 5, cnum: 30 } span=(30, 31)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 2, bol: 5, cnum: 30 },{ fname: "", lnum: 2, bol: 5, cnum: 30 } span=(31, 31)
[{"type":"Error","loc":{"file":"","start":{"line":2,"column":19},"end":{"line":2,"column":24}},"msg":"Unexpected token id (lowercase start), you may expect `=>`."}]
SOURCE "lexscan s { re\"a\\{x}\" => 0 }"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 28 } span=(0, 28)
  Some("expr") Expr_LexScan loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 28 } span=(0, 28)
    Some("kw") Syntax_Token("lexscan") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(0, 7)
    Some("expr") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
      Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
        Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
          Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
            Some("payload") Leaf(String("s")) loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
    Some("case") List_LexScanCaseList loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 28 } span=(10, 28)
      Some("open") Syntax_Token("{") loc={ fname: "", lnum: 1, bol: 0, cnum: 10 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(10, 11)
      Some("case") Case_LexScanCase loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 26 } span=(12, 26)
        Some("pattern") RegexPattern_Literal loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(12, 21)
          Some("error") Error loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(12, 21)
            Some("item") Syntax_Unexpected("REGEX_INTERP") loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(12, 21)
              Some("segment") InterpSegment_Literal loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
                Some("payload") Leaf(String("a")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 16 } span=(12, 16)
              Some("segment") InterpSegment_Source loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
                Some("expr") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
                  Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
                    Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
                      Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
                    Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
                  Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
                    Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
                      Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
                        Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
                Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 18 },{ fname: "", lnum: 1, bol: 0, cnum: 19 } span=(18, 19)
          Some("lex_scan_case_pattern") LexScanCasePattern_Pattern loc={ fname: "", lnum: 1, bol: 0, cnum: 21 },{ fname: "", lnum: 1, bol: 0, cnum: 21 } span=(21, 21)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 22 },{ fname: "", lnum: 1, bol: 0, cnum: 24 } span=(22, 24)
        Some("body") Expr_Constant loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 26 } span=(25, 26)
          Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 26 } span=(25, 26)
            Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 26 } span=(25, 26)
              Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 26 } span=(25, 26)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 26 } span=(25, 26)
          Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 26 } span=(25, 26)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 26 } span=(25, 26)
          Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 26 } span=(25, 26)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 25 },{ fname: "", lnum: 1, bol: 0, cnum: 26 } span=(25, 26)
      Some("close") Syntax_Token("}") loc={ fname: "", lnum: 1, bol: 0, cnum: 27 },{ fname: "", lnum: 1, bol: 0, cnum: 28 } span=(27, 28)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 28 },{ fname: "", lnum: 1, bol: 0, cnum: 28 } span=(28, 28)
[{"type":"Error","loc":{"file":"","start":{"line":1,"column":13},"end":{"line":1,"column":22}},"msg":"Unexpected token regex interp, you may expect regex pattern."}]
SOURCE "(x~, y?)"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(0, 8)
  Some("expr") Expr_Tuple loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(0, 8)
    Some("body") List_TupleElementList 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") Argument_LabelledPun loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(1, 3)
        Some("name") Syntax_Token("POST_LABEL") loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(1, 3)
          Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
            Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
          Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(1, 3)
        Some("semantic_name") Name_Label loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(1, 3)
          Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(1, 3)
            Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
              Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
        Some("pun") Flag_Pun loc={ fname: "", lnum: 1, bol: 0, cnum: 3 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(3, 3)
          Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 1, bol: 0, cnum: 3 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(3, 3)
      Some("sep") Syntax_Token(",") loc={ fname: "", lnum: 1, bol: 0, cnum: 3 },{ fname: "", lnum: 1, bol: 0, cnum: 4 } span=(3, 4)
        Some("trailing") TrailingMark_Comma loc={ fname: "", lnum: 1, bol: 0, cnum: 3 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(3, 3)
      Some("item") Argument_LabelledOptionPun loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(5, 7)
        Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
          Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
            Some("payload") Leaf(String("y")) loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
          Some("payload") Leaf(String("y")) loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
        Some("op") Syntax_Token("?") loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
          Some("operator") Operator_Infix loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
            Some("payload") Leaf(String("?")) loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
        Some("semantic_name") Name_Label loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
          Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
            Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
              Some("payload") Leaf(String("y")) loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
        Some("pun") Flag_Pun loc={ fname: "", lnum: 1, bol: 0, cnum: 7 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(7, 7)
          Some("payload") Leaf(Bool(true)) loc={ fname: "", lnum: 1, bol: 0, cnum: 7 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(7, 7)
      Some("close") Syntax_Token(")") loc={ fname: "", lnum: 1, bol: 0, cnum: 7 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(7, 8)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(8, 8)
[]
SOURCE "(x~, y?) => x"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(0, 13)
  Some("expr") Expr_Function loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(0, 13)
    Some("params") List_ParameterList 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") Parameter_Labelled loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(1, 3)
        Some("pattern") Pattern_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(1, 3)
          Some("name") Syntax_Token("POST_LABEL") loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(1, 3)
            Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
              Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
            Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(1, 3)
          Some("semantic_name") Name_Binder loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(1, 3)
            Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(1, 3)
              Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
                Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
      Some("sep") Syntax_Token(",") loc={ fname: "", lnum: 1, bol: 0, cnum: 3 },{ fname: "", lnum: 1, bol: 0, cnum: 4 } span=(3, 4)
        Some("trailing") TrailingMark_Comma loc={ fname: "", lnum: 1, bol: 0, cnum: 3 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(3, 3)
      Some("item") Parameter_QuestionOptional loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(5, 7)
        Some("pattern") Pattern_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
          Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
            Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
              Some("payload") Leaf(String("y")) loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
            Some("payload") Leaf(String("y")) loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
          Some("semantic_name") Name_Binder loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
            Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
              Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
                Some("payload") Leaf(String("y")) loc={ fname: "", lnum: 1, bol: 0, cnum: 5 },{ fname: "", lnum: 1, bol: 0, cnum: 6 } span=(5, 6)
        Some("question") Syntax_Token("?") loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
          Some("operator") Operator_Infix loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
            Some("payload") Leaf(String("?")) loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 7 } span=(6, 7)
      Some("close") Syntax_Token(")") loc={ fname: "", lnum: 1, bol: 0, cnum: 7 },{ fname: "", lnum: 1, bol: 0, cnum: 8 } span=(7, 8)
    Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 9 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(9, 11)
    Some("body") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(12, 13)
      Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(12, 13)
        Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(12, 13)
          Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(12, 13)
        Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(12, 13)
      Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(12, 13)
        Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(12, 13)
          Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(12, 13)
            Some("payload") Leaf(String("x")) loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(12, 13)
    Some("async") Flag_Async loc={ fname: "", lnum: 1, bol: 0, cnum: 13 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(13, 13)
      Some("payload") Leaf(Bool(false)) loc={ fname: "", lnum: 1, bol: 0, cnum: 13 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(13, 13)
    Some("fn_kind") FnKind_Arrow loc={ fname: "", lnum: 1, bol: 0, cnum: 13 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(13, 13)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 13 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(13, 13)
[]
SOURCE "f(x~, y?)"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(0, 9)
  Some("expr") Expr_Apply loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(0, 9)
    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: 9 } span=(1, 9)
      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("close") Syntax_Token(")") loc={ fname: "", lnum: 1, bol: 0, cnum: 8 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(8, 9)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 1, bol: 0, cnum: 9 },{ fname: "", lnum: 1, bol: 0, cnum: 9 } span=(9, 9)
[]
SOURCE "// 🐇\ntry! f()"
None Expression loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 2, bol: 5, cnum: 13 } span=(0, 14)
  Some("expr") Expr_TryOperator loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 13 } span=(6, 14)
    Some("kw") Syntax_Token("try!") loc={ fname: "", lnum: 2, bol: 5, cnum: 5 },{ fname: "", lnum: 2, bol: 5, cnum: 9 } span=(6, 10)
    Some("body") Expr_Apply loc={ fname: "", lnum: 2, bol: 5, cnum: 10 },{ fname: "", lnum: 2, bol: 5, cnum: 13 } span=(11, 14)
      Some("func") Expr_Ident loc={ fname: "", lnum: 2, bol: 5, cnum: 10 },{ fname: "", lnum: 2, bol: 5, cnum: 11 } span=(11, 12)
        Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 2, bol: 5, cnum: 10 },{ fname: "", lnum: 2, bol: 5, cnum: 11 } span=(11, 12)
          Some("name_value") Name_Identifier loc={ fname: "", lnum: 2, bol: 5, cnum: 10 },{ fname: "", lnum: 2, bol: 5, cnum: 11 } span=(11, 12)
            Some("payload") Leaf(String("f")) loc={ fname: "", lnum: 2, bol: 5, cnum: 10 },{ fname: "", lnum: 2, bol: 5, cnum: 11 } span=(11, 12)
          Some("payload") Leaf(String("f")) loc={ fname: "", lnum: 2, bol: 5, cnum: 10 },{ fname: "", lnum: 2, bol: 5, cnum: 11 } span=(11, 12)
        Some("semantic_name") Name_Var loc={ fname: "", lnum: 2, bol: 5, cnum: 10 },{ fname: "", lnum: 2, bol: 5, cnum: 11 } span=(11, 12)
          Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 2, bol: 5, cnum: 10 },{ fname: "", lnum: 2, bol: 5, cnum: 11 } span=(11, 12)
            Some("component") Name_Identifier loc={ fname: "", lnum: 2, bol: 5, cnum: 10 },{ fname: "", lnum: 2, bol: 5, cnum: 11 } span=(11, 12)
              Some("payload") Leaf(String("f")) loc={ fname: "", lnum: 2, bol: 5, cnum: 10 },{ fname: "", lnum: 2, bol: 5, cnum: 11 } span=(11, 12)
      Some("arg") List_ArgumentList loc={ fname: "", lnum: 2, bol: 5, cnum: 11 },{ fname: "", lnum: 2, bol: 5, cnum: 13 } span=(12, 14)
        Some("open") Syntax_Token("(") loc={ fname: "", lnum: 2, bol: 5, cnum: 11 },{ fname: "", lnum: 2, bol: 5, cnum: 12 } span=(12, 13)
        Some("close") Syntax_Token(")") loc={ fname: "", lnum: 2, bol: 5, cnum: 12 },{ fname: "", lnum: 2, bol: 5, cnum: 13 } span=(13, 14)
    Some("try_operator_kind") TryOperatorKind_Exclamation loc={ fname: "", lnum: 2, bol: 5, cnum: 13 },{ fname: "", lnum: 2, bol: 5, cnum: 13 } span=(14, 14)
  Some("eof") Syntax_Token("EOF") loc={ fname: "", lnum: 2, bol: 5, cnum: 13 },{ fname: "", lnum: 2, bol: 5, cnum: 13 } span=(14, 14)
[]
SOURCE "(f()) catch { _ => 0 }"
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("body") Expr_Group loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(0, 5)
      Some("body") List_TupleElementList loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(0, 5)
        Some("open") Syntax_Token("(") loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 1 } span=(0, 1)
        Some("item") Expr_Apply loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 4 } span=(1, 4)
          Some("func") Expr_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
            Some("name") Syntax_Token("LIDENT") loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
              Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
                Some("payload") Leaf(String("f")) loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
              Some("payload") Leaf(String("f")) loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
            Some("semantic_name") Name_Var loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
              Some("long_ident") LongIdent_Ident loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
                Some("component") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
                  Some("payload") Leaf(String("f")) loc={ fname: "", lnum: 1, bol: 0, cnum: 1 },{ fname: "", lnum: 1, bol: 0, cnum: 2 } span=(1, 2)
          Some("arg") List_ArgumentList loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 4 } span=(2, 4)
            Some("open") Syntax_Token("(") loc={ fname: "", lnum: 1, bol: 0, cnum: 2 },{ fname: "", lnum: 1, bol: 0, cnum: 3 } span=(2, 3)
            Some("close") Syntax_Token(")") loc={ fname: "", lnum: 1, bol: 0, cnum: 3 },{ fname: "", lnum: 1, bol: 0, cnum: 4 } span=(3, 4)
        Some("close") Syntax_Token(")") loc={ fname: "", lnum: 1, bol: 0, cnum: 4 },{ fname: "", lnum: 1, bol: 0, cnum: 5 } span=(4, 5)
      Some("group") Group_Paren loc={ fname: "", lnum: 1, bol: 0, cnum: 0 },{ fname: "", lnum: 1, bol: 0, cnum: 0 } span=(0, 0)
    Some("kw") Syntax_Token("catch") loc={ fname: "", lnum: 1, bol: 0, cnum: 6 },{ fname: "", lnum: 1, bol: 0, cnum: 11 } span=(6, 11)
    Some("case") List_MatchCaseList loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 22 } span=(12, 22)
      Some("open") Syntax_Token("{") loc={ fname: "", lnum: 1, bol: 0, cnum: 12 },{ fname: "", lnum: 1, bol: 0, cnum: 13 } span=(12, 13)
      Some("case") Case_MatchCase loc={ fname: "", lnum: 1, bol: 0, cnum: 14 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(14, 20)
        Some("pattern") Pattern_Any loc={ fname: "", lnum: 1, bol: 0, cnum: 14 },{ fname: "", lnum: 1, bol: 0, cnum: 15 } span=(14, 15)
          Some("name") Syntax_Token("_") loc={ fname: "", lnum: 1, bol: 0, cnum: 14 },{ fname: "", lnum: 1, bol: 0, cnum: 15 } span=(14, 15)
            Some("name_value") Name_Identifier loc={ fname: "", lnum: 1, bol: 0, cnum: 14 },{ fname: "", lnum: 1, bol: 0, cnum: 15 } span=(14, 15)
              Some("payload") Leaf(String("_")) loc={ fname: "", lnum: 1, bol: 0, cnum: 14 },{ fname: "", lnum: 1, bol: 0, cnum: 15 } span=(14, 15)
        Some("op") Syntax_Token("=>") loc={ fname: "", lnum: 1, bol: 0, cnum: 16 },{ fname: "", lnum: 1, bol: 0, cnum: 18 } span=(16, 18)
        Some("body") Expr_Constant loc={ fname: "", lnum: 1, bol: 0, cnum: 19 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(19, 20)
          Some("token") Syntax_Token("INT") loc={ fname: "", lnum: 1, bol: 0, cnum: 19 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(19, 20)
            Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 19 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(19, 20)
              Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 19 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(19, 20)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 19 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(19, 20)
          Some("constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 19 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(19, 20)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 19 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(19, 20)
          Some("semantic_constant") Constant_Int loc={ fname: "", lnum: 1, bol: 0, cnum: 19 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(19, 20)
            Some("payload") Leaf(String("0")) loc={ fname: "", lnum: 1, bol: 0, cnum: 19 },{ fname: "", lnum: 1, bol: 0, cnum: 20 } span=(19, 20)
      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(false)) 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)
[]
