Ho una grammatica che non conosco quale tipo di parser ho bisogno per analizzarlo a parte non credo che la grammatica sia LL (1). Sto pensando che ho bisogno di un parser con backtracking o LL (*) di qualche tipo. La grammatica che ho si avvicinò con (che potrebbe essere necessaria una riscrittura) è:Che tipo di parser è necessario per questa grammatica?
S: Rules
Rules: Rule | Rule Rules
Rule: id '=' Ids
Ids: id | Ids id
Il linguaggio che sto cercando di generare sembra qualcosa di simile:
abc = def g hi jk lm
xy = aaa bbb ccc ddd eee fff jjj kkk
foo = bar ha ha
Zero o più regola che contiene la sinistra identificatore seguito da un segno di uguale seguito da uno o più identificatori. La parte che penso avrò un problema nella scrittura di un parser è che la grammatica consente qualsiasi quantità di id in una regola e che l'unico modo per dire quando inizia una nuova regola è quando trova id =, che richiederebbe il backtracking.
Qualcuno conosce la classificazione di questa grammatica e il miglior metodo di analisi, per un parser scritto scritto da?
L'ultima regola non deve includere un 'id' aggiuntivo prima o dopo gli 'Id' nell'RHS? –