Обработка вложенных меню

This commit is contained in:
Victor 2015-04-12 00:39:05 +03:00
parent 7658d4bb68
commit 2bc0de01c9

View File

@ -283,14 +283,30 @@ public final class Parser {
// Ищем элементы выбора
final Menu menu = new Menu(title);
int pos = 0;
do {
if (lookMatch(pos, TokenType.EOF)) return false;
int level = 1; // уровень вложенности меню
while (true) {
// Расчёт уровня меню.
if (lookMatch(pos, TokenType.MENU) && lookMatch(pos + 1, TokenType.COLON)) {
level++;
pos++;
}
if (lookMatch(pos, TokenType.ENDMENU)) {
level--;
// Завершаем работу по достижению ENDMENU первого уровня.
if (level <= 0) break;
}
if (level == 1) {
// Добавляем только пункты из меню первого уровня.
if (lookMatch(pos, TokenType.TEXT) && lookMatch(pos + 1, TokenType.COLON)) {
menu.addItem(get(pos).getText(), position + pos + 2);
pos++;
}
}
if (lookMatch(pos, TokenType.EOF)) return false;
pos++;
} while (!lookMatch(pos, TokenType.ENDMENU));
}
ViewActivity.getInstance().menu(menu);
return true;