Exemplo n.º 1
0
  private String getExpr(ExprContext expr) {
    String output = "";
    /////
    // float, int, char, char*

    if (expr.getChildCount() == 1) {
      if (expr.FLOAT() != null || expr.INT() != null) {
        return expr.getText().toString();
      } else if (expr.ID() != null) {
        return this.variableTrack.get(expr.getText());
      } else if (expr.defExpr() != null) {
        DefExprContext def = expr.defExpr();
        output = "(valueOf " + this.variableTrack.get(def.ID().getText()) + ")";
      } else if (expr.addressExpr() != null) {
        AddressExprContext add = expr.addressExpr();
        output = "(addressOf " + this.variableTrack.get(add.ID().getText()) + ")";
      } else if (expr.CharacterLiteral() != null) {
        String ch = expr.CharacterLiteral().getText();
        int value = ch.charAt(1);
        return Integer.toString(value);
      } else if (expr.convertExpr() != null) {
        return expr.convertExpr().ID().getText();
      }

    } else {
      String operator = expr.getChild(1).getText();
      if (operator.equals("%")) operator = "mod";
      return "(" + operator + " " + getExpr(expr.expr(0)) + " " + getExpr(expr.expr(1)) + ")";
    }
    return output;
  }