Componente Pascal es un lenguaje de programación en la tradición de Niklaus Wirth 's Pascal , [1] Modula-2 , [2] Oberon [3] [4] y Oberon-2 . [5] Lleva el nombre de la lengua Pascal y conserva su herencia, pero es incompatible con Pascal. En cambio, es una variante menor y un refinamiento de Oberon-2 con un sistema de tipos más expresivo y soporte de cuerdas incorporado. El componente Pascal se llamaba originalmente Oberon / L, y fue diseñado y apoyado por una pequeña ETH Zürichempresa derivada llamada Oberon microsystems. Desarrollaron un entorno de desarrollo integrado (IDE) llamado BlackBox Component Builder . Desde 2014, el desarrollo y el apoyo han sido asumidos por un pequeño grupo de voluntarios. La primera versión de la IDE fue lanzado en 1994, como Oberon / F . En ese momento, presentó un enfoque novedoso para la construcción de interfaces gráficas de usuario (GUI) basado en formularios editables, donde los campos y botones de comando están vinculados a variables exportadas y procedimientos ejecutables. Este enfoque tiene cierta similitud con la forma de código subyacente utilizada en .NET 3.0 de Microsoft para acceder al código en Extensible Application Markup Language (XAML), que se lanzó en 2008.
Paradigmas | Imperativo , estructurado , modular , orientado a objetos |
---|---|
Familia | Wirth Oberon |
Desarrollador | Microsistemas de Oberon |
Apareció por primera vez | 1997 |
Disciplina de mecanografía | Fuerte , estático |
Alcance | Léxico |
Sitio web | blackboxframework |
Influenciado por | |
Pascal , Oberon , Oberon-2 |
Existe una implementación de software de código abierto de Component Pascal para las plataformas .NET y Java virtual machine (JVM), del equipo de Gardens Point alrededor de John Gough en la Universidad Tecnológica de Queensland en Australia.
El 23 de junio de 2004, Oberon microsystems anunció que BlackBox Component Builder estaba disponible como descarga gratuita y que se planeaba una versión de código abierto. La versión beta de código abierto se lanzó inicialmente en diciembre de 2004 y se actualizó a una versión final v1.5 en diciembre de 2005. Incluye el código fuente completo del IDE, el compilador, el depurador, el analizador de fuentes, el generador de perfiles y las bibliotecas de interfaz, y puede también se puede descargar de su sitio web. Varias versiones candidatas para la versión 1.6 aparecieron en los años 2009-2011, la última (1.6rc6) apareció en las páginas web de Oberon microsystems en 2011. A finales de 2013, Oberon microsystems lanzó la versión final 1.6. Probablemente sea el último lanzamiento incluido por ellos. Una pequeña comunidad se hizo cargo del desarrollo en curso.
BlackBox Componente Pascal utiliza las extensiones .odc ( O beron d o c ument) para archivos de documentos, tales como archivos de origen por ejemplo, y .osf ( O beron s ymbol f ile) para archivos de símbolos mientras Jardines Point Componente Pascal utiliza .cp para fuente y .cps para archivos de símbolos. BlackBox Componente Pascal tiene su propio .ocf formato de objeto ejecutable y cargable ( O beron c oda f ile); incluye un cargador de enlace en tiempo de ejecución para este formato. El formato del documento (.odc) es un formato binario de texto enriquecido, que permite un formato agradable, admite el plegado condicional y permite incrustar contenido activo en el texto fuente. También maneja elementos de la interfaz de usuario en formas editables. Esto es una tradición del formato de texto de Oberon. [6]
Sintaxis
A continuación, se muestra la sintaxis completa de CP, tal como se indica en el Informe de idiomas. En la forma extendida Backus-Naur , solo se necesitan 34 producciones gramaticales, una más que para Oberon-2 , aunque es un lenguaje más avanzado.
Módulo = ID DE MÓDULO ";" [ 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 "=" Tipo .VarDecl = IdentList ":" Tipo .ProcDecl = PROCEDIMIENTO [ Receptor ] IdentDef [ FormalPars ] MethAttributes [ ";" DeclSeq [ BEGIN StatementSeq ] END ident ].MethAttributes = [ "," NUEVO ] [ "," ( RESUMEN | VACÍO | EXTENSIBLE )].ForwardDecl = PROCEDIMIENTO "^" [ Receptor ] IdentDef [ FormalPars ] MethAttributes .FormalPars = "(" [ FPSection { ";" FPSection }] ")" [ ":" Tipo ].FPSection = [ VAR | IN | OUT ] ident { "," ident } ":" Tipo .Receptor = "(" [ VAR | IN ] ident ":" ident ")" .Tipo = Qualident | ARRAY [ ConstExpr { "," ConstExpr }] OF Type | [ RESUMEN | EXTENSIBLE | LIMITADO ] RECORD [ "(" Qualident ")" ] FieldList { ";" FieldList } END | PUNTERO A Tipo | PROCEDIMIENTO [ FormalPars ].FieldList = [ IdentList ":" Tipo ].StatementSeq = Statement { ";" Declaración }.Declaración = [ Designador ": =" Expr | Designador [ "(" [ ExprList ] ")" ] | IF Expr THEN StatementSeq { ELSIF Expr THEN StatementSeq } [ ELSE StatementSeq ] END | CASE Expr OF Case { "|" Case } [ ELSE StatementSeq ] END | MIENTRAS Expr DO StatementSeq END | REPETIR StatementSeq HASTA Expr | FOR ident ": =" Expr TO Expr [ BY ConstExpr ] DO StatementSeq END | LOOP StatementSeq END | CON [ Guard DO StatementSeq ] { "|" [ Guard DO StatementSeq ] } [ ELSE StatementSeq ] END | SALIR | VUELTA [ Expr ] ].Case = [ CaseLabels { "," CaseLabels } ":" StatementSeq ].CaseLabels = ConstExpr [ ".." ConstExpr ].Guard = Qualident ":" Qualident .ConstExpr = Expr .Expr = SimpleExpr [ Relación SimpleExpr ].SimpleExpr = [ "+" | "-" ] Término { AddOp Term }.Término = Factor { MulOp Factor }.Factor = Designador | numero | personaje | cadena | NIL | Establecer | "(" Expr ")" | Factor "~" .Set = "{" [ Elemento { "," Elemento }] "}" .Elemento = Expr [ ".." Expr ].Relación = "=" | "#" | "<" | "<=" | ">" | "> =" | IN | ES .AddOp = "+" | "-" | O .MulOp = "*" | "/" | DIV | MOD | "&" .Designator = Qualident { "." ident | "[" ExprList "]" | "^" | "(" Qualident ")" | "(" [ ExprList ] ")" } [ "$" ].ExprList = Expr { "," Expr }.IdentList = IdentDef { "," IdentDef }.Qualident = [ ident "." ] ident .IdentDef = ident [ "*" | "-" ].
Referencias
- ^ Jensen, Kathleen; Wirth, Niklaus (1974-1991). Pascal: Manual de usuario e informe . Springer Verlag. ISBN 978-0-387-97649-5.
- ^ Wirth, Niklaus (1982-1985). Programación en Modula-2 . Springer Verlag. ISBN 978-3-540-15078-7.
- ^ Reiser, Martin; Wirth, Niklaus (1 de junio de 1992). Programación en Oberon: pasos más allá de Pascal y Modula . Addison-Wesley . ISBN 978-0201565430. PDF (334 KB) Archivado el 3 de junio de 2012 en Wayback Machine.
- ^ Wirth, Niklaus ; Gutknecht, Jürg (1 de noviembre de 1992). Proyecto Oberon: el diseño de un sistema operativo y un compilador . Addison-Wesley . ISBN 978-0201544282. PDF (4'398 KB) Archivado el 10 de julio de 2012 en Wayback Machine
- ^ Mössenböck, Hans-Peter; Wirth, Niklaus (1991). "El lenguaje de programación Oberon-2" (PDF) . Programación estructurada . 12 : 179-195.
- ^ Mössenböck, H .; Koskimies, K. (1996). "Texto activo para estructurar y comprender el código fuente" . Software: práctica y experiencia . 26 : 833–850. doi : 10.1002 / (SICI) 1097-024X (199607) 26: 7 <833 :: AID-SPE34> 3.0.CO; 2-Q .
Otras lecturas
- De Modula a Oberon Wirth (1990)
- El lenguaje de programación Oberon Wirth (1990)
- Diferencias entre Oberon y Oberon-2 Mössenböck y Wirth (1993)
- El lenguaje de programación Oberon-2 H. Mössenböck, N. Wirth, Institut für Computersysteme, ETH Zürich ( ETHZ ), enero de 1992.
- Novedades en Component Pascal (cambios de Oberon-2 a CP), Pfister (2001)
- Componentes y objetos juntos , Clemens Szyperski, Dr. Dobbs, mayo de 1999
enlaces externos
- Página web oficial
- Componente Pascal en Curlie
- Última versión disponible del antiguo sitio web oficial, consulte también las notas históricas en la página de descarga.