mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Присвоение значений для map
This commit is contained in:
parent
09556f7a9a
commit
fa2295ad18
@ -85,6 +85,8 @@ for i = 0, i < 4, i = i + 1 {
|
|||||||
|
|
||||||
// map
|
// map
|
||||||
map = {"+" : add, "-" : sub. "*" : mul, "/" : div}
|
map = {"+" : add, "-" : sub. "*" : mul, "/" : div}
|
||||||
|
map["%"] = def(x,y) = x % y
|
||||||
|
map["pow"] = def(x,y) = pow(x, y)
|
||||||
//print map["+"]
|
//print map["+"]
|
||||||
print "\n"
|
print "\n"
|
||||||
print function(map["+"], 4, 5)
|
print function(map["+"], 4, 5)
|
||||||
@ -98,3 +100,4 @@ arr2 = [5,6,7]
|
|||||||
print arr1
|
print arr1
|
||||||
print "\n"
|
print "\n"
|
||||||
print arr1 << arr2
|
print arr1 << arr2
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ public final class ArrayAccessExpression implements Expression {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private MapValue consumeMap(Value value) {
|
public MapValue consumeMap(Value value) {
|
||||||
if (value instanceof MapValue) {
|
if (value instanceof MapValue) {
|
||||||
return (MapValue) value;
|
return (MapValue) value;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
package com.annimon.ownlang.parser.ast;
|
package com.annimon.ownlang.parser.ast;
|
||||||
|
|
||||||
|
import com.annimon.ownlang.lib.ArrayValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
import com.annimon.ownlang.lib.Variables;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
@ -16,7 +20,12 @@ public final class ArrayAssignmentStatement implements Statement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
array.getArray().set(array.lastIndex(), expression.eval());
|
final Value container = Variables.get(array.variable);
|
||||||
|
if (container instanceof ArrayValue) {
|
||||||
|
array.getArray().set(array.lastIndex(), expression.eval());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
array.consumeMap(container).set(array.indices.get(0).eval(), expression.eval());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user