Package st.gravel.support.compiler.ast

Source Code of st.gravel.support.compiler.ast.IntermediateNodeRewriter

package st.gravel.support.compiler.ast;

/*
  This file is automatically generated from typed smalltalk source. Do not edit by hand.
  (C) AG5.com
*/

import java.math.BigInteger;
import st.gravel.support.jvm.NonLocalReturn;
import st.gravel.support.compiler.ast.MessageSendRewriter;
import st.gravel.support.compiler.ast.MessageSendRewriter.MessageSendRewriter_Factory;
import java.util.HashMap;
import st.gravel.support.compiler.ast.Statement;
import st.gravel.support.compiler.ast.MessageNode;
import st.gravel.support.compiler.ast.BlockNode;
import st.gravel.support.compiler.ast.NilLiteralNode;
import st.gravel.support.compiler.ast.TypeVariableNode;
import st.gravel.support.compiler.ast.Node;
import st.gravel.support.compiler.ast.Expression;
import st.gravel.support.compiler.ast.BooleanAndNode;
import st.gravel.support.compiler.ast.SequenceNode;
import st.gravel.support.compiler.ast.ArrayAtNode;
import st.gravel.support.compiler.ast.ArrayAtPutNode;
import st.gravel.support.compiler.ast.IdentityComparisonNode;
import st.gravel.support.compiler.ast.IfTrueIfFalseNode;
import st.gravel.support.compiler.ast.TypeOrNode;
import st.gravel.support.compiler.ast.BooleanOrNode;
import st.gravel.support.compiler.ast.ToDoNode;
import st.gravel.support.compiler.ast.IntegerLiteralNode;
import st.gravel.support.compiler.ast.WhileFalseNode;
import st.gravel.support.compiler.ast.WhileTrueNode;
import st.gravel.support.compiler.ast.ArraySizeNode;

public class IntermediateNodeRewriter extends MessageSendRewriter implements Cloneable {

  public static IntermediateNodeRewriter_Factory factory = new IntermediateNodeRewriter_Factory();

  public static class IntermediateNodeRewriter_Factory extends MessageSendRewriter_Factory {

    public IntermediateNodeRewriter basicNew() {
      IntermediateNodeRewriter newInstance = new IntermediateNodeRewriter();
      newInstance.initialize();
      return newInstance;
    }
  }

  public IntermediateNodeRewriter copy() {
    try {
      IntermediateNodeRewriter _temp1 = (IntermediateNodeRewriter) this.clone();
      _temp1.postCopy();
      return _temp1;
    } catch (CloneNotSupportedException e) {
      throw new RuntimeException(e);
    }
  }

  public IntermediateNodeRewriter_Factory factory() {
    return factory;
  }

  @Override
  public IntermediateNodeRewriter initialize() {
    super.initialize();
    this.initializeSpecialSelectors();
    return this;
  }

