Ruby
3.4.0dev (2024-11-05 revision 348a53415339076afc4a02fcd09f3ae36e9c4c61)
|
Functions related to nodes in the AST. More...
Go to the source code of this file.
Macros | |
#define | PM_NODE_LIST_FOREACH(list, index, node) for (size_t index = 0; index < (list)->size && ((node) = (list)->nodes[index]); index++) |
Loop through each node in the node list, writing each node to the given pm_node_t pointer. More... | |
Functions | |
void | pm_node_list_append (pm_node_list_t *list, pm_node_t *node) |
Append a new node onto the end of the node list. More... | |
void | pm_node_list_prepend (pm_node_list_t *list, pm_node_t *node) |
Prepend a new node onto the beginning of the node list. More... | |
void | pm_node_list_concat (pm_node_list_t *list, pm_node_list_t *other) |
Concatenate the given node list onto the end of the other node list. More... | |
void | pm_node_list_free (pm_node_list_t *list) |
Free the internal memory associated with the given node list. More... | |
PRISM_EXPORTED_FUNCTION void | pm_node_destroy (pm_parser_t *parser, struct pm_node *node) |
Deallocate a node and all of its children. More... | |
PRISM_EXPORTED_FUNCTION const char * | pm_node_type_to_str (pm_node_type_t node_type) |
Returns a string representation of the given node type. More... | |
PRISM_EXPORTED_FUNCTION void | pm_visit_node (const pm_node_t *node, bool(*visitor)(const pm_node_t *node, void *data), void *data) |
Visit each of the nodes in this subtree using the given visitor callback. More... | |
PRISM_EXPORTED_FUNCTION void | pm_visit_child_nodes (const pm_node_t *node, bool(*visitor)(const pm_node_t *node, void *data), void *data) |
Visit the children of the given node with the given callback. More... | |
Functions related to nodes in the AST.
Definition in file node.h.
#define PM_NODE_LIST_FOREACH | ( | list, | |
index, | |||
node | |||
) | for (size_t index = 0; index < (list)->size && ((node) = (list)->nodes[index]); index++) |
PRISM_EXPORTED_FUNCTION void pm_node_destroy | ( | pm_parser_t * | parser, |
pm_node_t * | node | ||
) |
Deallocate a node and all of its children.
parser | The parser that owns the node. |
node | The node to deallocate. |
Deallocate a node and all of its children.
Similarly to pm_node_alloc, we're not using the parser argument, but it's there to allow for the future possibility of pre-allocating larger memory pools.
Definition at line 114 of file node.c.
Referenced by pm_parse_stream(), pm_parse_success_p(), pm_serialize_lex(), pm_serialize_parse(), pm_serialize_parse_comments(), pm_serialize_parse_lex(), and pm_serialize_parse_stream().
void pm_node_list_append | ( | pm_node_list_t * | list, |
pm_node_t * | node | ||
) |
void pm_node_list_concat | ( | pm_node_list_t * | list, |
pm_node_list_t * | other | ||
) |
void pm_node_list_free | ( | pm_node_list_t * | list | ) |
void pm_node_list_prepend | ( | pm_node_list_t * | list, |
pm_node_t * | node | ||
) |
PRISM_EXPORTED_FUNCTION const char* pm_node_type_to_str | ( | pm_node_type_t | node_type | ) |
PRISM_EXPORTED_FUNCTION void pm_visit_child_nodes | ( | const pm_node_t * | node, |
bool(*)(const pm_node_t *node, void *data) | visitor, | ||
void * | data | ||
) |
Visit the children of the given node with the given callback.
This is the default behavior for walking the tree that is called from pm_visit_node if the callback returns true.
node | The node to visit the children of. |
visitor | The callback to call for each child node. |
data | An opaque pointer that is passed to the visitor callback. |
This is the default behavior for walking the tree that is called from pm_visit_node if the callback returns true.
Definition at line 1544 of file node.c.
Referenced by pm_visit_node().
PRISM_EXPORTED_FUNCTION void pm_visit_node | ( | const pm_node_t * | node, |
bool(*)(const pm_node_t *node, void *data) | visitor, | ||
void * | data | ||
) |
Visit each of the nodes in this subtree using the given visitor callback.
The callback function will be called for each node in the subtree. If it returns false, then that node's children will not be visited. If it returns true, then the children will be visited. The data parameter is treated as an opaque pointer and is passed to the visitor callback for consumers to use as they see fit.
As an example:
node | The root node to start visiting from. |
visitor | The callback to call for each node in the subtree. |
data | An opaque pointer that is passed to the visitor callback. |
The callback function will be called for each node in the subtree. If it returns false, then that node's children will not be visited. If it returns true, then the children will be visited. The data parameter is treated as an opaque pointer and is passed to the visitor callback for consumers to use as they see fit.
Definition at line 1534 of file node.c.
Referenced by pm_visit_child_nodes().