import com.klq.gui.AST2GUIConverter; import com.klq.ast.ParseTreeConverter; import com.klq.ast.impl.stmt.QuestionnaireNode; import com.klq.gui.QuestionPage; import com.klq.gui.Questionnaire; import com.klq.controller.Controller; import com.klq.parser.KLQLexer; import com.klq.parser.KLQParser; import com.klq.typechecker.TypeChecker; import javafx.application.Application; import javafx.application.Platform; import javafx.scene.Scene; import javafx.stage.Stage; import org.antlr.v4.runtime.ANTLRInputStream; import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.tree.ParseTree; import java.io.*; import java.util.Map; /** * Created by Timon on 09.02.2015. */ public class Main extends Application { private Questionnaire questionnaire; public static void main(String[] args) throws Exception { if (args == null || args.length == 0) { System.out.println("No input file provided!"); return; } else if (args.length > 1) { System.out.println("Too many arguments. Please provide one input file."); return; } Application.launch(args); } @Override public void init() throws Exception { Map<String, String> arguments = getParameters().getNamed(); String path = arguments.get("file"); File file = new File(path); InputStream is; try { is = new FileInputStream(file); } catch (FileNotFoundException fnf){ System.out.println("File not found!"); return; } ANTLRInputStream input; try { input = new ANTLRInputStream(is); } catch (IOException io){ System.out.println("Error while creating the ANTLR input stream."); return; } KLQLexer lexer = new KLQLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); KLQParser parser = new KLQParser(tokens); ParseTree tree = parser.questionnaire(); ParseTreeConverter eval = new ParseTreeConverter(file); QuestionnaireNode ast = (QuestionnaireNode) eval.visit(tree); TypeChecker tc = new TypeChecker(ast); tc.run(); tc.printErrors(); if(tc.stopApplication()){ Platform.exit(); } AST2GUIConverter AST2GUIConverter = new AST2GUIConverter(); Controller controller = (Controller) ast.accept(AST2GUIConverter); QuestionPage page = new QuestionPage(controller); page.addQuestions(controller.getOrderedQuestions()); questionnaire = new Questionnaire(controller); questionnaire.addQuestionPage(page); } @Override public void start(Stage primaryStage) throws Exception { Scene scene = new Scene(questionnaire); primaryStage.setScene(scene); primaryStage.show(); } }