on master help sign in
:compile now can take a codegen option (e.g. :compile javascript program.js)
commit3c8f57c5ec4a4edfff173b23503328e88a37fced authorraichoo <raichoo@googlemail.com> dateWed 30 Apr 2014, 09:21 (12 years ago) parent70e9dc9
3 files changed+15−5
CHANGELOG+1 src/Idris/Help.hs+1−2 src/Idris/REPLParser.hs+13−3
CHANGELOG+1
@@ -6,6 +6,7 @@ New in 0.9.13:
66* Command line option -e (or --eval) to evaluate expressions without loading the
77 REPL. This is useful for writing more portable tests.
88* Many more of the basic functions and datatypes are documented.
9+* Specify codegen for :compile REPL command (e.g. :compile javascript program.js)
910
1011Internal changes
1112
src/Idris/Help.hs+1−2
@@ -49,8 +49,7 @@ help =
4949 ([":showproof"], NameArg, "Show proof"),
5050 ([":proofs"], NoArg, "Show available proofs"),
5151 ([":x"], ExprArg, "Execute IO actions resulting from an expression using the interpreter"),
52− ([":c",":compile"], FileArg, "Compile to an executable <filename>"),
53− ([":js", ":javascript"], FileArg, "Compile to JavaScript <filename>"),
52+ ([":c",":compile"], FileArg, "Compile to an executable [codegen] <filename>"),
5453 ([":exec",":execute"], NoArg, "Compile to an executable and run"),
5554 ([":dynamic"], FileArg, "Dynamically load a C library (similar to %dynamic)"),
5655 ([":dynamic"], NoArg, "List dynamically loaded C libraries"),
src/Idris/REPLParser.hs+13−3
@@ -38,9 +38,11 @@ pCmd = do P.whiteSpace; try (do cmd ["q", "quit"]; eof; return Quit)
3838 return (ModImport (toPath f)))
3939 <|> try (do cmd ["e", "edit"]; eof; return Edit)
4040 <|> try (do cmd ["exec", "execute"]; eof; return Execute)
41− <|> try (do cmd ["c", "compile"]; f <- P.identifier; eof; return (Compile ViaC f))
42− <|> try (do cmd ["jc", "newcompile"]; f <- P.identifier; eof; return (Compile ViaJava f))
43− <|> try (do cmd ["js", "javascript"]; f <- P.identifier; eof; return (Compile ViaJavaScript f))
41+ <|> try (do cmd ["c", "compile"]
42+ c <- option ViaC codegenOption
43+ f <- P.identifier
44+ eof
45+ return (Compile c f))
4446 <|> try (do cmd ["proofs"]; eof; return Proofs)
4547 <|> try (do cmd ["rmproof"]; n <- P.name; eof; return (RmProof n))
4648 <|> try (do cmd ["showproof"]; n <- P.name; eof; return (ShowProof n))
@@ -118,6 +120,14 @@ pOption = do discard (P.symbol "errorcontext"); return ErrContext
118120 <|> do discard (P.symbol "originalerrors"); return ShowOrigErr
119121 <|> do discard (P.symbol "autosolve"); return AutoSolve
120122
123+codegenOption :: P.IdrisParser Codegen
124+codegenOption = do discard (P.symbol "javascript"); return ViaJavaScript
125+ <|> do discard (P.symbol "node"); return ViaNode
126+ <|> do discard (P.symbol "Java"); return ViaJava
127+ <|> do discard (P.symbol "llvm"); return ViaLLVM
128+ <|> do discard (P.symbol "bytecode"); return Bytecode
129+ <|> do discard (P.symbol "C"); return ViaC
130+
121131pConsoleWidth :: P.IdrisParser ConsoleWidth
122132pConsoleWidth = do discard (P.symbol "auto"); return AutomaticWidth
123133 <|> do discard (P.symbol "infinite"); return InfinitelyWide