Frage

Ich möchte einen ungeordneten Wert von Werten mit einem erweiterten Backus-Naur-Form (EBNF) kontextfreie Grammatik definieren.Es ist leicht, eine ungeordnete Liste von Werten in EBNF zu definieren, zum Beispiel:

generasacodicetagpre.

Ich habe jedoch Zweifel, dass es für ein ungeordnetes Set erfolgen kann.

Im Folgenden sind Beispiele für gültige ungeordnete Werte von Werten:

generasacodicetagpre.

wären ungültige Listen:

generasacodicetagpre.

oder list von beliebiger Länge.

generasacodicetagpre.

War es hilfreich?

Lösung

Sie kann ungeordnete Sets in EBNF definieren, jedoch nur durch Auflistung aller möglichen Aufzählungen. Das ist unpraktisch für Sets größer als etwa zwei Elemente.

der Standard - soweit EBNF ist Mit einer standardisierten Notation können Sie Englisch verwenden (oder eine andere Sprache, mit der Sie sich wohl fühlen), um eine Sequenz zu beschreiben, die nicht anders beschrieben ist. Zum Beispiel umfasst das EBNF für EBNF diese Produktion:

generasacodicetagpre.

In ähnlicher Weise könnten Sie etwas schreiben:

generasacodicetagpre.

oder vielleicht

generasacodicetagpre.

Das ist nicht viel, um einen Parsergenerator zu bauen, aber es ist möglicherweise hilfreich für einen menschlichen Leser, der dieselbe Sprache wie Sie versteht.

Für echte Parsergeneratoren besteht eine gemeinsame Strategie darin, eine beliebige Liste zuzulassen, die wiederholte Elemente enthalten und dann während der semantischen Analyse ungültige Listen ablehnt. (Oder sogar früher. Es ist keine schwierige Analyse.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top