Now with file-based level grammar.
This commit is contained in:
@@ -3,6 +3,7 @@ package dk.itu.mario.level.grammar;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
@@ -67,6 +68,15 @@ public class LevelGrammar {
|
||||
}
|
||||
return parseNode;
|
||||
}
|
||||
|
||||
public Variable getVariable(String varName) {
|
||||
for (Variable var : variables) {
|
||||
if (varName.equals(var.getValue())) {
|
||||
return var;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public ProductionRule getRule(Variable var) {
|
||||
return ruleMap.get(var);
|
||||
@@ -76,7 +86,37 @@ public class LevelGrammar {
|
||||
return start;
|
||||
}
|
||||
|
||||
public void setStart(String startVar) {
|
||||
for (Variable var : variables) {
|
||||
if (startVar.equals(var.getValue())) {
|
||||
start = var;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setStart(Variable start) {
|
||||
this.start = start;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("Variables:\n");
|
||||
for (Variable var : variables) {
|
||||
sb.append("VAR ");
|
||||
sb.append(var.getValue());
|
||||
sb.append(" = ");
|
||||
sb.append(var.getType());
|
||||
sb.append("\n");
|
||||
}
|
||||
sb.append("\n");
|
||||
for (Entry<Variable,ProductionRule> entry : ruleMap.entrySet()) {
|
||||
//could as easily have used LHS instead of getKey().getValue()
|
||||
sb.append("RULE " + entry.getKey().getValue() + " -> " + entry.getValue().getRHS());
|
||||
sb.append("\n");
|
||||
}
|
||||
sb.append("\n");
|
||||
sb.append("START = " + start.getValue());
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user