43 const IR::Expression *fix(
const IR::Expression *expr,
const IR::Type_Bits *type);
44 const IR::Node *updateType(
const IR::Expression *expression);
45 const IR::Node *postorder(IR::Expression *expression)
override;
46 const IR::Node *postorder(IR::Operation_Binary *expression)
override;
47 const IR::Node *postorder(IR::Neg *expression)
override;
48 const IR::Node *postorder(IR::Cmpl *expression)
override;
49 const IR::Node *postorder(IR::Cast *expression)
override;
65 std::map<const IR::Expression *, Util::IJson *> map;
70 bool withConstantWidths{
false};
78 corelib(P4::P4CoreLibrary::instance()),
79 scalarsName(scalarsName),
96 Util::IJson *get(
const IR::Expression *expression)
const;
111 Util::IJson *convertLeftValue(
const IR::Expression *e);
112 Util::IJson *convertWithConstantWidths(
const IR::Expression *e);
113 bool isArrayIndexRuntime(
const IR::Expression *e);
115 void postorder(
const IR::BoolLiteral *expression)
override;
116 void postorder(
const IR::MethodCallExpression *expression)
override;
117 void postorder(
const IR::Cast *expression)
override;
118 void postorder(
const IR::Slice *expression)
override;
119 void postorder(
const IR::AddSat *expression)
override { saturated_binary(expression); }
120 void postorder(
const IR::SubSat *expression)
override { saturated_binary(expression); }
121 void postorder(
const IR::Constant *expression)
override;
122 void postorder(
const IR::ArrayIndex *expression)
override;
123 void postorder(
const IR::Member *expression)
override;
124 void postorder(
const IR::Mux *expression)
override;
125 void postorder(
const IR::IntMod *expression)
override;
126 void postorder(
const IR::Operation_Binary *expression)
override;
127 void postorder(
const IR::ListExpression *expression)
override;
128 void postorder(
const IR::StructExpression *expression)
override;
129 void postorder(
const IR::Operation_Unary *expression)
override;
130 void postorder(
const IR::PathExpression *expression)
override;
131 void postorder(
const IR::StringLiteral *expression)
override;
132 void postorder(
const IR::TypeNameExpression *expression)
override;
133 void postorder(
const IR::Expression *expression)
override;
134 void mapExpression(
const IR::Expression *expression,
Util::IJson *json);
137 void binary(
const IR::Operation_Binary *expression);
138 void saturated_binary(
const IR::Operation_Binary *expression);
Util::IJson * convert(const IR::Expression *e, bool doFixup=true, bool wrap=true, bool convertBool=false)
Definition expression.cpp:767
const IR::Parameter * enclosingParamReference(const IR::Expression *expression)
Non-null if the expression refers to a parameter from the enclosing control.
Definition expression.cpp:236