46 lines
1.4 KiB
Java
46 lines
1.4 KiB
Java
/* **********************************************
|
|
* Duale Hochschule Baden-Württemberg Karlsruhe
|
|
* Prof. Dr. Jörn Eisenbiegler
|
|
*
|
|
* Vorlesung Übersetzerbau
|
|
* Praxis ANTLR-Parser für X
|
|
* - Testfall-Utility für Parser
|
|
*
|
|
* **********************************************
|
|
*/
|
|
|
|
|
|
package de.dhbw.compiler.antlrxcompiler.test;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
|
|
import java.io.ByteArrayInputStream;
|
|
|
|
import de.dhbw.compiler.antlrxcompiler.*;
|
|
import org.antlr.runtime.ANTLRInputStream;
|
|
import org.antlr.runtime.CommonTokenStream;
|
|
import org.antlr.runtime.tree.CommonTreeNodeStream;
|
|
|
|
public abstract class OptimizerTest {
|
|
|
|
protected void testTypeCheckTree(String in, String expected) throws Exception {
|
|
XTreeAdaptor xTreeAdaptor = new XTreeAdaptor();
|
|
ANTLRInputStream input = new ANTLRInputStream(new ByteArrayInputStream(in.getBytes()));
|
|
XLexer scanner = new XLexer(input);
|
|
CommonTokenStream tokens = new CommonTokenStream(scanner);
|
|
XParser parser = new XParser(tokens);
|
|
parser.setTreeAdaptor(xTreeAdaptor);
|
|
XTree out = parser.program().getTree();
|
|
XOptimizer optimizer = new XOptimizer(new CommonTreeNodeStream(xTreeAdaptor, out));
|
|
optimizer.setTreeAdaptor(xTreeAdaptor);
|
|
out = (XTree)optimizer.downup(out,true);
|
|
|
|
if (out==null) {
|
|
assertEquals(expected, out);
|
|
} else {
|
|
assertEquals(expected, out.toStringTree());
|
|
}
|
|
}
|
|
|
|
}
|