Component Pascalとは? わかりやすく解説

Component Pascal

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/05/11 07:19 UTC 版)

Component Pascal は、ニクラウス・ヴィルトによるPascalModula-2OberonOberon-2 の伝統をひくプログラミング言語である。

概要

Pascal の名を持つが、Pascal 互換ではない。むしろ Oberon-2 から派生した改良版であり、チューリッヒ工科大学から分離独立したオベロン・マイクスシステムズという小さな会社によって設計、保守されている。彼らのIDE(統合開発環境)は、BlackBox Component Builder と呼ばれる。 1994年に最初のバージョンが Oberon/F としてリリースされたとき、フィールドとコマンドボタンを、エクスポートされた変数とプロシージャに結び付けた、編集可能なフォームを用いたグラフィカルユーザインターフェイスへの新しいアプローチを提案した。

オーストラリアのクイーンズランド工科大学のジョン・ゴーを中心としたガーデンズ・ポイント・チームによる .NETJava仮想マシン のためのオープンソース実装が存在する。

2004年6月23日、オベロン・マイクスシステムズは BlackBox Component Builder が無料ダウンロード可能になったことと、オープンソース版が計画されていることを発表した。最初に2004年12月にベータ版がリリースされ、2005年12月に最終V1.5にアップデートされた。IDE、コンパイラ、デバッガ、ソースアナライザ、プロファイラ、インターフェイスライブラリの完全なソースが含まれ、彼らのウェブサイトからダウンロードも可能である。

BlackBox Component Pascal は、例えばソースファイルのようなドキュメントファイルに拡張子 .odc を用い、シンボルファイルに .osf を用いる。一方、Gardens Point Component Pascal はソースに .cp、シンボルファイルに .cps を用いる。BlackBox Component Pascal は、専用の実行オブジェクトフォーマットとして .ocf を持ち、このフォーマットのための実行時リンクローダを含む。

文法

Component Pascal の完全な文法は以下の通りである。Oberon-2 よりもかなり先進的な言語であるにもかかわらず、それよりひとつ多いだけの、たった34のEBNF生成規則しか必要としない。

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

外部リンク

OberonOberon-2 の進化





固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Component Pascal」の関連用語

Component Pascalのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Component Pascalのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのComponent Pascal (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS