Обработка вложенных меню
This commit is contained in:
parent
7658d4bb68
commit
2bc0de01c9
@ -283,14 +283,30 @@ public final class Parser {
|
|||||||
// Ищем элементы выбора
|
// Ищем элементы выбора
|
||||||
final Menu menu = new Menu(title);
|
final Menu menu = new Menu(title);
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
do {
|
int level = 1; // уровень вложенности меню
|
||||||
if (lookMatch(pos, TokenType.EOF)) return false;
|
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)) {
|
if (lookMatch(pos, TokenType.TEXT) && lookMatch(pos + 1, TokenType.COLON)) {
|
||||||
menu.addItem(get(pos).getText(), position + pos + 2);
|
menu.addItem(get(pos).getText(), position + pos + 2);
|
||||||
pos++;
|
pos++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lookMatch(pos, TokenType.EOF)) return false;
|
||||||
pos++;
|
pos++;
|
||||||
} while (!lookMatch(pos, TokenType.ENDMENU));
|
}
|
||||||
|
|
||||||
ViewActivity.getInstance().menu(menu);
|
ViewActivity.getInstance().menu(menu);
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user