Ruby: node.h File Reference

Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)

Data Structures | Macros | Typedefs | Enumerations | Functions
node.h File Reference

Go to the source code of this file.

## Data Structures
struct | rb_code_position_struct
struct | rb_code_location_struct
struct | RNode
struct | rb_ast_body_struct
struct | rb_ast_struct
struct | rb_args_info
struct | rb_ary_pattern_info
struct | rb_fnd_pattern_info

## Macros
#define | RNODE(obj) ((struct RNode *)(obj))
#define | NODE_FL_NEWLINE (((VALUE)1)<<7)
#define | NODE_TYPESHIFT 8
#define | NODE_TYPEMASK (((VALUE)0x7f)<<NODE_TYPESHIFT)
#define | nd_type(n) ((int) (((n)->flags & NODE_TYPEMASK)>>NODE_TYPESHIFT))
#define | nd_set_type(n, t) rb_node_set_type(n, t)
#define | nd_init_type(n, t) (n)->flags=(((n)->flags&~NODE_TYPEMASK)|((((unsigned long)(t))<<NODE_TYPESHIFT)&NODE_TYPEMASK))
#define | NODE_LSHIFT (NODE_TYPESHIFT+7)
#define | NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
#define | nd_line(n) (int)(((SIGNED_VALUE)(n)->flags)>>NODE_LSHIFT)
#define | nd_set_line(n, l) (n)->flags=(((n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))
#define | nd_first_column(n) ((int)((n)->nd_loc.beg_pos.column))
#define | nd_set_first_column(n, v) ((n)->nd_loc.beg_pos.column = (v))
#define | nd_first_lineno(n) ((int)((n)->nd_loc.beg_pos.lineno))
#define | nd_set_first_lineno(n, v) ((n)->nd_loc.beg_pos.lineno = (v))
#define | nd_first_loc(n) ((n)->nd_loc.beg_pos)
#define | nd_set_first_loc(n, v) (nd_first_loc(n) = (v))
#define | nd_last_column(n) ((int)((n)->nd_loc.end_pos.column))
#define | nd_set_last_column(n, v) ((n)->nd_loc.end_pos.column = (v))
#define | nd_last_lineno(n) ((int)((n)->nd_loc.end_pos.lineno))
#define | nd_set_last_lineno(n, v) ((n)->nd_loc.end_pos.lineno = (v))
#define | nd_last_loc(n) ((n)->nd_loc.end_pos)
#define | nd_set_last_loc(n, v) (nd_last_loc(n) = (v))
#define | nd_node_id(n) ((n)->node_id)
#define | nd_set_node_id(n, id) ((n)->node_id = (id))
#define | nd_head u1.node
#define | nd_alen u2.argc
#define | nd_next u3.node
#define | nd_cond u1.node
#define | nd_body u2.node
#define | nd_else u3.node
#define | nd_resq u2.node
#define | nd_ensr u3.node
#define | nd_1st u1.node
#define | nd_2nd u2.node
#define | nd_stts u1.node
#define | nd_entry u3.id
#define | nd_vid u1.id
#define | nd_cflag u2.id
#define | nd_cval u3.value
#define | nd_oid u1.id
#define | nd_tbl u1.tbl
#define | nd_var u1.node
#define | nd_iter u3.node
#define | nd_value u2.node
#define | nd_aid u3.id
#define | nd_lit u1.value
#define | nd_rest u1.id
#define | nd_opt u1.node
#define | nd_pid u1.id
#define | nd_plen u2.argc
#define | nd_recv u1.node
#define | nd_mid u2.id
#define | nd_args u3.node
#define | nd_ainfo u3.args
#define | nd_defn u3.node
#define | nd_cpath u1.node
#define | nd_super u3.node
#define | nd_beg u1.node
#define | nd_end u2.node
#define | nd_state u3.state
#define | nd_rval u2.value
#define | nd_nth u2.argc
#define | nd_tag u1.id
#define | nd_alias u1.id
#define | nd_orig u2.id
#define | nd_undef u2.node
#define | nd_brace u2.argc
#define | nd_pconst u1.node
#define | nd_pkwargs u2.node
#define | nd_pkwrestarg u3.node
#define | nd_apinfo u3.apinfo
#define | nd_fpinfo u3.fpinfo
#define | NEW_NODE(t, a0, a1, a2, loc) rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2),loc)
#define | NEW_NODE_WITH_LOCALS(t, a1, a2, loc) node_newnode_with_locals(p, (t),(VALUE)(a1),(VALUE)(a2),loc)
#define | NEW_DEFN(i, a, d, loc) NEW_NODE(NODE_DEFN,0,i,NEW_SCOPE(a,d,loc),loc)
#define | NEW_DEFS(r, i, a, d, loc) NEW_NODE(NODE_DEFS,r,i,NEW_SCOPE(a,d,loc),loc)
#define | NEW_SCOPE(a, b, loc) NEW_NODE_WITH_LOCALS(NODE_SCOPE,b,a,loc)
#define | NEW_BLOCK(a, loc) NEW_NODE(NODE_BLOCK,a,0,0,loc)
#define | NEW_IF(c, t, e, loc) NEW_NODE(NODE_IF,c,t,e,loc)
#define | NEW_UNLESS(c, t, e, loc) NEW_NODE(NODE_UNLESS,c,t,e,loc)
#define | NEW_CASE(h, b, loc) NEW_NODE(NODE_CASE,h,b,0,loc)
#define | NEW_CASE2(b, loc) NEW_NODE(NODE_CASE2,0,b,0,loc)
#define | NEW_CASE3(h, b, loc) NEW_NODE(NODE_CASE3,h,b,0,loc)
#define | NEW_WHEN(c, t, e, loc) NEW_NODE(NODE_WHEN,c,t,e,loc)
#define | NEW_IN(c, t, e, loc) NEW_NODE(NODE_IN,c,t,e,loc)
#define | NEW_WHILE(c, b, n, loc) NEW_NODE(NODE_WHILE,c,b,n,loc)
#define | NEW_UNTIL(c, b, n, loc) NEW_NODE(NODE_UNTIL,c,b,n,loc)
#define | NEW_FOR(i, b, loc) NEW_NODE(NODE_FOR,0,b,i,loc)
#define | NEW_FOR_MASGN(v, loc) NEW_NODE(NODE_FOR_MASGN,v,0,0,loc)
#define | NEW_ITER(a, b, loc) NEW_NODE(NODE_ITER,0,NEW_SCOPE(a,b,loc),0,loc)
#define | NEW_LAMBDA(a, b, loc) NEW_NODE(NODE_LAMBDA,0,NEW_SCOPE(a,b,loc),0,loc)
#define | NEW_BREAK(s, loc) NEW_NODE(NODE_BREAK,s,0,0,loc)
#define | NEW_NEXT(s, loc) NEW_NODE(NODE_NEXT,s,0,0,loc)
#define | NEW_REDO(loc) NEW_NODE(NODE_REDO,0,0,0,loc)
#define | NEW_RETRY(loc) NEW_NODE(NODE_RETRY,0,0,0,loc)
#define | NEW_BEGIN(b, loc) NEW_NODE(NODE_BEGIN,0,b,0,loc)
#define | NEW_RESCUE(b, res, e, loc) NEW_NODE(NODE_RESCUE,b,res,e,loc)
#define | NEW_RESBODY(a, ex, n, loc) NEW_NODE(NODE_RESBODY,n,ex,a,loc)
#define | NEW_ENSURE(b, en, loc) NEW_NODE(NODE_ENSURE,b,0,en,loc)
#define | NEW_RETURN(s, loc) NEW_NODE(NODE_RETURN,s,0,0,loc)
#define | NEW_YIELD(a, loc) NEW_NODE(NODE_YIELD,a,0,0,loc)
#define | NEW_LIST(a, loc) NEW_NODE(NODE_LIST,a,1,0,loc)
#define | NEW_ZLIST(loc) NEW_NODE(NODE_ZLIST,0,0,0,loc)
#define | NEW_HASH(a, loc) NEW_NODE(NODE_HASH,a,0,0,loc)
#define | NEW_MASGN(l, r, loc) NEW_NODE(NODE_MASGN,l,0,r,loc)
#define | NEW_GASGN(v, val, loc) NEW_NODE(NODE_GASGN,v,val,v,loc)
#define | NEW_LASGN(v, val, loc) NEW_NODE(NODE_LASGN,v,val,0,loc)
#define | NEW_DASGN(v, val, loc) NEW_NODE(NODE_DASGN,v,val,0,loc)
#define | NEW_DASGN_CURR(v, val, loc) NEW_NODE(NODE_DASGN_CURR,v,val,0,loc)
#define | NEW_IASGN(v, val, loc) NEW_NODE(NODE_IASGN,v,val,0,loc)
#define | NEW_CDECL(v, val, path, loc) NEW_NODE(NODE_CDECL,v,val,path,loc)
#define | NEW_CVASGN(v, val, loc) NEW_NODE(NODE_CVASGN,v,val,0,loc)
#define | NEW_OP_ASGN1(p, id, a, loc) NEW_NODE(NODE_OP_ASGN1,p,id,a,loc)
#define | NEW_OP_ASGN2(r, t, i, o, val, loc) NEW_NODE(NODE_OP_ASGN2,r,val,NEW_OP_ASGN22(i,o,t,loc),loc)
#define | NEW_OP_ASGN22(i, o, t, loc) NEW_NODE(NODE_OP_ASGN2,i,o,t,loc)
#define | NEW_OP_ASGN_OR(i, val, loc) NEW_NODE(NODE_OP_ASGN_OR,i,val,0,loc)
#define | NEW_OP_ASGN_AND(i, val, loc) NEW_NODE(NODE_OP_ASGN_AND,i,val,0,loc)
#define | NEW_OP_CDECL(v, op, val, loc) NEW_NODE(NODE_OP_CDECL,v,val,op,loc)
#define | NEW_GVAR(v, loc) NEW_NODE(NODE_GVAR,v,0,v,loc)
#define | NEW_LVAR(v, loc) NEW_NODE(NODE_LVAR,v,0,0,loc)
#define | NEW_DVAR(v, loc) NEW_NODE(NODE_DVAR,v,0,0,loc)
#define | NEW_IVAR(v, loc) NEW_NODE(NODE_IVAR,v,0,0,loc)
#define | NEW_CONST(v, loc) NEW_NODE(NODE_CONST,v,0,0,loc)
#define | NEW_CVAR(v, loc) NEW_NODE(NODE_CVAR,v,0,0,loc)
#define | NEW_NTH_REF(n, loc) NEW_NODE(NODE_NTH_REF,0,n,0,loc)
#define | NEW_BACK_REF(n, loc) NEW_NODE(NODE_BACK_REF,0,n,0,loc)
#define | NEW_MATCH(c, loc) NEW_NODE(NODE_MATCH,c,0,0,loc)
#define | NEW_MATCH2(n1, n2, loc) NEW_NODE(NODE_MATCH2,n1,n2,0,loc)
#define | NEW_MATCH3(r, n2, loc) NEW_NODE(NODE_MATCH3,r,n2,0,loc)
#define | NEW_LIT(l, loc) NEW_NODE(NODE_LIT,l,0,0,loc)
#define | NEW_STR(s, loc) NEW_NODE(NODE_STR,s,0,0,loc)
#define | NEW_DSTR(s, loc) NEW_NODE(NODE_DSTR,s,1,0,loc)
#define | NEW_XSTR(s, loc) NEW_NODE(NODE_XSTR,s,0,0,loc)
#define | NEW_DXSTR(s, loc) NEW_NODE(NODE_DXSTR,s,0,0,loc)
#define | NEW_DSYM(s, loc) NEW_NODE(NODE_DSYM,s,0,0,loc)
#define | NEW_EVSTR(n, loc) NEW_NODE(NODE_EVSTR,0,(n),0,loc)
#define | NEW_CALL(r, m, a, loc) NEW_NODE(NODE_CALL,r,m,a,loc)
#define | NEW_OPCALL(r, m, a, loc) NEW_NODE(NODE_OPCALL,r,m,a,loc)
#define | NEW_FCALL(m, a, loc) NEW_NODE(NODE_FCALL,0,m,a,loc)
#define | NEW_VCALL(m, loc) NEW_NODE(NODE_VCALL,0,m,0,loc)
#define | NEW_SUPER(a, loc) NEW_NODE(NODE_SUPER,0,0,a,loc)
#define | NEW_ZSUPER(loc) NEW_NODE(NODE_ZSUPER,0,0,0,loc)
#define | NEW_ARGS_AUX(r, b, loc) NEW_NODE(NODE_ARGS_AUX,r,b,0,loc)
#define | NEW_OPT_ARG(i, v, loc) NEW_NODE(NODE_OPT_ARG,i,v,0,loc)
#define | NEW_KW_ARG(i, v, loc) NEW_NODE(NODE_KW_ARG,i,v,0,loc)
#define | NEW_POSTARG(i, v, loc) NEW_NODE(NODE_POSTARG,i,v,0,loc)
#define | NEW_ARGSCAT(a, b, loc) NEW_NODE(NODE_ARGSCAT,a,b,0,loc)
#define | NEW_ARGSPUSH(a, b, loc) NEW_NODE(NODE_ARGSPUSH,a,b,0,loc)
#define | NEW_SPLAT(a, loc) NEW_NODE(NODE_SPLAT,a,0,0,loc)
#define | NEW_BLOCK_PASS(b, loc) NEW_NODE(NODE_BLOCK_PASS,0,b,0,loc)
#define | NEW_ALIAS(n, o, loc) NEW_NODE(NODE_ALIAS,n,o,0,loc)
#define | NEW_VALIAS(n, o, loc) NEW_NODE(NODE_VALIAS,n,o,0,loc)
#define | NEW_UNDEF(i, loc) NEW_NODE(NODE_UNDEF,0,i,0,loc)
#define | NEW_CLASS(n, b, s, loc) NEW_NODE(NODE_CLASS,n,NEW_SCOPE(0,b,loc),(s),loc)
#define | NEW_SCLASS(r, b, loc) NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(0,b,loc),0,loc)
#define | NEW_MODULE(n, b, loc) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(0,b,loc),0,loc)
#define | NEW_COLON2(c, i, loc) NEW_NODE(NODE_COLON2,c,i,0,loc)
#define | NEW_COLON3(i, loc) NEW_NODE(NODE_COLON3,0,i,0,loc)
#define | NEW_DOT2(b, e, loc) NEW_NODE(NODE_DOT2,b,e,0,loc)
#define | NEW_DOT3(b, e, loc) NEW_NODE(NODE_DOT3,b,e,0,loc)
#define | NEW_SELF(loc) NEW_NODE(NODE_SELF,0,0,1,loc)
#define | NEW_NIL(loc) NEW_NODE(NODE_NIL,0,0,0,loc)
#define | NEW_TRUE(loc) NEW_NODE(NODE_TRUE,0,0,0,loc)
#define | NEW_FALSE(loc) NEW_NODE(NODE_FALSE,0,0,0,loc)
#define | NEW_ERRINFO(loc) NEW_NODE(NODE_ERRINFO,0,0,0,loc)
#define | NEW_DEFINED(e, loc) NEW_NODE(NODE_DEFINED,e,0,0,loc)
#define | NEW_PREEXE(b, loc) NEW_SCOPE(b,loc)
#define | NEW_POSTEXE(b, loc) NEW_NODE(NODE_POSTEXE,0,b,0,loc)
#define | NEW_ATTRASGN(r, m, a, loc) NEW_NODE(NODE_ATTRASGN,r,m,a,loc)
#define | NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
#define | NODE_REQUIRED_KEYWORD_P(node) ((node)->nd_value == NODE_SPECIAL_REQUIRED_KEYWORD)
#define | NODE_SPECIAL_NO_NAME_REST ((NODE *)-1)
#define | NODE_NAMED_REST_P(node) ((node) != NODE_SPECIAL_NO_NAME_REST)
#define | NODE_SPECIAL_EXCESSIVE_COMMA ((ID)1)
#define | NODE_SPECIAL_NO_REST_KEYWORD ((NODE *)-1)

