mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 08:44:20 +03:00
Небольшие изменения
This commit is contained in:
parent
af4eddf184
commit
7b92c3f675
@ -88,13 +88,13 @@ public final class BinaryExpression implements Expression {
|
|||||||
private Value add(Value value1, Value value2) {
|
private Value add(Value value1, Value value2) {
|
||||||
switch (value1.type()) {
|
switch (value1.type()) {
|
||||||
case Types.NUMBER: return add((NumberValue) value1, value2);
|
case Types.NUMBER: return add((NumberValue) value1, value2);
|
||||||
case Types.STRING: return new StringValue(value1.asString() + value2.asString());
|
|
||||||
case Types.ARRAY: return ArrayValue.add((ArrayValue) value1, value2);
|
case Types.ARRAY: return ArrayValue.add((ArrayValue) value1, value2);
|
||||||
case Types.MAP:
|
case Types.MAP:
|
||||||
if (value2.type() != Types.MAP)
|
if (value2.type() != Types.MAP)
|
||||||
throw new TypeException("Cannot merge non map value to map");
|
throw new TypeException("Cannot merge non map value to map");
|
||||||
return MapValue.merge((MapValue) value1, (MapValue) value2);
|
return MapValue.merge((MapValue) value1, (MapValue) value2);
|
||||||
case Types.FUNCTION: /* TODO: combining functions */
|
case Types.FUNCTION: /* TODO: combining functions */
|
||||||
|
case Types.STRING:
|
||||||
default:
|
default:
|
||||||
// Concatenation strings
|
// Concatenation strings
|
||||||
return new StringValue(value1.asString() + value2.asString());
|
return new StringValue(value1.asString() + value2.asString());
|
||||||
|
@ -89,13 +89,6 @@ public final class ContainerAccessExpression implements Expression, Accessible {
|
|||||||
return indices.get(index).eval();
|
return indices.get(index).eval();
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArrayValue consumeArray(Value value) {
|
|
||||||
if (value.type() != Types.ARRAY) {
|
|
||||||
throw new TypeException("Array expected");
|
|
||||||
}
|
|
||||||
return (ArrayValue) value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MapValue consumeMap(Value value) {
|
public MapValue consumeMap(Value value) {
|
||||||
if (value.type() != Types.MAP) {
|
if (value.type() != Types.MAP) {
|
||||||
throw new TypeException("Map expected");
|
throw new TypeException("Map expected");
|
||||||
|
@ -20,8 +20,8 @@ public final class MapExpression implements Expression {
|
|||||||
public Value eval() {
|
public Value eval() {
|
||||||
final int size = elements.size();
|
final int size = elements.size();
|
||||||
final MapValue map = new MapValue(size);
|
final MapValue map = new MapValue(size);
|
||||||
for (Expression key : elements.keySet()) {
|
for (Map.Entry<Expression, Expression> entry : elements.entrySet()) {
|
||||||
map.set(key.eval(), elements.get(key).eval());
|
map.set(entry.getKey().eval(), entry.getValue().eval());
|
||||||
}
|
}
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user