SOURCE_FILE FN FN_KW "fn" WHITESPACE " " NAME IDENT "main" PARAM_LIST L_PAREN "(" R_PAREN ")" WHITESPACE " " BLOCK_EXPR STMT_LIST L_CURLY "{" WHITESPACE "\n " LET_STMT LET_KW "let" WHITESPACE " " TUPLE_PAT L_PAREN "(" IDENT_PAT NAME IDENT "a" COMMA "," WHITESPACE " " IDENT_PAT NAME IDENT "b" COMMA "," WHITESPACE " " REST_PAT DOT2 ".." R_PAREN ")" WHITESPACE " " EQ "=" WHITESPACE " " TUPLE_EXPR L_PAREN "(" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n " LET_STMT LET_KW "let" WHITESPACE " " TUPLE_PAT L_PAREN "(" IDENT_PAT NAME IDENT "a" COMMA "," R_PAREN ")" WHITESPACE " " EQ "=" WHITESPACE " " TUPLE_EXPR L_PAREN "(" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n " LET_STMT LET_KW "let" WHITESPACE " " TUPLE_PAT L_PAREN "(" REST_PAT DOT2 ".." R_PAREN ")" WHITESPACE " " EQ "=" WHITESPACE " " TUPLE_EXPR L_PAREN "(" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n " LET_STMT LET_KW "let" WHITESPACE " " TUPLE_PAT L_PAREN "(" R_PAREN ")" WHITESPACE " " EQ "=" WHITESPACE " " TUPLE_EXPR L_PAREN "(" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n " LET_STMT LET_KW "let" WHITESPACE " " TUPLE_PAT L_PAREN "(" OR_PAT PIPE "|" WHITESPACE " " IDENT_PAT NAME IDENT "a" WHITESPACE " " PIPE "|" WHITESPACE " " IDENT_PAT NAME IDENT "a" COMMA "," WHITESPACE " " OR_PAT PIPE "|" WHITESPACE " " IDENT_PAT NAME IDENT "b" R_PAREN ")" WHITESPACE " " EQ "=" WHITESPACE " " TUPLE_EXPR L_PAREN "(" TUPLE_EXPR L_PAREN "(" R_PAREN ")" COMMA "," TUPLE_EXPR L_PAREN "(" R_PAREN ")" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" R_CURLY "}" WHITESPACE "\n"