## Typedefs
typedef struct rb_code_position_struct | rb_code_position_t
typedef struct rb_code_location_struct | rb_code_location_t
typedef struct RNode | NODE
typedef struct node_buffer_struct | node_buffer_t
typedef struct rb_ast_body_struct | rb_ast_body_t
typedef struct rb_ast_struct | rb_ast_t

## Enumerations
enum | node_type { NODE_SCOPE , NODE_BLOCK , NODE_IF , NODE_UNLESS , NODE_CASE , NODE_CASE2 , NODE_CASE3 , NODE_WHEN , NODE_IN , NODE_WHILE , NODE_UNTIL , NODE_ITER , NODE_FOR , NODE_FOR_MASGN , NODE_BREAK , NODE_NEXT , NODE_REDO , NODE_RETRY , NODE_BEGIN , NODE_RESCUE , NODE_RESBODY , NODE_ENSURE , NODE_AND , NODE_OR , NODE_MASGN , NODE_LASGN , NODE_DASGN , NODE_DASGN_CURR , NODE_GASGN , NODE_IASGN , NODE_CDECL , NODE_CVASGN , NODE_OP_ASGN1 , NODE_OP_ASGN2 , NODE_OP_ASGN_AND , NODE_OP_ASGN_OR , NODE_OP_CDECL , NODE_CALL , NODE_OPCALL , NODE_FCALL , NODE_VCALL , NODE_QCALL , NODE_SUPER , NODE_ZSUPER , NODE_LIST , NODE_ZLIST , NODE_VALUES , NODE_HASH , NODE_RETURN , NODE_YIELD , NODE_LVAR , NODE_DVAR , NODE_GVAR , NODE_IVAR , NODE_CONST , NODE_CVAR , NODE_NTH_REF , NODE_BACK_REF , NODE_MATCH , NODE_MATCH2 , NODE_MATCH3 , NODE_LIT , NODE_STR , NODE_DSTR , NODE_XSTR , NODE_DXSTR , NODE_EVSTR , NODE_DREGX , NODE_ONCE , NODE_ARGS , NODE_ARGS_AUX , NODE_OPT_ARG , NODE_KW_ARG , NODE_POSTARG , NODE_ARGSCAT , NODE_ARGSPUSH , NODE_SPLAT , NODE_BLOCK_PASS , NODE_DEFN , NODE_DEFS , NODE_ALIAS , NODE_VALIAS , NODE_UNDEF , NODE_CLASS , NODE_MODULE , NODE_SCLASS , NODE_COLON2 , NODE_COLON3 , NODE_DOT2 , NODE_DOT3 , NODE_FLIP2 , NODE_FLIP3 , NODE_SELF , NODE_NIL , NODE_TRUE , NODE_FALSE , NODE_ERRINFO , NODE_DEFINED , NODE_POSTEXE , NODE_DSYM , NODE_ATTRASGN , NODE_LAMBDA , NODE_ARYPTN , NODE_HSHPTN , NODE_FNDPTN , NODE_LAST }

