parsetools packageAll the functions in parsetools are concerned with parse-data objects. Functions either obtain the parse-data, such as get_parse_data(); convert or transform the parse data, such as classify_comments(); identify elements of the parse data tree, such as pd_is_function(); or navigate the tree, such as get_parent_id().
With the exception of obtaining functions and manipulation functions, all function will either take an argument pd as a stand alone argument which expects a parse-data object, or will take the combination of an id and a pd, exclusively in that order. The id argument is expected to be an integer of values that exist in pd$id which denotes the node or nodes of interest. Whether id is a singleton or vector is differentiated by function naming conventions described in the following sections. If there is a need for additional function arguments they must occur after the id and pd arguments.
Function names should follow the underscore standard with appropriate prefixes and suffixes, and conform to proper plurality.
| form | Meaning | Accepts | Returns | Exported |
|---|---|---|---|---|
| pd_is_* | Logical test function | id vector | logical 1:1 for input id | Yes |
| pd_get_*_id | Navigation function | id vector | id integer 1:1 for input | Yes |
| pd_get_*_ids | Set identification | single id | id vector many:1 for input | Yes |
| get_*_pd | Subsetting | id(1)+pd | subsetted parse-data | No |
| all_*_ids | Global sets | parse-data | id vector many:1 for input | No |
| pd_* | Other action function | id+pd | Depending |
Functions of the form pd_is_<name> test if the specified id satisfies the criteria for <name>. For example, pd_is_function(id,pd) tests if the id identifies a function expression, namely the token for id is expr, and the token for the firstborn, i.e. child with minimum id, is FUNCTION. These also appear in the form pd_is_in_<name>. Example, pd_is_in_class_definition tests if the expression is nested inside any defined class definition.