Jump to content

Компонентный Паскаль

Компонентный Паскаль
Парадигмы Императивный , структурированный , модульный , объектно-ориентированный
Семья Вирт Оберон
Разработчик Микросистемы Оберон
Впервые появился 1997 год ; 27 лет назад ( 1997 )
Дисциплина набора текста Сильный , статичный
Объем Лексический
Веб-сайт черный ящикфреймворк .org
Под влиянием
Паскаль , Оберон , Оберон-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 ["*" | "-"].
  1. ^ Дженсен, Кэтлин; Вирт, Никлаус (1974–1991). Паскаль: Руководство пользователя и отчет . Спрингер Верлаг. ISBN  978-0-387-97649-5 .
  2. ^ Вирт, Никлаус (1982–1985). Программирование в Модуле-2 . Издательство Спрингер. ISBN  978-3-540-15078-7 .
  3. ^ Райзер, Мартин; Вирт, Никлаус (1 июня 1992 г.). Программирование в Обероне: шаги за пределами Паскаля и Модулы . Аддисон-Уэсли . ISBN  978-0201565430 . PDF (334 КБ). Архивировано 3 июня 2012 г. в Wayback Machine.
  4. ^ Вирт, Никлаус ; Гуткнехт, Юрг (1 ноября 1992 г.). Проект Оберон: проектирование операционной системы и компилятора . Аддисон-Уэсли . ISBN  978-0201544282 . PDF (4398 КБ). Архивировано 10 июля 2012 г. в Wayback Machine.
  5. ^ Мессенбёк, Ханс-Петер; Вирт, Никлаус (1991). «Язык программирования Оберон-2» (PDF) . Структурное программирование . 12 : 179–195.
  6. ^ Мессенбёк, Х.; Коскимис, К. (1996). «Активный текст для структурирования и понимания исходного кода» . Программное обеспечение: практика и опыт . 26 (7): 833–850. doi : 10.1002/(SICI)1097-024X(199607)26:7<833::AID-SPE34>3.0.CO;2-Q .

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a75e7b470b6960c99f9b6bc758f5493d__1704500580
URL1:https://arc.ask3.ru/arc/aa/a7/3d/a75e7b470b6960c99f9b6bc758f5493d.html
Заголовок, (Title) документа по адресу, URL1:
Component Pascal - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)