## Functions
VALUE | rb_node_case_when_optimizable_literal (const NODE *const node)
rb_ast_t * | rb_ast_new (void)
void | rb_ast_mark (rb_ast_t *)
void | rb_ast_update_references (rb_ast_t *)
void | rb_ast_add_local_table (rb_ast_t *, ID *buf)
void | rb_ast_dispose (rb_ast_t *)
void | rb_ast_free (rb_ast_t *)
size_t | rb_ast_memsize (const rb_ast_t *)
void | rb_ast_add_mark_object (rb_ast_t *, VALUE)
NODE * | rb_ast_newnode (rb_ast_t *, enum node_type type)
void | rb_ast_delete_node (rb_ast_t *, NODE *n)
VALUE | rb_parser_new (void)
VALUE | rb_parser_end_seen_p (VALUE)
VALUE | rb_parser_encoding (VALUE)
VALUE | rb_parser_set_yydebug (VALUE, VALUE)
VALUE | rb_parser_dump_tree (const NODE *node, int comment)
void | rb_parser_set_options (VALUE, int, int, int, int)
rb_ast_t * | rb_parser_compile_string (VALUE, const char *, VALUE, int)
rb_ast_t * | rb_parser_compile_string_path (VALUE vparser, VALUE fname, VALUE src, int line)
rb_ast_t * | rb_parser_compile_file_path (VALUE vparser, VALUE fname, VALUE input, int line)
rb_ast_t * | rb_parser_compile_generic (VALUE vparser, VALUE(*lex_gets)(VALUE, int), VALUE fname, VALUE input, int line)
void | rb_node_init (NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
const char * | ruby_node_name (int node)
const struct kwtable * | rb_reserved_word (const char *, unsigned int)
void * | rb_parser_malloc (struct parser_params *, size_t)
void * | rb_parser_realloc (struct parser_params *, void *, size_t)
void * | rb_parser_calloc (struct parser_params *, size_t, size_t)
void | rb_parser_free (struct parser_params *, void *)
void | rb_parser_printf (struct parser_params *parser, const char *fmt,...)
void | rb_ast_node_type_change (NODE *n, enum node_type type)

## Macro Definition Documentation

## ◆ nd_1st

#define nd_1st u1.node

Definition at line 227 of file node.h.

## ◆ nd_2nd

#define nd_2nd u2.node

Definition at line 228 of file node.h.

## ◆ nd_aid

#define nd_aid u3.id

Definition at line 244 of file node.h.

## ◆ nd_ainfo

#define nd_ainfo u3.args

Definition at line 256 of file node.h.

## ◆ nd_alen

#define nd_alen u2.argc

Definition at line 217 of file node.h.

## ◆ nd_alias

#define nd_alias u1.id

Definition at line 272 of file node.h.

## ◆ nd_apinfo

#define nd_apinfo u3.apinfo

Definition at line 282 of file node.h.

## ◆ nd_args

#define nd_args u3.node

Definition at line 255 of file node.h.

## ◆ nd_beg

#define nd_beg u1.node

Definition at line 263 of file node.h.

## ◆ nd_body

#define nd_body u2.node

Definition at line 221 of file node.h.

## ◆ nd_brace

#define nd_brace u2.argc

Definition at line 276 of file node.h.

## ◆ nd_cflag

#define nd_cflag u2.id

Definition at line 234 of file node.h.

## ◆ nd_cond

#define nd_cond u1.node

Definition at line 220 of file node.h.

## ◆ nd_cpath

#define nd_cpath u1.node

Definition at line 260 of file node.h.

## ◆ nd_cval

#define nd_cval u3.value

Definition at line 235 of file node.h.

## ◆ nd_defn

#define nd_defn u3.node

Definition at line 258 of file node.h.

## ◆ nd_else

#define nd_else u3.node

Definition at line 222 of file node.h.

## ◆ nd_end

#define nd_end u2.node

Definition at line 264 of file node.h.

## ◆ nd_ensr

#define nd_ensr u3.node

Definition at line 225 of file node.h.

## ◆ nd_entry

#define nd_entry u3.id

Definition at line 232 of file node.h.

## ◆ nd_first_column

#define nd_first_column | ( |  | n | ) | ((int)((n)->nd_loc.beg_pos.column))

Definition at line 200 of file node.h.

## ◆ nd_first_lineno

#define nd_first_lineno | ( |  | n | ) | ((int)((n)->nd_loc.beg_pos.lineno))

Definition at line 202 of file node.h.

## ◆ nd_first_loc

#define nd_first_loc | ( |  | n | ) | ((n)->nd_loc.beg_pos)

Definition at line 204 of file node.h.

## ◆ nd_fpinfo

#define nd_fpinfo u3.fpinfo

Definition at line 284 of file node.h.

## ◆ nd_head

#define nd_head u1.node

Definition at line 216 of file node.h.

## ◆ nd_init_type

#define nd_init_type | ( |  | n,
|  |  | t
| ) |  | (n)->flags=(((n)->flags&~NODE_TYPEMASK)|((((unsigned long)(t))<<NODE_TYPESHIFT)&NODE_TYPEMASK))

Definition at line 191 of file node.h.

## ◆ nd_iter

#define nd_iter u3.node

Definition at line 241 of file node.h.

## ◆ nd_last_column

#define nd_last_column | ( |  | n | ) | ((int)((n)->nd_loc.end_pos.column))

Definition at line 207 of file node.h.

## ◆ nd_last_lineno

#define nd_last_lineno | ( |  | n | ) | ((int)((n)->nd_loc.end_pos.lineno))

Definition at line 209 of file node.h.

## ◆ nd_last_loc

#define nd_last_loc | ( |  | n | ) | ((n)->nd_loc.end_pos)

Definition at line 211 of file node.h.

## ◆ nd_line

#define nd_line | ( |  | n | ) | (int)(((SIGNED_VALUE)(n)->flags)>>NODE_LSHIFT)

Definition at line 196 of file node.h.

## ◆ nd_lit

#define nd_lit u1.value

Definition at line 246 of file node.h.

## ◆ nd_mid

#define nd_mid u2.id

Definition at line 254 of file node.h.

