Las reglas del "Árbol sintáctico abstracto" (esta es una terminología extraña) pueden interpretarse como aquellas reglas que dan forma a la construcción de la sintaxis abstracta a medida que avanza el análisis. Estos suelen ser escritos, en una regla gramatical para un no terminal T, como constructores sobre los árboles de sintaxis abstracta producidos mediante el análisis de las frases subsidiarios de T. Si
T = '(' A ';' B ')' ;
es una regla gramatical, un constructor de AST para T podría ser
T(A,B)
que implica la construcción de un nodo T con niños que son los AST construidos para los subparáres A y B.
Las reglas semánticas son restricciones que el programa debe cumplir para ser legal, más allá de la mera sintaxis. Entonces uno puede construir un árbol sintáctico abstracto (a partir de "reglas"); hacerlo solo demuestra que el programa es sintácticamente correcto. Pero la sintaxis abstracta puede decir cosas que son simplemente sin sentido semántico, por ejemplo,
"declare s as function; ... s=7; ..."
La única manera de comprobar esto, en general, es caminar sobre el árbol de sintaxis abstracta, la recogida de datos a nivel local (por ejemplo, "s es una función "es un hecho extraído de la declaración de declaración;" s se le asigna un número entero "se recopila de la asignación) y la propagación de esos hechos hasta que se encuentran y se muestra que son (en) compatibles.