To Ast Or Not To Ast
AST или не AST?
Каждый раз возникает проблема, где хранить AST, хранить ли его вообще и если не хранить, то как быть? Однозначно хранить. Во-первых, изучать вывод компилятора в лог утомительно, лучше сразу сохранить структуру AST и поизучать ее на предмет ошибок. Во-вторых, AST должна быть слегка независима от модулей компилятора, поэтому лучше будет, если на момент передачи AST в интерпретатор/кодогенератор контекст компиляции уже будет потерян. И в-третьих, для экспериментальных языков выводом в AST все может и закончиться, ибо дешевле и проще проинтерпретировать AST, нежели писать кодогенератор для птичьих IR типа llvm.
Для хранения AST уже перепробовал много разных форматов. Видимо, самый удобный все-таки XML, несмотря на общую многословность.