ruler-core-1.0: examples/RenameAttr.rul
{
{-# LANGUAGE BangPatterns #-}
module RenameAttr where
import Control.Monad.Error
}
data X
con X
chld : Y
con X2
c1 : Y
c2 : Y
data Y
con Y
itf X
visit v
inh ast :: X
syn x :: Int
itf Y
visit v
inh ast :: Y
syn z :: Int
datasem X
clause X
rename chld z to x
invoke v of chld
lhs.x = chld.x
clause X2
rename c1 z to x
rename c2 z to x
default x = sum
datasem Y
clause Y
lhs.z = 3