## ◆ nd_next

#define nd_next u3.node

Definition at line 218 of file node.h.

## ◆ nd_node_id

#define nd_node_id | ( |  | n | ) | ((n)->node_id)

Definition at line 213 of file node.h.

## ◆ nd_nth

#define nd_nth u2.argc

Definition at line 268 of file node.h.

## ◆ nd_oid

#define nd_oid u1.id

Definition at line 237 of file node.h.

## ◆ nd_opt

#define nd_opt u1.node

Definition at line 249 of file node.h.

## ◆ nd_orig

#define nd_orig u2.id

Definition at line 273 of file node.h.

## ◆ nd_pconst

#define nd_pconst u1.node

Definition at line 278 of file node.h.

## ◆ nd_pid

#define nd_pid u1.id

Definition at line 250 of file node.h.

## ◆ nd_pkwargs

#define nd_pkwargs u2.node

Definition at line 279 of file node.h.

## ◆ nd_pkwrestarg

#define nd_pkwrestarg u3.node

Definition at line 280 of file node.h.

## ◆ nd_plen

#define nd_plen u2.argc

Definition at line 251 of file node.h.

## ◆ nd_recv

#define nd_recv u1.node

Definition at line 253 of file node.h.

## ◆ nd_resq

#define nd_resq u2.node

Definition at line 224 of file node.h.

## ◆ nd_rest

#define nd_rest u1.id

Definition at line 248 of file node.h.

## ◆ nd_rval

#define nd_rval u2.value

Definition at line 266 of file node.h.

## ◆ nd_set_first_column

#define nd_set_first_column | ( |  | n,
|  |  | v
| ) |  | ((n)->nd_loc.beg_pos.column = (v))

Definition at line 201 of file node.h.

## ◆ nd_set_first_lineno

#define nd_set_first_lineno | ( |  | n,
|  |  | v
| ) |  | ((n)->nd_loc.beg_pos.lineno = (v))

Definition at line 203 of file node.h.

## ◆ nd_set_first_loc

#define nd_set_first_loc | ( |  | n,
|  |  | v
| ) |  | (nd_first_loc(n) = (v))

Definition at line 205 of file node.h.

## ◆ nd_set_last_column

#define nd_set_last_column | ( |  | n,
|  |  | v
| ) |  | ((n)->nd_loc.end_pos.column = (v))

Definition at line 208 of file node.h.

## ◆ nd_set_last_lineno

#define nd_set_last_lineno | ( |  | n,
|  |  | v
| ) |  | ((n)->nd_loc.end_pos.lineno = (v))

Definition at line 210 of file node.h.

## ◆ nd_set_last_loc

#define nd_set_last_loc | ( |  | n,
|  |  | v
| ) |  | (nd_last_loc(n) = (v))

Definition at line 212 of file node.h.

## ◆ nd_set_line

#define nd_set_line | ( |  | n,
|  |  | l
| ) |  | (n)->flags=(((n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))

Definition at line 197 of file node.h.

## ◆ nd_set_node_id

#define nd_set_node_id | ( |  | n,
|  |  | id
| ) |  | ((n)->node_id = (id))

Definition at line 214 of file node.h.

## ◆ nd_set_type

#define nd_set_type | ( |  | n,
|  |  | t
| ) |  | rb_node_set_type(n, t)

Definition at line 189 of file node.h.

## ◆ nd_state

#define nd_state u3.state

Definition at line 265 of file node.h.

## ◆ nd_stts

#define nd_stts u1.node

Definition at line 230 of file node.h.

## ◆ nd_super

#define nd_super u3.node

Definition at line 261 of file node.h.

## ◆ nd_tag

#define nd_tag u1.id

Definition at line 270 of file node.h.

## ◆ nd_tbl

#define nd_tbl u1.tbl

Definition at line 238 of file node.h.

## ◆ nd_type

#define nd_type | ( |  | n | ) | ((int) (((n)->flags & NODE_TYPEMASK)>>NODE_TYPESHIFT))

Definition at line 188 of file node.h.

## ◆ nd_undef

#define nd_undef u2.node

Definition at line 274 of file node.h.

## ◆ nd_value

#define nd_value u2.node

Definition at line 243 of file node.h.

## ◆ nd_var

#define nd_var u1.node

Definition at line 240 of file node.h.

## ◆ nd_vid

#define nd_vid u1.id

Definition at line 233 of file node.h.

## ◆ NEW_ALIAS

#define NEW_ALIAS | ( |  | n,
|  |  | o,
|  |  | loc
| ) |  | NEW_NODE(NODE_ALIAS,n,o,0,loc)

Definition at line 365 of file node.h.

## ◆ NEW_ARGS_AUX

#define NEW_ARGS_AUX | ( |  | r,
|  |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_ARGS_AUX,r,b,0,loc)

Definition at line 357 of file node.h.

## ◆ NEW_ARGSCAT

#define NEW_ARGSCAT | ( |  | a,
|  |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_ARGSCAT,a,b,0,loc)

Definition at line 361 of file node.h.

## ◆ NEW_ARGSPUSH

#define NEW_ARGSPUSH | ( |  | a,
|  |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_ARGSPUSH,a,b,0,loc)

Definition at line 362 of file node.h.

## ◆ NEW_ATTRASGN

#define NEW_ATTRASGN | ( |  | r,
|  |  | m,
|  |  | a,
|  |  | loc
| ) |  | NEW_NODE(NODE_ATTRASGN,r,m,a,loc)

Definition at line 383 of file node.h.

## ◆ NEW_BACK_REF

#define NEW_BACK_REF | ( |  | n,
|  |  | loc
| ) |  | NEW_NODE(NODE_BACK_REF,0,n,0,loc)

Definition at line 340 of file node.h.

## ◆ NEW_BEGIN

#define NEW_BEGIN | ( |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_BEGIN,0,b,0,loc)

Definition at line 310 of file node.h.

## ◆ NEW_BLOCK

#define NEW_BLOCK | ( |  | a,
|  |  | loc
| ) |  | NEW_NODE(NODE_BLOCK,a,0,0,loc)

Definition at line 292 of file node.h.

## ◆ NEW_BLOCK_PASS

#define NEW_BLOCK_PASS | ( |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_BLOCK_PASS,0,b,0,loc)

Definition at line 364 of file node.h.

## ◆ NEW_BREAK

#define NEW_BREAK | ( |  | s,
|  |  | loc
| ) |  | NEW_NODE(NODE_BREAK,s,0,0,loc)

Definition at line 306 of file node.h.

## ◆ NEW_CALL

#define NEW_CALL | ( |  | r,
|  |  | m,
|  |  | a,
|  |  | loc
| ) |  | NEW_NODE(NODE_CALL,r,m,a,loc)

Definition at line 351 of file node.h.

## ◆ NEW_CASE

#define NEW_CASE | ( |  | h,
|  |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_CASE,h,b,0,loc)

Definition at line 295 of file node.h.

## ◆ NEW_CASE2

#define NEW_CASE2 | ( |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_CASE2,0,b,0,loc)

Definition at line 296 of file node.h.

## ◆ NEW_CASE3

#define NEW_CASE3 | ( |  | h,
|  |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_CASE3,h,b,0,loc)

Definition at line 297 of file node.h.

## ◆ NEW_CDECL

#define NEW_CDECL | ( |  | v,
|  |  | val,
|  |  | path,
|  |  | loc
| ) |  | NEW_NODE(NODE_CDECL,v,val,path,loc)

Definition at line 325 of file node.h.

## ◆ NEW_CLASS

#define NEW_CLASS | ( |  | n,
|  |  | b,
|  |  | s,
|  |  | loc
| ) |  | NEW_NODE(NODE_CLASS,n,NEW_SCOPE(0,b,loc),(s),loc)

Definition at line 368 of file node.h.

## ◆ NEW_COLON2

#define NEW_COLON2 | ( |  | c,
|  |  | i,
|  |  | loc
| ) |  | NEW_NODE(NODE_COLON2,c,i,0,loc)

Definition at line 371 of file node.h.

## ◆ NEW_COLON3

#define NEW_COLON3 | ( |  | i,
|  |  | loc
| ) |  | NEW_NODE(NODE_COLON3,0,i,0,loc)

Definition at line 372 of file node.h.

## ◆ NEW_CONST

#define NEW_CONST | ( |  | v,
|  |  | loc
| ) |  | NEW_NODE(NODE_CONST,v,0,0,loc)

