![]() |
Cadabra
Computer algebra system for field theory problems
|
Preprocessing class which takes infix mathematical notation with all sorts of maths shortcuts and transforms it into a string which is properly formatted in prefix notation.
The Parser class then uses this result to turn the string into an Ex expression tree.
#include <PreProcessor.hh>
Classes | |
| class | accu_t |
Public Types | |
| enum | order_labels { order_factorial =0 , order_pow , order_frac , order_prod , order_wedge , order_minus , order_plus , order_dot , order_equals , order_unequals , order_less_than , order_greater_than , order_conditions , order_arrow , order_set_option , order_colon , order_comma , order_tilde } |
Public Member Functions | |
| preprocessor () | |
| void | erase () |
| void | strip_outer_brackets () const |
Static Public Attributes | |
| static const char32_t | orders [] |
| static const char32_t *const | order_names [] |
Private Member Functions | |
| void | parse_ (const std::u32string &) |
| void | parse_internal_ () |
| bool | unwind_ (unsigned int tolevel, unsigned int bracketgoal=0, bool usebracket=true) const |
| char32_t | get_token_ (char32_t prev_token) |
| void | show_and_throw_ (const std::string &str) const |
| void | bracket_strings_ (char32_t cb, std::u32string &obrack, std::u32string &cbrack) const |
| bool | is_infix_operator_ (char32_t c) const |
| bool | is_link_ (char32_t c) const |
| unsigned int | is_opening_bracket_ (char32_t c) const |
| unsigned int | is_closing_bracket_ (char32_t c) const |
| unsigned int | is_bracket_ (char32_t c) const |
| bool | is_already_bracketed_ (const std::u32string &str) const |
| bool | is_digits_ (const std::u32string &str) const |
| unsigned int | current_bracket_ (bool deep=false) const |
| void | print_stack () const |
| bool | default_is_product_ () const |
Private Attributes | |
| bool | verbatim_ |
| bool | next_is_product_ |
| bool | eat_initial_whitespace_ |
| unsigned int | cur_pos |
| std::u32string | cur_str |
| accu_t | cur |
| std::vector< accu_t > | accus |
Static Private Attributes | |
| static const char32_t | open_brackets [] = { '{', '(', '[' } |
| static const char32_t | close_brackets [] = { '}', ')', ']' } |
Friends | |
| std::istream & | operator>> (std::istream &, preprocessor &) |
| std::ostream & | operator<< (std::ostream &, const preprocessor &) |
| preprocessor::preprocessor | ( | ) |
|
private |
|
private |
|
private |
| void preprocessor::erase | ( | ) |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| void preprocessor::strip_outer_brackets | ( | ) | const |
|
private |
|
friend |
|
friend |
|
mutableprivate |
|
staticprivate |
|
mutableprivate |
|
private |
|
private |
|
private |
|
private |
|
staticprivate |
|
static |
|
static |
|
private |