Component Pascal

Last updated

Component Pascal
Paradigms Imperative, structured, modular, object-oriented
Family Wirth Oberon
Developer Oberon microsystems
First appeared1997;25 years ago (1997)
Typing discipline Strong, static
Scope Lexical
Website blackboxframework.org
Influenced by
Pascal, Oberon, Oberon-2

Component Pascal is a programming language in the tradition of Niklaus Wirth's Pascal, [1] Modula-2, [2] Oberon [3] [4] and Oberon-2. [5] It bears the name of the language Pascal and preserves its heritage, but is incompatible with Pascal. Instead, it is a minor variant and refinement of Oberon-2 with a more expressive type system and built-in string support. Component Pascal was originally named Oberon/L, and was designed and supported by a small ETH Zürich spin-off company named Oberon microsystems. They developed an integrated development environment (IDE) named BlackBox Component Builder. Since 2014, development and support has been taken over by a small group of volunteers. The first version of the IDE was released in 1994, as Oberon/F. At the time, it presented a novel approach to graphical user interface (GUI) construction based on editable forms, where fields and command buttons are linked to exported variables and executable procedures. This approach bears some similarity to the code-behind way used in Microsoft's .NET 3.0 to access code in Extensible Application Markup Language (XAML), which was released in 2008.

Contents

An open-source software implementation of Component Pascal exists for the .NET and Java virtual machine (JVM) platforms, from the Gardens Point team around John Gough at Queensland University of Technology in Australia.

On 23 June 2004 Oberon microsystems announced that the BlackBox Component Builder was made available as a free download and that an open-source version was planned. The beta open-source version was initially released in December 2004 and updated to a final v1.5 release in December 2005. It includes the complete source code of the IDE, compiler, debugger, source analyser, profiler, and interfacing libraries, and can also be downloaded from their website. Several release candidates for v1.6 appeared in the years 2009–2011, the latest one (1.6rc6) appeared on Oberon microsystems web pages in 2011. At the end of 2013, Oberon microsystems released the final release 1.6. It is probably the last release bundled by them. A small community took over the ongoing development.

BlackBox Component Pascal uses the extensions .odc (Oberon document) for document files, such as source files, and .osf (Oberon symbol file) for symbol files while Gardens Point Component Pascal uses .cp for source and .cps for symbol files. BlackBox Component Pascal has its own executable and loadable object format .ocf (Oberon code file); it includes a runtime linking loader for this format. The document format (.odc) is a rich text binary format, which allows formatting, supports conditional folding, and allows active content to be embedded in the source text. It also handles user interface elements in editable forms. This is in the tradition of the Oberon Text format. [6]

Syntax

The full syntax for CP, as given by the Language Report, is shown below. In the extended Backus–Naur form, only 34 grammatical productions are needed, one more than for Oberon-2, although it is a more advanced language.

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 ["*"|"-"].

Related Research Articles

<span class="mw-page-title-main">Niklaus Wirth</span> Swiss computer scientist

Niklaus Emil Wirth is a Swiss computer scientist. He has designed several programming languages, including Pascal, and pioneered several classic topics in software engineering. In 1984, he won the Turing Award, generally recognized as the highest distinction in computer science, for developing a sequence of innovative computer languages.

<span class="mw-page-title-main">Oberon (programming language)</span>

Oberon is a general-purpose programming language first published in 1987 by Niklaus Wirth and the latest member of the Wirthian family of ALGOL-like languages. Oberon was the result of a concentrated effort to increase the power of Modula-2, the direct successor of Pascal, and simultaneously to reduce its complexity. Its principal new feature is the concept of type extension of record types. It permits constructing new data types on the basis of existing ones and to relate them, deviating from the dogma of strictly static typing of data. Type extension is Wirth's way of inheritance reflecting the viewpoint of the parent site. Oberon was developed as part of the implementation of an operating system, also named Oberon at ETH Zurich in Switzerland. The name is from the moon of the planet Uranus, named Oberon.

<span class="mw-page-title-main">Pascal (programming language)</span> Programming language

Pascal is an imperative and procedural programming language, designed by Niklaus Wirth as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named in honour of the French mathematician, philosopher and physicist Blaise Pascal.

In computer programming, a p-code machine is a virtual machine designed to execute p-code. This term is applied both generically to all such machines, and to specific implementations, the most famous being the p-Machine of the Pascal-P system, particularly the UCSD Pascal implementation, among whose developers, the p in p-code was construed to mean pseudo more often than portable, thus pseudo-code meaning instructions for a pseudo-machine.

In computer science, a recursive descent parser is a kind of top-down parser built from a set of mutually recursive procedures where each such procedure implements one of the nonterminals of the grammar. Thus the structure of the resulting program closely mirrors that of the grammar it recognizes.

<span class="mw-page-title-main">Modula-3</span>

