aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/com')
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/ObjectMemberNode.java13
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/SymbolNode.java4
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/Scope.java4
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/State.java13
4 files changed, 11 insertions, 23 deletions
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/ObjectMemberNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/ObjectMemberNode.java
index 51e53fa..c2eb637 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/ObjectMemberNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/ObjectMemberNode.java
@@ -1,5 +1,6 @@
package com.jantuomi.tunkki.core.parser.ast;
+import com.jantuomi.tunkki.core.parser.datatype.CallableDatatype;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.datatype.ObjectDatatype;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
@@ -8,8 +9,6 @@ import com.jantuomi.tunkki.exception.types.NotAnObjectTunkkiError;
import com.jantuomi.tunkki.exception.types.TunkkiError;
import com.jantuomi.tunkki.exception.types.UndeclaredSymbolTunkkiError;
-import java.util.Collections;
-
/**
* Created by jan on 3.8.2016.
*/
@@ -22,7 +21,7 @@ public class ObjectMemberNode extends UnaryOperatorNode {
public Datatype evaluate() throws TunkkiError {
Datatype d;
try {
- d = State.getInstance().evaluateSymbol(getText());
+ d = State.getInstance().resolveSymbol(getText());
} catch (TunkkiError ex) {
ex.setLine(getLine());
throw ex;
@@ -36,14 +35,14 @@ public class ObjectMemberNode extends UnaryOperatorNode {
ASTNode member = getOperand();
if (member instanceof CallNode) {
CallNode cn = (CallNode) member;
- Datatype res = od.getData().resolveSymbol(cn.getName(), cn.evaluateParameters());
- if (res != null) {
- return res;
+ Datatype callable = od.getData().resolveSymbol(cn.getName());
+ if (callable != null) {
+ return ((CallableDatatype) callable).call(cn.evaluateParameters());
}
}
else if (member instanceof SymbolNode) {
SymbolNode sn = (SymbolNode) member;
- Datatype res = od.getData().resolveSymbol(sn.getName(), Collections.emptyList());
+ Datatype res = od.getData().resolveSymbol(sn.getName());
if (res != null) {
return res;
}
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/SymbolNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/SymbolNode.java
index d85697a..7fb5e64 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/SymbolNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/SymbolNode.java
@@ -3,12 +3,10 @@ package com.jantuomi.tunkki.core.parser.ast;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.runtime.State;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
-import com.jantuomi.tunkki.exception.ExceptionManager;
import com.jantuomi.tunkki.exception.types.TunkkiError;
import com.jantuomi.tunkki.exception.types.UndeclaredSymbolTunkkiError;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
/**
@@ -46,7 +44,7 @@ public class SymbolNode extends ASTNode {
Datatype returnValue;
try {
- returnValue = State.getInstance().evaluateSymbol(name, Collections.emptyList());
+ returnValue = State.getInstance().resolveSymbol(name);
}
/* If a TunkkiError is caught, pass it on with line information */
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/Scope.java b/src/main/com/jantuomi/tunkki/core/runtime/Scope.java
index 7238505..9a33b54 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/Scope.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/Scope.java
@@ -35,12 +35,12 @@ public class Scope {
setVariableValue(symbol, value);
}
- public Datatype resolveSymbol(String symbol, List<Datatype> params) throws TunkkiError {
+ public Datatype resolveSymbol(String symbol) throws TunkkiError {
if (variables.containsKey(symbol)) {
return variables.get(symbol);
}
else if (parent != null) {
- return parent.resolveSymbol(symbol, params);
+ return parent.resolveSymbol(symbol);
}
else {
throw new UndeclaredSymbolTunkkiError(-1, symbol);
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/State.java b/src/main/com/jantuomi/tunkki/core/runtime/State.java
index e5f53b4..2cbd94a 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/State.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/State.java
@@ -40,17 +40,8 @@ public class State {
scopes.push(globalScope);
}
- private Datatype resolveSymbol(String symbol) throws TunkkiError {
- return scopes.peek().resolveSymbol(symbol, Arrays.asList());
- }
-
- public Datatype evaluateSymbol(String symbol) throws TunkkiError {
- Datatype d = resolveSymbol(symbol);
- return d;
- }
-
- public Datatype evaluateSymbol(String symbol, List<Datatype> parameters) throws TunkkiError {
- return scopes.peek().resolveSymbol(symbol, parameters);
+ public Datatype resolveSymbol(String symbol) throws TunkkiError {
+ return scopes.peek().resolveSymbol(symbol);
}
public Scope createScope() {