Sto programmando da molti anni, ma un compito che mi impiega ancora troppo tempo è specificare una grammatica per un parser, e anche dopo questo sforzo eccessivo, non sono mai sicuro che la grammatica che ho escogitato sia buona ( con ogni ragionevole misura di "buono").
Non mi aspetto che esista un algoritmo per automatizzare il processo di specifica di una grammatica, ma spero che ci siano modi per strutturare il problema che elimini gran parte delle congetture e prove ed errori del mio approccio attuale.
Il mio primo pensiero è stato quello di leggere sui parser, e ne ho fatto un po ', ma tutto ciò che ho letto su questo argomento prende la grammatica come un dato (o abbastanza banale da poterlo specificare tramite ispezione), e mi concentro su il problema di tradurre questa grammatica in un parser. Sono interessato al problema immediatamente prima: come specificare la grammatica in primo luogo.
Sono principalmente interessato al problema di specificare una grammatica che rappresenti formalmente una raccolta di esempi concreti (positivi e negativi). Ciò è diverso dal problema di progettazione di una nuova sintassi . Grazie a Macneil per aver sottolineato questa distinzione.
Non avevo mai davvero apprezzato la distinzione tra una grammatica e una sintassi, ma ora che sto iniziando a vederlo, ho potuto affinare il mio primo chiarimento dicendo che sono principalmente interessato al problema di specificare una grammatica che imporrà un sintassi predefinita: succede che nel mio caso la base di questa sintassi sia di solito una raccolta di esempi positivi e negativi.
Come viene specificata la grammatica per un parser? Esiste un libro o un riferimento là fuori che è lo standard di fatto per descrivere le migliori pratiche, le metodologie di progettazione e altre informazioni utili su come specificare una grammatica per un parser? Su quali punti, quando leggo della grammatica del parser, dovrei concentrarmi?