package nl.uva.polyql; import java.io.FileInputStream; import java.io.IOException; import nl.uva.polyql.antlr4.LineInfoListener; import nl.uva.polyql.antlr4.QuestionnaireLexer; import nl.uva.polyql.antlr4.QuestionnaireParser; import nl.uva.polyql.antlr4.QuestionnaireParser.FormContext; import nl.uva.polyql.ast.Rule; import nl.uva.polyql.ast.RuleContainer; import nl.uva.polyql.utils.Log; import nl.uva.polyql.validation.Validator; import nl.uva.polyql.view.FormFrame; import org.antlr.v4.runtime.ANTLRInputStream; import org.antlr.v4.runtime.CommonTokenStream; public class Initialiser { public static void main(final String... params) { Log.setInfoLogging(false); try { final ANTLRInputStream input = new ANTLRInputStream(new FileInputStream("res/exampleform.txt")); final QuestionnaireLexer lexer = new QuestionnaireLexer(input); final CommonTokenStream tokens = new CommonTokenStream(lexer); final QuestionnaireParser parser = new QuestionnaireParser(tokens); parser.addParseListener(new LineInfoListener()); final FormContext tree = parser.form(); Log.i("=========================="); Log.i(tree.toStringTree(parser)); Log.i("=========================="); printRuleContainer(tree.f, 0); final Validator validator = Validator.validate(tree.f); validator.print(); if (!validator.isFatal()) { new FormFrame(tree.f); } } catch (final IOException ex) { ex.printStackTrace(); } } private static void printRuleContainer(final RuleContainer form, final int level) { String indent = ""; for (int i = 0; i < level * 4; ++i) { indent += " "; } for (final Rule rule : form.getRules()) { Log.i(indent + rule); if (rule instanceof RuleContainer) { printRuleContainer((RuleContainer) rule, level + 1); } } } }