Оберон-клуб «ВЄДАsoft»
https://zx.oberon.org/forum/

Взаимно рекурсивные функции
https://zx.oberon.org/forum/viewtopic.php?f=79&t=406
Страница 1 из 1

Автор:  budden [ 26 сен 2018, 14:08 ]
Заголовок сообщения:  Взаимно рекурсивные функции

Что-то я не понял, как определить в BlackBoxComponentBuilder пару взаимно рекурсивных функций.
Что, нужно завести переменную процедурного типа и её инициализировать?

Автор:  SovietPony [ 26 сен 2018, 18:24 ]
Заголовок сообщения:  Re: Взаимно рекурсивные функции

Код: "OBERON"
  1.  
  2. PROCEDURE^ P2;
  3.  
  4. PROCEDURE P1;
  5. BEGIN P2
  6. END P1;
  7.  
  8. PROCEDURE P2;
  9. BEGIN P1
  10. END P2;
  11.  

Автор:  Comdiv [ 26 сен 2018, 19:01 ]
Заголовок сообщения:  Re: Взаимно рекурсивные функции

Или так:
Код: "OBERON"
  1. PROCEDURE P1;
  2. PROCEDURE P2;
  3. BEGIN P1
  4. END P2;
  5. BEGIN P2
  6. END P1;

Автор:  budden [ 27 сен 2018, 15:33 ]
Заголовок сообщения:  Re: Взаимно рекурсивные функции

Спасибо (я не пишу спасибо за другие вопросы, потому что пытаюсь быть похожим на StackOverflow, где за лишние спасибо можно получить выговор). А если у меня парсер методом рекурсивного спуска, который состоит из N взаимно-рекурсивных функций, в перемешку со служебными функциями, которые не входят в рекурсивные отношения?

Автор:  Comdiv [ 27 сен 2018, 16:28 ]
Заголовок сообщения:  Re: Взаимно рекурсивные функции

Неясно, в чём именно загвоздка. Вариант, предложенный SovietPony не подходит?

Автор:  SovietPony [ 27 сен 2018, 16:28 ]
Заголовок сообщения:  Re: Взаимно рекурсивные функции

В компиляторе ББ как раз такой парсер. Собственно как делается рекусия уже показали: сначала делаем объявление наперёд, потом делаем реализацию в удобном месте.

Автор:  budden [ 27 сен 2018, 20:45 ]
Заголовок сообщения:  Re: Взаимно рекурсивные функции

Понял, спасибо!

Страница 1 из 1 Часовой пояс: UTC + 2 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/