Парсинг команд для работы с картой

This commit is contained in:
Victor 2015-04-24 16:59:48 +03:00
parent e7b9f18635
commit e672366a23
3 changed files with 37 additions and 0 deletions

View File

@ -70,6 +70,10 @@ public final class Lexer {
KEYWORDS.put("make_names_unknown", TokenType.MAKE_NAMES_UNKNOWN);
KEYWORDS.put("set_name", TokenType.SET_NAME);
KEYWORDS.put("meet", TokenType.SET_NAME);
KEYWORDS.put("disable_all_zones", TokenType.DISABLE_ALL_ZONES);
KEYWORDS.put("disable_current_zone", TokenType.DISABLE_CURRENT_ZONE);
KEYWORDS.put("set_zone", TokenType.SET_ZONE);
KEYWORDS.put("show_map", TokenType.SHOW_MAP);
}
private final List<Token> tokens;

View File

@ -256,6 +256,35 @@ public final class Parser {
return false;
}
// Карта
if (match(token, TokenType.DISABLE_ALL_ZONES)) {
consume(TokenType.LPAREN);
consume(TokenType.RPAREN);
ViewActivity.getInstance().disableAllZones();
return false;
}
if (match(token, TokenType.DISABLE_CURRENT_ZONE)) {
consume(TokenType.LPAREN);
consume(TokenType.RPAREN);
ViewActivity.getInstance().disableCurrentZone();
return false;
}
if (match(token, TokenType.SET_ZONE)) {
consume(TokenType.LPAREN);
final String zone = consume(TokenType.TEXT).getText();
// TODO: consume(TokenType.COMMA)
final String label = consume(TokenType.TEXT).getText();
consume(TokenType.RPAREN);
ViewActivity.getInstance().setZone(zone, label);
return false;
}
if (match(token, TokenType.SHOW_MAP)) {
consume(TokenType.LPAREN);
consume(TokenType.RPAREN);
ViewActivity.getInstance().showMap();
return true;
}
if (match(token, TokenType.WORD)) {
if (match(TokenType.EQ)) {
// variable = expression

View File

@ -69,6 +69,10 @@ public enum TokenType {
MAKE_NAMES_KNOWN,
MAKE_NAMES_UNKNOWN,
SET_NAME,
DISABLE_ALL_ZONES,
DISABLE_CURRENT_ZONE,
SET_ZONE,
SHOW_MAP,
EOF
}