From: <th...@us...> - 2010-07-13 23:29:19
|
Revision: 12561 http://pcgen.svn.sourceforge.net/pcgen/?rev=12561&view=rev Author: thpr Date: 2010-07-13 23:29:12 +0000 (Tue, 13 Jul 2010) Log Message: ----------- Add comments Modified Paths: -------------- sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/AssociativeOperation.java sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/ExponentOperation.java sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/InvertOperation.java sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/RelationalOperation.java sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/TransparentOperation.java sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/VariableOperation.java Modified: sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/AssociativeOperation.java =================================================================== --- sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/AssociativeOperation.java 2010-07-13 22:42:23 UTC (rev 12560) +++ sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/AssociativeOperation.java 2010-07-13 23:29:12 UTC (rev 12561) @@ -23,6 +23,15 @@ import pcgen.base.formula.core.NodeEvaluator; import pcgen.base.formula.parse.SimpleNode; +/** + * Performs a mathematically associative operation between two items (such as + * addition or multiplication). Note that the associative operation is defined + * at the time of construction of the AssociativeOperation (along with the + * String representation used to write out the persistent version of the + * formula) + * + * @author Thomas Parker (th...@us...) + */ public class AssociativeOperation extends AbstractFormulaOperation { @@ -56,7 +65,8 @@ } public void visitToString(NodeEvaluator ev, MethodVisitor mv, - SimpleNode node) { + SimpleNode node) + { ev.stringify(mv, (SimpleNode) node.jjtGetChild(0)); for (int i = 1; i < node.jjtGetNumChildren(); i++) { Modified: sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/ExponentOperation.java =================================================================== --- sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/ExponentOperation.java 2010-07-13 22:42:23 UTC (rev 12560) +++ sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/ExponentOperation.java 2010-07-13 23:29:12 UTC (rev 12561) @@ -28,6 +28,13 @@ import pcgen.base.formula.core.NodeEvaluator; import pcgen.base.formula.parse.SimpleNode; +/** + * Performs an exponentiation between the two provided values. Note that this + * will return mathematical results (and exceptions) consistent with the + * java.lang.Math.pow method. + * + * @author Thomas Parker (th...@us...) + */ public final class ExponentOperation extends AbstractFormulaOperation { @@ -92,7 +99,8 @@ } public void visitToString(NodeEvaluator ev, MethodVisitor mv, - SimpleNode node) { + SimpleNode node) + { ev.stringify(mv, (SimpleNode) node.jjtGetChild(0)); for (int i = 1; i < node.jjtGetNumChildren(); i++) { Modified: sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/InvertOperation.java =================================================================== --- sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/InvertOperation.java 2010-07-13 22:42:23 UTC (rev 12560) +++ sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/InvertOperation.java 2010-07-13 23:29:12 UTC (rev 12561) @@ -24,17 +24,28 @@ import pcgen.base.formula.core.NodeEvaluator; import pcgen.base.formula.parse.SimpleNode; -public class InvertOperation extends AbstractFormulaOperation { +/** + * Inverts the value presented. Inversion is requivalent to calculating 0-x (as + * inversion is simply a leading minus sign). Note that this is distinct from + * the subtraction operation, as the formula: 1+-2 includes addition and + * inversion, but not subtraction. + * + * @author Thomas Parker (th...@us...) + */ +public class InvertOperation extends AbstractFormulaOperation +{ public int visitBytecode(NodeEvaluator ev, MethodVisitor mv, - SimpleNode node, int loc) { + SimpleNode node, int loc) + { SimpleNode rhs = (SimpleNode) node.jjtGetChild(0); int max = ev.evaluate(mv, rhs, loc); performOperation(mv); return max; } - private void performOperation(MethodVisitor mv) { + private void performOperation(MethodVisitor mv) + { mv.visitVarInsn(Opcodes.DSTORE, 2); mv.visitLdcInsn(0.0); mv.visitVarInsn(Opcodes.DLOAD, 2); @@ -42,7 +53,8 @@ } public void visitToString(NodeEvaluator ev, MethodVisitor mv, - SimpleNode node) { + SimpleNode node) + { writeString(mv, "-"); ev.stringify(mv, (SimpleNode) node.jjtGetChild(0)); } Modified: sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/RelationalOperation.java =================================================================== --- sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/RelationalOperation.java 2010-07-13 22:42:23 UTC (rev 12560) +++ sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/RelationalOperation.java 2010-07-13 23:29:12 UTC (rev 12561) @@ -25,6 +25,14 @@ import pcgen.base.formula.core.NodeEvaluator; import pcgen.base.formula.parse.SimpleNode; +/** + * Performs a relational operation between two items (such as "greater than", or + * "less than or equal to") Note that the relational operation is defined at the + * time of construction of the RelationalOperation (along with the String + * representation used to write out the persistent version of the formula) + * + * @author Thomas Parker (th...@us...) + */ public class RelationalOperation extends AbstractBinaryOperation { Modified: sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/TransparentOperation.java =================================================================== --- sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/TransparentOperation.java 2010-07-13 22:42:23 UTC (rev 12560) +++ sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/TransparentOperation.java 2010-07-13 23:29:12 UTC (rev 12561) @@ -23,15 +23,26 @@ import pcgen.base.formula.core.NodeEvaluator; import pcgen.base.formula.parse.SimpleNode; -public class TransparentOperation extends AbstractFormulaOperation { +/** + * Represents a transparent operation (one that has no mathematical behavior). + * This is generally used for "prioritization" (this can be caused by the + * presence of parenthesis in a formula, though this does not contain, and thus + * does not need to write out, the parenthesis) + * + * @author Thomas Parker (th...@us...) + */ +public class TransparentOperation extends AbstractFormulaOperation +{ public int visitBytecode(NodeEvaluator ev, MethodVisitor mv, - SimpleNode node, int loc) { + SimpleNode node, int loc) + { return ev.evaluate(mv, (SimpleNode) node.jjtGetChild(0), loc); } public void visitToString(NodeEvaluator ev, MethodVisitor mv, - SimpleNode node) { + SimpleNode node) + { ev.stringify(mv, (SimpleNode) node.jjtGetChild(0)); } } Modified: sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/VariableOperation.java =================================================================== --- sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/VariableOperation.java 2010-07-13 22:42:23 UTC (rev 12560) +++ sandbox/FormulaCompiler/src/pcgen/base/formula/baseops/VariableOperation.java 2010-07-13 23:29:12 UTC (rev 12561) @@ -29,6 +29,12 @@ import pcgen.base.formula.lang.ProgrammingError; import pcgen.base.formula.parse.SimpleNode; +/** + * Represents a Variable (an arbitrary string NOT followed by brackets or + * parenthesis) + * + * @author Thomas Parker (th...@us...) + */ public final class VariableOperation extends AbstractFormulaOperation { @@ -42,7 +48,7 @@ .getInternalName(Reference.class); private final String varName; - + public VariableOperation(String var) { varName = var; @@ -78,7 +84,8 @@ } public void visitToString(NodeEvaluator ev, MethodVisitor mv, - SimpleNode node) { + SimpleNode node) + { writeString(mv, varName); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |