bool expressions_are_identical(const expression *a, expression *b, bool persistent)
expression_identifier keyword_identifiers[]
expression * copy_expression(const expression *source)
Returns a deep copy of an expression.
void replace_occurences(expression *source, const expression *child, const expression *replacement)
void replace_expression(expression *a, expression *b)
bool symbol_is_constant(const expression *source)
expression_identifier identifier
int8_t expression_contains_division(const expression *source)
struct numeric_value numeric_value
void free_expression(expression *source, bool persistent)
expression * get_symbol(const expression *source)
struct expression expression
void remove_child_at_index(expression *source, uint8_t index)
bool expression_is_reziprocal(const expression *source)
void free_expressions(uint8_t expression_count,...)
union expression::@0 value
void literal_to_double_symbol(expression *source)
double literal_to_double(expression *source)
expression * guess_symbol(const expression *source, const char *custom_priorities, uint8_t rank)
bool expression_is_numerical(const expression *source)
void embed_in_list_if_necessary(expression *source)
expression * double_to_literal(double source)
void free_all_except(expression *source)
expression * new_expression(expression_type type, expression_identifier identifier, uint8_t child_count,...)
Allocates and initializes a new expression with the arguments provided.
expression * new_symbol(expression_identifier identifier, const char *value)
Allocates and initializes a new symbol/variable expression.
void set_parents(expression *source)
void merge_nested_lists(expression *source, bool recursive)
expression_identifier get_expression_identifier(const char *string)
Returns the identifier corresponding to the keyword string.
struct expression * parent
expression * new_literal(int8_t sign, uintmax_t numerator, uintmax_t denominator)
Allocates and initializes a new literal expression.
void order_children(expression *source)
uint8_t count_occurrences(const expression *haystack, expression *needle, bool persistent)
void collect_symbols(expression *symbols, const expression *source)
expression * new_trigonometic_periodicity(uint8_t period)
bool expressions_are_equivalent(const expression *a, expression *b, bool persistent)
void expression_to_string(char *buffer, const expression *source, expression_to_string_format format)
Serializes an expression into a specified format.
uint8_t swap_expressions(expression *a, expression *b)
const char * get_expression_string(expression_identifier identifier)
Returns the keyword string corresponding to the identifier.
void remove_null_children(expression *source)
expression_to_string_format
bool expression_is_constant(const expression *source)
void append_child(expression *parent, expression *child)
Appends a child to an expression.
bool expression_is_smaller_than(const expression *a, expression *b, bool persistent)
bool expression_is_greater_than(const expression *a, expression *b, bool persistent)
struct expression ** children
void replace_null_with_zero(expression *source)