package tests; import gui.TypeCheckedForm; import gui.render.Renderer; import gui.render.State; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.SwingUtilities; import org.antlr.v4.runtime.ANTLRInputStream; import org.antlr.v4.runtime.CommonTokenStream; import typecheck.ErrorList; import typecheck.StatementTypeChecker; import typecheck.SymbolTable; import antlr.QLangLexer; import antlr.QLangParser; import ast.ASTNode; import ast.statement.Form; public class RendererTest extends JFrame { private static final long serialVersionUID = 1L; public RendererTest() throws Exception{ Renderer r = new Renderer(new State()); TypeCheckedForm checkedForm = getInputForm(); try{ JComponent jc = r.render(checkedForm.getForm()); add(jc); pack(); setTitle(checkedForm.getForm().getId().getIdentName()); setSize(500, 600); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } catch(Exception e){ throw new Exception("Type checker found errors in the form \n"+ checkedForm.getErrors()); } } public static void main(String[] args) { try { SwingUtilities.invokeLater(new Runnable() { RendererTest r = new RendererTest(); @Override public void run() { r.setVisible(true); } }); } catch (Exception e) { e.printStackTrace(); } } public static TypeCheckedForm getInputForm() throws FileNotFoundException, IOException{ ASTNode tree = getParseTree(); SymbolTable symbolTable = new SymbolTable(); ErrorList errors= new ErrorList(); StatementTypeChecker checker = new StatementTypeChecker(symbolTable, errors); boolean result = ((Form) tree).accept(checker); return new TypeCheckedForm((Form) tree, result, checker.get_errorList()); } public static ASTNode getParseTree() throws FileNotFoundException, IOException{ File in = new File("..\\QLanguage\\src\\tests\\test.txt"); ANTLRInputStream input = new ANTLRInputStream(new FileInputStream(in)); QLangLexer lexer = new QLangLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); QLangParser parser = new QLangParser(tokens); ASTNode tree = parser.init().result; return tree; } }