Teuchos - Trilinos Tools Package  Version of the Day
Teuchos_MathExpr.hpp
1 #ifndef TEUCHOS_MATHEXPR_HPP
2 #define TEUCHOS_MATHEXPR_HPP
3 
4 #include <set>
5 
6 #include <Teuchos_Language.hpp>
7 #include <Teuchos_Reader.hpp>
8 
9 namespace Teuchos {
10 
11 namespace MathExpr {
12 
13 enum {
14  PROD_EXPR,
15  PROD_TERNARY_DECAY,
16  PROD_OR_DECAY,
17  PROD_AND_DECAY,
18  PROD_ADD_SUB_DECAY,
19  PROD_MUL_DIV_DECAY,
20  PROD_POW_DECAY,
21  PROD_NEG_DECAY,
22  PROD_TERNARY,
23  PROD_OR,
24  PROD_AND,
25  PROD_GT,
26  PROD_LT,
27  PROD_GEQ,
28  PROD_LEQ,
29  PROD_EQ,
30  PROD_BOOL_PARENS,
31  PROD_ADD,
32  PROD_SUB,
33  PROD_MUL,
34  PROD_DIV,
35  PROD_POW,
36  PROD_CALL,
37  PROD_NO_ARGS,
38  PROD_SOME_ARGS,
39  PROD_FIRST_ARG,
40  PROD_NEXT_ARG,
41  PROD_NEG,
42  PROD_VAL_PARENS,
43  PROD_CONST,
44  PROD_VAR,
45  PROD_NO_SPACES,
46  PROD_SPACES
47 };
48 
49 enum { NPRODS = PROD_SPACES + 1 };
50 
51 enum {
52  TOK_SPACE,
53  TOK_NAME,
54  TOK_ADD,
55  TOK_SUB,
56  TOK_MUL,
57  TOK_DIV,
58  TOK_POW,
59  TOK_LPAREN,
60  TOK_RPAREN,
61  TOK_COMMA,
62  TOK_CHECK,
63  TOK_CHOOSE,
64  TOK_GT,
65  TOK_LT,
66  TOK_GEQ,
67  TOK_LEQ,
68  TOK_EQ,
69  TOK_AND,
70  TOK_OR,
71  TOK_CONST
72 };
73 
74 enum { NTOKS = TOK_CONST + 1 };
75 
76 Language make_language();
77 
78 LanguagePtr ask_language();
79 
80 ReaderTablesPtr ask_reader_tables();
81 
82 class SymbolSetReader : public Reader {
83  public:
84  SymbolSetReader();
85  virtual ~SymbolSetReader();
86  public:
87  std::set<std::string> variable_names;
88  std::set<std::string> function_names;
89  private:
90  virtual void at_shift(any& result, int token, std::string& text);
91  virtual void at_reduce(any& result, int prod, std::vector<any>& rhs);
92 };
93 
94 std::set<std::string> get_variables_used(std::string const& expr);
95 
96 } // end namespace MathExpr
97 
98 } // end namespace Teuchos
99 
100 #endif
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos, as well as a number of utility routines.
RCP< const ReaderTables > ReaderTablesPtr
an RCP to a const ReaderTables
RCP< const Language > LanguagePtr
an RCP to a const Language
Declares Teuchos::Language.
Declares Teuchos::Reader.