Инструменты пользователя

Инструменты сайта


blackbox:compiler

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
blackbox:compiler [2018/05/23 11:57]
иван_денисов создано
blackbox:compiler [2020/10/29 07:08] (текущий)
Строка 1: Строка 1:
-====== Описание работы компилятора Блэкбокс ======+====== Описание работы компилятора Блэкбокса ======
  
-Компилятор состоит из бэкенда и фронтенда..использует AST.+Компилятор Блэкбокса реализован на основе переносимого компилятора Оберона, который на английском описан в: 
 +  * сообщении [[ftp://ftp.ethoberon.ethz.ch/Oberon/OberonV4/Docu/OP2.Paper.ps|Crelier R. OP2 : A portable Oberon-2 compiler. 1991.]] {{ :blackbox:crelier_1991.pdf |PDF }} 
 +  * диссертации [[http://e-collection.library.ethz.ch/eserv/eth:39386/eth-39386-02.pdf|Crelier R. Separate compilation and module extension, 1994]] 
 +  * публикации [[http://oberon2005.oberoncore.ru/paper/p_obesys.pdf|Brandis M.M., Crelier R., Franz M., Templ J.  The Oberon System Family // SOFTWARE-PRACTICE AND EXPERIENCE. 1995. Vol. 25. P. 1331–1366.]] {{ :blackbox:the_oberon_system_family.pdf |версия 2}} 
 + 
 + 
 +Компилятор выполнен по трехфазной схеме, с возможностью смены кодогенератора под конкретную платформу без смены //парсера// и //AST-дерева//((AST --- abstract syntax tree (абстрактное синтаксическое дерево). Служит хранению текста программы в промежуточном состоянии между исходным текстом и машинным кодом. Это не байт-кодИсполнять нельзяНо AST-дерево даёт гарантию, что код программы корректный (иначе нельзя получить такое дерево), и позволяет привести к машинному коду на нужной платформе, что сильно облегчает портирование программ)). 
 + 
 +Предполагается, что смена платформы происходит путем подмены модуля ''DevCompilerXxx'', который после успешного завершения процесса создания //AST-дерева// передает результат сменному бэкенду ''DevCPVxxx'' 
 + 
 +По модулям это расписано тут: [[blackbox:dev]]
blackbox/compiler.1527065865.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)