ecma262-0.0.0: src/Language/JavaScript.hs
module Language.JavaScript
where
import Control.Applicative ((<$>))
import Text.Parsec (ParseError)
import Language.JavaScript.Interpret
import Language.JavaScript.Parser
runJavaScript :: (Functor m, Monad m) =>
String -> m (Either ParseError (Either Value Completion))
runJavaScript source = do
let eAST = parseJavaScript source
case eAST of
Right ast -> do
Right <$> runJavaScriptT initialState (interpret ast)
Left e -> return (Left e)
runHostedJavaScript :: (Functor m, Monad m) =>
String ->
JavaScriptT m () ->
m (Either ParseError (Either Value Completion))
runHostedJavaScript source hostInit = do
let eAST = parseJavaScript source
case eAST of
Right ast -> do
Right <$> runJavaScriptT initialState (hostInit >> interpret ast)
Left e -> return (Left e)