35 std::vector<IR::Block *> blockStack;
36 IR::ToplevelBlock *toplevelBlock;
39 void pushBlock(IR::Block *block);
40 void popBlock(IR::Block *block);
44 : refMap(refMap), typeMap(typeMap), toplevelBlock(
nullptr) {
50 IR::ToplevelBlock *getToplevelBlock()
const override {
return toplevelBlock; }
52 IR::Block *currentBlock()
const;
59 const IR::CompileTimeValue *getValue(
const IR::Node *node)
const;
70 bool preorder(
const IR::P4Program *program)
override;
71 bool preorder(
const IR::Declaration_Constant *decl)
override;
72 bool preorder(
const IR::P4Table *table)
override;
73 bool preorder(
const IR::Declaration_Instance *inst)
override;
74 bool preorder(
const IR::ConstructorCallExpression *inst)
override;
75 bool preorder(
const IR::MethodCallExpression *expr)
override;
76 bool preorder(
const IR::PathExpression *expression)
override;
77 bool preorder(
const IR::Property *prop)
override;
78 bool preorder(
const IR::Member *expression)
override;
79 bool preorder(
const IR::ListExpression *expression)
override;
80 bool preorder(
const IR::P4ListExpression *expression)
override;
81 bool preorder(
const IR::StructExpression *expression)
override;
82 bool preorder(
const IR::Constant *expression)
override {
86 bool preorder(
const IR::StringLiteral *expression)
override {
90 bool preorder(
const IR::BoolLiteral *expression)
override {
94 bool preorder(
const IR::ListCompileTimeValue *expression)
override {
98 bool preorder(
const IR::StructCompileTimeValue *expression)
override {
102 bool preorder(
const IR::Declaration_ID *expression)
override {
107 const IR::Block *processConstructor(
const IR::Node *node,
const IR::Type *type,
108 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:109
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24