diff options
Diffstat (limited to 'node.c')
-rw-r--r-- | node.c | 37 |
1 files changed, 37 insertions, 0 deletions
@@ -195,6 +195,14 @@ dump_node(VALUE buf, VALUE indent, int comment, const NODE * node) LAST_NODE; F_NODE(nd_body, "when clauses"); return; + case NODE_CASE3: + ANN("case statement (pattern matching)"); + ANN("format: case [nd_head]; [nd_body]; end"); + ANN("example: case x; in 1; foo; in 2; bar; else baz; end"); + F_NODE(nd_head, "case expr"); + LAST_NODE; + F_NODE(nd_body, "in clauses"); + return; case NODE_WHEN: ANN("when clause"); @@ -206,6 +214,16 @@ dump_node(VALUE buf, VALUE indent, int comment, const NODE * node) F_NODE(nd_next, "next when clause"); return; + case NODE_IN: + ANN("in clause"); + ANN("format: in [nd_head]; [nd_body]; (when or else) [nd_next]"); + ANN("example: case x; in 1; foo; in 2; bar; else baz; end"); + F_NODE(nd_head, "in value"); + F_NODE(nd_body, "in body"); + LAST_NODE; + F_NODE(nd_next, "next in clause"); + return; + case NODE_WHILE: ANN("while statement"); ANN("format: while [nd_cond]; [nd_body]; end"); @@ -1017,6 +1035,25 @@ dump_node(VALUE buf, VALUE indent, int comment, const NODE * node) F_NODE(nd_body, "body"); return; + case NODE_ARYPTN: + ANN("array pattern"); + ANN("format: [nd_pconst]([pre_args], ..., *[rest_arg], [post_args], ...)"); + F_NODE(nd_pconst, "constant"); + F_NODE(nd_apinfo->pre_args, "pre arguments"); + F_NODE(nd_apinfo->rest_arg, "rest argument"); + LAST_NODE; + F_NODE(nd_apinfo->post_args, "post arguments"); + return; + + case NODE_HSHPTN: + ANN("hash pattern"); + ANN("format: [nd_pconst]([nd_pkwargs], ..., **[nd_pkwrestarg])"); + F_NODE(nd_pconst, "constant"); + F_NODE(nd_pkwargs, "keyword arguments"); + LAST_NODE; + F_NODE(nd_pkwrestarg, "keyword rest argument"); + return; + case NODE_ARGS_AUX: case NODE_LAST: break; |