Definition at line 337 of file node.h.

## ◆ NEW_CVAR

#define NEW_CVAR | ( |  | v,
|  |  | loc
| ) |  | NEW_NODE(NODE_CVAR,v,0,0,loc)

Definition at line 338 of file node.h.

## ◆ NEW_CVASGN

#define NEW_CVASGN | ( |  | v,
|  |  | val,
|  |  | loc
| ) |  | NEW_NODE(NODE_CVASGN,v,val,0,loc)

Definition at line 326 of file node.h.

## ◆ NEW_DASGN

#define NEW_DASGN | ( |  | v,
|  |  | val,
|  |  | loc
| ) |  | NEW_NODE(NODE_DASGN,v,val,0,loc)

Definition at line 322 of file node.h.

## ◆ NEW_DASGN_CURR

#define NEW_DASGN_CURR | ( |  | v,
|  |  | val,
|  |  | loc
| ) |  | NEW_NODE(NODE_DASGN_CURR,v,val,0,loc)

Definition at line 323 of file node.h.

## ◆ NEW_DEFINED

#define NEW_DEFINED | ( |  | e,
|  |  | loc
| ) |  | NEW_NODE(NODE_DEFINED,e,0,0,loc)

Definition at line 380 of file node.h.

## ◆ NEW_DEFN

#define NEW_DEFN | ( |  | i,
|  |  | a,
|  |  | d,
|  |  | loc
| ) |  | NEW_NODE(NODE_DEFN,0,i,NEW_SCOPE(a,d,loc),loc)

Definition at line 289 of file node.h.

## ◆ NEW_DEFS

#define NEW_DEFS | ( |  | r,
|  |  | i,
|  |  | a,
|  |  | d,
|  |  | loc
| ) |  | NEW_NODE(NODE_DEFS,r,i,NEW_SCOPE(a,d,loc),loc)

Definition at line 290 of file node.h.

## ◆ NEW_DOT2

#define NEW_DOT2 | ( |  | b,
|  |  | e,
|  |  | loc
| ) |  | NEW_NODE(NODE_DOT2,b,e,0,loc)

Definition at line 373 of file node.h.

## ◆ NEW_DOT3

#define NEW_DOT3 | ( |  | b,
|  |  | e,
|  |  | loc
| ) |  | NEW_NODE(NODE_DOT3,b,e,0,loc)

Definition at line 374 of file node.h.

## ◆ NEW_DSTR

#define NEW_DSTR | ( |  | s,
|  |  | loc
| ) |  | NEW_NODE(NODE_DSTR,s,1,0,loc)

Definition at line 346 of file node.h.

## ◆ NEW_DSYM

#define NEW_DSYM | ( |  | s,
|  |  | loc
| ) |  | NEW_NODE(NODE_DSYM,s,0,0,loc)

Definition at line 349 of file node.h.

## ◆ NEW_DVAR

#define NEW_DVAR | ( |  | v,
|  |  | loc
| ) |  | NEW_NODE(NODE_DVAR,v,0,0,loc)

Definition at line 335 of file node.h.

## ◆ NEW_DXSTR

#define NEW_DXSTR | ( |  | s,
|  |  | loc
| ) |  | NEW_NODE(NODE_DXSTR,s,0,0,loc)

Definition at line 348 of file node.h.

## ◆ NEW_ENSURE

#define NEW_ENSURE | ( |  | b,
|  |  | en,
|  |  | loc
| ) |  | NEW_NODE(NODE_ENSURE,b,0,en,loc)

Definition at line 313 of file node.h.

## ◆ NEW_ERRINFO

#define NEW_ERRINFO | ( |  | loc | ) | NEW_NODE(NODE_ERRINFO,0,0,0,loc)

Definition at line 379 of file node.h.

## ◆ NEW_EVSTR

#define NEW_EVSTR | ( |  | n,
|  |  | loc
| ) |  | NEW_NODE(NODE_EVSTR,0,(n),0,loc)

Definition at line 350 of file node.h.

## ◆ NEW_FALSE

#define NEW_FALSE | ( |  | loc | ) | NEW_NODE(NODE_FALSE,0,0,0,loc)

Definition at line 378 of file node.h.

## ◆ NEW_FCALL

#define NEW_FCALL | ( |  | m,
|  |  | a,
|  |  | loc
| ) |  | NEW_NODE(NODE_FCALL,0,m,a,loc)

Definition at line 353 of file node.h.

## ◆ NEW_FOR

#define NEW_FOR | ( |  | i,
|  |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_FOR,0,b,i,loc)

Definition at line 302 of file node.h.

## ◆ NEW_FOR_MASGN

#define NEW_FOR_MASGN | ( |  | v,
|  |  | loc
| ) |  | NEW_NODE(NODE_FOR_MASGN,v,0,0,loc)

Definition at line 303 of file node.h.

## ◆ NEW_GASGN

#define NEW_GASGN | ( |  | v,
|  |  | val,
|  |  | loc
| ) |  | NEW_NODE(NODE_GASGN,v,val,v,loc)

Definition at line 320 of file node.h.

## ◆ NEW_GVAR

#define NEW_GVAR | ( |  | v,
|  |  | loc
| ) |  | NEW_NODE(NODE_GVAR,v,0,v,loc)

Definition at line 333 of file node.h.

## ◆ NEW_HASH

#define NEW_HASH | ( |  | a,
|  |  | loc
| ) |  | NEW_NODE(NODE_HASH,a,0,0,loc)

Definition at line 318 of file node.h.

## ◆ NEW_IASGN

#define NEW_IASGN | ( |  | v,
|  |  | val,
|  |  | loc
| ) |  | NEW_NODE(NODE_IASGN,v,val,0,loc)

Definition at line 324 of file node.h.

## ◆ NEW_IF

#define NEW_IF | ( |  | c,
|  |  | t,
|  |  | e,
|  |  | loc
| ) |  | NEW_NODE(NODE_IF,c,t,e,loc)

Definition at line 293 of file node.h.

## ◆ NEW_IN

#define NEW_IN | ( |  | c,
|  |  | t,
|  |  | e,
|  |  | loc
| ) |  | NEW_NODE(NODE_IN,c,t,e,loc)

Definition at line 299 of file node.h.

## ◆ NEW_ITER

#define NEW_ITER | ( |  | a,
|  |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_ITER,0,NEW_SCOPE(a,b,loc),0,loc)

Definition at line 304 of file node.h.

## ◆ NEW_IVAR

#define NEW_IVAR | ( |  | v,
|  |  | loc
| ) |  | NEW_NODE(NODE_IVAR,v,0,0,loc)

Definition at line 336 of file node.h.

## ◆ NEW_KW_ARG

#define NEW_KW_ARG | ( |  | i,
|  |  | v,
|  |  | loc
| ) |  | NEW_NODE(NODE_KW_ARG,i,v,0,loc)

Definition at line 359 of file node.h.

## ◆ NEW_LAMBDA

#define NEW_LAMBDA | ( |  | a,
|  |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_LAMBDA,0,NEW_SCOPE(a,b,loc),0,loc)

Definition at line 305 of file node.h.

## ◆ NEW_LASGN

#define NEW_LASGN | ( |  | v,
|  |  | val,
|  |  | loc
| ) |  | NEW_NODE(NODE_LASGN,v,val,0,loc)

Definition at line 321 of file node.h.

## ◆ NEW_LIST

#define NEW_LIST | ( |  | a,
|  |  | loc
| ) |  | NEW_NODE(NODE_LIST,a,1,0,loc)

Definition at line 316 of file node.h.

## ◆ NEW_LIT

#define NEW_LIT | ( |  | l,
|  |  | loc
| ) |  | NEW_NODE(NODE_LIT,l,0,0,loc)

Definition at line 344 of file node.h.

## ◆ NEW_LVAR

#define NEW_LVAR | ( |  | v,
|  |  | loc
| ) |  | NEW_NODE(NODE_LVAR,v,0,0,loc)

Definition at line 334 of file node.h.

## ◆ NEW_MASGN

#define NEW_MASGN | ( |  | l,
|  |  | r,
|  |  | loc
| ) |  | NEW_NODE(NODE_MASGN,l,0,r,loc)

Definition at line 319 of file node.h.

## ◆ NEW_MATCH

#define NEW_MATCH | ( |  | c,
|  |  | loc
| ) |  | NEW_NODE(NODE_MATCH,c,0,0,loc)

Definition at line 341 of file node.h.

