Я читал немного о том, как работают интерпретаторы/компиляторы, и одна область, где меня путают, - это разница между AST и CST. Я понимаю, что парсер делает КНТ, передает его семантическому анализатору, который превращает его в АСТ. Однако я понимаю, что семантический анализатор просто гарантирует соблюдение правил. Я действительно не понимаю, почему он действительно внесет какие-либо изменения, чтобы сделать его абстрактным, а не конкретным.
Есть ли что-то, что мне не хватает в семантическом анализаторе, или разница между AST и CST несколько искусственна?