2013-03-02 16 views
6

Stiamo imparando sull'ambiguità in classe e la seguente grammatica è stata fornita come esempio di una grammatica ambigua. Semplicemente non vedo come sia ambiguo. Esiste un modello o metodo che le persone usano per determinare l'ambiguità o è proprio come un puzzle logico in cui devi lavorare attraverso le combinazioni per trovare una frase ambigua nella grammatica? Gli esempi che ho letto online hanno per lo più dato già la frase ambigua, ma come trovi quella frase in primo luogo? Apprezzerei qualsiasi aiuto, grazie.Esiste un modo per determinare l'ambiguità in una grammatica?

< stmt_list> ==> < stmt> 

       | < stmt> ; < stmt_list> 

< var> ==> A | B | C 

< stmt> ==> < var> + < var> 

       | < var> - < var> 

       | < var> 
+0

Ho fatto un errore nella mia risposta, ecco perché rimuovo la grammatica attuale non è ambigua. –

+0

@GrijeshChauhan vedo. Grazie. Questo è molto confuso perché il nostro professore ci ha detto che era ambiguo. –

+0

Ma la tua grammatica non è corretta allo scopo dell'espressione matematica :(guarda questo esempio per correggere http://stackoverflow.com/questions/14554752/how-can-i-add-parentheses-as-the-highest-level -of-precedence-in-a-simple-grammar/14569166 # 14569166 –

risposta

2

In generale, determining whether a grammar is ambiguous or not is undecidable. Quindi sì, trovare una frase ambigua in una grammatica riduce ad un difficile puzzle di logica. Risolvere i casi specifici e trovare l'euristica è comunque un'area di ricerca attiva. Ecco uno strumento abbastanza buono per trovare l'ambiguità: http://www.brics.dk/grammar/. La pagina web include un link a un articolo che spiega come funziona, anche se onestamente, quello che mi passa per la testa.