Vyuziti tree-sitteru neni 100% pokud se pouzivaji makra obsahujici strukturalni tokeny. Napriklad nasledujici korektni kod je oznacen za syntakticky chybny:
#define START if (a) {
int main(void) {
START exit(1); }
return 0;
}
V praxi jsem na to narazil u nejakych zdrojovych souboru z jadra.
Takovej parser, kterej kod nejdriv prozene preprocesorem =) Todle je proste dan za rychlost. Pokud mi jde o spolehlivost, muzu vyuzit nektery z pluginu, ktery zobrazuje chyby a varovani primo z prekladace.
to jo, ale asi to nebude delat po zapisu kazdyho znaku, aby byla kontrola syntaxe stale up-to-date. to je to hledani rovnovahy mezi moznostmi a rychlosti (a divnym systemem maker u cecka ;)
jj podobné šílenosti to asi nedá. Rustovská makra to zdá se umí dobře. Musím o tree-sitteru napsat článek, je to hodně povedená věc (v porovnání s ad-hoc obarvovači).