| パラダイム | 命令型、構造化、モジュール型、オブジェクト指向 |
|---|---|
| 家族 | ヴィルト・オベロン |
| 開発者 | オベロンマイクロシステムズ |
| 初登場 | 1997年 |
| タイピングの規律 | 強い、静的 |
| 範囲 | 語彙 |
| Webサイト | ブラックボックスフレームワーク |
| 影響を受けた | |
| パスカル、オベロン、オベロン2 | |
Component Pascalは、ニクラウス・ヴィルトのPascal、[1] Modula-2、[2] Oberon [3] [4] およびOberon-2 [5]の流れを汲むプログラミング言語です。Pascal 言語の名前を冠し、その伝統を保持していますが、Pascalとは互換性がありません。代わりに、より表現力豊かな型システムと組み込みの文字列サポートを備えたOberon-2のマイナーバリアントおよび改良版です。Component Pascalは元々Oberon/Lという名前で、ETHチューリッヒの小さなスピンオフ企業であるOberon microsystemsによって設計およびサポートされていました。彼らはBlackBox Component Builderという名前の統合開発環境(IDE)を開発しました。2014年以来、開発とサポートはボランティアの小グループによって引き継がれています。IDEの最初のバージョンは1994年にOberon/Fとしてリリースされました。当時、編集可能なフォームに基づくグラフィカル ユーザー インターフェイス(GUI) 構築の斬新なアプローチが提示されました。このフォームでは、フィールドとコマンド ボタンがエクスポートされた変数と実行可能なプロシージャにリンクされていました。このアプローチは、2008 年にリリースされたMicrosoft の.NET 3.0でExtensible Application Markup Language (XAML) のコードにアクセスするために使用されたコード ビハインド方式と類似しています。
オーストラリアのクイーンズランド工科大学の John Gough 氏を中心とした Gardens Point チームによる、.NETおよびJava 仮想マシン(JVM) プラットフォーム用の Component Pascal のオープン ソース ソフトウェア実装が存在します。
2004 年 6 月 23 日、Oberon microsystems は BlackBox Component Builder が無料ダウンロードとして利用可能になり、オープンソース バージョンが計画されていることを発表しました。ベータ オープンソース バージョンは、2004 年 12 月に最初にリリースされ、2005 年 12 月に最終リリース v1.5 に更新されました。これには、IDE、コンパイラー、デバッガー、ソース アナライザー、プロファイラー、およびインターフェイス ライブラリの完全なソース コードが含まれており、Web サイトからダウンロードすることもできます。v1.6 のリリース候補は 2009 年から 2011 年にかけていくつか登場し、最新のもの (1.6rc6) は 2011 年に Oberon microsystems の Web ページに登場しました。2013 年末、Oberon microsystems は最終リリース 1.6 をリリースしました。これはおそらく同社がバンドルした最後のリリースです。小規模なコミュニティが進行中の開発を引き継ぎました。
BlackBox Component Pascal は、ソース ファイルなどのドキュメント ファイルに拡張子 .odc ( O beronドキュメント)を使用し、シンボル ファイルに拡張子.osf ( O beronシンボルファイル)を使用します。一方、Gardens Point Component Pascal は、ソースに .cp、シンボル ファイルに .cps を使用します。BlackBox Component Pascal には、独自の実行可能および読み込み可能なオブジェクト形式 .ocf ( O beronコードファイル) があり、この形式用のランタイム リンク ローダーが含まれています。ドキュメント形式 (.odc) はリッチ テキスト バイナリ形式で、書式設定が可能で、条件付き折りたたみをサポートし、ソース テキストにアクティブ コンテンツを埋め込むことができます。また、編集可能な形式でユーザー インターフェイス要素も処理します。これは、Oberon Text 形式の伝統を受け継いでいます。[6]
構文
言語レポートで示されている CP の完全な構文を以下に示します。拡張バッカス・ナウア形式では、より高度な言語であるにもかかわらず、必要な文法生成物は 34 個のみで、 Oberon-2よりも 1 つ多くなっています。
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 "=" タイプ。
VarDecl = IdentList ":" タイプ。
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 }] ")" [ ":" タイプ]。
FPSection = [ VAR | IN | OUT ] ident { "," ident } ":" タイプ。
受信者= "(" [ 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 ":" タイプ]。
StatementSeq = ステートメント{ ";" ステートメント}。
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 [関係 SimpleExpr ]。
SimpleExpr = [ "+" | "-" ] 項{ AddOp 項}。
項= 係数{ MulOp 係数}。
係数= 指定子| 数値| 文字| 文字列| NIL | 設定| "(" Expr ")" | " ~ " 係数。
= "{" [要素{ ", " 要素}] "}"を設定します。
要素= Expr [ ".." Expr ]。
関係= "=" | "#" | "<" | "<=" | ">" | ">=" | IN | IS .
AddOp = "+" | "-" | または.
MulOp = "*" | "/" | ディビジョン| MOD | 「&」。
指定子= 修飾子{ "." ID
| "[" ExprList "]"
| "^"
| "(" 資格")"
| "(" [ ExprList ] ")" } [ "$" ]。
ExprList = Expr { "," Expr }.
IdentList = IdentDef { "," IdentDef }.
qualident = [ ident "." ] アイデンティティ。
IdentDef = ident [ "*" | "-" ]。
参考文献
- ^ ジェンセン、キャスリーン;ヴィルト、ニクラウス(1974–1991)。Pascal: ユーザーマニュアルとレポート。スプリンガー・フェルラーグ。ISBN 978-0-387-97649-5。
- ^ ニクラウス、ヴィルト(1982–1985)。Modula-2 でのプログラミング。スプリンガー・フェルラーグ。ISBN 978-3-540-15078-7。
- ^ ライザー、マーティン、ヴィルト、ニクラウス( 1992年 6 月 1 日)。Oberonでのプログラミング: Pascal と Modula を超えたステップ。Addison - Wesley。ISBN 978-0201565430。PDF (334 KB) 2012年6月3日アーカイブ、Wayback Machine
- ^ Wirth, Niklaus ; Gutknecht, Jürg ( 1992年 11 月 1 日)。Project Oberon: オペレーティングシステムとコンパイラの設計。Addison - Wesley。ISBN 978-0201544282。PDF (4'398 KB) 2012年7月10日にWayback Machineにアーカイブされました
- ^ Mössenböck, Hans-Peter; Wirth, Niklaus (1991). 「プログラミング言語 Oberon-2」(PDF) .構造化プログラミング. 12 : 179–195.
- ^ Mössenböck, H.; Koskimies, K. (1996). 「ソースコードの構造化と理解のためのアクティブテキスト」.ソフトウェア: 実践と経験. 26 (7): 833–850. doi :10.1002/(SICI)1097-024X(199607)26:7<833::AID-SPE34>3.0.CO;2-Q.
さらに読む
- モデュラからオベロン・ヴィルトへ(1990)
- プログラミング言語 オベロン・ワース (1990)
- Oberon と Oberon-2 の違い Mössenböck と Wirth (1993)
- The Programming Language Oberon-2 H. Mössenböck、N. Wirth、Institut für Computersysteme、ETH Zürich ( ETHZ )、1992 年 1 月。
- Component Pascal の新機能 (Oberon-2 から CP への変更)、Pfister (2001)
- コンポーネントとオブジェクトの統合、Clemens Szyperski、Dr.Dobbs、1999 年 5 月
外部リンク
- 公式サイト
- 以前の公式ウェブサイトの最新の利用可能なバージョン。ダウンロードページの履歴メモも参照してください。
- .NET および JVM 向け Gardens Point コンポーネント Pascal
- Josef Templ の OFront をベースにしたコンポーネント Pascal から C へのトランスパイラ
