Frø 7

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 13. august 2019; checks kræver 4 redigeringer .
Frø 7
Semantik imperativ , objektorienteret
Sprog klasse programmeringssprog , objektorienteret programmeringssprog og multi-paradigme programmeringssprog
Udførelsestype tolk , kompilator
Dukkede op i 2005
Forfatter Thomas Mertes
Filtypenavn _ .sd7eller.s7i
Frigøre
Type system streng , statisk
Blev påvirket Ada , C / C++ , Java
Licens GNU GPL og GNU LGPL
Internet side seed7.sourceforge.net
OS på tværs af platforme

Seed7  er et generelt programmeringssprog.

Hovedtræk ved sproget er dets udvidelsesmuligheder. Sprogets syntaks er defineret i et af bibliotekerne og kan ændres af brugeren.

Funktioner

Sproget ligner syntaktisk Pascal og Ada . Ud over standard Pascal og tidligere versioner inkluderer Ada objektorienterede programmeringsmekanismer såvel som sprogudvidelsesmekanismer: en kraftfuld skabelonmotor til at definere nye syntakskonstruktioner (som f.eks. Camlp4omfatter værktøjer, der giver dig mulighed for at indstille associativiteten og forrangen af ​​operationer ) og noget som standardfunktioner, der giver dig mulighed for at indstille semantikken for sådanne konstruktioner. Disse kompileringstidsfunktioner tager variabler , typer og udtryk inkluderet i syntakskonstruktionerne som parametre og udfører de nødvendige transformationer på dem. Hvis den således definerede grammatik er tvetydig, genereres en kompileringsfejl [2] .

Historie

Thomas Mertes begyndte at udvikle dette sprog, mens han studerede på det tekniske universitet i Wien [3] . Det blev i 1984 emnet for hans speciale [4] , og derefter, i 1986, hans afhandling [5] .

Eksempler

Hej Verden $ inkluderer "seed7_05.s7i"; const proc: vigtigste er func begynde writeln("hej verden"); ende func;

Dette definerer en procedure (en funktion uden parametre) main(spiller samme rolle som i C-sproget ).

Fibonacci-tal const func heltal: fib (i heltal: num1) er func resultat var heltal: fib er 1; begynde hvis num1 <> 1 og num1 <> så fib := fib(pred(tal1)) + fib(tal1 - 2); Afslut Hvis; ende func;

Nøgleordet infør deklarering af en funktionsparameter betyder, at denne parameter er konstant , den kan ikke ændre sig under udførelsen af ​​funktionen, for at erklære mutable parametre vil den tilføje ordet inout. Efter ordet resulterklæres en variabel, hvis værdi vil blive returneret af funktionen. Ordet bruges til at erklære lokale variabler local.

Udvidelsesmekanismer

Sprogudvidelser inkluderer to hovedtrin: syntaktisk definition, som giver en skabelon til den nye syntaktiske form, og standardfunktionen Seed7 til at definere semantik [2] .

Syntaksdefinition

En del af sproget kaldet Seed7 Structured Syntax Description (S7SSD) bruges til at definere syntaksen. S7SSD udtryk for formen

$syntaks udtr.: .(). + .() er -> 7;

definerer syntaksen for operationen + Højre pil ->beskriver associativitet : forbinder operander fra venstre mod højre. Nummeret 7angiver operationens prioritet + . Syntaksskabelon: .(). + .()adskilt af punktum ( .). Hvis du udelader dem, vil det ligne et () + ()Symbol () - ikke-terminal, men + - terminal. S7SSD skelner ikke mellem forskellige ikke-terminale symboler , i stedet bruges kun ét ikke-terminal symbol: ().

Definition af semantik

Definitionen af ​​en operator +for komplekse tal er blot en funktionsdefinition:

const func kompleks: (i kompleks: summand1) + (i kompleks: summand2) er func resultat var kompleks: sum er kompleks.værdi; begynde sum.re := summand1.re + summand2.re; sum.im := summand1.im + summand2.im; ende func;

Objektorienteret programmering

Seed7 bruger en objektorienteret programmeringsmodel, der ikke er baseret på klasser og metoder , men på grænseflader og implementeringer.

Implementering

Tilgængelig som kildekoder under GPL- og LGPL-licenser eller færdige builds til Windows . Pakken indeholder en fortolker (fil s7) og en compiler ( s7c), der genererer mellemkode i C-sproget .

Se også

Noter

  1. https://sourceforge.net/p/seed7/news/2022/07/new-seed7-release-2022-07-24/ - 2022.
  2. 1 2 Daniel Zingaro. Moderne udvidelige sprog → 8 andre udvidelige sprog → 8.2 Frø7 . - Hamilton, Ontario, Canada: McMaster University, 11. april 2007. - s. 16 .
  3. Entwurf einer erweiterbaren höheren Programmiersprache Arkiveret fra originalen den 5. februar 2012.  (tysk) , Thomas Mertes, 1984, Diplomarbeit, Institut für Computersprachen Programmiersprachen und Übersetzer
  4. Definition einer erweiterbaren höheren Programmiersprache Arkiveret 9. maj 2013.  (tysk) , Thomas Mertes, 1986, afhandling, Institut für Computersprachen Programmiersprachen und Übersetzer

Litteratur

Links