Sie können die Grammatik in einen Parsergenerator einfügen, der alle kontextfreien Grammatiken unterstützt, einen kontextfreien allgemeinen Parsergenerator. Generieren Sie den Parser, parsen Sie dann einen String, den Sie für zweideutig halten, und finden Sie heraus, indem Sie sich die Ausgabe des Parsers ansehen.
Ein kontextfreier genereller Parsergenerator erzeugt Parser, die alle Ableitungen in polynomieller Zeit erzeugen. Beispiele für solche Parser-Generatoren umfassen SDF2, Rascal, DMS, Elkhound, ART. Es gibt auch eine Backtracking-Version von yacc (btyacc), aber ich glaube nicht, dass es in polynomieller Zeit funktioniert. Normalerweise wird die Ausgabe als ein Diagramm codiert, in dem alternative Bäume für Untersätze mit einer verschachtelten Menge alternativer Bäume codiert sind.
Ich stimme diese Frage als off-topic zu schließen, weil es keine Programmierfrage ist. –
Was genau meinst du mit _ambiguous_? Dass es ein Wort gibt, für das mehr als eine Ableitung möglich ist? – Codor
@Codor Ja, es muss mindestens eine Zeichenfolge mit mehr als einem Syntaxbaum vorhanden sein. – name