Seed7 - Seed7


Da Wikipédia, a enciclopédia livre
Seed7
Paradigma multi-paradigma : extensível , orientada a objeto , imperativo , estruturado , genérico , reflexivo
Projetado por Thomas Mertes
Apareceu pela primeira vez 2005 ; Há 13 anos ( 2005 )
Versão estável
2018-11-25 / 13 dias atrás
disciplina Typing estática , forte , segura , nominativas , manifesto
OS Multi-plataforma : BSD , Linux , OS X , Unix , o Windows
Licença GPL , LGPL (para a biblioteca de tempo de execução)
extensões de arquivo .sd7, .s7i
Local na rede Internet seed7 .sourceforge .net
grandes implementações
open source implementação de referência
Influenciado por
Pascal , Modula-2 , Ada , ALGOL 68 , C , C ++ , Java

Seed7 é um extensível linguagem de programação de propósito geral projetada por Thomas Mertes. É sintaticamente semelhante ao Pascal e Ada . Juntamente com muitos outros recursos, ele fornece um mecanismo de extensão. Seed7 suporta a introdução de novos elementos de sintaxe e sua semântica para a língua, e permite nova linguagem constrói a ser definido e escrito em Seed7. Por exemplo, os programadores podem introduzir sintaxe e semântica de novas declarações e definidos pelo usuário operador símbolos. A implementação de Seed7 difere significativamente da de línguas com hard-coded sintaxe e semântica.

Características

Seed7 suporta os paradigmas de programação : imperativo , orientado a objetos (OO) e genérico . Ele também suporta recursos como chamada pelo nome , despacho múltiplo , sobrecarga de funções , sobrecarga de operadores , tratamento de exceções e bignum .

As características principais incluem:

Vários conceitos de linguagem de programação são generalizadas:

O projeto Seed7 inclui tanto um intérprete e um compilador . O intérprete começa programas muito rapidamente, apoiando o desenvolvimento do programa rápido. O compilador usa o analisador e reflexão de interfaces da biblioteca de tempo de execução para gerar um C programa, que é posteriormente compilado para código de máquina . Programas Seed7 compilados pode ter comparáveis desempenho para programas C.

bibliotecas

Seed7 tem muitas bibliotecas, áreas que cobrem incluindo recipientes , funções numéricas, análise léxica , manipulação de arquivos de rede ( soquetes , Transport Layer Security (TLS / SSL), Hypertext Transfer Protocol (HTTP), HTTP seguro ( HTTPS ), File Transfer Protocol (FTP ), Simple mail Transfer Protocol (SMTP), etc.), gráficos , pixmap e vetor fontes , banco de dados de acesso ( MySQL - MariaDB , SQLite , PostgreSQL , a Oracle , Open database Connectivity )), (ODBC Common gateway interface ) suporte CGI (, compressão de dados , codificação de caracteres , tempo e manipulação de data, XML processamento, resumos de mensagem e muito mais. Essas bibliotecas reduzir a necessidade de usar portável recursos do sistema operacional e bibliotecas de terceiros (que pode não ser sempre presente) diretamente. Bibliotecas Seed7 contêm camadas de abstração para hardware , sistema operacional e bibliotecas de terceiros, por exemplo, gráfica e bibliotecas de banco de dados. Em outras palavras, nenhuma alteração é necessária para mover programas Seed7 entre diferentes processadores ou sistemas operacionais .

História

Seed7 é baseado em MASTER, uma linguagem de programação extensível descrita no diploma e teses de doutorado de Thomas Mertes. A maioria das idéias originais do mestre, tais como declarações definidas pelo usuário e operadores, pode ser encontrado em Seed7. A pré-compilador , para traduzir MASTER para Pascal, foi proposto, mas não implementado, no projeto original. Em 1989, o desenvolvimento começou em um intérprete para MASTER, chamado HAL. Em 2005, os projetos mestre e Hal foram lançados como open source sob o nome do projeto Seed7. Desde então, novas versões foram lançadas a cada duas ou três semanas. A partir da versão 2013/09/08 o projeto Seed7 contém mais de 300.000 linhas de código fonte e várias centenas de páginas de documentação.

mecanismo de extensão

Uma extensão inclui duas partes: uma definição da sintaxe, dando um molde para a nova forma sintática, e uma função Seed7 padrão, usada para definir a semântica.

definição de sintaxe

A definição de sintaxe utiliza o Seed7 Structured Sintaxe Descrição (S7SSD). Uma declaração S7SSD como

$ syntax expr: .(). + .()  is -> 7;

especifica a sintaxe do + operador . A seta para a direita ->descreve a associatividade : Encadernação de operandos a partir da esquerda para a direita. Com 7a prioridade do +operador é definido. O padrão de sintaxe .(). + .()é introduzido e delimitada com pontos ( .). Sem pontos o padrão é () + (). O símbolo ()é um símbolo não-terminal e +é um símbolo terminal. Faz o S7SSD não distinguir entre diferentes símbolos não-terminais . Em vez disso, só conhece um símbolo não-terminal: ().

extensão semântica

A definição do +operador para números complexos é apenas uma definição de função:

const func complex: (in complex: summand1) + (in complex: summand2) is func
  result
    var complex: sum is complex.value;
  begin
    sum.re := summand1.re + summand2.re;
    sum.im := summand1.im + summand2.im;
  end func;

Referências

links externos