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

Informatiker Board » Themengebiete » Theoretische Informatik » formale Sprachen » Kontextfreie Grammatik definieren » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Der letzte Beitrag
InformaTiger Kontextfreie Grammatik definieren

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, 297 mal heruntergeladen)