2024-09-06 16:22:52 +02:00
..
2024-09-06 16:22:52 +02:00
2024-09-06 16:22:52 +02:00
2024-09-06 16:22:52 +02:00
2024-09-06 16:22:52 +02:00
2024-09-06 16:22:52 +02:00

a few days ago i saw this pet project on https://git.peppe.rs/languages/tbsp/tree/examples/code-overview/overview.tbsp being a DSL fan, i really like the idea. except seemingly the guy is making a full general purpose interpreter too, which sentences the project to death. i have email him about this (response pending)

as i was thinking however i started wondering if bison could do it given an adaquate lex()

well, the answer is kinda. if you look at the code, well it works.

problems:

  • bison doesnt know includes so it would have to be preprocessed (to provide tokens as -perversily- the scanner defines them)
  • the tree sitter query language is much more... well lets say verboser than i imagined, so our code has to be much more complexed than i hoped so; either the bison programmer has to type a lot or lex() define a bunch of wrappers which would be language specific
  • we are not really using the stack are we? (unless we do stuff like BEGIN FUNCTION/END FUNCTION to mimic the "original" grammar (which is not bad)) so its a hack to begin with, and because of the above reasons and ugly one of that

so, instead, i do think a DSL is the answer. only issue is that if the guy disagrees on making it "supplementary" then i will have to make my own.

one more thing, a ts node query language would also be nice. something along the lines of

$$->declarator

expanding to a node object (or erroring out safely if the "declarator" named field does not exist)