Часть II. Формальное описание языков программирования ( Формальная спецификация формальных языков ) Приложение. Дерево абстрактного синтаксиса языка IMP
Программа и блок Prog :: Block Block :: Decl-list Stmt-list
Декларации Decl = Var_Def Func_Def Var_Def :: Id Type_Desc Fun_Def :: Id Param-list Type_Desc Block Type_Desc = int bool Param :: Id Type_Desc Id :: Text
Операторы Stmt = Assign Block If While Assign :: Id Expr If = If_pair-list If_pair :: Boolexp Stmt-list While :: Boolexp Stmt-list
Выражения Expr = Intexp Boolexp Intexp = Integer Id Bi_Int_Exp Funcall Boolexp :: False | True | Id | Equal | Comp Bi_Int_Exp :: Int_Exp Ar_Operation Int_Expr Ar_Operation = Sum Sub Mult … Equal :: Expr Expr Comp :: Intexp Op Intexp
Вызов функции (Function Call) Funcall ::= Id Arg-list Arg :: Expr