Ich kann die Mehrdeutigkeit in der folgenden Regel enthalten sind, zu lösen scheinen:Resolve Mehrdeutigkeit von Grammatik für C Initialisierungsliste
InitializerList_a → [Initializer] [InitializerList_a]
Es hat eine Verschiebung verursacht/reduzieren Konflikt in meinem Parser (Ich benutze Bison). Das Folgende ist seine Schließung:
InitializerList_a → ε
Initializer → [Constant]
Initializer → {[InitializerList][Initializer_a]
Initializer_a → }
Initializer_a → ,}
InitializerList → [Initializer][InitializerList_a]
Jede Hilfe wäre willkommen. Ich kann die Bison-Ausgabedatei bei Bedarf veröffentlichen.
Hier ist die gleiche Grammatik in einer lesbaren Form geschrieben:
L → IT
T → ,IT | ε
I → [Constant] | {LA
A → } | ,}
where [Constant] is a terminal
Vielen Dank, aber welche Nicht-Terminal aus der ursprünglichen Grammatik entspricht J? Oder ist es ein neues Nicht-Terminal? –
Wahrscheinlich 'T'. Ich habe es nur geflucht. – jxh
das ist nicht korrekt .. könnten Sie es erneut versuchen? Die Grammatik dient zur Initialisierung einer Variablen/eines Arrays. z.B. i = 1 oder i = {1, 2, 3, 4} –