aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-17 16:59:05 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-17 16:59:05 +0100
commita97acb1a85c588a38a4a8a8b761beddb71cb960a (patch)
tree658f878936c3fcdbca452feb8dc972ac3449b21b /src/main/java
parent886358792f8b2bee4fb2a2e16b8f34162be50cfe (diff)
Use String instead of int for declaration IDs
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/LocalVariableDeclarationNode.java2
-rw-r--r--src/main/java/org/zwobble/couscous/ast/VariableDeclaration.java2
-rw-r--r--src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java2
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/Environment.java10
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/UnboundVariable.java2
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/VariableNotInScope.java2
6 files changed, 10 insertions, 10 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/LocalVariableDeclarationNode.java b/src/main/java/org/zwobble/couscous/ast/LocalVariableDeclarationNode.java
index 66d06aa..6294e38 100644
--- a/src/main/java/org/zwobble/couscous/ast/LocalVariableDeclarationNode.java
+++ b/src/main/java/org/zwobble/couscous/ast/LocalVariableDeclarationNode.java
@@ -9,7 +9,7 @@ import lombok.Value;
@Value(staticConstructor="localVariableDeclaration")
public class LocalVariableDeclarationNode implements VariableNode, StatementNode {
public static LocalVariableDeclarationNode localVariableDeclaration(
- int id,
+ String id,
String name,
TypeName type,
ExpressionNode initialValue) {
diff --git a/src/main/java/org/zwobble/couscous/ast/VariableDeclaration.java b/src/main/java/org/zwobble/couscous/ast/VariableDeclaration.java
index 009dea4..84c0d43 100644
--- a/src/main/java/org/zwobble/couscous/ast/VariableDeclaration.java
+++ b/src/main/java/org/zwobble/couscous/ast/VariableDeclaration.java
@@ -4,7 +4,7 @@ import lombok.Value;
@Value(staticConstructor="var")
public class VariableDeclaration {
- int id;
+ String id;
String name;
TypeName type;
}
diff --git a/src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java b/src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java
index ebe79b0..6fc00f6 100644
--- a/src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java
+++ b/src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java
@@ -18,7 +18,7 @@ public class VariableReferenceNode implements AssignableExpressionNode {
return visitor.visit(this);
}
- public int getReferentId() {
+ public String getReferentId() {
return referent.getId();
}
diff --git a/src/main/java/org/zwobble/couscous/interpreter/Environment.java b/src/main/java/org/zwobble/couscous/interpreter/Environment.java
index 9a884f3..675cfda 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/Environment.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/Environment.java
@@ -19,7 +19,7 @@ import lombok.val;
public class Environment {
private final Project project;
private final Optional<InterpreterValue> thisValue;
- private final Map<Integer, VariableEntry> stackFrame;
+ private final Map<String, VariableEntry> stackFrame;
public Environment(
Project project,
@@ -38,13 +38,13 @@ public class Environment {
return thisValue;
}
- public InterpreterValue get(int variableId) {
+ public InterpreterValue get(String variableId) {
checkVariableIsInScope(variableId);
val entry = stackFrame.get(variableId);
return entry.getValue().orElseThrow(() -> new UnboundVariable(variableId));
}
- public void put(int variableId, InterpreterValue value) {
+ public void put(String variableId, InterpreterValue value) {
checkVariableIsInScope(variableId);
checkVariableType(variableId, value);
stackFrame.get(variableId).setValue(Optional.of(value));
@@ -62,13 +62,13 @@ public class Environment {
return new Environment(project, thisValue, stackFrame);
}
- private void checkVariableIsInScope(int variableId) {
+ private void checkVariableIsInScope(String variableId) {
if (!stackFrame.containsKey(variableId)) {
throw new VariableNotInScope(variableId);
}
}
- private void checkVariableType(int variableId, InterpreterValue value) {
+ private void checkVariableType(String variableId, InterpreterValue value) {
val variableType = stackFrame.get(variableId).getType();
InterpreterTypes.checkIsInstance(variableType, value);
}
diff --git a/src/main/java/org/zwobble/couscous/interpreter/UnboundVariable.java b/src/main/java/org/zwobble/couscous/interpreter/UnboundVariable.java
index c4aebfb..684a3b9 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/UnboundVariable.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/UnboundVariable.java
@@ -8,5 +8,5 @@ import lombok.Value;
public class UnboundVariable extends InterpreterException {
private static final long serialVersionUID = 1L;
- int variableId;
+ String variableId;
}
diff --git a/src/main/java/org/zwobble/couscous/interpreter/VariableNotInScope.java b/src/main/java/org/zwobble/couscous/interpreter/VariableNotInScope.java
index 7760326..17ab6af 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/VariableNotInScope.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/VariableNotInScope.java
@@ -8,5 +8,5 @@ import lombok.Value;
public class VariableNotInScope extends InterpreterException {
private static final long serialVersionUID = 1L;
- int variableId;
+ String variableId;
}