Skip to content
Snippets Groups Projects
Commit 6f191f28 authored by dgelessus's avatar dgelessus
Browse files

Replace custom Ast2String with ASTProlog from B parser

The AST form is only used for comparisons in tests, so the exact format
doesn't matter.
parent 56e8787d
No related branches found
No related tags found
No related merge requests found
package de.tla2b.util;
import de.be4.classicalb.core.parser.node.Node;
import de.be4.classicalb.core.parser.node.Start;
import de.be4.classicalb.core.parser.node.Token;
public class Ast2String extends ExtendedDFAdapter {
private final StringBuilder builder = new StringBuilder();
@Override
public String toString() {
return builder.toString();
}
@Override
public void defaultIn(final Node node) {
super.defaultIn(node);
builder.append(node.getClass().getSimpleName());
builder.append("(");
}
@Override
public void defaultCase(final Node node) {
super.defaultCase(node);
if (node instanceof Token) {
builder.append(((Token) node).getText());
} else {
builder.append(node.toString());
}
}
@Override
public void defaultOut(final Node node) {
super.defaultOut(node);
builder.append(")");
}
@Override
public void beginList(final Node parent) {
builder.append('[');
}
@Override
public void betweenListElements(final Node parent) {
builder.append(',');
}
@Override
public void endList(final Node parent) {
builder.append(']');
}
@Override
public void betweenChildren(final Node parent) {
builder.append(',');
}
@Override
public void caseStart(final Start node) {
inStart(node);
node.getPParseUnit().apply(this);
node.getEOF().apply(this);
outStart(node);
}
}
package de.tla2b.util; package de.tla2b.util;
import static org.junit.Assert.*;
import util.FileUtil;
import de.be4.classicalb.core.parser.BParser; import de.be4.classicalb.core.parser.BParser;
import de.be4.classicalb.core.parser.analysis.prolog.ASTProlog;
import de.be4.classicalb.core.parser.exceptions.BCompoundException; import de.be4.classicalb.core.parser.exceptions.BCompoundException;
import de.be4.classicalb.core.parser.node.Node; import de.be4.classicalb.core.parser.node.Node;
import de.be4.classicalb.core.parser.node.Start; import de.be4.classicalb.core.parser.node.Start;
import de.prob.prolog.output.PrologTermStringOutput;
import de.tla2b.exceptions.FrontEndException; import de.tla2b.exceptions.FrontEndException;
import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TLA2BException;
import de.tla2b.output.ASTPrettyPrinter; import de.tla2b.output.ASTPrettyPrinter;
import de.tla2b.output.Renamer; import de.tla2b.output.Renamer;
import de.tla2bAst.Translator; import de.tla2bAst.Translator;
import util.FileUtil;
import util.ToolIO; import util.ToolIO;
import static org.junit.Assert.assertEquals;
public class TestUtil { public class TestUtil {
public static void loadTlaFile(String tlaFile) throws Exception { public static void loadTlaFile(String tlaFile) throws Exception {
...@@ -84,9 +87,9 @@ public class TestUtil { ...@@ -84,9 +87,9 @@ public class TestUtil {
} }
public static String getTreeAsString(Node node) { public static String getTreeAsString(Node node) {
final Ast2String ast2String = new Ast2String(); final PrologTermStringOutput pout = new PrologTermStringOutput();
node.apply(ast2String); node.apply(new ASTProlog(pout, null));
return ast2String.toString(); return pout.toString();
} }
public static void renamerTest(String tlaFile) throws Exception { public static void renamerTest(String tlaFile) throws Exception {
...@@ -129,21 +132,13 @@ public class TestUtil { ...@@ -129,21 +132,13 @@ public class TestUtil {
public static String getAstStringofBMachineString(final String testMachine) throws BCompoundException { public static String getAstStringofBMachineString(final String testMachine) throws BCompoundException {
final BParser parser = new BParser("testcase"); final BParser parser = new BParser("testcase");
final Start startNode = parser.parse(testMachine, false); final Start startNode = parser.parse(testMachine, false);
return getTreeAsString(startNode);
final Ast2String ast2String = new Ast2String();
startNode.apply(ast2String);
final String string = ast2String.toString();
return string;
} }
public static String getAstStringofBExpressionString(final String expr) throws BCompoundException { public static String getAstStringofBExpressionString(final String expr) throws BCompoundException {
final BParser parser = new BParser("testcase"); final BParser parser = new BParser("testcase");
final Start startNode = parser.parse("#FORMULA " + expr, false); final Start startNode = parser.parse("#FORMULA " + expr, false);
return getTreeAsString(startNode);
final Ast2String ast2String = new Ast2String();
startNode.apply(ast2String);
final String string = ast2String.toString();
return string;
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment