Sum Syn S

Center
imports
{
import System.Environment( getArgs )
import System.CPUTime
}

DATA Root
   | Root  tree: Tree

DATA Tree
   | Node  c1:  Tree   ... cn: Tree
   | Leaf  value: Int

ATTR Tree Root [ | | sval USE {+} {0} : Int ]


SEM Root
  | Root  lhs.sval  =  @tree.sval 



SEM Tree
  | Leaf  lhs.sval   = @value

{

genTree 0 = sem_Tree_Leaf $ sem_Lit (2::Int)
genTree n = sem_Tree_Node (genTree $ n-1) ... (genTree $ n-1)

                 
main = do
        (cant:_) <- getArgs
        let p = cpuTimePrecision
        t1 <- getCPUTime
        print  $ (sem_Root_Root (genTree (read cant)) InhG_Root) # att_sval
        t2 <- getCPUTime
        print $ (t2 - t1) `div` p

}