-- SYNTAX1

type STRUCT1 = O ONLY N -- Numeric operators
    
type SYNTAX1 = REC STRUCT1

-- VALUE1

type VALUE1 = ONLY Int

-- COMPUTE1

type COMPUTE1 = ErrT Id

-- SEMANTICS1

type SEMANTICS1 = COMPUTE1 VALUE1

-- driver

parser1 :: TheParser SYNTAX1
parser1 = do { blanks ; parser }

parseWith1 :: (SYNTAX1 -> IO ()) -> [Char] -> IO ()
parseWith1 cont = parser1 `invokeWith` cont

unparse1 :: SYNTAX1 -> IO ()
unparse1 = fold

interpret1 :: SYNTAX1 -> SEMANTICS1
interpret1 = fold

run1 :: SEMANTICS1 -> IO ()
run1 = runIO

main1 :: IO ()
main1 = driver "1> " parseWith1 unparse1 interpret1 run1
