Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Parser generator

Link copiato negli appunti

Nello sviluppo di applicazioni complesse capita spesso di trovarsi di fronte a situazioni in cui è utile fornire all'utilizzatore del sistema che stiamo sviluppando un linguaggio (di scripting, di configurazione o di query) per facilitare operazioni altrimenti macchinose. Ogni volta che ci si trova di fronte a soluzioni simili la parte più monotona (almeno dal mio punto di vista) è quella che concerne lo sviluppo di Lexer e Parser per il linguaggio in questione.

Fortunatamente esistono decine di tool gratuiti che generano automaticamente codice altamente ottimizzato per svolgere questi compiti basandosi su grammatiche definite in modo molto semplice ed intuitivo.

Oltre ai più blasonati Bison e Flex (generano codice C, ma esistono decine di implementazioni che hanno come target linguaggi differenti), è utile menzionare ANTlr, che genera codice in diversi linguaggi ed ha un sistema di definizione della grammatica molto potente che permette anche di definire la struttura di un eventuale albero sintattico da generare dopo il parsing del linguaggio.

Solitamente strumenti simili non vengono utilizzati con linguaggi per il web come PHP, ma mi sono trovato di fronte allo stesso problema dovendo sviluppare un parser per un linguaggio di query per effettuare ricerche su alberi di oggetti. Dopo aver implementato il parser manualmente, ho cercato sulla rete qualche parser generator per PHP (che ho scaricato ma non ancora provato):

  • ppage: è un programma scritto in PHP che genera codice PHP (pare) altamente ottimizzato;
  • phpLex, phpJay: lo sviluppatore di php-sharp ha sviluppato anche questi due tool per automatizzare la creazione dei parser per il suo programma. Sono sviluppati in C/C#, ma generano codice PHP. Vanno scaricati dal CVS anonimo del progetto su sourceforge. PHP-sharp pare fermo, ma i due tool menzionati dovrebbero funzionare.

Per caso conoscete altro per PHP ?

Ti consigliamo anche