diff options
| author | Ben Culkin <scorpress@gmail.com> | 2020-11-21 18:04:20 -0500 |
|---|---|---|
| committer | Ben Culkin <scorpress@gmail.com> | 2020-11-21 18:04:20 -0500 |
| commit | 3ddd062d60d621971af59b480ba70e8bf9e705f1 (patch) | |
| tree | 8d24f91e4f695a526777b5fe75fe268669b8c9a6 /dice/src/example/java/bjc/dicelang/neodice/statements | |
| parent | 2afb54eecd8e8b5d663a05131c07c6b8d15e65ba (diff) | |
Rudimentary CLI for new die implementation
Diffstat (limited to 'dice/src/example/java/bjc/dicelang/neodice/statements')
8 files changed, 297 insertions, 0 deletions
diff --git a/dice/src/example/java/bjc/dicelang/neodice/statements/ArrayStatementValue.java b/dice/src/example/java/bjc/dicelang/neodice/statements/ArrayStatementValue.java new file mode 100644 index 0000000..66e14ad --- /dev/null +++ b/dice/src/example/java/bjc/dicelang/neodice/statements/ArrayStatementValue.java @@ -0,0 +1,54 @@ +package bjc.dicelang.neodice.statements; + +import static bjc.dicelang.neodice.statements.StatementValue.Type.*; + +import java.util.*; + +public class ArrayStatementValue<ElementType extends StatementValue> extends StatementValue { + public final Type elementType; + public final ElementType[] values; + + @SafeVarargs + public ArrayStatementValue(Type elementType, ElementType... values) { + super(ARRAY); + + this.elementType = elementType; + this.values = values; + } + + @Override + public String toString() { + StringBuilder buffer = new StringBuilder(); + + buffer.append('('); + for (int index = 0; index < values.length; index++) { + ElementType value = values[index]; + + buffer.append(value); + if (index < values.length - 1) buffer.append(", "); + } + buffer.append(')'); + + return buffer.toString(); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + Arrays.hashCode(values); + result = prime * result + Objects.hash(elementType); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (!super.equals(obj)) return false; + if (getClass() != obj.getClass()) return false; + + ArrayStatementValue<?> other = (ArrayStatementValue<?>) obj; + + return elementType == other.elementType && Arrays.equals(values, other.values); + } +}
\ No newline at end of file diff --git a/dice/src/example/java/bjc/dicelang/neodice/statements/BooleanStatementValue.java b/dice/src/example/java/bjc/dicelang/neodice/statements/BooleanStatementValue.java new file mode 100644 index 0000000..ba89893 --- /dev/null +++ b/dice/src/example/java/bjc/dicelang/neodice/statements/BooleanStatementValue.java @@ -0,0 +1,39 @@ +package bjc.dicelang.neodice.statements; + +import static bjc.dicelang.neodice.statements.StatementValue.Type.*; + +import java.util.*; + +public class BooleanStatementValue extends StatementValue { + private boolean value; + + public static final BooleanStatementValue TRUE_INST = new BooleanStatementValue(true); + public static final BooleanStatementValue FALSE_INST = new BooleanStatementValue(false); + + private BooleanStatementValue(boolean value) { + super(BOOLEAN); + + this.value = value; + } + + @Override + public String toString() { + return value ? "(true)" : "(false)"; + } + + @Override + public int hashCode() { + return Objects.hash(value); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + + BooleanStatementValue other = (BooleanStatementValue) obj; + + return value == other.value; + } +}
\ No newline at end of file diff --git a/dice/src/example/java/bjc/dicelang/neodice/statements/DiePoolStatementValue.java b/dice/src/example/java/bjc/dicelang/neodice/statements/DiePoolStatementValue.java new file mode 100644 index 0000000..a4a9104 --- /dev/null +++ b/dice/src/example/java/bjc/dicelang/neodice/statements/DiePoolStatementValue.java @@ -0,0 +1,38 @@ +package bjc.dicelang.neodice.statements; + +import static bjc.dicelang.neodice.statements.StatementValue.Type.*; + +import java.util.*; + +import bjc.dicelang.neodice.*; + +public class DiePoolStatementValue extends StatementValue { + public final DiePool value; + + public DiePoolStatementValue(DiePool value) { + super(DIEPOOL); + + this.value = value; + } + + @Override + public String toString() { + return "(" + value.toString() + ")"; + } + + @Override + public int hashCode() { + return Objects.hash(value); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + + DiePoolStatementValue other = (DiePoolStatementValue) obj; + + return Objects.equals(value, other.value); + } +}
\ No newline at end of file diff --git a/dice/src/example/java/bjc/dicelang/neodice/statements/DieStatementValue.java b/dice/src/example/java/bjc/dicelang/neodice/statements/DieStatementValue.java new file mode 100644 index 0000000..55a6856 --- /dev/null +++ b/dice/src/example/java/bjc/dicelang/neodice/statements/DieStatementValue.java @@ -0,0 +1,38 @@ +package bjc.dicelang.neodice.statements; + +import static bjc.dicelang.neodice.statements.StatementValue.Type.*; + +import java.util.*; + +import bjc.dicelang.neodice.*; + +public class DieStatementValue extends StatementValue { + public final Die value; + + public DieStatementValue(Die value) { + super(DIE); + + this.value = value; + } + + @Override + public String toString() { + return "(" + value.toString() + ")"; + } + + @Override + public int hashCode() { + return Objects.hash(value); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + + DieStatementValue other = (DieStatementValue) obj; + + return Objects.equals(value, other.value); + } +}
\ No newline at end of file diff --git a/dice/src/example/java/bjc/dicelang/neodice/statements/IntArrayStatementValue.java b/dice/src/example/java/bjc/dicelang/neodice/statements/IntArrayStatementValue.java new file mode 100644 index 0000000..b313d42 --- /dev/null +++ b/dice/src/example/java/bjc/dicelang/neodice/statements/IntArrayStatementValue.java @@ -0,0 +1,50 @@ +package bjc.dicelang.neodice.statements; + +import static bjc.dicelang.neodice.statements.StatementValue.Type.*; + +import java.util.*; + +public class IntArrayStatementValue extends StatementValue { + public final int[] values; + + public IntArrayStatementValue(int... values) { + super(INT_ARRAY); + + this.values = values; + } + + @Override + public String toString() { + StringBuilder buffer = new StringBuilder(); + + buffer.append('('); + for (int index = 0; index < values.length; index++) { + int value = values[index]; + + buffer.append(value); + if (index < values.length - 1) buffer.append(", "); + } + buffer.append(')'); + + return buffer.toString(); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + Arrays.hashCode(values); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (!super.equals(obj)) return false; + if (getClass() != obj.getClass()) return false; + + IntArrayStatementValue other = (IntArrayStatementValue) obj; + + return Arrays.equals(values, other.values); + } +}
\ No newline at end of file diff --git a/dice/src/example/java/bjc/dicelang/neodice/statements/IntegerStatementValue.java b/dice/src/example/java/bjc/dicelang/neodice/statements/IntegerStatementValue.java new file mode 100644 index 0000000..91e45b6 --- /dev/null +++ b/dice/src/example/java/bjc/dicelang/neodice/statements/IntegerStatementValue.java @@ -0,0 +1,18 @@ +package bjc.dicelang.neodice.statements; + +import static bjc.dicelang.neodice.statements.StatementValue.Type.*; + +public class IntegerStatementValue extends StatementValue { + public final int value; + + public IntegerStatementValue(int value) { + super(INTEGER); + + this.value = value; + } + + @Override + public String toString() { + return "(" + value + ")"; + } +}
\ No newline at end of file diff --git a/dice/src/example/java/bjc/dicelang/neodice/statements/StatementValue.java b/dice/src/example/java/bjc/dicelang/neodice/statements/StatementValue.java new file mode 100644 index 0000000..5090bc7 --- /dev/null +++ b/dice/src/example/java/bjc/dicelang/neodice/statements/StatementValue.java @@ -0,0 +1,40 @@ +package bjc.dicelang.neodice.statements; + +import java.util.*; + +public abstract class StatementValue { + public static enum Type { + VOID, + BOOLEAN, + INTEGER, + + INT_ARRAY, + + DIE, + DIEPOOL, + + ARRAY, + } + + public final Type type; + + protected StatementValue(Type type) { + this.type = type; + } + + @Override + public int hashCode() { + return Objects.hash(type); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + + StatementValue other = (StatementValue) obj; + + return type == other.type; + } +}
\ No newline at end of file diff --git a/dice/src/example/java/bjc/dicelang/neodice/statements/VoidStatementValue.java b/dice/src/example/java/bjc/dicelang/neodice/statements/VoidStatementValue.java new file mode 100644 index 0000000..7e437e7 --- /dev/null +++ b/dice/src/example/java/bjc/dicelang/neodice/statements/VoidStatementValue.java @@ -0,0 +1,20 @@ +package bjc.dicelang.neodice.statements; + +import static bjc.dicelang.neodice.statements.StatementValue.Type.*; + +/** + * @author Ben Culkin + * + */ +public class VoidStatementValue extends StatementValue { + public static final VoidStatementValue VOID_INST = new VoidStatementValue(); + + private VoidStatementValue() { + super(VOID); + } + + @Override + public String toString() { + return "(void)"; + } +} |
