76 std::optional<LinearPath> linearPath;
80 void postorder(
const IR::Path *)
override;
81 void postorder(
const IR::PathExpression *path)
override;
82 void postorder(
const IR::ConcreteHeaderRef *href)
override;
83 void postorder(
const IR::Member *member)
override;
84 void postorder(
const IR::Slice *slice)
override;
85 void postorder(
const IR::ArrayIndex *array)
override;
86 bool preorder(
const IR::HeaderOrMetadata *href)
override;
87 bool preorder(
const IR::Constant *)
override;
88 void postorder(
const IR::Node *node)
override;
89 void end_apply()
override;
92 static cstring convert(
const IR::Expression *expr) {
94 expr->apply(linearizer);
95 return linearizer.linearPath->to_cstring();