diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-03-28 08:44:54 -0400 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-03-28 08:44:54 -0400 |
| commit | 78d9c539e25f16fd15f06c2b2c48c0ad37a21540 (patch) | |
| tree | 52d5db559d390c2fb83d4a4cd3bbfa4344c482e8 /dice-lang/src/bjc/utils/dice/ast/OperatorDiceNode.java | |
| parent | 1a020352bdcbb6b5279b703f93e42a1eb7071e36 (diff) | |
Imported dice stuff from general utils into dedicated project
Diffstat (limited to 'dice-lang/src/bjc/utils/dice/ast/OperatorDiceNode.java')
| -rw-r--r-- | dice-lang/src/bjc/utils/dice/ast/OperatorDiceNode.java | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/dice-lang/src/bjc/utils/dice/ast/OperatorDiceNode.java b/dice-lang/src/bjc/utils/dice/ast/OperatorDiceNode.java new file mode 100644 index 0000000..c4f7763 --- /dev/null +++ b/dice-lang/src/bjc/utils/dice/ast/OperatorDiceNode.java @@ -0,0 +1,81 @@ +package bjc.utils.dice.ast; + +// The following classes need to be changed upon addition of a new operator +// 1. DiceASTExpression +// 2. DiceASTFlattener +// 3. DiceASTParser +/** + * A node that represents an operator + * + * @author ben + * + */ +public enum OperatorDiceNode implements IDiceASTNode { + /** + * Represents adding two nodes + */ + ADD, + /** + * Represents assigning one node to another + */ + ASSIGN, + /** + * Representings combining two node values together + */ + COMPOUND, + /** + * Represents dividing two nodes + */ + DIVIDE, + /** + * Represents using one node a variable number of times + */ + GROUP, + /** + * Represents multiplying two nodes + */ + MULTIPLY, + /** + * Represents subtracting two nodes + */ + SUBTRACT; + + /** + * Create a operator node from a string + * + * @param s + * The string to convert to a node + * @return The operator corresponding to the node + */ + public static OperatorDiceNode fromString(String s) { + switch (s) { + case ":=": + return ASSIGN; + case "+": + return ADD; + case "-": + return SUBTRACT; + case "*": + return MULTIPLY; + case "/": + return DIVIDE; + case "d": + return GROUP; + case "c": + return COMPOUND; + default: + throw new IllegalArgumentException( + s + " is not a valid operator node"); + } + } + + /* + * (non-Javadoc) + * + * @see bjc.utils.dice.ast.IDiceASTNode#isOperator() + */ + @Override + public boolean isOperator() { + return true; + } +} |
