Now with file-based level grammar.

This commit is contained in:
Woody Folsom
2012-03-18 10:56:25 -04:00
parent b431d5efeb
commit d6516388ad
8 changed files with 234 additions and 9 deletions

View File

@@ -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();
}
}