package org.uva.qls.main;
import java.io.IOException;
import org.antlr.v4.runtime.ANTLRFileStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;
import org.uva.qls.antlr.QLSLexer;
import org.uva.qls.antlr.QLSParser;
import org.uva.qls.ast.builder.QLSImplVisitor;
import org.uva.qls.ast.sheet.Page;
import org.uva.qls.ast.sheet.Question;
import org.uva.qls.ast.sheet.Section;
import org.uva.qls.ast.sheet.Sheet;
import org.uva.qls.ast.sheet.Style;
import org.uva.qls.ast.style.StyleProperty;
import org.uva.qls.typechecker.TypeChecker;
public class Main {
public static void main(String[] args) throws IOException {
ANTLRFileStream input = new ANTLRFileStream("scripts/qls/style1.qls");
QLSLexer lexer = new QLSLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
QLSParser parser = new QLSParser(tokens);
ParseTree tree = parser.sheet();
QLSImplVisitor visitor = new QLSImplVisitor();
Sheet sheet = (Sheet) tree.accept(visitor);
System.out.println();
System.out.println("omg");
printSheet(sheet);
System.out.println("TYPECHECKER.");
TypeChecker checker = new TypeChecker();
System.out.println(checker.visit(sheet));
checker.print();
}
private static void printSheet(Sheet sheet) {
System.out.println("Identifier for sheet = " + sheet.toString());
for (Page page : sheet.getPageList()) {
System.out.println("Identifier for page = " + page.toString());
for (Section section : page.getSectionList()) {
printSection(section);
}
for (Style style : page.getStyleList()) {
printStyle(style);
}
}
}
private static void printSection(Section section) {
System.out.println("Section = " + section.toString());
for (Question question : section.getQuestionList()) {
printQuestion(question);
}
for (Style style : section.getStyleList()) {
printStyle(style);
}
}
private static void printStyle(Style style) {
System.out.println("Style type = " + style.getType());
for (StyleProperty prop : style.getStyleProperties()) {
printProp(prop);
}
}
private static void printProp(StyleProperty prop) {
System.out.println("Style property = " + prop.toString());
}
private static void printQuestion(Question question) {
System.out.println("Question = " + question.toString());
}
}