@Override protected <T extends IAstNode> void visitChildFromParent(Consumer<T> visitorMethod, T child, IAstNode parent) { super.visitChildFromParent(visitorMethod, child, parent); if (parent instanceof TranslationUnit && child instanceof VariablesDeclaration) { out.append(";" + newLine() + newLine()); } }
@Override public void visitDiscardStmt(DiscardStmt discardStmt) { out.append(indent() + "discard"); out.append(";" + newLine()); }
@Override public void visitContinueStmt(ContinueStmt continueStmt) { out.append(indent() + "continue"); out.append(";" + newLine()); }
@Override public void visitDefaultCaseLabel(DefaultCaseLabel defaultCaseLabel) { out.append(indent()); out.append("default:" + newLine()); }
@Override public void visitBreakStmt(BreakStmt breakStmt) { out.append(indent() + "break"); out.append(";" + newLine()); }
@Override public void visitNullStmt(NullStmt nullStmt) { out.append(indent() + ";" + newLine()); }
@Override public void visitDeclarationStmt(DeclarationStmt declarationStmt) { out.append(indent()); super.visitDeclarationStmt(declarationStmt); out.append(";" + newLine()); }
@Override public void visitExprCaseLabel(ExprCaseLabel exprCaseLabel) { out.append(indent()); out.append("case "); visit(exprCaseLabel.getExpr()); out.append(":" + newLine()); }
@Override public void visitExprStmt(ExprStmt exprStmt) { out.append(indent()); visit(exprStmt.getExpr()); out.append(";" + newLine()); }
@Override public void visitDefaultLayout(DefaultLayout defaultLayout) { out.append(indent()); out.append(defaultLayout.getLayoutQualifier().toString()); out.append(" "); out.append(defaultLayout.getTypeQualifier().toString()); out.append(";" + newLine()); }
@Override public void visitReturnStmt(ReturnStmt returnStmt) { out.append(indent() + "return"); if (returnStmt.hasExpr()) { out.append(" "); visit(returnStmt.getExpr()); } out.append(";" + newLine()); }
@Override public void visitFunctionPrototype(FunctionPrototype functionPrototype) { visit(functionPrototype.getReturnType()); out.append(" " + functionPrototype.getName() + "("); boolean first = true; for (ParameterDecl p : functionPrototype.getParameters()) { if (!first) { out.append(", "); } first = false; visit(p); } out.append(")"); if (!inFunctionDefinition) { out.append(";"); } out.append(newLine()); }
@Override public void visitForStmt(ForStmt forStmt) { out.append(indent() + "for(" + newLine()); out.append(" "); visit(forStmt.getInit()); out.append(" " + indent()); visit(forStmt.getCondition()); out.append(";" + newLine()); out.append(" " + indent()); visit(forStmt.getIncrement()); out.append(newLine()); out.append(indent() + ")" + newLine()); increaseIndent(); visit(forStmt.getBody()); decreaseIndent(); }
@Override public void visitStructDefinitionType(StructDefinitionType structDefinitionType) { out.append("struct "); if (structDefinitionType.hasStructNameType()) { visit(structDefinitionType.getStructNameType()); out.append(" "); } out.append("{" + newLine()); increaseIndent(); for (String name : structDefinitionType.getFieldNames()) { out.append(indent()); visit(structDefinitionType.getFieldType(name)); out.append(" " + name); processArrayInfo(structDefinitionType.getFieldType(name)); out.append(";" + newLine()); } decreaseIndent(); out.append("}"); }
@Override public void visitInterfaceBlock(InterfaceBlock interfaceBlock) { out.append(indent()); if (interfaceBlock.hasLayoutQualifier()) { out.append(interfaceBlock.getLayoutQualifier().toString() + " "); } out.append(interfaceBlock.getInterfaceQualifier() + " " + interfaceBlock.getStructName() + " {" + newLine()); increaseIndent(); for (String memberName : interfaceBlock.getMemberNames()) { out.append(indent()); visit(interfaceBlock.getMemberType(memberName)); out.append(" " + memberName); processArrayInfo(interfaceBlock.getMemberType(memberName)); out.append(";" + newLine()); } decreaseIndent(); out.append("}"); if (interfaceBlock.hasIdentifierName()) { out.append(" " + interfaceBlock.getInstanceName()); } out.append(";" + newLine()); }
@Override public void visitSwitchStmt(SwitchStmt switchStmt) { out.append(indent() + "switch("); visit(switchStmt.getExpr()); out.append(")" + newLine()); increaseIndent(); visitBlockStmt(switchStmt.getBody()); decreaseIndent(); }
@Override public void visitWhileStmt(WhileStmt whileStmt) { out.append(indent() + "while("); visit(whileStmt.getCondition()); out.append(")" + newLine()); increaseIndent(); visit(whileStmt.getBody()); decreaseIndent(); }
@Override public void visitIfStmt(IfStmt ifStmt) { out.append(indent() + "if("); visit(ifStmt.getCondition()); out.append(")" + newLine()); increaseIndent(); visit(ifStmt.getThenStmt()); decreaseIndent(); if (ifStmt.hasElseStmt()) { out.append(indent() + "else" + newLine()); increaseIndent(); visit(ifStmt.getElseStmt()); decreaseIndent(); } }