46    const IR::PathExpression *createTemporary(
const IR::Expression *expression);
 
   47    const IR::Expression *simplifyExpression(
const IR::Expression *expression, 
bool force);
 
   54    const IR::Node *simpleStatement(IR::Statement *statement);
 
   59        : refMap(refMap), typeMap(typeMap), policy(policy) {
 
   62        setName(
"RemoveComplexExpressions");
 
   64    const IR::Node *postorder(IR::SelectExpression *expression) 
override;
 
   65    const IR::Node *preorder(IR::ParserState *state)
 override {
 
   69    const IR::Node *postorder(IR::ParserState *state)
 override {
 
   70        state->components.append(assignments);
 
   73    const IR::Node *postorder(IR::MethodCallExpression *expression) 
override;
 
   74    const IR::Node *preorder(IR::P4Parser *parser)
 override {
 
   78    const IR::Node *postorder(IR::P4Parser *parser)
 override {
 
   79        if (newDecls.size() != 0) {
 
   81            newDecls.append(parser->parserLocals);
 
   82            parser->parserLocals = newDecls;
 
   86    const IR::Node *preorder(IR::P4Control *control) 
override;
 
   87    const IR::Node *postorder(IR::P4Control *control)
 override {
 
   88        if (newDecls.size() != 0) {
 
   90            newDecls.append(control->controlLocals);
 
   91            control->controlLocals = newDecls;
 
   95    const IR::Node *postorder(IR::Statement *statement) 
override;
 
   96    const IR::Node *postorder(IR::MethodCallStatement *statement) 
override;