Package com.icona.tree.nodes

Source Code of com.icona.tree.nodes.Expression$ListExpression

package com.icona.tree.nodes;



import java.util.ArrayList;

import com.icona.helper.CodeStringBuilder;
import com.icona.tree.nodes.GenericRef.RefType;
import com.icona.tree.nodes.Operator.AssignmentOperator;
import com.icona.tree.nodes.Operator.AssignmentOperator.AssignmentSymbol;
import com.icona.tree.nodes.Operator.BinaryOperator;
import com.icona.tree.nodes.Operator.BinaryOperator.BinarySymbol;
import com.icona.tree.nodes.Operator.TertiaryOperator;
import com.icona.tree.nodes.Operator.UnaryOperator;
import com.icona.tree.nodes.Operator.UnaryOperator.UnarySymbol;

public abstract class Expression extends Statement {
 
  public Expression(Node parent, int line_no) {
    super(parent, line_no);
    // TODO Auto-generated constructor stub
   
  }
 
  public abstract boolean isNonBoolean();
 
  @Override
  public boolean hasMultipleExpressions(){
    return false;
  }
  public static class AssignmentExpression extends Expression{
    Expression target=null;
    Expression value=null;
    AssignmentOperator operator=null;
   
   
    public AssignmentExpression(Node parent, int line_no,AssignmentSymbol symbol) {
      super(parent, line_no);
      operator=new AssignmentOperator(symbol);
    }
   
    public AssignmentSymbol getOperator() {
      return operator.getSymbol();
    }
   

    public void setOperator(AssignmentSymbol operator) {
      this.operator.setSymbol(operator);
    }

    public Expression getTarget() {
      return target;
    }

    public void setTarget(Expression target) {
      this.target = target;
    }

    public Expression getValue() {
      return value;
    }

    public void setValue(Expression value) {
      this.value = value;
    }
   
    public String toString(){
      StringBuilder sb=new StringBuilder();
      //sb.append("\t");
      sb.append(target.toString());
      //sb.append(" ");
      if(!operator.isNull()){
        sb.append(operator.toString());
        //sb.append(" ");
        sb.append(value.toString());
      }
     
      return sb.toString();
    }

    @Override
    public boolean isNonBoolean() {
      return true;//TODO: Check if simple assignment in java returns anything
    }
   
   
  }
 
  public static class UnaryExpression extends Expression{
    UnaryOperator operator;
    Expression expression;
   
    public UnaryExpression(Node parent, int line_no,UnarySymbol symbol) {
      super(parent, line_no);
      operator=new UnaryOperator(symbol);
    }
   
    public UnaryExpression(Node parent, int line_no,UnarySymbol symbol,Expression expression) {
      super(parent, line_no);
      operator=new UnaryOperator(symbol);
      this.expression=expression;
    }
   
   
    public UnarySymbol getOperator() {
      return operator.getSymbol();
    }
   

    public void setOperator(UnarySymbol operator) {
      this.operator.setSymbol(operator);
    }


    public Expression getExpression() {
      return expression;
    }


    public void setExpression(Expression expression) {
      this.expression = expression;
    }
   
    public String toString(){
      StringBuilder sb=new StringBuilder();
      if(operator!=null && !operator.isNull())
        sb.append(operator.toString());
      sb.append(expression.toString());
     
      return sb.toString();
    }

    @Override
    public boolean isNonBoolean() {
     
      return true;
    }


   
   
   
  }
  public static class BinaryExpression extends Expression{
    //ArrayList<Expression> expressions=new ArrayList<Expression>();
    Expression lhs=null;
    Expression rhs=null;
    BinaryOperator operator=null;
   
    public BinaryExpression(Node parent, int line_no,BinarySymbol operator) {
      super(parent, line_no);
      this.operator=new BinaryOperator(operator);
      
    }
   
   
    public Expression getLhs() {
      return lhs;
    }


    public void setLhs(Expression lhs) {
      this.lhs = lhs;
    }


    public Expression getRhs() {
      return rhs;
    }