## ◆ NEW_MATCH2

#define NEW_MATCH2 | ( |  | n1,
|  |  | n2,
|  |  | loc
| ) |  | NEW_NODE(NODE_MATCH2,n1,n2,0,loc)

Definition at line 342 of file node.h.

## ◆ NEW_MATCH3

#define NEW_MATCH3 | ( |  | r,
|  |  | n2,
|  |  | loc
| ) |  | NEW_NODE(NODE_MATCH3,r,n2,0,loc)

Definition at line 343 of file node.h.

## ◆ NEW_MODULE

#define NEW_MODULE | ( |  | n,
|  |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_MODULE,n,NEW_SCOPE(0,b,loc),0,loc)

Definition at line 370 of file node.h.

## ◆ NEW_NEXT

#define NEW_NEXT | ( |  | s,
|  |  | loc
| ) |  | NEW_NODE(NODE_NEXT,s,0,0,loc)

Definition at line 307 of file node.h.

## ◆ NEW_NIL

#define NEW_NIL | ( |  | loc | ) | NEW_NODE(NODE_NIL,0,0,0,loc)

Definition at line 376 of file node.h.

## ◆ NEW_NODE

#define NEW_NODE | ( |  | t,
|  |  | a0,
|  |  | a1,
|  |  | a2,
|  |  | loc
| ) |  | rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2),loc)

Definition at line 286 of file node.h.

## ◆ NEW_NODE_WITH_LOCALS

#define NEW_NODE_WITH_LOCALS | ( |  | t,
|  |  | a1,
|  |  | a2,
|  |  | loc
| ) |  | node_newnode_with_locals(p, (t),(VALUE)(a1),(VALUE)(a2),loc)

Definition at line 287 of file node.h.

## ◆ NEW_NTH_REF

#define NEW_NTH_REF | ( |  | n,
|  |  | loc
| ) |  | NEW_NODE(NODE_NTH_REF,0,n,0,loc)

Definition at line 339 of file node.h.

## ◆ NEW_OP_ASGN1

#define NEW_OP_ASGN1 | ( |  | p,
|  |  | id,
|  |  | a,
|  |  | loc
| ) |  | NEW_NODE(NODE_OP_ASGN1,p,id,a,loc)

Definition at line 327 of file node.h.

## ◆ NEW_OP_ASGN2

#define NEW_OP_ASGN2 | ( |  | r,
|  |  | t,
|  |  | i,
|  |  | o,
|  |  | val,
|  |  | loc
| ) |  | NEW_NODE(NODE_OP_ASGN2,r,val,NEW_OP_ASGN22(i,o,t,loc),loc)

Definition at line 328 of file node.h.

## ◆ NEW_OP_ASGN22

#define NEW_OP_ASGN22 | ( |  | i,
|  |  | o,
|  |  | t,
|  |  | loc
| ) |  | NEW_NODE(NODE_OP_ASGN2,i,o,t,loc)

Definition at line 329 of file node.h.

## ◆ NEW_OP_ASGN_AND

#define NEW_OP_ASGN_AND | ( |  | i,
|  |  | val,
|  |  | loc
| ) |  | NEW_NODE(NODE_OP_ASGN_AND,i,val,0,loc)

Definition at line 331 of file node.h.

## ◆ NEW_OP_ASGN_OR

#define NEW_OP_ASGN_OR | ( |  | i,
|  |  | val,
|  |  | loc
| ) |  | NEW_NODE(NODE_OP_ASGN_OR,i,val,0,loc)

Definition at line 330 of file node.h.

## ◆ NEW_OP_CDECL

#define NEW_OP_CDECL | ( |  | v,
|  |  | op,
|  |  | val,
|  |  | loc
| ) |  | NEW_NODE(NODE_OP_CDECL,v,val,op,loc)

Definition at line 332 of file node.h.

## ◆ NEW_OPCALL

#define NEW_OPCALL | ( |  | r,
|  |  | m,
|  |  | a,
|  |  | loc
| ) |  | NEW_NODE(NODE_OPCALL,r,m,a,loc)

Definition at line 352 of file node.h.

## ◆ NEW_OPT_ARG

#define NEW_OPT_ARG | ( |  | i,
|  |  | v,
|  |  | loc
| ) |  | NEW_NODE(NODE_OPT_ARG,i,v,0,loc)

Definition at line 358 of file node.h.

## ◆ NEW_POSTARG

#define NEW_POSTARG | ( |  | i,
|  |  | v,
|  |  | loc
| ) |  | NEW_NODE(NODE_POSTARG,i,v,0,loc)

Definition at line 360 of file node.h.

## ◆ NEW_POSTEXE

#define NEW_POSTEXE | ( |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_POSTEXE,0,b,0,loc)

Definition at line 382 of file node.h.

## ◆ NEW_PREEXE

#define NEW_PREEXE | ( |  | b,
|  |  | loc
| ) |  | NEW_SCOPE(b,loc)

Definition at line 381 of file node.h.

## ◆ NEW_REDO

#define NEW_REDO | ( |  | loc | ) | NEW_NODE(NODE_REDO,0,0,0,loc)

Definition at line 308 of file node.h.

## ◆ NEW_RESBODY

#define NEW_RESBODY | ( |  | a,
|  |  | ex,
|  |  | n,
|  |  | loc
| ) |  | NEW_NODE(NODE_RESBODY,n,ex,a,loc)

Definition at line 312 of file node.h.

## ◆ NEW_RESCUE

#define NEW_RESCUE | ( |  | b,
|  |  | res,
|  |  | e,
|  |  | loc
| ) |  | NEW_NODE(NODE_RESCUE,b,res,e,loc)

Definition at line 311 of file node.h.

## ◆ NEW_RETRY

#define NEW_RETRY | ( |  | loc | ) | NEW_NODE(NODE_RETRY,0,0,0,loc)

Definition at line 309 of file node.h.

## ◆ NEW_RETURN

#define NEW_RETURN | ( |  | s,
|  |  | loc
| ) |  | NEW_NODE(NODE_RETURN,s,0,0,loc)

Definition at line 314 of file node.h.

## ◆ NEW_SCLASS

#define NEW_SCLASS | ( |  | r,
|  |  | b,
|  |  | loc
| ) |  | NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(0,b,loc),0,loc)

Definition at line 369 of file node.h.

## ◆ NEW_SCOPE

#define NEW_SCOPE | ( |  | a,
|  |  | b,
|  |  | loc
| ) |  | NEW_NODE_WITH_LOCALS(NODE_SCOPE,b,a,loc)

Definition at line 291 of file node.h.

## ◆ NEW_SELF

#define NEW_SELF | ( |  | loc | ) | NEW_NODE(NODE_SELF,0,0,1,loc)

Definition at line 375 of file node.h.

## ◆ NEW_SPLAT

#define NEW_SPLAT | ( |  | a,
|  |  | loc
| ) |  | NEW_NODE(NODE_SPLAT,a,0,0,loc)

Definition at line 363 of file node.h.

## ◆ NEW_STR

#define NEW_STR | ( |  | s,
|  |  | loc
| ) |  | NEW_NODE(NODE_STR,s,0,0,loc)

Definition at line 345 of file node.h.

## ◆ NEW_SUPER

#define NEW_SUPER | ( |  | a,
|  |  | loc
| ) |  | NEW_NODE(NODE_SUPER,0,0,a,loc)

Definition at line 355 of file node.h.

## ◆ NEW_TRUE

#define NEW_TRUE | ( |  | loc | ) | NEW_NODE(NODE_TRUE,0,0,0,loc)

Definition at line 377 of file node.h.

## ◆ NEW_UNDEF

#define NEW_UNDEF | ( |  | i,
|  |  | loc
| ) |  | NEW_NODE(NODE_UNDEF,0,i,0,loc)

Definition at line 367 of file node.h.

## ◆ NEW_UNLESS

#define NEW_UNLESS | ( |  | c,
|  |  | t,
|  |  | e,
|  |  | loc
| ) |  | NEW_NODE(NODE_UNLESS,c,t,e,loc)

Definition at line 294 of file node.h.

## ◆ NEW_UNTIL

#define NEW_UNTIL | ( |  | c,
|  |  | b,
|  |  | n,
|  |  | loc
| ) |  | NEW_NODE(NODE_UNTIL,c,b,n,loc)

Definition at line 301 of file node.h.

## ◆ NEW_VALIAS

