Парсинг команд для работы с картой
This commit is contained in:
parent
e7b9f18635
commit
e672366a23
@ -70,6 +70,10 @@ public final class Lexer {
|
|||||||
KEYWORDS.put("make_names_unknown", TokenType.MAKE_NAMES_UNKNOWN);
|
KEYWORDS.put("make_names_unknown", TokenType.MAKE_NAMES_UNKNOWN);
|
||||||
KEYWORDS.put("set_name", TokenType.SET_NAME);
|
KEYWORDS.put("set_name", TokenType.SET_NAME);
|
||||||
KEYWORDS.put("meet", 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;
|
private final List<Token> tokens;
|
||||||
|
@ -256,6 +256,35 @@ public final class Parser {
|
|||||||
return false;
|
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(token, TokenType.WORD)) {
|
||||||
if (match(TokenType.EQ)) {
|
if (match(TokenType.EQ)) {
|
||||||
// variable = expression
|
// variable = expression
|
||||||
|
@ -69,6 +69,10 @@ public enum TokenType {
|
|||||||
MAKE_NAMES_KNOWN,
|
MAKE_NAMES_KNOWN,
|
||||||
MAKE_NAMES_UNKNOWN,
|
MAKE_NAMES_UNKNOWN,
|
||||||
SET_NAME,
|
SET_NAME,
|
||||||
|
DISABLE_ALL_ZONES,
|
||||||
|
DISABLE_CURRENT_ZONE,
|
||||||
|
SET_ZONE,
|
||||||
|
SHOW_MAP,
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user