Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)
|
#include "internal.h"
#include "internal/hash.h"
#include "internal/variable.h"
#include "ruby/ruby.h"
#include "vm_core.h"
Go to the source code of this file.
Data Structures | |
struct | add_option_arg |
struct | node_buffer_elem_struct |
struct | node_buffer_list_t |
struct | node_buffer_struct |
Macros | |
#define | NODE_BUF_DEFAULT_LEN 16 |
#define | A(str) rb_str_cat2(buf, (str)) |
#define | AR(str) rb_str_concat(buf, (str)) |
#define | A_INDENT add_indent(buf, indent) |
#define | D_INDENT rb_str_cat2(indent, next_indent) |
#define | D_DEDENT rb_str_resize(indent, RSTRING_LEN(indent) - 4) |
#define | A_ID(id) add_id(buf, (id)) |
#define | A_INT(val) rb_str_catf(buf, "%d", (val)) |
#define | A_LONG(val) rb_str_catf(buf, "%ld", (val)) |
#define | A_LIT(lit) AR(rb_dump_literal(lit)) |
#define | A_NODE_HEADER(node, term) |
#define | A_FIELD_HEADER(len, name, term) rb_str_catf(buf, "+- %.*s:"term, (len), (name)) |
#define | D_FIELD_HEADER(len, name, term) (A_INDENT, A_FIELD_HEADER(len, name, term)) |
#define | D_NULL_NODE (A_INDENT, A("(null node)\n")) |
#define | D_NODE_HEADER(node) (A_INDENT, A_NODE_HEADER(node, "\n")) |
#define | COMPOUND_FIELD(len, name) FIELD_BLOCK((D_FIELD_HEADER((len), (name), "\n"), D_INDENT), D_DEDENT) |
#define | COMPOUND_FIELD1(name, ann) |
#define | FIELD_NAME_DESC(name, ann) name " (" ann ")" |
#define | FIELD_NAME_LEN(name, ann) |
#define | SIMPLE_FIELD(len, name) FIELD_BLOCK(D_FIELD_HEADER((len), (name), " "), A("\n")) |
#define | FIELD_BLOCK(init, reset) |
#define | SIMPLE_FIELD1(name, ann) SIMPLE_FIELD(FIELD_NAME_LEN(name, ann), FIELD_NAME_DESC(name, ann)) |
#define | F_CUSTOM1(name, ann) SIMPLE_FIELD1(#name, ann) |
#define | F_ID(name, ann) SIMPLE_FIELD1(#name, ann) A_ID(node->name) |
#define | F_GENTRY(name, ann) SIMPLE_FIELD1(#name, ann) A_ID(node->name) |
#define | F_INT(name, ann) SIMPLE_FIELD1(#name, ann) A_INT(node->name) |
#define | F_LONG(name, ann) SIMPLE_FIELD1(#name, ann) A_LONG(node->name) |
#define | F_LIT(name, ann) SIMPLE_FIELD1(#name, ann) A_LIT(node->name) |
#define | F_MSG(name, ann, desc) SIMPLE_FIELD1(#name, ann) A(desc) |
#define | F_NODE(name, ann) COMPOUND_FIELD1(#name, ann) {dump_node(buf, indent, comment, node->name);} |
#define | ANN(ann) |
#define | LAST_NODE (next_indent = " ") |
Typedefs | |
typedef struct node_buffer_elem_struct | node_buffer_elem_t |
typedef void | node_itr_t(void *ctx, NODE *node) |
Functions | |
VALUE | rb_dump_literal (VALUE lit) |
VALUE | rb_parser_dump_tree (const NODE *node, int comment) |
void | rb_node_init (NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2) |
NODE * | rb_ast_newnode (rb_ast_t *ast, enum node_type type) |
void | rb_ast_node_type_change (NODE *n, enum node_type type) |
void | rb_ast_add_local_table (rb_ast_t *ast, ID *buf) |
void | rb_ast_delete_node (rb_ast_t *ast, NODE *n) |
rb_ast_t * | rb_ast_new (void) |
void | rb_ast_update_references (rb_ast_t *ast) |
void | rb_ast_mark (rb_ast_t *ast) |
void | rb_ast_free (rb_ast_t *ast) |
size_t | rb_ast_memsize (const rb_ast_t *ast) |
void | rb_ast_dispose (rb_ast_t *ast) |
void | rb_ast_add_mark_object (rb_ast_t *ast, VALUE obj) |
#define A_INT | ( | val | ) | rb_str_catf(buf, "%d", (val)) |
#define A_LIT | ( | lit | ) | AR(rb_dump_literal(lit)) |
#define A_LONG | ( | val | ) | rb_str_catf(buf, "%ld", (val)) |
#define A_NODE_HEADER | ( | node, | |
term | |||
) |
#define ANN | ( | ann | ) |
#define COMPOUND_FIELD | ( | len, | |
name | |||
) | FIELD_BLOCK((D_FIELD_HEADER((len), (name), "\n"), D_INDENT), D_DEDENT) |
#define COMPOUND_FIELD1 | ( | name, | |
ann | |||
) |
#define D_DEDENT rb_str_resize(indent, RSTRING_LEN(indent) - 4) |
#define D_INDENT rb_str_cat2(indent, next_indent) |
#define D_NODE_HEADER | ( | node | ) | (A_INDENT, A_NODE_HEADER(node, "\n")) |
#define F_CUSTOM1 | ( | name, | |
ann | |||
) | SIMPLE_FIELD1(#name, ann) |
#define F_GENTRY | ( | name, | |
ann | |||
) | SIMPLE_FIELD1(#name, ann) A_ID(node->name) |
#define F_ID | ( | name, | |
ann | |||
) | SIMPLE_FIELD1(#name, ann) A_ID(node->name) |
#define F_INT | ( | name, | |
ann | |||
) | SIMPLE_FIELD1(#name, ann) A_INT(node->name) |
#define F_LIT | ( | name, | |
ann | |||
) | SIMPLE_FIELD1(#name, ann) A_LIT(node->name) |
#define F_LONG | ( | name, | |
ann | |||
) | SIMPLE_FIELD1(#name, ann) A_LONG(node->name) |
#define F_MSG | ( | name, | |
ann, | |||
desc | |||
) | SIMPLE_FIELD1(#name, ann) A(desc) |
#define F_NODE | ( | name, | |
ann | |||
) | COMPOUND_FIELD1(#name, ann) {dump_node(buf, indent, comment, node->name);} |
#define FIELD_BLOCK | ( | init, | |
reset | |||
) |
#define FIELD_NAME_LEN | ( | name, | |
ann | |||
) |
#define SIMPLE_FIELD | ( | len, | |
name | |||
) | FIELD_BLOCK(D_FIELD_HEADER((len), (name), " "), A("\n")) |
#define SIMPLE_FIELD1 | ( | name, | |
ann | |||
) | SIMPLE_FIELD(FIELD_NAME_LEN(name, ann), FIELD_NAME_DESC(name, ann)) |
typedef struct node_buffer_elem_struct node_buffer_elem_t |
Definition at line 1283 of file node.c.
References int(), node_buffer_struct::local_tables, and rb_ast_struct::node_buffer.
Referenced by yyparse().
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.
void rb_ast_dispose | ( | rb_ast_t * | ast | ) |
Definition at line 1448 of file node.c.
References 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().
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().
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_t * rb_ast_new | ( | void | ) |
Definition at line 1299 of file node.c.
References imemo_ast, and rb_imemo_new().
Definition at line 1264 of file node.c.
References node_buffer_struct::markable, rb_ast_struct::node_buffer, and node_buffer_struct::unmarkable.
Definition at line 1273 of file node.c.
References nd_type, rb_bug(), and ruby_node_name().
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.
Definition at line 83 of file node.c.
References FL_SINGLETON, FL_TEST, PRIsVALUE, rb_class_path(), rb_inspect(), rb_sprintf(), str, T_CLASS, T_ICLASS, and T_MODULE.
Referenced by rb_insn_operand_intern().
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().