новый компонентный паскаль - ЦЧВП

Работы по ББЦБ (BlackBoxComponentBuilder) навсегда прекращены, т.к. A2OS - более интересный для наших задач вариант Оберон-подобной среды. В этом форуме хранятся темы про ББЦБ - пригодятся.
Закрыто
БудДен
Сообщения: 2237
Зарегистрирован: 07.10.18 14:01

новый компонентный паскаль - ЦЧВП

Сообщение БудДен » 08.10.18 18:37

#цчвп #repl #яръ #новыйкомпонентныйпаскаль

Рассмотрим вот такой диалог в ЦЧВП (русификация ключевых слов согласно prospero, но ПРОЦЕДУРА заменена на ПРОЦ, КОНЕЦ - на КН, IMPORT = ИСПОЛЬЗУЕТ, BEGIN = ТЕЛО):

Код: Выделить всё

>1 модуль м;
>2 перем п:целое;
>3 п := 1; 
>4 проц ц; кн ц;
>5 ц;
он эквивалентен загрузке такого набора модулей:

Код: Выделить всё

Команда 1. 
модуль м;

Команда 2. 
модуль о2; перем п*:целое; кн.
(* выгрузить модуль м *)
модуль м; использует о2; кн.

Команда 3.
модуль о3; использует о2; тело о2.п := 1 кн.
выгрузить модуль м
модуль м; использует о2, о3; кн.

4. 
модуль чцвп4; использует о2, о3; проц ц*; кн ц; кн.
выгрузить модуль м
модуль м; использует о2, о3, о4;

5. 
выгрузить модуль м
модуль м; использует о2, о3, о4; тело о4.ц; кн.

БудДен
Сообщения: 2237
Зарегистрирован: 07.10.18 14:01

Re: новый компонентный паскаль - ЦЧВП

Сообщение БудДен » 08.10.18 19:10

При этом мы получаем как бы интерпретатор: в нём можно завести переменные и определять функции. Но на самом деле это множественные обращения к компилятору. Для чего это нужно? В основном, это нужно по той причине, что в ББКБ слишком ограниченный интерпретатор. Он понимает только некоторые типы данных.

С другой стороны, если мы хотим написать сложный скрипт, то мы можем просто оформить его как модуль. А если хотим написать простой, то сохранение состояния между разными командами не нужно. Может быть, нужен более простой вариант:

Код: Выделить всё

перем т: массив из лит;
т := '@c';
DevBrowser.ShowInterface(т);
Можно представить, как более простой модуль:

Код: Выделить всё

 модуль к344;
 использует DevBrowser;
 перем т: массив из лит;
 тело
  т := '@c';
  DevBrowser.ShowInterface('@c');
 кн к344.

Закрыто