Компонентный Паскаль
Парадигмы | Императивный , структурированный , модульный , объектно-ориентированный |
---|---|
Семья | Вирт Оберон |
Разработчик | Микросистемы Оберон |
Впервые появился | 1997 год |
Дисциплина набора текста | Сильный , статичный |
Объем | Лексический |
Веб-сайт | черный ящикфреймворк |
Под влиянием | |
Паскаль , Оберон , Оберон-2 |
Компонентный Паскаль — это язык программирования в традициях Вирта Никлауса Паскаля . [1] Модуль-2 , [2] Оберон [3] [4] и Оберон-2 . [5] Он носит имя языка Паскаль и сохраняет его наследие, но несовместим с Паскалем. Вместо этого это второстепенный вариант и усовершенствование Оберона-2 с более выразительной системой типов и встроенной поддержкой строк . Компонент Pascal первоначально назывался Oberon/L и был разработан и поддерживается небольшой ETH Zürich дочерней компанией под названием Oberon microsystems. Они разработали интегрированную среду разработки (IDE) под названием BlackBox Component Builder . С 2014 года разработку и поддержку взяла на себя небольшая группа волонтеров. Первая версия IDE была выпущена в 1994 году как Oberon/F . В то время он представил новый подход к построению графического пользовательского интерфейса (GUI), основанный на редактируемых формах, где поля и командные кнопки связаны с экспортируемыми переменными и исполняемыми процедурами. Этот подход имеет некоторое сходство со способом выделения кода, используемым в Microsoft .NET 3.0 для доступа к коду в расширяемом языке разметки приложений (XAML), который был выпущен в 2008 году.
Программная реализация с открытым исходным кодом Component Pascal .NET и существует для платформ виртуальных машин Java (JVM) от команды Gardens Point под руководством Джона Гофа из Технологического университета Квинсленда в Австралии.
23 июня 2004 года Oberon microsystems объявила, что BlackBox Component Builder доступен для бесплатной загрузки и что планируется версия с открытым исходным кодом. Бета-версия с открытым исходным кодом была первоначально выпущена в декабре 2004 года и обновлена до окончательной версии v1.5 в декабре 2005 года. Она включает в себя полный исходный код IDE, компилятора, отладчика, анализатора исходного кода, профилировщика и интерфейсных библиотек и может также можно загрузить с их сайта. Несколько кандидатов на выпуск версии 1.6 появились в 2009–2011 годах, последний из них (1.6rc6) появился на веб-страницах Oberon microsystems в 2011 году. В конце 2013 года Oberon microsystems выпустила финальную версию 1.6. Вероятно, это последний релиз, выпущенный ими. Небольшое сообщество взяло на себя продолжающееся развитие.
расширения .odc ( ) Oberon файлов символов , BlackBox Component Pascal использует для символов файлов документов, таких как исходные файлы, и .osf тогда как для ) Oberon (файл и документ Gardens Point Component Pascal использует .cp для исходных .cps для файлов символов. имеет собственный формат исполняемых и загружаемых объектов .ocf ) кода Оберона ( BlackBox Component Pascal файл ; он включает в себя загрузчик связывания среды выполнения для этого формата. Формат документа (.odc) — это двоичный формат форматированного текста, который позволяет форматировать, поддерживает условное свертывание и позволяет встраивать активное содержимое в исходный текст. Он также обрабатывает элементы пользовательского интерфейса в редактируемых формах. Это в традициях формата Oberon Text. [6]
Синтаксис
[ редактировать ]Полный синтаксис CP, приведенный в отчете о языке, показан ниже. В расширенной форме Бэкуса-Наура необходимо всего 34 грамматических постановки, на одну больше, чем для Оберона-2 , хотя это более совершенный язык.
Module = MODULE ident ";"
[ImportList] DeclSeq
[BEGIN StatementSeq]
[CLOSE StatementSeq]
END ident ".".
ImportList = IMPORT [ident ":="] ident {"," [ident ":="] ident} ";".
DeclSeq = { CONST {ConstDecl ";" }
| TYPE {TypeDecl ";"}
| VAR {VarDecl ";"}}
{ ProcDecl ";" | ForwardDecl ";"}.
ConstDecl = IdentDef "=" ConstExpr.
TypeDecl = IdentDef "=" Type.
VarDecl = IdentList ":" Type.
ProcDecl = PROCEDURE [Receiver] IdentDef [FormalPars] MethAttributes
[";" DeclSeq [BEGIN StatementSeq]
END ident].
MethAttributes = ["," NEW] ["," (ABSTRACT | EMPTY | EXTENSIBLE)].
ForwardDecl = PROCEDURE "^" [Receiver] IdentDef [FormalPars] MethAttributes.
FormalPars = "(" [FPSection {";" FPSection}] ")" [":" Type].
FPSection = [VAR | IN | OUT] ident {"," ident} ":" Type.
Receiver = "(" [VAR | IN] ident ":" ident ")".
Type = Qualident
| ARRAY [ConstExpr {"," ConstExpr}] OF Type
| [ABSTRACT | EXTENSIBLE | LIMITED] RECORD ["("Qualident")"] FieldList {";" FieldList} END
| POINTER TO Type
| PROCEDURE [FormalPars].
FieldList = [IdentList ":" Type].
StatementSeq = Statement {";" Statement}.
Statement = [ Designator ":=" Expr
| Designator ["(" [ExprList] ")"]
| IF Expr THEN StatementSeq
{ELSIF Expr THEN StatementSeq}
[ELSE StatementSeq]
END
| CASE Expr OF
Case {"|" Case}
[ELSE StatementSeq]
END
| WHILE Expr DO StatementSeq END
| REPEAT StatementSeq UNTIL Expr
| FOR ident ":=" Expr TO Expr [BY ConstExpr] DO StatementSeq END
| LOOP StatementSeq END
| WITH [ Guard DO StatementSeq ]
{"|" [ Guard DO StatementSeq ] }
[ELSE StatementSeq]
END
| EXIT
| RETURN [Expr]
].
Case = [CaseLabels {"," CaseLabels} ":" StatementSeq].
CaseLabels = ConstExpr [".." ConstExpr].
Guard = Qualident ":" Qualident.
ConstExpr = Expr.
Expr = SimpleExpr [Relation SimpleExpr].
SimpleExpr = ["+" | "-"] Term {AddOp Term}.
Term = Factor {MulOp Factor}.
Factor = Designator | number | character | string | NIL | Set | "(" Expr ")" | " ~ " Factor.
Set = "{" [Element {"," Element}] "}".
Element = Expr [".." Expr].
Relation = "=" | "#" | "<" | "<=" | ">" | ">=" | IN | IS.
AddOp = "+" | "-" | OR.
MulOp = "*" | "/" | DIV | MOD | "&".
Designator = Qualident {"." ident
| "[" ExprList "]"
| "^"
| "(" Qualident ")"
| "(" [ExprList] ")"} [ "$" ].
ExprList = Expr {"," Expr}.
IdentList = IdentDef {"," IdentDef}.
Qualident = [ident "."] ident.
IdentDef = ident ["*" | "-"].
Ссылки
[ редактировать ]- ^ Дженсен, Кэтлин; Вирт, Никлаус (1974–1991). Паскаль: Руководство пользователя и отчет . Спрингер Верлаг. ISBN 978-0-387-97649-5 .
- ^ Вирт, Никлаус (1982–1985). Программирование в Модуле-2 . Издательство Спрингер. ISBN 978-3-540-15078-7 .
- ^ Райзер, Мартин; Вирт, Никлаус (1 июня 1992 г.). Программирование в Обероне: шаги за пределами Паскаля и Модулы . Аддисон-Уэсли . ISBN 978-0201565430 . PDF (334 КБ). Архивировано 3 июня 2012 г. в Wayback Machine.
- ^ Вирт, Никлаус ; Гуткнехт, Юрг (1 ноября 1992 г.). Проект Оберон: проектирование операционной системы и компилятора . Аддисон-Уэсли . ISBN 978-0201544282 . PDF (4398 КБ). Архивировано 10 июля 2012 г. в Wayback Machine.
- ^ Мессенбёк, Ханс-Петер; Вирт, Никлаус (1991). «Язык программирования Оберон-2» (PDF) . Структурное программирование . 12 : 179–195.
- ^ Мессенбёк, Х.; Коскимис, К. (1996). «Активный текст для структурирования и понимания исходного кода» . Программное обеспечение: практика и опыт . 26 (7): 833–850. doi : 10.1002/(SICI)1097-024X(199607)26:7<833::AID-SPE34>3.0.CO;2-Q .
Дальнейшее чтение
[ редактировать ]- От Модулы до Оберона Вирта (1990)
- Язык программирования Оберон Вирт (1990)
- Различия между Обероном и Обероном-2 Мессенбёк и Вирт (1993)
- Язык программирования Оберон-2 Х. Мессенбёк, Н. Вирт, Институт компьютерных систем, ETH Цюрих ( ETHZ ), январь 1992 г.
- Что нового в Component Pascal (изменения с Оберона-2 на CP), Pfister (2001)
- Компоненты и объекты вместе , Клеменс Шиперски, доктор Доббс, май 1999 г.