Wie kann man die Negation in BNF darstellen?

8

Unterstützt BNF oder ABNF die Negation? Das schließt bestimmte Mitglieder des Sets aus? Ich habe keinen solchen Negationsoperator in seiner Syntax gesehen.

Angenommen, S ist die Menge aller alphanumerischen Zeichenfolgen, die ungleich sind, um "foo" Was ist die BNF für S ?

    
Jus12 06.06.2012, 21:11
quelle

2 Antworten

3

Kontextfreie Grammatiken werden nicht unter "Differenz" oder "Komplemente" geschlossen. Während Sie sich vielleicht entscheiden, einen Operator "subtrahieren" zu Ihrer BNF hinzuzufügen, wird das Ergebnis keine kontextfreie Grammatik sein, auch wenn es eine einfache Möglichkeit hat, es auszudrücken. Folge: Menschen erlauben solche Operatoren nicht in BNF-Grammatiken, die zum Ausdruck kontextfreier Grammatiken verwendet werden.

    
Ira Baxter 06.06.2012, 21:15
quelle
2

EBNF ist zwar nicht in BNF, hat jedoch das except-Symbol (normalerweise definiert als "-"). In Ihrem Fall wäre die Syntax:

%Vor%

Oder wenn Sie möchten, dass die Groß- und Kleinschreibung nicht beachtet wird:

%Vor%

Dies führt zu etwas anderen Akzeptanzkriterien als in den Kommentaren, die äquivalent wären zu:

%Vor%

Dadurch bleiben die Strings "f" und "fo" aus.

Es ist jedoch wichtig zu beachten, wie Ira Baxter in ihrer Antwort hat, alles zuzulassen, da der ausgenommene (negierte) Faktor Probleme verursachen würde. Dies wird auch im ISO-Standard aufgeführt:

4.7 Syntaktische Ausnahme

Eine syntaktische Ausnahme besteht aus einem syntaktischen Faktor zu der Einschränkung, dass die Folgen von Symbolen dargestellt werden durch die syntaktische Ausnahme könnte gleichermaßen dargestellt werden durch ein syntaktischer Faktor, der keine Meta-Identifikatoren enthält.

HINWEIS - Wenn eine syntaktische Ausnahme zulässig ist syntactic-factor, Extended BNF könnte eine breitere Klasse von definieren Sprachen als die kontextfreien Grammatiken, einschließlich der Versuche was zu Russell-ähnlichen Paradoxen führt, z. B.

%Vor%

Ist "A" ein Beispiel für xx? Eine solche Lizenz ist unerwünscht und die Form einer syntaktischen Ausnahme ist daher beschränkt zu Fällen, die sich als sicher erweisen können. Also während a Der syntaktische Faktor ist im allgemeinen äquivalent zu einigen kontextfreien Grammatik, eine syntaktische Ausnahme ist immer äquivalent zu einigen normale Grammatik. Es kann gezeigt werden, dass der Unterschied zwischen a kontextfreie Grammatik und eine regelmäßige Grammatik ist immer eine andere kontextfreie Grammatik; daher ein syntaktischer Ausdruck (und daher jeder Grammatik definiert nach diesem Standard) entspricht einige kontextfreie Grammatik.

    
Rick 01.02.2016 19:43
quelle

Tags und Links