2009-03-04 13 views
7

Sto lavorando su un piccolo progetto di editor di testo e voglio aggiungere l'evidenziazione sintattica di base per un paio di lingue (Java, XML ... solo per citarne alcuni). Come esperienza di apprendimento ho voluto aggiungere uno degli analizzatori di lexer Java popolari o non popolari.Analizzatore di lexer Java orientato per progetti semplici (ANTLR, fai-da-te, ecc.)

Quale progetto raccomandi. Antlr è probabilmente il più conosciuto, ma sembra piuttosto complesso e pesante.

Ecco l'opzione che conosco.

  1. Antlr
  2. Ragel (sì, si può generare sorgente di Java per l'ingresso di elaborazione)
  3. Fai da te (Credo che avrei potuto scrivere un semplice parser token e evidenziare il codice sorgente).
+0

ANTLR. nessun dubbio. –

risposta

8

ANTLR o JavaCC sarebbero i due che conosco. Prima raccomanderei ANTLR.

+0

Pensi che sia troppo pesante o complicato.Questa è l'unica cosa che mi impedisce di usare Antlr. Ma è popolare e sembra essere molto stabile. –

+0

Se parli di analizzare un linguaggio come Java, direi che è la cosa giusta. Ci sono grammatiche Java a tua disposizione, quindi sarà solo questione di camminare su AST e generare quello che vuoi da esso. – duffymo

+0

Conoscere o sapere? Raccomandare l'uno sull'altro significa che dovresti averlo usato entrambi, non credi? –

-1

Non penso che tu abbia bisogno di un lexer. tutto ciò che serve è prima leggere l'estensione del file per rilevare la lingua e quindi da un file xml che elenca le parole chiave della lingua facilmente trovarli e evidenziarli.

+0

No, avrò bisogno di almeno un semplice lexer per quello che sto per finire. Inoltre, mi dà una certa flessibilità a seconda della lingua. –

1

sablecc

Un'altra opzione interessante (che non ho provato ancora) sarebbe xtext, che utilizza Antlr ma include anche strumenti per la creazione di editor Eclipse per la lingua.

0

L'ho già fatto con JFlex prima e ne ero abbastanza soddisfatto. Ma il linguaggio che stavo evidenziando era abbastanza semplice da non aver bisogno di un generatore di parser, quindi il tuo chilometraggio potrebbe variare.

1

ANTLR è la strada da percorrere. Non lo costruirò a mano. È anche possibile trovare se si guarda intorno sul sito web ANTLR che grammars sono disponibili per Java, XML, ecc

0

JLex e CUP sono decenti lexer e parser generatori, rispettivamente. Attualmente sto usando entrambi per sviluppare un linguaggio di scripting semplice per un progetto su cui sto lavorando.

1

Un'altra opzione è Xtext. Non genererà solo un parser per la grammatica, ma anche un editor completo con colorazione della sintassi, indicatori di errore, assistenza per i contenuti e vista struttura.

3

ANTLR può sembrare complesso e pesante ma non è necessario utilizzare tutte le funzionalità che include; è gradevolmente stratificato. Sono un grande fan di usarlo per sviluppare parser. Per cominciare, puoi usare l'eccellente ANTLRWorks per visualizzare e testare le grammatiche che stai creando. È davvero bello essere in grado di vederlo catturare i token, creare alberi di analisi e passare attraverso il processo.

Per il vostro progetto di editor di testo, vorrei verificare filter grammars, che potrebbe soddisfare le vostre esigenze bene. Per le grammatiche dei filtri non è necessario specificare l'intera struttura lessicale della tua lingua, ma solo le parti che ti interessano (ovvero evidenziare, colorare o indicizzare) e puoi sempre aggiungerne altre finché non puoi gestire un'intera lingua.

+0

I tuoi collegamenti sono davvero utili !! – tiboo

2

Il codice Google ha un nuovo progetto acacia-lex. Scritto da me stesso, sembra semplice (finora) java lexer usando le annotazioni javax.

Problemi correlati