¿Cuál es la diferencia entre un árbol de sintaxis abstracta y un árbol de sintaxis concreta?

He estado leyendo un poco sobre cómo funcionan los intérpretes / compiladores, y un área en la que me estoy confundiendo es la diferencia entre un AST y un CST. Según tengo entendido, el analizador crea un CST y se lo entrega al analizador semántico, que lo convierte en un AST. Sin embargo, mi entendimiento es que el analizador semántico simplemente garantiza que se sigan las reglas. Realmente no entiendo por qué haría cambios para que sea más abstracto que concreto.

¿Hay algo que me esté perdiendo del analizador semántico, o la diferencia entre un AST y un CST es algo artificial?

Respuestas a la pregunta(9)

Su respuesta a la pregunta