Ho programmato per molti anni, ma un compito che mi richiede ancora troppo tempo è quello di specificare una grammatica per un parser, e anche dopo questo sforzo eccessivo, non sono mai sicuro che la grammatica che mi è venuta in mente è buono (con ogni ragionevole misura di "buono").
Non mi aspetto che ci sia un algoritmo per automatizzare il processo di definizione di una grammatica, ma spero che ci siano modi per strutturare il problema che elimini gran parte delle congetture e tentativi ed errori del mio attuale approccio.
Il mio primo pensiero è stato quello di leggere i parser, e ho fatto un po 'di questo, ma tutto ciò che ho letto su questo argomento prende la grammatica come un dato (o abbastanza banale da poter essere specificata dall'ispezione), e si concentra sul problema di tradurre questa grammatica in un parser. Sono interessato al problema immediatamente precedente: 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). Questo è diverso dal problema di progettare una nuova sintassi . Grazie a Macneil per aver sottolineato questa distinzione.
Non ho mai veramente apprezzato la distinzione tra grammatica e sintassi, ma ora che sto iniziando a vederlo, potrei affinare il mio primo chiarimento dicendo che sono principalmente interessato al problema di specificare una grammatica che imporrà una sintassi predefinita: è proprio così che nel mio caso la base di questa sintassi è di solito una raccolta di esempi positivi e negativi.
Come viene specificata la grammatica per un parser? C'è un libro o un riferimento là fuori che è lo standard de facto per descrivere le migliori pratiche, le metodologie di progettazione e altre informazioni utili su come specificare una grammatica per un parser? A che punto, durante la lettura della grammatica del parser, dovrei concentrarmi?