Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » formale Sprachen » Kontextfreie Grammatik definieren » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Kontextfreie Grammatik definieren
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
InformaTiger InformaTiger ist männlich
Tripel-As


images/avatars/avatar-77.gif

Dabei seit: 19.02.2013
Beiträge: 228
Herkunft: Südtirol

Kontextfreie Grammatik definieren Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Guten Tag,

ich arbeite derzeit an einer Grammatik für eine neue Sprache "JLLF", welche den Zweck haben soll Funktionssignaturen darzustellen. Ich habe allerdings keine Erfahrung mit EBNF welche ich zum Definieren meiner Sprache verwendet habe. Mein Lösungsansatz sieht derzeit so aus:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
digit := "0" | "1" | "2" | "3" | "4" | "5" | "6"
       | "7" | "8" | "9" ;
letter := "a" | "b" | "c" | "d" | "e" | "f" | "g"
       | "h" | "i" | "j" | "k" | "l" | "m" | "n"
       | "o" | "p" | "q" | "r" | "s" | "t" | "u"
       | "v" | "w" | "x" | "y" | "z" | "A" | "B"
       | "C" | "D" | "E" | "F" | "G" | "H" | "I"
       | "J" | "K" | "L" | "M" | "N" | "O" | "P"
       | "Q" | "R" | "S" | "T" | "U" | "V" | "W"
       | "X" | "Y" | "Z" ;
under_score := "_" ;
ident := under_score | letter, { ( digit | letter ) } ;
visibility := "public" | "protected" | "private"
           | "internal" ;
variability := "static" | "const" | "final" ;
behaviour := "synchronized" | "volatile" | "native" ;
modifier := visibility | variability | behaviour
         | "abstract" | "weak" | "unowned"
         | "owned" ;
primitive := "byte" | "int" | "int8"
          | "int16" | "int32" | "int64"
          | "uint" | "uint8" | "uint16"
          | "uint32" | "uint64" | "float"
          | "double" | "short" | "long"
          | "char" | "string" | "bool"
          | "boolean" | "size_t" | "ssize_t"
          | "time_t" ;
param := primitive | ident, ident ;
stmt := visibility, [ variability ], primitive | "void" | ident, ident, "(", { param, "," }, ")" ;


Was mir noch fehlt ist eine Definition von "derived data types" und mein Beispiel berücksichtigt auch nicht den Fall dass eine Funktion/Methode abstract sein kann oder bestimmte Modifizierer mehrfach vorkommen können. unglücklich

Wie könnte ich das korrekt formulieren?

Edit: im Anhang ein Beispiel, wie ich mir die fertige Sprache konkret vorstelle.

Mit freundlichen Grüßen
InformaTiger

Dateianhang:
txt example.jllf.txt (1,29 KB, 294 mal heruntergeladen)


__________________
Why do Java developers wear glasses? Because they can't C#

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von InformaTiger: 07.12.2016 12:18.

07.12.2016 10:56 InformaTiger ist offline Beiträge von InformaTiger suchen Nehmen Sie InformaTiger in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » formale Sprachen » Kontextfreie Grammatik definieren