on master help sign in
javascript: lift out javascript backend
commit31de6beaf8f835321f21a2f5e0b917a56bcf46f7 authorraichoo <raichoo@googlemail.com> dateFri 22 Aug 2014, 17:45 (12 years ago) parentb37dcbe
3 files changed+54−1
codegen/idris-javascript/Main.hs+42 idris.cabal+12 src/IRTS/Compiler.hs−1
codegen/idris-javascript/Main.hsnew file+42
@@ -0,0 +1,42 @@
1+module Main where
2+
3+import Idris.Core.TT
4+import Idris.AbsSyntax
5+import Idris.ElabDecls
6+import Idris.REPL
7+
8+import IRTS.Compiler
9+import IRTS.CodegenJavaScript
10+
11+import System.Environment
12+import System.Exit
13+
14+import Paths_idris
15+
16+data Opts = Opts { inputs :: [FilePath]
17+ , output :: FilePath
18+ }
19+
20+showUsage = do putStrLn "Usage: idris-javascript <ibc-files> [-o <output-file>]"
21+ exitWith ExitSuccess
22+
23+getOpts :: IO Opts
24+getOpts = do xs <- getArgs
25+ return $ process (Opts [] "main.js") xs
26+ where
27+ process opts ("-o":o:xs) = process (opts { output = o }) xs
28+ process opts (x:xs) = process (opts { inputs = x:inputs opts }) xs
29+ process opts [] = opts
30+
31+jsMain :: Opts -> Idris ()
32+jsMain opts = do elabPrims
33+ loadInputs (inputs opts) Nothing
34+ mainProg <- elabMain
35+ ir <- compile (Via "javascript") (output opts) mainProg
36+ runIO $ codegenJavaScript ir
37+
38+main :: IO ()
39+main = do opts <- getOpts
40+ if (null (inputs opts))
41+ then showUsage
42+ else runMain (jsMain opts)
idris.cabal+12
@@ -766,3 +766,15 @@ Executable idris-c
766766 ghc-prof-options: -auto-all -caf-all
767767 ghc-options: -threaded -rtsopts -funbox-strict-fields
768768
769+Executable idris-javascript
770+ Main-is: Main.hs
771+ hs-source-dirs: codegen/idris-javascript
772+
773+ Build-depends: idris
774+ , base
775+ , filepath
776+ , haskeline >= 0.7
777+ , transformers
778+
779+ ghc-prof-options: -auto-all -caf-all
780+ ghc-options: -threaded -rtsopts -funbox-strict-fields
src/IRTS/Compiler.hs−1
@@ -128,7 +128,6 @@ generate codegen mainmod ir
128128 -- Built-in code generators (FIXME: lift these out!)
129129 Via "c" -> codegenC ir
130130 Via "java" -> codegenJava ir
131− Via "javascript" -> codegenJavaScript ir
132131 Via "node" -> codegenNode ir
133132 Via "llvm" -> codegenLLVM ir
134133 -- Any external code generator