|
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 44
|
||||||
Рекурсия, Синтаксический анализатор04.03.2018, 09:54. Показов 3632. Ответов 20
нужно сделать
Построить синтаксический анализатор для понятия "простое выражение": <простое выражение>::=<простой идентификатор> <простое выражение>::=<простое выражение><знак операции><простое выражение > <простой идентификатор> : : =<буква> <буква>::=’A’..’Z’ <знак операции>::=' +' |' -' |' * ' с использованием рекурсии, и вот что получилось
вопрос: почему это так работает и как это исправить?
0
|
||||||
| 04.03.2018, 09:54 | |
|
Ответы с готовыми решениями:
20
Синтаксический анализатор. Рекурсия Рекурсия: синтаксический анализатор понятия "список_параметров" Синтаксический анализатор понятия "скобки" (рекурсия) |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 04.03.2018, 10:35 | |
|
Для чего ты придумал это перечисление? Разве функция не должна просто возвращать bool - правильно или не правильно?
0
|
|
|
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 44
|
|
| 04.03.2018, 11:07 [ТС] | |
|
если большая буква должно вернуть identificator
если +, -, * или /, то operation и если A+A или A+B+C и т.п. то statement в других случаях invalid input
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 04.03.2018, 11:10 | |
|
Для чего это нужно? У тебя каждый уровень рекурсии - это один любой символ, что ли? Почему не "простое выражение"?
0
|
|
|
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 44
|
|
| 04.03.2018, 11:14 [ТС] | |
|
это нужно для выполнения лабы, я подаю в функцию строку и по одному символу проверяю на соответствие вышеперечисленным условиям
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 04.03.2018, 11:16 | |
|
Это есть в задании? Ты понимаешь смысл рекурсии? Должна быть древовидная структура.
0
|
|
|
381 / 324 / 65
Регистрация: 14.10.2014
Сообщений: 1,377
|
||
| 04.03.2018, 11:27 | ||
|
Добавил код в студию, посмотреть как работает, студия выдала ошибку в этой строке
0
|
||
|
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 44
|
|
| 04.03.2018, 11:29 [ТС] | |
|
это было в устном пояснении к заданию, смысл рекурсии в упрощении кода при помощи вызова функции самой себя,
0
|
|
|
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 44
|
|
| 04.03.2018, 11:35 [ТС] | |
|
0
|
|
|
381 / 324 / 65
Регистрация: 14.10.2014
Сообщений: 1,377
|
||
| 04.03.2018, 12:16 | ||
|
Я не совсем понял задание. Результат такой должен быть что-ли?
0
|
||
|
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 44
|
|||||||
| 04.03.2018, 12:25 [ТС] | |||||||
|
да такой
0
|
|||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 04.03.2018, 13:00 | |
|
0
|
|
|
381 / 324 / 65
Регистрация: 14.10.2014
Сообщений: 1,377
|
|||
| 04.03.2018, 13:15 | |||
|
Моё мнение (я далеко не профессионал) функция identificator recursion(string a, identificator id, int pos = 0) логически не совсем верная. в строке 58
0
|
|||
|
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 44
|
|
| 04.03.2018, 13:29 [ТС] | |
|
Recrut_rf, это условие выхода, если pos >= a.length() вернет единицу, то recursion должна вернуть id
допустим мы написали A в первый раз мы проверяем a[0] и присваиваем id значение Identificator, вызываем recursion второй раз с pos = 1, это условие(pos >= a.length()) возвращает 1 и recursion возвращает id = Identificator, далее мы переходим к case Simple_Identificator и присваиваем переменной output значение "Identificator" после выходим из switch и выводим переменную output в консоль
0
|
|
|
381 / 324 / 65
Регистрация: 14.10.2014
Сообщений: 1,377
|
|
| 04.03.2018, 13:41 | |
|
Если я ввел пустую строку (тупо нажал на Enter в консоли), какой должен быть вывод в консоль?
0
|
|
|
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 44
|
|
| 04.03.2018, 14:04 [ТС] | |
|
Recrut_rf, ошибка, но я это не прописывал
0
|
|
|
381 / 324 / 65
Регистрация: 14.10.2014
Сообщений: 1,377
|
||
| 04.03.2018, 14:17 | ||
|
А для чего строка int p = pos; если p далее в функции нигде не используется...? С булевскими переменными
, последнее время пишу только на Jave) если вы присвоили им значения в начале функции main и нигде это значение не меняется. К примеру если бы функция recursion() возвращала булевское значение и присваивала его одной из этих переменных, тогда ладно, но ничего подобного нет. Получается блок свитч кейз можно смело отправлять в топку...Тут проще всё заново сделать, чем "ремонтировать" данный код
0
|
||
|
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 44
|
||
| 04.03.2018, 15:05 [ТС] | ||
|
Recrut_rf,
if (pos < p) return id; но это не помогло просто строчку забыл удалить(= я изначально не правильно понял задание и свич кейс остался от первоначального вида программы & и && почему-то разницы не имеют(смотрел в отладчике, он проверял оба условия) // не по теме почему ява а не шарп?
0
|
||
|
381 / 324 / 65
Регистрация: 14.10.2014
Сообщений: 1,377
|
|||
| 04.03.2018, 17:35 | |||
.После плюсцов перейти на другой язык (Си подобный) не слишком сложно. И да - если что - я начинающий (Junior).
0
|
|||
| 04.03.2018, 20:31 | |
|
Не по теме: Recrut_rf, и сколько платят?
0
|
|
| 04.03.2018, 20:31 | |
|
Помогаю со студенческими работами здесь
20
синтаксический анализатор Синтаксический анализатор Синтаксический анализатор Синтаксический анализатор Синтаксический анализатор. Формула Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|