#define NEW_VALIAS | ( |  | n,
|  |  | o,
|  |  | loc
| ) |  | NEW_NODE(NODE_VALIAS,n,o,0,loc)

Definition at line 366 of file node.h.

## ◆ NEW_VCALL

#define NEW_VCALL | ( |  | m,
|  |  | loc
| ) |  | NEW_NODE(NODE_VCALL,0,m,0,loc)

Definition at line 354 of file node.h.

## ◆ NEW_WHEN

#define NEW_WHEN | ( |  | c,
|  |  | t,
|  |  | e,
|  |  | loc
| ) |  | NEW_NODE(NODE_WHEN,c,t,e,loc)

Definition at line 298 of file node.h.

## ◆ NEW_WHILE

#define NEW_WHILE | ( |  | c,
|  |  | b,
|  |  | n,
|  |  | loc
| ) |  | NEW_NODE(NODE_WHILE,c,b,n,loc)

Definition at line 300 of file node.h.

## ◆ NEW_XSTR

#define NEW_XSTR | ( |  | s,
|  |  | loc
| ) |  | NEW_NODE(NODE_XSTR,s,0,0,loc)

Definition at line 347 of file node.h.

## ◆ NEW_YIELD

#define NEW_YIELD | ( |  | a,
|  |  | loc
| ) |  | NEW_NODE(NODE_YIELD,a,0,0,loc)

Definition at line 315 of file node.h.

## ◆ NEW_ZLIST

#define NEW_ZLIST | ( |  | loc | ) | NEW_NODE(NODE_ZLIST,0,0,0,loc)

Definition at line 317 of file node.h.

## ◆ NEW_ZSUPER

#define NEW_ZSUPER | ( |  | loc | ) | NEW_NODE(NODE_ZSUPER,0,0,0,loc)

Definition at line 356 of file node.h.

## ◆ NODE_FL_NEWLINE

#define NODE_FL_NEWLINE (((VALUE)1)<<7)

Definition at line 183 of file node.h.

## ◆ NODE_LMASK

#define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)

Definition at line 195 of file node.h.

## ◆ NODE_LSHIFT

#define NODE_LSHIFT (NODE_TYPESHIFT+7)

Definition at line 194 of file node.h.

## ◆ NODE_NAMED_REST_P

#define NODE_NAMED_REST_P | ( |  | node | ) | ((node) != NODE_SPECIAL_NO_NAME_REST)

Definition at line 388 of file node.h.

## ◆ NODE_REQUIRED_KEYWORD_P

#define NODE_REQUIRED_KEYWORD_P | ( |  | node | ) | ((node)->nd_value == NODE_SPECIAL_REQUIRED_KEYWORD)

Definition at line 386 of file node.h.

## ◆ NODE_SPECIAL_EXCESSIVE_COMMA

#define NODE_SPECIAL_EXCESSIVE_COMMA ((ID)1)

Definition at line 389 of file node.h.

## ◆ NODE_SPECIAL_NO_NAME_REST

#define NODE_SPECIAL_NO_NAME_REST ((NODE *)-1)

Definition at line 387 of file node.h.

## ◆ NODE_SPECIAL_NO_REST_KEYWORD

#define NODE_SPECIAL_NO_REST_KEYWORD ((NODE *)-1)

Definition at line 390 of file node.h.

## ◆ NODE_SPECIAL_REQUIRED_KEYWORD

#define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)

Definition at line 385 of file node.h.

## ◆ NODE_TYPEMASK

#define NODE_TYPEMASK (((VALUE)0x7f)<<NODE_TYPESHIFT)

Definition at line 186 of file node.h.

## ◆ NODE_TYPESHIFT

#define NODE_TYPESHIFT 8

Definition at line 185 of file node.h.

## ◆ RNODE

#define RNODE | ( |  | obj | ) | ((struct RNode *)(obj))

Definition at line 176 of file node.h.

## Typedef Documentation

## ◆ NODE

typedef struct RNode NODE

## ◆ node_buffer_t

typedef struct node_buffer_struct node_buffer_t

Definition at line 396 of file node.h.

## ◆ rb_ast_body_t

typedef struct rb_ast_body_struct rb_ast_body_t

## ◆ rb_ast_t

typedef struct rb_ast_struct rb_ast_t

## ◆ rb_code_location_t

typedef struct rb_code_location_struct rb_code_location_t

## ◆ rb_code_position_t

typedef struct rb_code_position_struct rb_code_position_t

## Enumeration Type Documentation

## ◆ node_type

enum node_type

Enumerator
NODE_SCOPE |
NODE_BLOCK |
NODE_IF |
NODE_UNLESS |
NODE_CASE |
NODE_CASE2 |
NODE_CASE3 |
NODE_WHEN |
NODE_IN |
NODE_WHILE |
NODE_UNTIL |
NODE_ITER |
NODE_FOR |
NODE_FOR_MASGN |
NODE_BREAK |
NODE_NEXT |
NODE_REDO |
NODE_RETRY |
NODE_BEGIN |
NODE_RESCUE |
NODE_RESBODY |
NODE_ENSURE |
NODE_AND |
NODE_OR |
NODE_MASGN |
NODE_LASGN |
NODE_DASGN |
NODE_DASGN_CURR |
NODE_GASGN |
NODE_IASGN |
NODE_CDECL |
NODE_CVASGN |
NODE_OP_ASGN1 |
NODE_OP_ASGN2 |
NODE_OP_ASGN_AND |
NODE_OP_ASGN_OR |
NODE_OP_CDECL |
NODE_CALL |
NODE_OPCALL |
NODE_FCALL |
NODE_VCALL |
NODE_QCALL |
NODE_SUPER |
NODE_ZSUPER |
NODE_LIST |
NODE_ZLIST |
NODE_VALUES |
NODE_HASH |
NODE_RETURN |
NODE_YIELD |
NODE_LVAR |
NODE_DVAR |
NODE_GVAR |
NODE_IVAR |
NODE_CONST |
NODE_CVAR |
NODE_NTH_REF |
NODE_BACK_REF |
NODE_MATCH |
NODE_MATCH2 |
NODE_MATCH3 |
NODE_LIT |
NODE_STR |
NODE_DSTR |
NODE_XSTR |
NODE_DXSTR |
NODE_EVSTR |
NODE_DREGX |
NODE_ONCE |
NODE_ARGS |
NODE_ARGS_AUX |
NODE_OPT_ARG |
NODE_KW_ARG |
NODE_POSTARG |
NODE_ARGSCAT |
NODE_ARGSPUSH |
NODE_SPLAT |
NODE_BLOCK_PASS |
NODE_DEFN |
NODE_DEFS |
NODE_ALIAS |
NODE_VALIAS |
NODE_UNDEF |
NODE_CLASS |
NODE_MODULE |
NODE_SCLASS |
NODE_COLON2 |
NODE_COLON3 |
NODE_DOT2 |
NODE_DOT3 |
NODE_FLIP2 |
NODE_FLIP3 |
NODE_SELF |
NODE_NIL |
NODE_TRUE |
NODE_FALSE |
NODE_ERRINFO |
NODE_DEFINED |
NODE_POSTEXE |
NODE_DSYM |
NODE_ATTRASGN |
NODE_LAMBDA |
NODE_ARYPTN |
NODE_HSHPTN |
NODE_FNDPTN |
NODE_LAST |

Definition at line 21 of file node.h.

## Function Documentation

## ◆ rb_ast_add_local_table()

void rb_ast_add_local_table | ( | rb_ast_t * | ast,
|  | ID * | buf
| ) |  |

Definition at line 1283 of file node.c.

References int(), node_buffer_struct::local_tables, and rb_ast_struct::node_buffer.

Referenced by yyparse().

## ◆ rb_ast_add_mark_object()

void rb_ast_add_mark_object | ( | rb_ast_t * | ast,
|  | VALUE | obj
| ) |  |

Definition at line 1454 of file node.c.

References node_buffer_struct::mark_hash, NIL_P, rb_ast_struct::node_buffer, Qtrue, rb_hash_aset(), rb_ident_hash_new(), and RB_OBJ_WRITE.

## ◆ rb_ast_delete_node()

void rb_ast_delete_node | ( | rb_ast_t * | ast,
|  | NODE * | n
| ) |  |

Definition at line 1291 of file node.c.

## ◆ rb_ast_dispose()

void rb_ast_dispose | ( | rb_ast_t * | ast | ) |

Definition at line 1448 of file node.c.

References rb_ast_free().

## ◆ rb_ast_free()

