Форум программистов, компьютерный форум, киберфорум
Теория и практика программирования
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
4 / 4 / 0
Регистрация: 21.12.2015
Сообщений: 195
1

Устранить левую рекурсию

07.05.2018, 07:03. Показов 1918. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
По одному заданию, пришлось разрабатывать грамматику... После чего запихать в ANTLR для генерации c++ кода... Но вот проблема, в моей грамматике есть левая рекурсия, которую ANTLR не жалует...
Уже какой день бьюсь, не могу понять, как убрать прямую рекурсию(в данном примере)...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
expressionName 
    :   Symbol 
    |   expressionName Symbol;
expr 
    :    term  
    |   expr  '+' term  
    |   expr '-' term;  
 
term
    :    expressionName 
    |   num 
    |   term  '*'  expr 
    |   term '/' expr;
 
num 
    :   Digit  
    |   num Digit;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2018, 07:03
Ответы с готовыми решениями:

В массиве перенесите левую верхнюю часть в левую нижнюю
Дан квадратный массив, в котором количество строк и столбцов -четно. Такой массив можно разбить на ...

Переделать рекурсию по аргументу в рекурсию по значению
эта рекурсия по аргументу, заменяющая Y на число, равное глубине вложения Y в список List,...

хром открывает левую страницу
помогите избавиться, при запуске хрома открывается вот такая страница, пробывал удалять эти файлы...

Резиновый дизайн в левую сторону
Добрый день. Подскажите, как реализовать такую штуку: есть картинка размером 1600х600. Нужно...

2
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
07.05.2018, 21:47 2
Лучший ответ Сообщение было отмечено Blekzet как решение

Решение

Код
expr: expr ('*'|'/') expr
    | expr ('+'|'-') expr
    | ID
    ;

ID: [a-z]+ ;
Left-recursive rules
1
4 / 4 / 0
Регистрация: 21.12.2015
Сообщений: 195
07.05.2018, 22:08  [ТС] 3
0x10, эээм... ну да, это тоже левая рекурсия... Я даже не понял на что ответ дан....

Добавлено через 5 минут
0x10, ой, вы правы... в 3 это не работает, а вот в 4 ANTLR работает... Спасибо.
0
07.05.2018, 22:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2018, 22:08
Помогаю со студенческими работами здесь

Найти крайнюю левую точку
Как найти крайнюю левую точку с максимальным значением Y с помощью LINQ?

Не могу удалить левую ссылку с сайта
Доброго времени, Ест сайт на вп, на одной из страниц левая ссылка на чужой сайт. Не могу найти...

Вывести левую и правую диагональ матрицы
Вот есть исходник не могу дописать чтобы он выводил левую и правую диагональ матрицы, и что-то не...

Отобразить левую половину матрицы на правую
Подскажите, как отобразить левую половину второй матрицы на правую зеркально симметрично...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru