
Public Member Functions | |
| ExpressionConverter (P4::ReferenceMap *refMap, P4::TypeMap *typeMap, ProgramStructure *structure, cstring scalarsName) | |
| Util::IJson * | convert (const IR::Expression *e, bool doFixup=true, bool wrap=true, bool convertBool=false) |
| Util::IJson * | convertLeftValue (const IR::Expression *e) |
| virtual Util::IJson * | convertParam (const IR::Parameter *param, cstring fieldName)=0 |
| Util::IJson * | convertWithConstantWidths (const IR::Expression *e) |
| const IR::Parameter * | enclosingParamReference (const IR::Expression *expression) |
| Non-null if the expression refers to a parameter from the enclosing control. | |
| Util::IJson * | fixLocal (Util::IJson *json) |
| Util::IJson * | get (const IR::Expression *expression) const |
| bool | isArrayIndexRuntime (const IR::Expression *e) |
| void | mapExpression (const IR::Expression *expression, Util::IJson *json) |
| void | postorder (const IR::AddSat *expression) override |
| void | postorder (const IR::ArrayIndex *expression) override |
| void | postorder (const IR::BoolLiteral *expression) override |
| void | postorder (const IR::Cast *expression) override |
| void | postorder (const IR::Constant *expression) override |
| void | postorder (const IR::Expression *expression) override |
| void | postorder (const IR::IntMod *expression) override |
| void | postorder (const IR::ListExpression *expression) override |
| void | postorder (const IR::Member *expression) override |
| void | postorder (const IR::MethodCallExpression *expression) override |
| void | postorder (const IR::Mux *expression) override |
| void | postorder (const IR::Operation_Binary *expression) override |
| void | postorder (const IR::Operation_Unary *expression) override |
| void | postorder (const IR::PathExpression *expression) override |
| void | postorder (const IR::Slice *expression) override |
| void | postorder (const IR::StringLiteral *expression) override |
| void | postorder (const IR::StructExpression *expression) override |
| void | postorder (const IR::SubSat *expression) override |
| void | postorder (const IR::TypeNameExpression *expression) override |
Public Attributes | |
| bool | simpleExpressionsOnly |
| Util::IJson * BMV2::ExpressionConverter::convert | ( | const IR::Expression * | e, |
| bool | doFixup = true, | ||
| bool | wrap = true, | ||
| bool | convertBool = false ) |
Convert an expression into JSON
| e | expression to convert |
| doFixup | Insert masking operations for operands to ensure that the result matches the specification. BMv2 does arithmetic using unbounded precision, but the spec requires fixed precision, specified by the types. |
| wrap | Wrap the result into an additiona JSON expression block. See the BMv2 JSON spec. |
| convertBool | Wrap the result into a cast from boolean to data (b2d JSON). |
| bool BMV2::ExpressionConverter::simpleExpressionsOnly |
If this is 'true' we fail to convert complex expressions. This is used for table key expressions, for example.