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