Правила «Абстрактного синтаксического дерева» (это странная терминология) могут интерпретироваться как те правила, которые формируют построение абстрактного синтаксиса в процессе синтаксического анализа.Они обычно записываются в грамматическом правиле для нетерминального T как конструкторы над абстрактными синтаксическими деревьями, создаваемыми путем синтаксического анализа вспомогательных фраз T. Если
T = '(' A ';' B ')' ;
является правилом грамматики, конструктор AST для T можетbe
T(A,B)
, подразумевающее построение узла T, дочерними элементами которого являются AST, построенные для подпунктов A и B.
Семантические правила - это ограничения, которым должна соответствовать программа, чтобы быть законной, помимопростой синтаксис.Таким образом, можно построить абстрактное синтаксическое дерево (из «правил»);это только демонстрирует, что программа синтаксически верна.Но абстрактный синтаксис может говорить вещи, которые просто бессмысленно семантически, например,
"declare s as function; ... s=7; ..."
Единственный способ проверить это в целом - это пройтись по абстрактному синтаксическому дереву, собирая факты локально (например, "sфункция "- это факт, извлеченный из оператора объявления;" s назначено целое число "(извлекается из присваивания) и распространяющий эти факты до тех пор, пока они не встретятся и не будут показаны (не) совместимыми.