Formale Sprache, EBNF (brauche dringend Hilfe🙏)?
Geben Sie die in Form eines Syntaxdiagramms angegebene Grammatik einer Konstanten in C als EBNF an.
Hey Leute, denkt ihr, meine Lösung stimmt, bzw. habt ihr bessere Vorschläge?
Constant = decimal_integer | octal_integer | hexadecimal_integer | character ;
decimal_integer = digit, { digit } ;
octal_integer = "0", { octal_digit } ;
hexadecimal_integer = ("0x" | "0X"), { hexadecimal_digit } ;
character = "'", ( any_character_except_quote | escape_sequence ), "'" ;
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
octal_digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" ;
hexadecimal_digit = digit | "A" | "B" | "C" | "D" | "E" | "F" ;
any_character_except_quote = ? any character except ' ? ;
escape_sequence = "\\", ? any character ? ;
1 Antwort
Nutzer, der sehr aktiv auf gutefrage ist
Ich schlage vor:
Constant =
decimal_integer, ["L","I"]
| "0", octal_integer, ["L","I"]
| ["0X","0x"], hexadecimal_integer, ["L","I"]
| "'", character, "'"
| decimal_integer, ".",
[ε, ( decimal_integer,
[ε, (["e","E"], [ε,"+","-"], decimal_integer)]
)
]
wobei ich deine Definitionen von decimal_integer und character übernehme, aber die Definitionen von octal_integer und hexadecimal_integer weglasse.
Woher ich das weiß:Studium / Ausbildung – LMU München, Dipl. Math., eigene Recherche