8#ifndef SRC_LIB_FOUNDATIONS_EXPRESSION_PARSER_EXPRESSION_PARSER_H_
9#define SRC_LIB_FOUNDATIONS_EXPRESSION_PARSER_EXPRESSION_PARSER_H_
14namespace layer1_foundations {
15namespace expression_parser {
32 std::string &name_of_formula,
33 std::string &formula_text,
34 std::string &managed_variables,
36 std::string ¶meters,
40 std::string &formula_label,
41 std::string ¶meters,
46 std::string ¶meters,
91 int &f_single_literal, std::string &single_literal,
int &f_has_seen_minus,
134 void init(std::string &label, std::string &label_tex,
195 void print(std::ostream &ost);
198 int evaluate(std::map<std::string, std::string> &symbol_table,
209#define MAX_NODES_SYNTAX_TREE 1000
239 void print(std::ostream &ost);
240 int evaluate(std::map<std::string, std::string> &symbol_table,
266 void print(std::ostream &ost);
a domain for things related to expression parsing
~expression_parser_domain()
void parse_and_evaluate(field_theory::finite_field *F, std::string &name_of_formula, std::string &formula_text, std::string &managed_variables, int f_evaluate, std::string ¶meters, int verbose_level)
int evaluate_formula(formula *F, field_theory::finite_field *Fq, std::string ¶meters, int verbose_level)
void evaluate(field_theory::finite_field *Fq, std::string &formula_label, std::string ¶meters, int verbose_level)
expression_parser_domain()
class to parse expressions
syntax_tree_node * CommaList(int verbose_level, const bool get)
syntax_tree_node * AddSubtract(int verbose_level, const bool get)
double & operator[](std::string &key)
syntax_tree_node * Term(int verbose_level, const bool get)
syntax_tree_node * Primary(int verbose_level, int &f_single_literal, std::string &single_literal, int &f_has_seen_minus, const bool get)
void parse(syntax_tree *tree, std::string &program, int verbose_level)
syntax_tree_node * Expression(int verbose_level, const bool get)
syntax_tree_node * Comparison(int verbose_level, const bool get)
std::map< std::string, double > symbols_
lexical analysis of expressions
void CheckToken(TokenType wanted)
TokenType GetToken(int verbose_level, const bool ignoreSign=false)
void print_token(std::ostream &ost, TokenType t)
void token_as_string(std::string &s, TokenType t)
void create_text_token(std::string &txt)
syntax_tree_node_terminal * T
void create_double_token(double dbl)
terminal note in the syntax tree of an expression
void print_graphviz(std::ostream &ost)
syntax_tree_node_terminal()
void print(std::ostream &ost)
int evaluate(std::map< std::string, std::string > &symbol_table, field_theory::finite_field *F, int verbose_level)
void print_expression(std::ostream &ost)
interior node in a syntax tree
void print(std::ostream &ost)
syntax_tree_node * Nodes[MAX_NODES_SYNTAX_TREE]
int evaluate(std::map< std::string, std::string > &symbol_table, field_theory::finite_field *F, int verbose_level)
void split_by_monomials(ring_theory::homogeneous_polynomial_domain *Poly, syntax_tree_node **Subtrees, int verbose_level)
enum syntax_tree_node_operation_type type
void export_graphviz(std::string &name, std::ostream &ost)
void print_without_recursion(std::ostream &ost)
void export_graphviz_recursion(std::ostream &ost)
syntax_tree_node_terminal * T
void print_expression(std::ostream &ost)
int is_homogeneous(int °ree, int verbose_level)
the syntax tree of an expression
void split_by_monomials(ring_theory::homogeneous_polynomial_domain *Poly, syntax_tree_node **&Subtrees, int verbose_level)
int is_homogeneous(int °ree, int verbose_level)
void print_monomial(std::ostream &ost, int *monomial)
int identify_single_literal(std::string &single_literal)
std::vector< std::string > managed_variables
int f_has_managed_variables
void print(std::ostream &ost)
homogeneous polynomials of a given degree in a given number of variables over a finite field GF(q)
#define MAX_NODES_SYNTAX_TREE
syntax_tree_node_operation_type
the orbiter library for the classification of combinatorial objects