27 std::vector<IR::Block *> blockStack;
28 IR::ToplevelBlock *toplevelBlock;
31 void pushBlock(IR::Block *block);
32 void popBlock(IR::Block *block);
36 : refMap(refMap), typeMap(typeMap), toplevelBlock(
nullptr) {
42 IR::ToplevelBlock *getToplevelBlock()
const override {
return toplevelBlock; }
44 IR::Block *currentBlock()
const;
51 const IR::CompileTimeValue *getValue(
const IR::Node *node)
const;
62 bool preorder(
const IR::P4Program *program)
override;
63 bool preorder(
const IR::Declaration_Constant *decl)
override;
64 bool preorder(
const IR::P4Table *table)
override;
65 bool preorder(
const IR::Declaration_Instance *inst)
override;
66 bool preorder(
const IR::ConstructorCallExpression *inst)
override;
67 bool preorder(
const IR::MethodCallExpression *expr)
override;
68 bool preorder(
const IR::PathExpression *expression)
override;
69 bool preorder(
const IR::Property *prop)
override;
70 bool preorder(
const IR::Member *expression)
override;
71 bool preorder(
const IR::ListExpression *expression)
override;
72 bool preorder(
const IR::P4ListExpression *expression)
override;
73 bool preorder(
const IR::StructExpression *expression)
override;
74 bool preorder(
const IR::Constant *expression)
override {
78 bool preorder(
const IR::StringLiteral *expression)
override {
82 bool preorder(
const IR::BoolLiteral *expression)
override {
86 bool preorder(
const IR::ListCompileTimeValue *expression)
override {
90 bool preorder(
const IR::StructCompileTimeValue *expression)
override {
94 bool preorder(
const IR::Declaration_ID *expression)
override {
99 const IR::Block *processConstructor(
const IR::Node *node,
const IR::Type *type,
100 const IR::Type *instanceType,
std::vector< const IR::CompileTimeValue * > * evaluateArguments(const IR::ParameterList *parameters, const IR::Vector< IR::Argument > *arguments, IR::Block *context)
Definition evaluator.cpp:100
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13