2012-01-22 8 views
8

C'è qualche strumento che mi consenta di specificare l'evidenziazione della sintassi per una determinata lingua, quindi generare file di evidenziazione della sintassi per alcuni degli editor più comuni?Sintassi Strumento/lingua che funziona con più editor

Chiedo perché sto sviluppando un linguaggio specifico del dominio e mi piacerebbe fornire supporto per l'evidenziazione della sintassi per tale lingua. Tuttavia, non voglio scrivere file di evidenziazione della sintassi separati per ogni editor (Vim, Notepad ++, Visual Studio, ecc.).

Questo tipo di traduzione sembra possibile, in quanto i concetti principali per l'evidenziazione della sintassi sono generalmente indipendenti dall'editor che si sta utilizzando. Non so se esiste già una cosa del genere.

risposta

1

Non so nulla di simile, ma secondo me sarebbe abbastanza facile da produrre. Ad esempio, è possibile creare un formato universale basato su XML (nella forma di uno schema DTD/XSL) e utilizzare trasformazioni XSLT specifiche dell'editor. Quindi, ogni creatore di editor (o qualcun altro) crea un file XSLT per il suo editor. E per ogni nuova lingua, verrà creato un XML.

Il problema più grande è quello di indicare un tale linguaggio che soddisfi almeno questi criteri:

  • Completezza: esso deve contenere tutte le caratteristiche possibili di configurazione di evidenziazione della sintassi.
  • Facilità d'uso: non dovrebbe essere eccessivamente complicato per le lingue semplici.
  • Apertura e standardizzazione: dovrebbe essere popolare per essere utile. Per essere popolare, dovrebbe essere aperto e standardizzato.
+0

Ho avuto pensieri simili sulla creazione di un formato/linguaggio universale per l'evidenziazione della sintassi (I stava pensando anche all'XML). Sarebbe DAVVERO bello se tu potessi fare traduzioni a due vie in modo che se qualcuno già conoscesse un formato di sintassi esistente, potrebbe tradurlo nel formato "universale", quindi in tutti gli altri formati. Sembra un'idea interessante - forse la guarderò di più quando avrò il tempo: o) – simplyletgo

2

Un sacco di editori uso Scintilla (http://www.scintilla.org/) per la modifica del codice sorgente e l'evidenziazione della sintassi: per esempio Notepad ++ su Windows, gedit in GNOME, Code :: Blocks. Si può quindi considerare di aggiungere una definizione di sintassi a Scintilla. Per quanto ne so, si tratta di scrivere una definizione xml di un lexer per la tua lingua (vedi ad esempio this page per Code :: Blocks)

Problemi correlati