コンポーネントパスカル

コンポーネントパスカル
パラダイム命令型構造化モジュール型オブジェクト指向
家族ヴィルト・オベロン
開発者オベロンマイクロシステムズ
初登場1997年; 28年前 (1997年
タイピングの規律強い静的
範囲語彙
Webサイトblackboxframework.org
影響を受けた
パスカルオベロンオベロン2

Component Pascalはニクラウス・ヴィルトPascal[1] Modula-2[2] Oberon [3] [4]およびOberon-2 [5]流れを汲むプログラミング言語である。言語名を冠し、その伝統を守っているが、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で、拡張アプリケーションマークアップ言語(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(Oberonドキュメント)という拡張子を、シンボルファイルに.osf Oberonシンボルファイル)という拡張子を使用します。一方Gardens Point Component Pascalは、ソースファイルに.cp、シンボルファイルに.cpsという拡張子を使用します。BlackBox Component Pascalには、独自の実行可能かつ読み込み可能なオブジェクト形式である.ocf(Oberonコードファイルありこの形式ランタイムリンクローダーが含まれています。ドキュメント形式(.odc)はリッチテキストバイナリ形式で、書式設定、条件付き折りたたみ、ソーステキストへのアクティブコンテンツの埋め込みが可能です。また、ユーザーインターフェース要素を編集可能な形式で扱うことができます。これはOberon Text形式の伝統を受け継いでいます。[6]

構文

言語報告書に記載されているCPの完全な構文を以下に示します。拡張バッカス・ナウア形式では、必要な文法規則は34個のみです。Oberon -2はより高度な言語ですが、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 ]  [ ","  (抽象| | 拡張可能)].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 =  [ 指定子":="  Expr  | 指定子[ "("  [ 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 [ "*"  |  "-" ]。

参考文献

  1. ^ ジェンセン、キャスリーン;ヴィルト、ニクラウス(1974–1991)。Pascal: ユーザーマニュアルとレポート。スプリンガー・フェルラーグ。ISBN 978-0-387-97649-5
  2. ^ ニクラウス、ヴィルト(1982–1985)。Modula-2 でのプログラミング。スプリンガー・フェルラーグ。ISBN 978-3-540-15078-7
  3. ^ ライザー、マーティン、ヴィルト、ニクラウス(1992年6月1日)『Oberonプログラミング:PascalとModulaを超えたステップAddison-Wesley . ISBN 978-0201565430PDF (334 KB) 2012年6月3日アーカイブWayback Machine
  4. ^ Wirth, Niklaus ; Gutknecht, Jürg (1992年11月1日). Project Oberon: The Design of an Operating System and Compiler . Addison-Wesley . ISBN 978-0201544282PDF (4'398 KB) 2012年7月10日アーカイブ、Wayback Machine
  5. ^ Mössenböck, Hans-Peter; Wirth, Niklaus (1991). 「プログラミング言語Oberon-2」(PDF) .構造化プログラミング. 12 : 179–195 .
  6. ^ 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)
  • コンポーネントとオブジェクトの統合、クレメンス・シペルスキ、ドブス博士、1999年5月
  • 公式サイト
  • 以前の公式ウェブサイトの最新の利用可能なバージョン。ダウンロードページの履歴メモも参照してください。
  • .NET および JVM 向け Gardens Point コンポーネント Pascal
  • Josef Templ の OFront をベースにしたコンポーネント Pascal から C へのトランスパイラ
「https://en.wikipedia.org/w/index.php?title=Component_Pascal&oldid=1318801365」から取得