  @Override
  public IntermediateNodeRewriter initializeSpecialSelectors() {
    _specialSelectors = new java.util.HashMap<st.gravel.core.Symbol, st.gravel.support.jvm.Block1<Statement, MessageNode>>();
    _specialSelectors.put(st.gravel.core.Symbol.value("ifTrue:"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce_ifTrue_(_node.receiver(), _node.argument());
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("ifFalse:"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce_ifFalse_(_node.receiver(), _node.argument());
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("ifTrue:ifFalse:"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce_ifTrue_ifFalse_(_node.receiver(), _node.arguments()[0], _node.arguments()[1]);
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("ifFalse:ifTrue:"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce_ifTrue_ifFalse_(_node.receiver(), _node.arguments()[1], _node.arguments()[0]);
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("whileTrue"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce$underscore$whileTrue_(_node.receiver());
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("whileFalse"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce$underscore$whileFalse_(_node.receiver());
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("whileTrue:"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce_whileTrue_(_node.receiver(), _node.arguments()[0]);
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("whileFalse:"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce_whileFalse_(_node.receiver(), _node.arguments()[0]);
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("to:do:"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce_to_do_(_node.receiver(), _node.arguments()[0], _node.arguments()[1]);
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("to:by:do:"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce_to_by_do_(_node.receiver(), _node.arguments()[0], _node.arguments()[1], _node.arguments()[2]);
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("=="), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce_identityEquals_(_node.receiver(), _node.arguments()[0]);
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("and:"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce_and_(_node.receiver(), _node.arguments()[0]);
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("or:"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce_or_(_node.receiver(), _node.arguments()[0]);
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("basicSize"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce$underscore$basicSize_(_node.receiver());
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("basicAt:"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce_basicAt_(_node.receiver(), _node.arguments()[0]);
      }
    });
    _specialSelectors.put(st.gravel.core.Symbol.value("basicAt:put:"), new st.gravel.support.jvm.Block1<Statement, MessageNode>() {

      @Override
      public Statement value_(final MessageNode _node) {
        return (Statement) IntermediateNodeRewriter.this.produce_basicAt_put_(_node.receiver(), _node.arguments()[0], _node.arguments()[1]);
      }
    });
    return this;
  }

  public BlockNode nilReturningBlockNode() {
    return BlockNode.factory.expression_returnType_(NilLiteralNode.factory.basicNew(), TypeVariableNode.factory.nil());
  }

  public ArraySizeNode produce$underscore$basicSize_(final Expression _expression) {
    return ArraySizeNode.factory.receiver_(((Expression) this.visit_(_expression)));
  }

  public WhileFalseNode produce$underscore$whileFalse_(final Expression _testExpr) {
    final BlockNode _testBlockNode;
    if (!_testExpr.isBlockNode()) {
      return null;
    }
    _testBlockNode = ((BlockNode) _testExpr);
    return WhileFalseNode.factory.testSequence_doSequence_(((SequenceNode) this.visit_(_testBlockNode.body())), null);
  }

  public WhileTrueNode produce$underscore$whileTrue_(final Expression _testExpr) {
    final BlockNode _testBlockNode;
    if (!_testExpr.isBlockNode()) {
      return null;
    }
    _testBlockNode = ((BlockNode) _testExpr);
    return WhileTrueNode.factory.testSequence_doSequence_(((SequenceNode) this.visit_(_testBlockNode.body())), null);
  }

  public BooleanAndNode produce_and_(final Node _receiver, final Expression _testExpr) {
    final BlockNode _testBlockNode;
    if (!_testExpr.isBlockNode()) {
      return null;
    }
    _testBlockNode = ((BlockNode) _testExpr);
    return BooleanAndNode.factory.left_right_(((Expression) this.visit_(_receiver)), ((SequenceNode) this.visit_(_testBlockNode.body())));
  }

  public ArrayAtNode produce_basicAt_(final Expression _receiver, final Expression _index) {
    return ArrayAtNode.factory.receiver_index_(((Expression) this.visit_(_receiver)), ((Expression) this.visit_(_index)));
  }

  public ArrayAtPutNode produce_basicAt_put_(final Expression _receiver, final Expression _index, final Expression _value) {
    return ArrayAtPutNode.factory.receiver_index_value_(((Expression) this.visit_(_receiver)), ((Expression) this.visit_(_index)), ((Expression) this.visit_(_value)));
  }

  public IdentityComparisonNode produce_identityEquals_(final Node _receiver, final Node _anObject) {
    return IdentityComparisonNode.factory.left_right_(((Expression) this.visit_(_receiver)), ((Expression) this.visit_(_anObject)));
  }

  public IfTrueIfFalseNode produce_ifFalse_(final Node _receiver, final Expression _aBlockNode) {
    return this.produce_ifTrue_ifFalse_(_receiver, this.nilReturningBlockNode(), _aBlockNode);
  }

  public IfTrueIfFalseNode produce_ifTrue_(final Node _receiver, final Expression _aBlockNode) {
    return this.produce_ifTrue_ifFalse_(_receiver, _aBlockNode, this.nilReturningBlockNode());
  }

  public IfTrueIfFalseNode produce_ifTrue_ifFalse_(final Node _receiver, final Expression _trueExpr, final Expression _falseExpr) {
    final BlockNode _trueBlockNode;
    final BlockNode _falseBlockNode;
    if (!_trueExpr.isBlockNode()) {
      return null;
    }
    if (!_falseExpr.isBlockNode()) {
      return null;
    }
    _trueBlockNode = ((BlockNode) _trueExpr);
    _falseBlockNode = ((BlockNode) _falseExpr);
    return IfTrueIfFalseNode.factory.test_trueSequence_falseSequence_returnType_(((Expression) this.visit_(_receiver)), ((SequenceNode) this.visit_(_trueBlockNode.body())), ((SequenceNode) this.visit_(_falseBlockNode.body())), TypeOrNode.factory.left_right_(_trueBlockNode.returnType(), _falseBlockNode.returnType()));
  }

  public BooleanOrNode produce_or_(final Node _receiver, final Expression _testExpr) {
    final BlockNode _testBlockNode;
    if (!_testExpr.isBlockNode()) {
      return null;
    }
    _testBlockNode = ((BlockNode) _testExpr);
    return BooleanOrNode.factory.left_right_(((Expression) this.visit_(_receiver)), ((SequenceNode) this.visit_(_testBlockNode.body())));
  }

  public ToDoNode produce_to_by_do_(final Expression _start, final Expression _stop, final Expression _step, final Expression _loopExpr) {
    final BlockNode _loopBlockNode;
    if (!_loopExpr.isBlockNode()) {
      return null;
    }
    if (!_step.isIntegerLiteralNode()) {
      return null;
    }
    _loopBlockNode = ((BlockNode) _loopExpr);
    return ToDoNode.factory.start_stop_step_counterName_doSequence_(((Expression) this.visit_(_start)), ((Expression) this.visit_(_stop)), ((Expression) this.visit_(_step)), _loopBlockNode.arguments()[0].name(), ((SequenceNode) this.visit_(_loopBlockNode.body())));
  }

  public ToDoNode produce_to_do_(final Expression _start, final Expression _stop, final Expression _loopExpr) {
    final BlockNode _loopBlockNode;
    if (!_loopExpr.isBlockNode()) {
      return null;
    }
    _loopBlockNode = ((BlockNode) _loopExpr);
    return ToDoNode.factory.start_stop_step_counterName_doSequence_(((Expression) this.visit_(_start)), ((Expression) this.visit_(_stop)), IntegerLiteralNode.factory.integer_(((java.math.BigInteger) java.math.BigInteger.ONE)), _loopBlockNode.arguments()[0].name(), ((SequenceNode) this.visit_(_loopBlockNode.body())));
  }

  public WhileFalseNode produce_whileFalse_(final Expression _testExpr, final Expression _loopExpr) {
    final BlockNode _testBlockNode;
    final BlockNode _loopBlockNode;
    if (!_testExpr.isBlockNode()) {
      return null;
    }
    if (!_loopExpr.isBlockNode()) {
      return null;
    }
    _testBlockNode = ((BlockNode) _testExpr);
    _loopBlockNode = ((BlockNode) _loopExpr);
    return WhileFalseNode.factory.testSequence_doSequence_(((SequenceNode) this.visit_(_testBlockNode.body())), ((SequenceNode) this.visit_(_loopBlockNode.body())));
  }

  public WhileTrueNode produce_whileTrue_(final Expression _testExpr, final Expression _loopExpr) {
    final BlockNode _testBlockNode;
    final BlockNode _loopBlockNode;
    if (!_testExpr.isBlockNode()) {
      return null;
    }
    if (!_loopExpr.isBlockNode()) {
      return null;
    }
    _testBlockNode = ((BlockNode) _testExpr);
    _loopBlockNode = ((BlockNode) _loopExpr);
    return WhileTrueNode.factory.testSequence_doSequence_(((SequenceNode) this.visit_(_testBlockNode.body())), ((SequenceNode) this.visit_(_loopBlockNode.body())));
  }
}
TOP

Related Classes of st.gravel.support.compiler.ast.IntermediateNodeRewriter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.