Teuchos - Trilinos Tools Package
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
parser
src
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
18
namespace
Teuchos
{
19
20
namespace
MathExpr {
21
22
enum
{
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
64
enum
{ NPRODS = PROD_SPACES + 1 };
65
66
enum
{
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
91
enum
{ NTOKS = TOK_ASSIGN + 1 };
92
93
Language make_language();
94
95
LanguagePtr
ask_language();
96
97
ReaderTablesPtr
ask_reader_tables();
98
99
class
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
111
std::set<std::string> get_variables_used(std::string
const
& expr);
112
std::set<std::string> get_symbols_used(std::string
const
& expr);
113
114
Reader* new_calc_reader();
115
116
}
// end namespace MathExpr
117
118
}
// end namespace Teuchos
119
120
#endif
Teuchos_Language.hpp
Declares Teuchos::Language.
Teuchos_Reader.hpp
Declares Teuchos::Reader.
Teuchos
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...
Teuchos::ReaderTablesPtr
RCP< const ReaderTables > ReaderTablesPtr
an RCP to a const ReaderTables
Definition
Teuchos_ReaderTables.hpp:40
Teuchos::LanguagePtr
RCP< const Language > LanguagePtr
an RCP to a const Language
Definition
Teuchos_Language.hpp:148
Generated by
1.17.0