Dies ist eine alte Version des Dokuments!
Ideen zum Sprachdesign
Todo
Marker„klassen“ (Wurzel, Knoten, Blatt is DOMElement, wobei DOMElement keine Elemente hat, sondern nur Tag/Marker ist)
Eheklassen (GFXElement contains GFXPosition, GFXOutput): Klassen, die von GFXPosition und GFXOutput erben, müssen erklären, was passiert, wenn der Punkt GFXPosition verändert wird (z.B. GFXOutput zum Neuzeichnen informieren). Auch wenn „GFXPosition is Point“ ist, hat dieser Point, der mit GFXOutput kombiniert wird nun zwangsweise Setter, die GFXOutput kennen und eine Funktion aufrufen, die GFXPoint und GFXOutput übergeben bekommen. (vgl. Rules)
Pointer und Reference als Ref und „optional ref“:
optional
-
-
-
-
-
-
Lässt sich die Frage nach dem
Warum? als ein Konzept beschreiben und abprüfen?
Process
Ein Prozess beschreibt den Übergang von Daten in neue Daten.
Die Idee entstand aus XBuild und Strakon. Ein Process beschreibt dann das Kompilieren von .cpp zu .o, dann das linken. In Strakon ist das Laying die Eingabe, BendingRodSet die Darstellung entsteht aus Laying, das Entity das fertige Produkt.
Entsprechend sollte ein Process einen Namensraum beschreiben und dokumentieren, das Klassen überführt werden können.
Ein Process könnte damit eine Art Variant darstellen, der den aktuellen Zustand der Daten repräsentiert.
Token → Operator → Generator → Product → Container
Funktionalität
Environment
Funktionen
Funktionsdefinition
| Implementiert | Beschreibung | siehe auch |
| ✗ | Declaration | |
| ✗ | precall | |
| ✗ | autofunc | (Mini-Templates, Textabkürzungen) |
| ✗ | factory | Produziert etwas, ändert aber nicht den Programmauflauf |
| ✗ | enhance | Erweitere Funktionalität von Objekten |
| ✗ | fix | Konditional - abschaltbar |
| ✗ | infix | Infix-Operatoren selbst gestalten |
| ✗ | xmlconstruct | XML-Notation für Konstruktoren |
| ✗ | unimplemented | null-Rückgabewert für nicht implementierte Funktionen |
| ✗ | inline | Code, der inline verarbeitet wird |
| ✗ | guard | guard für Funktionen, die per fail verlassen wurden |
| ✗ | assert | Annahme, die zur Laufzeit geprüft wird |
| ✗ | move | move-Konstruction |
| ✗ | lazy | lazy parameter |
| ✗ | forward | forward parameter |
| ✗ | adapter | adapter/workflow-Funktionen |
| ✗ | fail | workflow als failabfrage |
| ✗ | workflow | workflow als failabfrage |
| ✗ | template | template-Funktionen |
| ✗ | use | anonyme Funktion (use x, y {}) |
| ✗ | comfort | point() comforts Point( this ); |
| ✗ | debug | Debug-Parameter |
| ✗ | caller | caller - Spezialisierung aufgrund des callers |
| ✗ | connotation | connotation - Seiteneffekte |
Operatoren
| Implementiert | Beschreibung | siehe auch |
| ✓ | env | path = $(PATH); |
| ✗ | power | A = Pi * r**2 |
| ✗ | inequality | a <> b |
| ✗ | condition | a ⇒ b; a ⇒ b ! c |
| ✗ | stringformat | „Hello %s“ % „World“ |
| ✗ | value | dp is double ptr; dp# : 3.1415 |
| ✗ | split | „1,2,3“ / „,“ ⇒ [&„1,2,3“,&„2,3“,&„3“] |
| ✗ | or | var1 or var2 |
| ✗ | construct | construct winbmp { .. } |
| ✗ | prefix | +(1,2,3) |
| ✗ | guard | guard func(); |
| ✗ | include | include „file“; |
| ✗ | require | require de.xsd.bitmap; |
| ✗ | is | val is int |
| ✗ | eq | add is code( a = 1, b = lastresult() ) |
| ✗ | to | castings |
| ✗ | as | castings |
| ✗ | from | castings |
| ✗ | definition | Identifier definitions |
| ✗ | iterable | iterable |
| ✗ | arrow | → |
| ✓✓✗ | do | 5..8 do print value; |
| ✗ | matrix | 2d if; |
| ✗ | react | 5..8 react print value; |
| ✗ | switch | |
| ✗ | autoref | |
| ✗ | net | Neuronale Netzwerke |
| ✗ | par | Appendix-Parallel-Operator |
| ✗ | notes | Arithmethisches Mittel (aus Liste) |
| ✗ | notes | Liste sortieren |
| ✗ | notes | Duplikate entfernen |
| ✗ | set | Mengen- und -operationen (map, filter, reduce) |
| ✗ | if | if |
Sollten Operatoren verbunden werden können, so dass * das gegenteil von / ist und ein neutrales Element 1 haben? - ist das Gegenteil von +, Neutral ist 0. New ist das gegenteil von Delete, nullptr neutral?
Speichermanagement
Schnittstellen
Datentypen / Klassen
Attribute
Generics / Templates
| Implementiert | Beschreibung | Stichwörter |
| ✗ | for | toString is code for Point3d |
Mitzuliefernde Funktionalität / Standard-Lib
| Implementiert | Beschreibung | Stichwörter |
| ✗ | context | Kontexte |
| ✗ | cloud | cloud |
| ✗ | list | Listen |
Parsen
Dokumentation
| Implementiert | Beschreibung | Stichwörter |
| ✗ | warning | Warnungen |
| ✗ | sic | sic |
| ✗ | section | section Preparation {} |
| ✗ | remark | remark |
Genesys as Service/Shared Object
| Implementiert | Beschreibung | Stichwörter |
| ✗ | inject | external Functions and Values |
Ini-File
| Implementiert | Beschreibung | Stichwörter |
| ✗ | forbid | Warnungen |
Test
| Implementiert | Beschreibung | Stichwörter |
| ✗ | record | record and replay |
Codegenerierung
| ✗ | emit | (Codegenerierung) |
| ✗ | make | makefiles |
Lib
Connect
Links zu möglichen Features