void rb_ast_free | ( | rb_ast_t * | ast | ) |

Definition at line 1413 of file node.c.

References rb_ast_struct::node_buffer.

Referenced by rb_ast_dispose().

## ◆ rb_ast_mark()

void rb_ast_mark | ( | rb_ast_t * | ast | ) |

Definition at line 1401 of file node.c.

References rb_ast_struct::body, rb_ast_body_struct::compile_option, node_buffer_struct::mark_hash, node_buffer_struct::markable, rb_ast_struct::node_buffer, NULL, and rb_gc_mark().

## ◆ rb_ast_memsize()

size_t rb_ast_memsize | ( | const rb_ast_t * | ast | ) |

Definition at line 1434 of file node.c.

References node_buffer_struct::markable, NODE_BUF_DEFAULT_LEN, rb_ast_struct::node_buffer, offsetof, and node_buffer_struct::unmarkable.

## ◆ rb_ast_new()

rb_ast_t * rb_ast_new | ( | void |  | ) |

Definition at line 1299 of file node.c.

References imemo_ast, and rb_imemo_new().

## ◆ rb_ast_newnode()

NODE * rb_ast_newnode | ( | rb_ast_t * | ast,
|  | enum node_type | type
| ) |  |

Definition at line 1264 of file node.c.

References node_buffer_struct::markable, rb_ast_struct::node_buffer, and node_buffer_struct::unmarkable.

## ◆ rb_ast_node_type_change()

void rb_ast_node_type_change | ( | NODE * | n,
|  | enum node_type | type
| ) |  |

Definition at line 1273 of file node.c.

References nd_type, rb_bug(), and ruby_node_name().

## ◆ rb_ast_update_references()

void rb_ast_update_references | ( | rb_ast_t * | ast | ) |

Definition at line 1391 of file node.c.

References node_buffer_struct::markable, rb_ast_struct::node_buffer, and NULL.

## ◆ rb_node_case_when_optimizable_literal()

VALUE rb_node_case_when_optimizable_literal | ( | const NODE *const | node | ) |

Definition at line 4480 of file compile.c.

References FIXABLE, LONG2FIX, nd_type, NODE_FALSE, NODE_LIT, NODE_NIL, NODE_STR, NODE_TRUE, Qfalse, Qnil, Qtrue, Qundef, rb_cNumeric, rb_dbl2big(), rb_fstring(), rb_obj_is_kind_of(), RFLOAT_VALUE, SYMBOL_P, and T_FLOAT.

## ◆ rb_node_init()

void rb_node_init | ( | NODE * | n,
|  | enum node_type | type,
|  | VALUE | a0,
|  | VALUE | a1,
|  | VALUE | a2
| ) |  |

Definition at line 1139 of file node.c.

References rb_code_location_struct::beg_pos, rb_code_position_struct::column, rb_code_location_struct::end_pos, RNode::flags, rb_code_position_struct::lineno, nd_init_type, RNode::nd_loc, T_NODE, RNode::u1, RNode::u2, RNode::u3, and RNode::value.

Referenced by rb_binding_add_dynavars().

## ◆ rb_parser_calloc()

void * rb_parser_calloc | ( | struct parser_params * | p,
|  | size_t | nelem,
|  | size_t | size
| ) |  |

Definition at line 20945 of file ripper.c.

References ADD2HEAP, cnt, HEAPCNT, NEWHEAP, ptr, and xcalloc.

## ◆ rb_parser_compile_file_path()

rb_ast_t * rb_parser_compile_file_path | ( | VALUE | vparser,
|  | VALUE | fname,
|  | VALUE | input,
|  | int | line
| ) |  |

Definition at line 14029 of file ripper.c.

References parser_params::gets, parser_params::input, parser_params::lex, parser_params::pbeg, parser_params::pcur, parser_params::pend, and TypedData_Get_Struct.

## ◆ rb_parser_compile_generic()

rb_ast_t * rb_parser_compile_generic | ( | VALUE | vparser,
|  | VALUE(*)(VALUE, int) | lex_gets,
|  | VALUE | fname,
|  | VALUE | input,
|  | int | line
| ) |  |

Definition at line 14049 of file ripper.c.

References parser_params::call, parser_params::gets, parser_params::gets_, input, parser_params::input, parser_params::lex, parser_params::pbeg, parser_params::pcur, parser_params::pend, and TypedData_Get_Struct.

## ◆ rb_parser_compile_string()

rb_ast_t * rb_parser_compile_string | ( | VALUE | vparser,
|  | const char * | f,
|  | VALUE | s,
|  | int | line
| ) |  |

Definition at line 14008 of file ripper.c.

References f, rb_filesystem_str_new_cstr(), and rb_parser_compile_string_path().

## ◆ rb_parser_compile_string_path()

rb_ast_t * rb_parser_compile_string_path | ( | VALUE | vparser,
|  | VALUE | fname,
|  | VALUE | src,
|  | int | line
| ) |  |

Definition at line 14014 of file ripper.c.

References f.

Referenced by rb_parser_compile_string().

## ◆ rb_parser_dump_tree()

VALUE rb_parser_dump_tree | ( | const NODE * | node,
|  | int | comment
| ) |  |

Definition at line 1120 of file node.c.

References rb_str_new_cstr.

## ◆ rb_parser_encoding()

VALUE rb_parser_encoding | ( | VALUE | vparser | ) |

Definition at line 20854 of file ripper.c.

References parser_params::enc, rb_enc_from_encoding(), and TypedData_Get_Struct.

## ◆ rb_parser_end_seen_p()

VALUE rb_parser_end_seen_p | ( | VALUE | vparser | ) |

Definition at line 20839 of file ripper.c.

References Qfalse, Qtrue, parser_params::ruby__end__seen, and TypedData_Get_Struct.

## ◆ rb_parser_free()

void rb_parser_free | ( | struct parser_params * | p,
|  | void * | ptr
| ) |  |

Definition at line 20975 of file ripper.c.

References parser_params::heap, NULL, ptr, rb_gc_force_recycle(), and xfree.

## ◆ rb_parser_malloc()

void * rb_parser_malloc | ( | struct parser_params * | p,
|  | size_t | size
| ) |  |

Definition at line 20935 of file ripper.c.

References ADD2HEAP, cnt, HEAPCNT, NEWHEAP, ptr, and xmalloc.

## ◆ rb_parser_new()

VALUE rb_parser_new | ( | void |  | ) |

Definition at line 20781 of file ripper.c.

References TypedData_Make_Struct.

Referenced by rb_load_file_str().

## ◆ rb_parser_printf()

void rb_parser_printf | ( | struct parser_params * | parser,
|  | const char * | fmt,
|  |  | ...
| ) |  |

Definition at line 20992 of file ripper.c.

References parser_params::debug_buffer, parser_params::debug_output, NIL_P, Qnil, rb_io_write(), rb_str_new, and rb_str_vcatf().

## ◆ rb_parser_realloc()

void * rb_parser_realloc | ( | struct parser_params * | p,
|  | void * | ptr,
|  | size_t | size
| ) |  |

Definition at line 20955 of file ripper.c.

References ADD2HEAP, rb_imemo_tmpbuf_struct::cnt, cnt, parser_params::heap, HEAPCNT, NEWHEAP, rb_imemo_tmpbuf_struct::next, NULL, ptr, rb_imemo_tmpbuf_struct::ptr, and xrealloc.

## ◆ rb_parser_set_options()

void rb_parser_set_options | ( | VALUE | vparser,
|  | int | print,
|  | int | loop,
|  | int | chomp,
|  | int | split
| ) |  |

Definition at line 20599 of file ripper.c.

References parser_params::do_chomp, parser_params::do_loop, parser_params::do_print, parser_params::do_split, and TypedData_Get_Struct.

## ◆ rb_parser_set_yydebug()

VALUE rb_parser_set_yydebug | ( | VALUE | self,
|  | VALUE | flag
| ) |  |

Definition at line 20886 of file ripper.c.

References parser_params::debug, RTEST, and TypedData_Get_Struct.

## ◆ rb_reserved_word()

const struct kwtable * rb_reserved_word | ( | const char * | str,
|  | unsigned int | len
| ) |  |

Definition at line 20775 of file ripper.c.

References len, and str.

## ◆ ruby_node_name()

const char * ruby_node_name | ( | int | node | ) |

Definition at line 2593 of file iseq.c.

References rb_bug().

Referenced by rb_ast_node_type_change(), and ruby_debug_print_node().