-- abstract syntax grammar of tree for language SL
#program
        (. (* #stmt  *) .)   ##

#stmt
     ( #assignment  !  #while  )  ##

#assignment
           'assignment_op' :: <. left_part: $Id,
                                 right_part: #expression .>
##

#while
      'while_op' :: <. condition: #expression,
                       body:      (. (* #stmt *) .)  .>
##

#expression
           1 ;;
           $Id ;;
           '+' :: <. arg1: #expression,
                     arg2: #expression .> ;;

           '<' :: <. arg1: #expression,
                     arg2: #expression .>
##
