Componenta Pascal - Component Pascal

Componenta Pascal
Paradigme Imperativ , structurat , modular , orientat spre obiect
Familie Wirth Oberon
Dezvoltator Microsisteme Oberon
A apărut prima dată 1997 ; Acum 24 de ani  ( 1997 )
Disciplina de tastare Puternic , static
Domeniul de aplicare Lexical
Site-ul web blackboxframework .org
Influențată de
Pascal , Oberon , Oberon-2

Component Pascal este un limbaj de programare în tradiția lui Pascal , Modula-2 , Oberon și Oberon-2 de Niklaus Wirth . Poartă numele limbii Pascal și își păstrează moștenirea, dar este incompatibilă cu Pascal. În schimb, este o variantă minoră și un rafinament al Oberon-2 cu un sistem de tip mai expresiv și suport de șir încorporat. Component Pascal a fost numit inițial Oberon / L și a fost proiectat și susținut de o mică companie ETH Zürich spin-off numită Oberon microsystems. Au dezvoltat un mediu de dezvoltare integrat (IDE) numit BlackBox Component Builder . Din 2014, dezvoltarea și sprijinul au fost preluate de un grup mic de voluntari. Prima versiune a IDE a fost lansat în 1994, ca Oberon / F . La acea vreme, a prezentat o nouă abordare a construcției interfeței grafice a utilizatorului (GUI) bazată pe formulare editabile, unde câmpurile și butoanele de comandă sunt legate de variabilele exportate și procedurile executabile. Această abordare prezintă o oarecare similitudine cu modul de codare în spate utilizat în Microsoft .NET 3.0 pentru a accesa codul în Extensible Application Markup Language (XAML), care a fost lansat în 2008.

Există o implementare software open-source a Component Pascal pentru platformele de mașini virtuale .NET și Java (JVM), de la echipa Gardens Point din jurul lui John Gough de la Universitatea Tehnologică Queensland din Australia.

La 23 iunie 2004, microsistemele Oberon au anunțat că BlackBerryox Component Builder a fost disponibil ca descărcare gratuită și că a fost planificată o versiune open source. Versiunea beta cu sursă deschisă a fost lansată inițial în decembrie 2004 și actualizată la o versiune finală v1.5 în decembrie 2005. Include codul sursă complet al IDE, compilator, depanator, analizor sursă, profiler și biblioteci de interfață, și poate de asemenea, să fie descărcate de pe site-ul web Mai mulți candidați la lansare pentru v1.6 au apărut în anii 2009–2011, cel mai recent (1.6rc6) a apărut pe paginile web ale microsistemelor Oberon în 2011. La sfârșitul anului 2013, microsistemele Oberon au lansat versiunea finală 1.6. Este probabil ultima versiune la pachet. O comunitate mică a preluat dezvoltarea în curs.

BlackBox Component Pascal utilizează extensiile .odc ( O Beron d o c ument) pentru fișierele document, cum ar fi fișierele sursă , de exemplu, și .osf ( O Beron s ymbol f lle) pentru fișierele simbol în timp ce Gardens Punctul Component Pascal foloseste .cp pentru sursă și .cps pentru fișiere simbol. BlackBox Componenta Pascal are propriul .ocf format obiect executabil și încărcabile ( O Beron c Ode f lle); include un încărcător de conectare la runtime pentru acest format. Formatul documentului (.odc) este un format binar de text bogat, care permite o formatare frumoasă, acceptă plierea condiționată și permite încorporarea conținutului activ în textul sursă. De asemenea, gestionează elementele interfeței cu utilizatorul în forme editabile. Acest lucru este în tradiția formatului Oberon Text.

Sintaxă

Sintaxa completă pentru CP, așa cum este dată de Raportul lingvistic, este prezentată mai jos. În forma extinsă Backus – Naur , sunt necesare doar 34 de producții gramaticale, una mai mult decât pentru Oberon-2 , deși este un limbaj mai avansat.

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

Referințe

Lecturi suplimentare

linkuri externe