Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Renaming
  • Loading branch information
rcosta358 committed Apr 1, 2026
commit 1a128375205ee070adffb9a3ee45ecb180636dd6
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import liquidjava.diagnostics.TranslationTable;
import liquidjava.rj_language.ast.Var;
import liquidjava.rj_language.ast.prettyprinting.VariableFormatter;
import liquidjava.rj_language.ast.formatter.VariableFormatter;
import liquidjava.rj_language.opt.derivation_node.ValDerivationNode;
import liquidjava.smt.Counterexample;
import spoon.reflect.cu.SourcePosition;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import liquidjava.processor.context.Context;
import liquidjava.processor.context.GhostFunction;
import liquidjava.processor.facade.AliasDTO;
import liquidjava.rj_language.ast.prettyprinting.ExpressionPrinter;
import liquidjava.rj_language.ast.formatter.ExpressionFormatter;
import liquidjava.rj_language.ast.typing.TypeInfer;
import liquidjava.rj_language.visitors.ExpressionVisitor;
import liquidjava.utils.Utils;
Expand All @@ -38,7 +38,7 @@ public abstract class Expression {
public abstract String toString();

public String toDisplayString() {
return ExpressionPrinter.print(this);
return ExpressionFormatter.format(this);
}

List<Expression> children = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package liquidjava.rj_language.ast.prettyprinting;
package liquidjava.rj_language.ast.formatter;

import java.util.List;
import java.util.stream.Collectors;
Expand All @@ -21,41 +21,41 @@
import liquidjava.utils.Utils;

/**
* Pretty printer for expressions that preserves only the parentheses required by precedence and associativity rules
* Formatter expressions that preserves only the parentheses required by precedence and associativity rules
* Also formats variable names using {@link VariableFormatter}
*/
public class ExpressionPrinter implements ExpressionVisitor<String> {
public class ExpressionFormatter implements ExpressionVisitor<String> {

public static String print(Expression expression) {
return new ExpressionPrinter().render(expression);
public static String format(Expression expression) {
return new ExpressionFormatter().formatExpression(expression);
}

private String render(Expression expression) {
private String formatExpression(Expression expression) {
return expression.accept(this);
}

private String renderWithOptionalParentheses(Expression child, boolean shouldWrap) {
private String formatParentheses(Expression child, boolean shouldWrap) {
if (shouldWrap)
return "(" + render(child) + ")";
return "(" + formatExpression(child) + ")";
if (child instanceof GroupExpression group)
return "(" + render(group.getExpression()) + ")";
return render(child);
return "(" + formatExpression(group.getExpression()) + ")";
return formatExpression(child);
}

private String renderOperand(Expression parent, Expression child) {
return renderWithOptionalParentheses(child, needsParentheses(parent, child));
private String formatOperand(Expression parent, Expression child) {
return formatParentheses(child, needsParentheses(parent, child));
}

private String renderRightOperand(BinaryExpression parent, Expression child) {
return renderWithOptionalParentheses(child, needsRightParentheses(parent, child));
private String formatRightOperand(BinaryExpression parent, Expression child) {
return formatParentheses(child, needsRightParentheses(parent, child));
}

private String renderConditionOperand(Expression child) {
return renderWithOptionalParentheses(child, child instanceof Ite);
private String formatCondition(Expression child) {
return formatParentheses(child, child instanceof Ite);
}

private String renderArguments(List<Expression> args) {
return args.stream().map(expression -> renderWithOptionalParentheses(expression, false))
private String formatArguments(List<Expression> args) {
return args.stream().map(expression -> formatParentheses(expression, false))
.collect(Collectors.joining(", "));
}

Expand All @@ -82,29 +82,29 @@ private boolean isAssociative(String operator) {

@Override
public String visitAliasInvocation(AliasInvocation alias) {
return alias.getName() + "(" + renderArguments(alias.getArgs()) + ")";
return alias.getName() + "(" + formatArguments(alias.getArgs()) + ")";
}

@Override
public String visitBinaryExpression(BinaryExpression exp) {
return renderOperand(exp, exp.getFirstOperand()) + " " + exp.getOperator() + " "
+ renderRightOperand(exp, exp.getSecondOperand());
return formatOperand(exp, exp.getFirstOperand()) + " " + exp.getOperator() + " "
+ formatRightOperand(exp, exp.getSecondOperand());
}

@Override
public String visitFunctionInvocation(FunctionInvocation fun) {
return Utils.getSimpleName(fun.getName()) + "(" + renderArguments(fun.getArgs()) + ")";
return Utils.getSimpleName(fun.getName()) + "(" + formatArguments(fun.getArgs()) + ")";
}

@Override
public String visitGroupExpression(GroupExpression exp) {
return "(" + render(exp.getExpression()) + ")";
return "(" + formatExpression(exp.getExpression()) + ")";
}

@Override
public String visitIte(Ite ite) {
return renderConditionOperand(ite.getCondition()) + " ? " + renderConditionOperand(ite.getThen()) + " : "
+ renderOperand(ite, ite.getElse());
return formatCondition(ite.getCondition()) + " ? " + formatCondition(ite.getThen()) + " : "
+ formatOperand(ite, ite.getElse());
}

@Override
Expand Down Expand Up @@ -139,7 +139,7 @@ public String visitLiteralString(LiteralString lit) {

@Override
public String visitUnaryExpression(UnaryExpression exp) {
return exp.getOp() + renderOperand(exp, exp.getExpression());
return exp.getOp() + formatOperand(exp, exp.getExpression());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package liquidjava.rj_language.ast.prettyprinting;
package liquidjava.rj_language.ast.formatter;

import liquidjava.rj_language.ast.BinaryExpression;
import liquidjava.rj_language.ast.Expression;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package liquidjava.rj_language.ast.prettyprinting;
package liquidjava.rj_language.ast.formatter;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
Expand Down
Loading