Mi sono chiesto a lungo perché non sembrano esserci parser per, ad esempio, BNF, che si comportano come espressioni regolari in varie librerie.Perché i parser in linea sembrano fermarsi alle espressioni regolari?
Certo, ci sono cose come ANTLR, Yacc e molti altri che generare il codice, che, a sua volta, può analizzare un CFG, ma non sembra essere una libreria che può farlo senza il passaggio intermedio.
Sono interessato a scrivere uno Packrat parser, per avviare tutte quelle parentele nidificate-quirks associati alle espressioni regolari (e, forse ancor più, per lo sport di esso), ma in qualche modo ho la sensazione che io sia semplicemente camminando in un altro ostacolo, come la classe delle paludi.
Esiste un limite tecnico/teorico per questi parser o mi manca qualcosa?
Sembra che si stia discutendo dell'implementazione (non ancora specificata) rispetto alla capacità di analizzare un CFG in sé stesso? Certo, le espressioni regolari sono criptici per gli occhi inesperti. Forse, un linguaggio privo di contesto potrebbe essere ancora più criptico. Ma non era questo il punto. Il punto era, perché ci sono solo generatori di codice, e non cose che posso semplicemente mettere in una funzione/oggetto e ottenere blocchi di testo corrispondenti, come faccio con le espressioni regolari di oggi? –
Di solito, quando le persone usano un parser, stanno cercando di fare molto di più che guardare un po 'di testo e vedere se corrisponde alla loro grammatica o meno. Non che ci sia qualcosa di sbagliato in questo, ma la maggior parte dei parser fa un bel po 'di più. –
Inoltre, l'implementazione è una limitazione tecnica che dovrai affrontare a un certo punto e hai chiesto dei limiti tecnici/teorici. –