31class DoExpandLookahead :
public Transform,
public ResolutionContext {
40 bool expandHeader =
true;
42 struct ExpansionInfo {
43 const IR::Statement *statement;
45 const IR::Type *origType;
46 const IR::PathExpression *tmp;
49 void expand(
const IR::PathExpression *bitvector,
const IR::Type *type,
unsigned *offset,
51 ExpansionInfo *convertLookahead(
const IR::MethodCallExpression *expression);
54 explicit DoExpandLookahead(
TypeMap *typeMap,
bool expandHeader =
true)
55 : typeMap(typeMap), expandHeader(expandHeader) {
57 setName(
"DoExpandLookahead");
60 auto rv = Transform::init_apply(node);
66 const IR::Node *postorder(IR::AssignmentStatement *statement)
override;
67 const IR::Node *postorder(IR::MethodCallStatement *statement)
override;
68 const IR::Node *preorder(IR::P4Control *control)
override {
72 const IR::Node *preorder(IR::P4Parser *parser)
override {
76 const IR::Node *postorder(IR::P4Parser *parser)
override {
77 if (!newDecls.empty()) parser->parserLocals.append(newDecls);
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13