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 |