package org.softlang.company.features; import java.io.PrintStream; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.TerminalNodeImpl; import org.softlang.company.antlr.CompanyBaseVisitor; import org.softlang.company.antlr.CompanyParser.*; import org.softlang.company.antlr.CompanyParser.DepartmentContext; import org.softlang.company.antlr.CompanyParser.EmployeeContext; public class PrintVisitor extends CompanyBaseVisitor<Void> { PrintStream out; public PrintVisitor(PrintStream out) { this.out=out; } public PrintVisitor() { this.out=System.out; } @Override public Void visitCompany(CompanyContext ctx) { ParseTree c; for (int i = 0; i < ctx.getChildCount() - 1; i++) if ((c = ctx.getChild(i)) instanceof TerminalNodeImpl) out.print(c.getText() + " "); else visit(c); return null; } @Override public Void visitDepartment(DepartmentContext ctx) { for (ParseTree c : ctx.children) if (c instanceof TerminalNodeImpl) out.print(c + " "); else visit(c); return null; } @Override public Void visitEmployee(EmployeeContext ctx) { for (ParseTree c : ctx.children) out.print(c + " "); return null; } }