    public void setRhs(Expression rhs) {
      this.rhs = rhs;
    }


    public BinarySymbol getOperator() {
      return operator.getSymbol();
    }
   

    public void setOperator(BinarySymbol operator) {
      this.operator.setSymbol(operator);
    }
   
    public String toString(){
      StringBuilder sb=new StringBuilder();
      //sb.append(" ");
      sb.append(lhs.toString());
      //sb.append(" ");
      if(!operator.isNull()){
        sb.append(operator.toString());
        //sb.append(" ");
        sb.append(rhs.toString());
      }
     
      return sb.toString();
    }


    @Override
    public boolean isNonBoolean() {
      // TODO Auto-generated method stub
      if(rhs==null) return lhs.isNonBoolean();
      else if(operator.isBoolean() ==false) return true;
     
      return false;
    }
   
   
   
    /*public ArrayList<Expression> getExpressions(){
      return expressions;
    }

    @Override
    public void addChild(Node node) {
      expressions.add((Expression)node);
    }

    @Override
    public Node getNextChild(Node existing) {
     
      int index=expressions.indexOf((Expression)existing);
      return (index >=0 )? expressions.get(index+1):null;
    }

    @Override
    public Node getPreviousChild(Node existing) {
      int index=expressions.indexOf((Expression)existing);
      return (index >=0 )? expressions.get(index-1):null;
    }

    @Override
    public boolean replaceChild(Node existing, Node by) {
      // TODO Auto-generated method stub
      return super.replaceChild(existing, by);
    }

    @Override
    public Node getNextSibling() {
     
      return super.getNextChild(this);
    }

    @Override
    public Node getPreviousSibling() {
     
      return super.getPreviousChild(this);
    }*/
   
   
  }
 
  public static class TertiaryExpression extends Expression{
   
    private Expression conditionExpression=null;
    private Expression ifExpression=null;
    private Expression elseExpression=null;
   
    public TertiaryExpression(Node parent, int line_no) {
      super(parent, line_no);
      // TODO Auto-generated constructor stub
    }

    public Expression getConditionExpression() {
      return conditionExpression;
    }

    public void setConditionExpression(Expression conditionExpression) {
      this.conditionExpression = conditionExpression;
    }

    public Expression getIfExpression() {
      return ifExpression;
    }

    public void setIfExpression(Expression ifExpression) {
      this.ifExpression = ifExpression;
    }

    public Expression getElseExpression() {
      return elseExpression;
    }

    public void setElseExpression(Expression elseExpression) {
      this.elseExpression = elseExpression;
    }
   
    public String toString(){
      StringBuilder sb=new StringBuilder();
      sb.append(conditionExpression.toString());
     
      if(ifExpression!=null){
        sb.append(TertiaryOperator.TERTIARY_CONDITION.toString());
        sb.append(ifExpression.toString());
        sb.append(TertiaryOperator.TERTIARY_ELSE.toString());
        sb.append(elseExpression.toString());
      }
     
      return sb.toString();
    }

    @Override
    public boolean isNonBoolean() {
      // TODO Auto-generated method stub
     
      return (ifExpression.isNonBoolean() || elseExpression.isNonBoolean());
    }
   
   
   
  }
 
  public static class PrimaryExpression extends Expression{
    GenericRef ref=null;
    Expression expression=null;
    boolean hasParanthesis=false;
   
    public PrimaryExpression(Node parent, int line_no,String str,RefType type) {
      super(parent, line_no);
      // TODO Auto-generated constructor stub
     
      ref=new GenericRef(str, type);
    }
    public PrimaryExpression(Node parent, int line_no,Expression expression) {
      super(parent, line_no);
      // TODO Auto-generated constructor stub
     
      this.expression=expression;
    }
    public boolean isHasParanthesis() {
      return hasParanthesis;
    }
    public void setHasParanthesis(boolean hasParanthesis) {
      this.hasParanthesis = hasParanthesis;
    }
   
