evidenziatori di sintassi in genere non vanno oltre l'analisi lessicale, il che significa che non devi analizzare l'intero linguaggio in dichiarazioni, dichiarazioni, espressioni e quant'altro. Devi solo scrivere un lexer, che è abbastanza facile con le espressioni regolari. Ti consiglio di iniziare imparando le espressioni regolari, se non lo hai già fatto. Ci vorranno tutti i 30 minuti.
Si consiglia di prendere in considerazione l'utilizzo di Flex (il generatore di analizzatori lessicali; https://github.com/westes/flex) come esercizio di apprendimento. Dovrebbe essere abbastanza facile implementare un evidenziatore di sintassi di base in Flex che restituisca l'HTML evidenziato o qualcosa del genere.
In breve, si dovrebbe dare a Flex un insieme di espressioni regolari e cosa fare con il testo corrispondente, e il generatore si abbinerà avidamente alle proprie espressioni. Puoi rendere la tua transizione lexer tra stati esclusivi (ad esempio dentro e fuori di stringhe letterali, commenti, ecc.) Come mostrato in the flex FAQ. Ecco un esempio canonico di un lexer per C scritto in Flex: http://www.lysator.liu.se/c/ANSI-C-grammar-l.html.
Fare un evidenziatore sintattico estensibile sarebbe la prossima parte del tuo viaggio. Sebbene non sia affatto un fan dell'XML, dai un'occhiata a come sono definiti i file di evidenziazione della sintassi di Kate, come ad esempio this one for C++. Il tuo compito sarebbe quello di capire come si desidera definire gli evidenziatori di sintassi, quindi creare un programma che utilizzi tali definizioni per generare HTML o qualsiasi cosa tu voglia.
fonte
2010-04-17 01:43:55