Ho iniziato a scrivere un parser scritto a mano solo per divertimento. Per regole semplici funziona, ma ho problemi con le regole grammaticali opzionali. Ho contrassegnato le regole facoltative con un punto interrogativo.
Ecco una semplice regola:
rule1: "AA"? "AB"? "AC"? "AD"
Quindi la stringa AA, AB e AC è facoltativa, ma è necessario AD.
es .: "AAABAD" corrisponde, "AAAD" corrisponde, "AAAB" non corrisponde, "AD" corrisponde, ...
Ho bisogno di un algoritmo e non di uno strumento regex o qualcosa del genere. Posso risolvere questo problema con il metodo della forza bruta (quindi provando ogni possibile combinazione delle regole) ma penso che ci sia un modo migliore per farlo.