Italian community of Lazarus and Free Pascal

Progetti del forum => Progetti degli utenti => Topic aperto da: SB - Maggio 26, 2019, 11:34:53 am

Titolo: Generatore di riconoscitori di grammatiche
Inserito da: SB - Maggio 26, 2019, 11:34:53 am
Motivazione
Mi è capitato varie volte di realizzare riconoscitori di grammatiche per permettere agli utenti di inserire le informazioni in formati umanamente comprensibili.
Ad esempio una espressione matematica da valutare o una formula da visualizzare graficamente.
Usualmente ricorrevo a Lex e Yacc, o meglio alle loro versioni Pascal PLex e PYacc (recuperate e adattate)
Visto che avrei idea di realizzare un paio di beautifier per sorgenti Pascal e Html e, se riesco, un interprete di un semplice linguaggio, mi sono posto il problema di generare i riconoscitori in forma automatica partendo da una descrizione della grammatica. In questo modo evito la noia di riscrivere ogni volta le stesse cose ed evito banali errori di codifica.

Progetto
Il programma parte da una grammatica espressa in formato EBNF e genera un riconoscitore ricorsivo (alla Wirth) sia in Pascal che in Java. Esistono tecniche più efficienti, ma per le mie esigenze può bastare.
Il riconoscitore riceve in ingresso un testo e, se formato correttamente, produce un albero sintattico che poi potrà essere esaminato o interpretato.

Piattaforma
Windows e Linux