185 похожих чатов

Пытаюсь сделать задание 2.2 из книги Вирта. Там нужно представить

как минимум 2 возможные структуры дерева для выражений, т.к. синтаксис является двусмысленны. Залип на выражении IF a THEN IF b THEN A ELSE B. Не то, чтобы 2 структуры не получается вывести, но даже одной. Если я начинаю идти от conditionalStatement, то получается, что IF a THEN IF b THEN A - это ifStatement. Дальше должно получаться, что IF b THEN A - это unconditionalStatement, но как-то не похоже это ни на basicStatement, ни на forStatement, ни на compoundStatement. Все подобное происходит, если мы начинаем выводить выражение, начиная с BooleanExpression или arithmeticExpression.
Я чего-то не понимаю, или тут где-то в книге ошибка?

9 ответов

15 просмотров

Есть два выражения IF ... THEN ... ELSE ... IF ... THEN ... И надо написать два дерева - когда у первого приоритет больше и когда у второго

Возможно if-без-else просто забыли

Ilia-Eliseev Автор вопроса

Вроде как написан if-без-else как ifStatement. Просто, у меня подстановки не получаются. Что IF b THEN A ELSE B, что IF b THEN A не подходят под unconditionalStatement

Ilia-Eliseev Автор вопроса
TOV_MULTIMASSO
При чём здесь unconditionalStatement?

Не знаю, может я что-то не так делаю. Логика следующая была: я ищу куски выражений в описании синтаксиса для выражения IF a THEN IF b THEN A ELSE B. IF и THEN есть в ifStatement, ELSE в conditionalStatement. Все 3 части есть в BooleanExpression и arithmeticExpression Соответственно, я могу выбрать, что будет корнем дерева в данном случае, и через замены попытаться выстроить дерево. Ок, беру сначала conditionalStatement как корень. Получается, что IF a THEN IF b THEN A - это ifStatement, а B - statement. Смотрю, что будет с этим ifStatement. У него выходит, что a - это BooleanExpression, а IF b THEN A - unconditionalStatement. Это первый вариант, как я до него дошел. Если брать ifStatement как корень. a - BooleanExpression, IF b THEN A ELSE B - unconditionalStatement. Опять я дошел до него. Что в первом случае, что во втором, выражение под unconditionalStatement не подходит, и что делать я не знаю. Я что-то не так тут сделал и чего-то недопонимаю?

Ilia Eliseev
Не знаю, может я что-то не так делаю. Логика следу...

Там два варианта 1) IF a THEN (IF b THEN A ELSE B) 2) IF a THEN (IF b THEN A) ELSE B

Ilia-Eliseev Автор вопроса
TOV_MULTIMASSO
Там два варианта 1) IF a THEN (IF b THEN A ELSE B)...

По идее да, но через синтаксические уравнения я это вывести не могу.

Ilia-Eliseev Автор вопроса
Ilia Eliseev
По идее да, но через синтаксические уравнения я эт...

А раз не могу выразить, то и не могу ответить на поставленную задачу: "Предложите альтернативный однозначный синтаксис".

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта