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