package org.whole.lang.java.codebase;
import org.whole.lang.builders.IBuilderOperation;
import org.whole.lang.templates.AbstractTemplateFactory;
public class Factorial extends AbstractTemplateFactory<org.whole.lang.java.model.CompilationUnit> {
public void apply(IBuilderOperation op) {
org.whole.lang.java.builders.IJavaBuilder b0 = (org.whole.lang.java.builders.IJavaBuilder) op.wGetBuilder(org.whole.lang.java.reflect.JavaLanguageKit.URI);
b0.CompilationUnit_();
b0.PackageDeclaration_();
b0.Javadoc_();
b0.Tags_(1);
b0.TagElement_();
org.whole.lang.commons.builders.ICommonsBuilder b1 = (org.whole.lang.commons.builders.ICommonsBuilder) op.wGetBuilder(org.whole.lang.commons.reflect.CommonsLanguageKit.URI);
b1.Resolver();
b0.DocElements_(5);
b0.TextElement("Copyright 2004-2016 Riccardo Solmi.");
b0.TextElement("All rights reserved. This program and the accompanying materials ");
b0.TextElement("are made available under the terms of the GNU Lesser General Public License");
b0.TextElement("which accompanies this distribution, and is available at");
b0.TextElement("http://www.gnu.org/copyleft/lesser.html");
b0._DocElements();
b0._TagElement();
b0._Tags();
b0._Javadoc();
b1.Resolver();
b0.QualifiedName("org.whole.lang");
b0._PackageDeclaration();
b0.ImportDeclarations();
b0.TypeDeclarations_(1);
b0.ClassDeclaration_();
b0.Javadoc_();
b0.Tags_(1);
b0.TagElement_();
b0.TagName("author");
b0.DocElements_(1);
b0.TextElement(" Enrico Persiani");
b0._DocElements();
b0._TagElement();
b0._Tags();
b0._Javadoc();
b0.ExtendedModifiers_(1);
b0.Modifier("public");
b0._ExtendedModifiers();
b0.SimpleName("Fact");
b1.Resolver();
b1.Resolver();
b1.Resolver();
b0.BodyDeclarations_(3);
b0.MethodDeclaration_();
b1.Resolver();
b0.ExtendedModifiers_(2);
b0.Modifier("public");
b0.Modifier("static");
b0._ExtendedModifiers();
b1.Resolver();
b0.PrimitiveType("int");
b0.SimpleName("ifact");
b0.Parameters_(1);
b0.SingleVariableDeclaration_();
b1.Resolver();
b0.PrimitiveType("int");
b0.Varargs(false);
b0.SimpleName("n");
b0.ExtraDimensions(0);
b1.Resolver();
b0._SingleVariableDeclaration();
b0._Parameters();
b1.Resolver();
b1.Resolver();
b0.Block_(3);
b0.VariableDeclarationStatement_();
b1.Resolver();
b0.PrimitiveType("int");
b0.VariableDeclarationFragments_(1);
b0.VariableDeclarationFragment_();
b0.SimpleName("result");
b0.ExtraDimensions(0);
b0.ByteLiteral((byte) 1);
b0._VariableDeclarationFragment();
b0._VariableDeclarationFragments();
b0._VariableDeclarationStatement();
b0.WhileStatement_();
b0.InfixExpression_();
b0.SimpleName("n");
b0.InfixOperator(">");
b0.ByteLiteral((byte) 0);
b0.Expressions();
b0._InfixExpression();
b0.Block_(2);
b0.ExpressionStatement_();
b0.Assignment_();
b0.SimpleName("result");
b0.AssignmentOperator("=");
b0.InfixExpression_();
b0.SimpleName("result");
b0.InfixOperator("*");
b0.SimpleName("n");
b0.Expressions();
b0._InfixExpression();
b0._Assignment();
b0._ExpressionStatement();
b0.ExpressionStatement_();
b0.Assignment_();
b0.SimpleName("n");
b0.AssignmentOperator("=");
b0.InfixExpression_();
b0.SimpleName("n");
b0.InfixOperator("-");
b0.ByteLiteral((byte) 1);
b0.Expressions();
b0._InfixExpression();
b0._Assignment();
b0._ExpressionStatement();
b0._Block();
b0._WhileStatement();
b0.ReturnStatement_();
b0.SimpleName("result");
b0._ReturnStatement();
b0._Block();
b0._MethodDeclaration();
b0.MethodDeclaration_();
b1.Resolver();
b0.ExtendedModifiers_(2);
b0.Modifier("public");
b0.Modifier("static");
b0._ExtendedModifiers();
b1.Resolver();
b0.PrimitiveType("int");
b0.SimpleName("rfact");
b0.Parameters_(1);
b0.SingleVariableDeclaration_();
b1.Resolver();
b0.PrimitiveType("int");
b0.Varargs(false);
b0.SimpleName("n");
b0.ExtraDimensions(0);
b1.Resolver();
b0._SingleVariableDeclaration();
b0._Parameters();
b1.Resolver();
b1.Resolver();
b0.Block_(1);
b0.IfStatement_();
b0.InfixExpression_();
b0.SimpleName("n");
b0.InfixOperator("<=");
b0.ByteLiteral((byte) 1);
b0.Expressions();
b0._InfixExpression();
b0.ReturnStatement_();
b0.ByteLiteral((byte) 1);
b0._ReturnStatement();
b0.ReturnStatement_();
b0.InfixExpression_();
b0.SimpleName("n");
b0.InfixOperator("*");
b0.MethodInvocation_();
b1.Resolver();
b0.Types();
b0.SimpleName("rfact");
b0.Arguments_(1);
b0.InfixExpression_();
b0.SimpleName("n");
b0.InfixOperator("-");
b0.ByteLiteral((byte) 1);
b0.Expressions();
b0._InfixExpression();
b0._Arguments();
b0._MethodInvocation();
b0.Expressions();
b0._InfixExpression();
b0._ReturnStatement();
b0._IfStatement();
b0._Block();
b0._MethodDeclaration();
b0.MethodDeclaration_();
b1.Resolver();
b0.ExtendedModifiers_(2);
b0.Modifier("public");
b0.Modifier("static");
b0._ExtendedModifiers();
b1.Resolver();
b0.PrimitiveType("void");
b0.SimpleName("main");
b0.Parameters_(1);
b0.SingleVariableDeclaration_();
b1.Resolver();
b0.ArrayType_();
b0.SimpleType("String");
b0._ArrayType();
b0.Varargs(false);
b0.SimpleName("args");
b0.ExtraDimensions(0);
b1.Resolver();
b0._SingleVariableDeclaration();
b0._Parameters();
b1.Resolver();
b1.Resolver();
b0.Block_(2);
b0.ExpressionStatement_();
b0.MethodInvocation_();
b0.QualifiedName("System.out");
b0.Types();
b0.SimpleName("println");
b0.Arguments_(1);
b0.MethodInvocation_();
b1.Resolver();
b0.Types();
b0.SimpleName("ifact");
b0.Arguments_(1);
b0.ByteLiteral((byte) 4);
b0._Arguments();
b0._MethodInvocation();
b0._Arguments();
b0._MethodInvocation();
b0._ExpressionStatement();
b0.ExpressionStatement_();
b0.MethodInvocation_();
b0.QualifiedName("System.out");
b0.Types();
b0.SimpleName("println");
b0.Arguments_(1);
b0.MethodInvocation_();
b1.Resolver();
b0.Types();
b0.SimpleName("rfact");
b0.Arguments_(1);
b0.ByteLiteral((byte) 3);
b0._Arguments();
b0._MethodInvocation();
b0._Arguments();
b0._MethodInvocation();
b0._ExpressionStatement();
b0._Block();
b0._MethodDeclaration();
b0._BodyDeclarations();
b0._ClassDeclaration();
b0._TypeDeclarations();
b0._CompilationUnit();
}
}