Modula-3 is a programming language conceived as a successor to an upgraded version of Modula-2 known as Modula-2+. While it has been influential in research circles it has not been adopted widely in industry. It was designed by Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow and Greg Nelson at the Digital Equipment Corporation (DEC) Systems Research Center (SRC) and the Olivetti Research Center (ORC) in the late 1980s.

<span class="mw-page-title-main">Oberon (operating system)</span>

The Oberon System is a modular, single-user, single-process, multitasking operating system written in the programming language Oberon. It was originally developed in the late 1980s at ETH Zurich. The Oberon System has an unconventional visual text user interface (TUI) instead of a conventional command-line interface (CLI) or graphical user interface (GUI). This TUI was very innovative in its time and influenced the design of the Acme text editor for the Plan 9 from Bell Labs operating system.

<span class="mw-page-title-main">Oberon-2</span>

Oberon-2 is an extension of the original Oberon programming language that adds limited reflection and object-oriented programming facilities, open arrays as pointer base types, read-only field export, and reintroduces the FOR loop from Modula-2.

PL/0 is a programming language, intended as an educational programming language, that is similar to but much simpler than Pascal, a general-purpose programming language. It serves as an example of how to construct a compiler. It was originally introduced in the book, Algorithms + Data Structures = Programs, by Niklaus Wirth in 1976. It features quite limited language constructs: there are no real numbers, very few basic arithmetic operations and no control-flow constructs other than "if" and "while" blocks. While these limitations make writing real applications in this language impractical, it helps the compiler remain compact and simple.

Coco/R is a compiler generator that takes wirth syntax notation grammars of a source language and generates a scanner and a parser for that language.

Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.

A2 is a modular, object-oriented operating system, with some unconventional features, including automatic garbage-collected memory management, and a zooming user interface. It was developed originally at ETH Zurich in 2002. It is free and open-source software under a BSD-like license.

The computer programming languages C and Pascal have similar times of origin, influences, and purposes. Both were used to design their own compilers early in their lifetimes. The original Pascal definition appeared in 1969 and a first compiler in 1970. The first version of C appeared in 1972.

IP Pascal is an implementation of the Pascal programming language using the IP portability platform, a multiple machine, operating system and language implementation system. It implements the language "Pascaline", and has passed the Pascal Validation Suite.

Lola is designed to be a simple hardware description language for describing synchronous, digital circuits. Niklaus Wirth developed the language to teach digital design on field-programmable gate arrays (FPGAs) to computer science students while a professor at ETH Zurich.

Protel stands for "Procedure Oriented Type Enforcing Language". It is a programming language created by Nortel Networks and used on telecommunications switching systems such as the DMS-100. Protel-2 is the object-oriented version of Protel.

<span class="mw-page-title-main">BlackBox Component Builder</span> Software development tool

BlackBox Component Builder is an integrated development environment (IDE) optimized for component-based software development developed by a small spin-off company, Oberon microsystems AG, of ETH Zurich in Switzerland. The IDE consists of development tools, a library of reusable components, a framework that simplifies developing robust custom components and applications, and a run-time environment for components.

Modula-2 is a structured, procedural programming language developed between 1977 and 1985/8 by Niklaus Wirth at ETH Zurich. It was created as the language for the operating system and application software of the Lilith personal workstation. It was later used for programming outside the context of the Lilith.

Pic Micro Pascala.k.a. PMP is a free Pascal cross compiler for PIC microcontrollers. It is intended to work with the Microchip Technology MPLAB suite installed; it has its own IDE (Scintilla-based) and it is a highly optimized compiler.

Hanspeter Mössenböck is an Austrian computer scientist. He is professor of practical computer science and systems software at the Johannes Kepler University Linz and leads the institute of systems software.

References

  1. Jensen, Kathleen; Wirth, Niklaus (1974–1991). Pascal: User Manual And Report. Springer Verlag. ISBN   978-0-387-97649-5.
  2. Wirth, Niklaus (1982–1985). Programming in Modula-2. Springer Verlag. ISBN   978-3-540-15078-7.
  3. Reiser, Martin; Wirth, Niklaus (1 June 1992). Programming in Oberon: Steps Beyond Pascal and Modula. Addison-Wesley. ISBN   978-0201565430. PDF (334 KB) Archived 3 June 2012 at the Wayback Machine
  4. Wirth, Niklaus; Gutknecht, Jürg (1 November 1992). Project Oberon: The Design of an Operating System and Compiler. Addison-Wesley. ISBN   978-0201544282. PDF (4'398 KB) Archived 10 July 2012 at the Wayback Machine
  5. Mössenböck, Hans-Peter; Wirth, Niklaus (1991). "The Programming Language Oberon-2" (PDF). Structured Programming. 12: 179–195.
  6. Mössenböck, H.; Koskimies, K. (1996). "Active Text for Structuring and Understanding Source Code". Software: Practice and Experience. 26 (7): 833–850. doi:10.1002/(SICI)1097-024X(199607)26:7<833::AID-SPE34>3.0.CO;2-Q.

Further reading