    public String toString(){
     
      if(ref!=null)
        return ref.toString();
     
     
      StringBuilder sb=new StringBuilder();
      if(hasParanthesis)
        sb.append("(");
      sb.append(expression.toString());
      if(hasParanthesis)
        sb.append(")");
     
      return sb.toString();
    }
    @Override
    public boolean isNonBoolean() {
      // TODO Auto-generated method stub
      if(ref!=null) return true;
      else if(expression!=null) return expression.isNonBoolean();
     
      return false;
   
   
  }
 
  public static class PostfixExpression extends Expression{
    PrimaryExpression primaryExpression=null;
    Expression expression=null;
    UnaryOperator operator=null;
    boolean isArr=false; //TODO hardcoded should be changed
   
    public PostfixExpression(Node parent, int line_no) {
      super(parent, line_no);
      // TODO Auto-generated constructor stub
    }
   
   
   
    public boolean isArr() {
      return isArr;
    }



    public void setArr(boolean isArr) {
      this.isArr = isArr;
    }



    public PrimaryExpression getPrimaryExpression() {
      return primaryExpression;
    }



    public void setPrimaryExpression(PrimaryExpression primaryExpression) {
      this.primaryExpression = primaryExpression;
    }



    public Expression getExpression() {
      return expression;
    }



    public void setExpression(Expression expression) {
      this.expression = expression;
    }



    public UnarySymbol getOperator() {
      return operator.getSymbol();
    }
   

    public void setOperator(UnarySymbol operator) {
      this.operator.setSymbol(operator);
    }
   
    public String toString(){
      return primaryExpression.toString();
    }



    @Override
    public boolean isNonBoolean() {
      // TODO Auto-generated method stub
      return false;
    }
   
  }
 
  static public class ListExpression extends Expression{
    ArrayList<Expression> expressions;
   
    public ListExpression(Node parent, int line_no) {
      super(parent, line_no);
      // TODO Auto-generated constructor stub
      expressions=new ArrayList<Expression>();
    }
   
    public void addExpression(Expression e){
      expressions.add(e);
    }
   
    public ArrayList<Expression> getExpressions() {
      return expressions;
    }

    public void setExpressions(ArrayList<Expression> expressions) {
      this.expressions = expressions;
    }

    private Expression getLastExpression(){
      if(expressions.size()<=0)
        return null;
      return expressions.get(expressions.size()-1);
    }
    private ArrayList<Expression> getAllExceptLastExpression(){
      ArrayList<Expression> le=(ArrayList<Expression>)expressions.clone();
      le.remove(le.size()-1);
      return le;
     
    }
    public String getLastExpressionString(){
      Expression e=getLastExpression();
      return (e!=null)? e.toString() : "";
    }
    public String getAllExceptLastExpressionString(){
      ArrayList<Expression> le=getAllExceptLastExpression();
      CodeStringBuilder sb=new CodeStringBuilder();
      for(int i=0;i<le.size();i++){
        sb.appendWithTabNewLine(le.get(i).toString()+";");
       
      }
     
      return sb.toString();
    }
   

    public String getAllExpressionStringCommaSeperated(){
     
      StringBuilder sb=new StringBuilder();
      for(int i=0;i<expressions.size()-1;i++){
        sb.append(expressions.get(i).toString());
        sb.append(",");
      }
      sb.append(expressions.get(expressions.size()-1));
     
      return sb.toString();
    }
    public String toString(){
      //TODO: Implement toString of ListExpression
      CodeStringBuilder sb=new CodeStringBuilder();
      for(int i=0;i<expressions.size();i++){
        sb.appendWithTabNewLine(expressions.get(i).toString()+";");// TODO  Creating Problems
     
      }
     
      return sb.toString();
    }
   
    public boolean isMultipleExpression(){
     
      return (expressions.size()>1); //TODO: Method isMultipleExpression needs to be deleted
    }
   
    @Override
    public boolean hasMultipleExpressions(){
      return (expressions.size()>1);
    }

    @Override
    public boolean isNonBoolean() {
      // TODO Auto-generated method stub
      return false;
    }
   
   
   
   
  }

}
TOP

Related Classes of com.icona.tree.nodes.Expression$ListExpression

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.