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.
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] .
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] .
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.
Sprogudvidelser inkluderer to hovedtrin: syntaktisk definition, som giver en skabelon til den nye syntaktiske form, og standardfunktionen Seed7 til at definere semantik [2] .
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: ().
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;Seed7 bruger en objektorienteret programmeringsmodel, der ikke er baseret på klasser og metoder , men på grænseflader og implementeringer.
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 .