Leonardo de Moura
afd54039ab
chore(library): remove >>, we should use *>
2018-09-12 17:31:21 -07:00
Leonardo de Moura
9e305a5f26
chore(library): remove return, we should use pure
2018-09-12 16:51:11 -07:00
Sebastian Ullrich
6dbe54a01b
chore(library/init/io): rename io.print_ln to io.println
2018-08-21 08:43:10 -07:00
Sebastian Ullrich
6b55e24ab7
feat(library/init/{io,control/except}): use lift_t to automatically upcast io and other errors
2018-08-21 08:43:09 -07:00
Sebastian Ullrich
9db688f4c2
fix(library/{vm/vm_io,init/io}): fix bugs and tests
2018-08-21 08:43:09 -07:00
Sebastian Ullrich
37e5f03351
refactor(library/system/io): move into init
2018-08-21 08:43:09 -07:00
Sebastian Ullrich
2823bebd23
refactor(library/init/lean/parser/parsec): message.pos: replace with iterator
...
This allows efficient recovery from a parse error as well as implementing
`has_to_string` for `message`
2018-07-30 10:38:00 -07:00
Sebastian Ullrich
65fd050b83
feat(library/init/lean/parser/parsec): add custom error message type
2018-07-27 14:29:50 -07:00
Sebastian Ullrich
72b255d4e1
chore(library/init/lean/parser/parser_t): rename module and type to parsec to avoid nested use of parser
2018-07-12 10:35:20 +02:00
Sebastian Ullrich
e57117a9b3
chore(library/init/lean/parser/parser_t): revert introduction of parser_t
2018-07-11 18:44:04 +02:00
Sebastian Ullrich
7ae87705c2
feat(library/init/lean/parser/parser_t): introduce monad_parser
2018-06-15 17:48:20 +02:00
Sebastian Ullrich
0f7c0ac8bf
feat(init/lean/parser/parser): make a monad transformer
...
Also move parser combinators into the more specific namespace `init.lean.parser.parser_t`.
2018-06-04 12:57:23 +02:00
Leonardo de Moura
0f2a8f09c2
chore(library/init/lean/ir): cleanup
2018-05-15 12:09:04 -07:00
Leonardo de Moura
5cfb442f2c
feat(library/init/lean/ir): add compilation unit initializer/finalizer
2018-05-15 11:57:53 -07:00
Leonardo de Moura
224fdc7a78
refactor(library/init/lean/ir): platform dependent IR
...
Motivation: in 64-bit machines, we can store boxed uint32 values as a
tagged pointer. In 32-bit machines, we need to allocated an object (like
Haskell) to store the uint32 value. So, the generated bytecode is quite
different in each platform.
This change also allow us to simplify the IR. Example: we don't need the
type `sizet` anymore.
Impact: To be able to bootstrap in both platforms,
we will have to store two versions of the generated code: 32 and 64
versions. In principle, we only need to store the 64-bit version,
and use cross-compilation to build the 32-bit version.
2018-05-10 13:15:02 -07:00
Leonardo de Moura
aba3d08372
fix(library/init/lean/ir/extract_cpp): minor fixes
2018-05-10 10:54:43 -07:00
Leonardo de Moura
e40f37b08e
feat(library/init/lean/ir): add type checker
2018-05-07 18:07:04 -07:00
Leonardo de Moura
0a9bd8caa8
chore(library/init/lean/ir): improve sizet syntax
2018-05-07 18:07:04 -07:00
Leonardo de Moura
88082cd16d
fix(library/init/lean/ir/parser): case
2018-05-06 10:11:58 -07:00
Leonardo de Moura
e2e124626f
feat(library/init/lean/ir): add elim_phi function
2018-05-06 10:07:44 -07:00
Leonardo de Moura
d5fe509c36
chore(*): remove end after each match-expression
...
`end` is not optional anymore
2018-05-04 11:30:06 -07:00
Leonardo de Moura
bf71068b14
feat(library/init/lean/ir): parse IR definitions
2018-05-02 16:59:50 -07:00