Sebastian Ullrich
5043a6b9b3
feat(library/init/lean/{expander,elaborator}): show, let, choice
2018-11-22 17:25:46 +01:00
Sebastian Ullrich
7003fb6447
feat(library/init/lean/expander): command-level notations
2018-11-21 18:13:38 +01:00
Sebastian Ullrich
fd121f03bd
feat(library/init/lean/expander): make set of transformers configurable
2018-11-21 18:13:38 +01:00
Sebastian Ullrich
32e3e8a336
feat(library/init/lean/elaborator): sort_app, explicit
2018-11-21 18:13:38 +01:00
Sebastian Ullrich
d1098534b2
feat(library/init/lean/expander): arrow, if
2018-11-21 18:13:38 +01:00
Sebastian Ullrich
cc93a2eb89
feat(library/init/lean/expander): extend "simple binders" to pi, expand pi
2018-11-21 18:13:38 +01:00
Sebastian Ullrich
a4b9cc83b8
feat(library/init/lean/{expander,elaborator}): progress
2018-11-21 18:13:38 +01:00
Sebastian Ullrich
222fff8862
refactor(library/init/lean/elaborator): introduce simple lambda binder
2018-11-21 18:13:38 +01:00
Sebastian Ullrich
8763e66f30
feat(library/init/lean/expander): allow macros not to unfold
2018-11-19 18:47:17 +01:00
Sebastian Ullrich
c8eaee74b4
feat(frontends/lean,library/init/lean/parser/combinators): add node_longest_choice! macro
2018-11-19 18:02:28 +01:00
Sebastian Ullrich
4ec98a4595
feat(library/init/lean/expander): unfold lambdas into normal form
2018-11-19 17:27:01 +01:00
Sebastian Ullrich
7d7d15f8f7
chore(frontends/lean/elaborator): improve error positions
2018-11-19 15:28:23 +01:00
Sebastian Ullrich
774d776133
feat(frontends/lean/builtin_exprs): pattern let with type
2018-11-19 14:15:25 +01:00
Sebastian Ullrich
d10ff29bea
fix(library/init/lean/parser/term): placeholder binder after bracketed binder
2018-11-19 13:38:45 +01:00
Sebastian Ullrich
cd287629cb
feat(library/init/lean/elaborator): initial version of translating syntax trees to preterms
2018-11-19 13:38:45 +01:00
Sebastian Ullrich
9e8dfbad79
perf(library/init/lean/parser): reintroduce separate syntax.ident constructor with much simpler and more efficient encoding
2018-11-18 16:55:04 +01:00
Sebastian Ullrich
68dad5e77c
chore(library/init/lean/parser/token): raw: unnecessary try
2018-11-18 16:11:41 +01:00
Sebastian Ullrich
6d0b3afa7e
fix(library/compiler/compiler): do not silently abort on user-given sorrys
2018-11-17 18:00:55 +01:00
Leonardo de Moura
3d24c6466b
feat(library/compiler/llnf): generate _boxed version eagerly
2018-11-15 18:10:20 -08:00
Leonardo de Moura
ae037c2a23
fix(library/compiler/builtin): incorrect assertion
2018-11-15 18:09:02 -08:00
Leonardo de Moura
da92557076
chore(library/vm/vm_int): missing builtin in the old VM
2018-11-15 16:58:05 -08:00
Leonardo de Moura
b55b1deaf5
chore(library/compiler): remove ir.cpp
...
There is only one missing transformation: insert explicit reference counting instructions.
We will implement this transformation at `llnf.cpp`. After that, we are
ready to emit C++ code.
2018-11-15 16:53:44 -08:00
Leonardo de Moura
e5666b3464
feat(library/compiler): remove another reference to vm.h
2018-11-15 16:38:01 -08:00
Leonardo de Moura
db5d976278
feat(library/compiler): use new builtin module
2018-11-15 16:30:42 -08:00
Leonardo de Moura
7937f1e010
chore(library/init/util): remove util.lean
...
At least initially, we will not support these primitives in the new compiler.
2018-11-15 16:27:52 -08:00
Leonardo de Moura
3a7d407d6c
feat(library/compiler/builtin): register io primitives
...
TODO: implement `io` primitives in the new runtime
2018-11-15 16:14:50 -08:00
Leonardo de Moura
4f2997d691
feat(library/compiler/builtin): use std::unordered_map
2018-11-15 13:48:11 -08:00
Leonardo de Moura
4b65e0bace
refactor(library/compiler/builtin): do not store pointer to functions
...
The interface between the (to be implemented) new interpreter and the
compiled code will be automatically generated.
2018-11-15 13:39:04 -08:00
Leonardo de Moura
5acdd68ad5
feat(library/compiler/init_module): initialize builtin module
2018-11-15 13:33:02 -08:00
Leonardo de Moura
b501613f8c
feat(library/compiler/builtin): register string primitive functions
2018-11-15 13:26:41 -08:00
Leonardo de Moura
70c4e33cf2
feat(runtime/object): missing string.iterator builtin functions
2018-11-15 13:05:29 -08:00
Leonardo de Moura
4a0a3f8d85
feat(library/compiler/builtin): register int primitives
2018-11-15 12:39:35 -08:00
Leonardo de Moura
d0e96ee600
feat(runtime/object): missing int builtins
2018-11-15 12:31:34 -08:00
Leonardo de Moura
04227701d6
chore(tests/lean/run): fix the tests
...
@kha I found the real issue with these two tests.
You have modified the compiler to ignore definitions containing `sorry` :)
2018-11-15 11:21:12 -08:00
Leonardo de Moura
a3db4e8e09
chore(*): style
2018-11-15 10:59:17 -08:00
Leonardo de Moura
d0ccaa1083
chore(tests/lean): fix tests
...
TODO: `io` modifications performed yesterday may have affected `eval`.
2018-11-15 10:56:03 -08:00
Leonardo de Moura
efa703d2b5
feat(runtime): implement string.iterator primitives in the new runtime
...
Some of the primitives do not have optimal implementation.
@Kha Could you please check if everything we use in the parser has a
reasonable implementation?
2018-11-15 10:42:23 -08:00
Leonardo de Moura
ed4eeddf0a
feat(runtime/object): add more string primitives
2018-11-14 16:51:10 -08:00
Leonardo de Moura
a551fbe892
chore(library): remove dead code: comp_val
2018-11-14 16:50:21 -08:00
Leonardo de Moura
23202bada1
chore(runtime/object): allow shared objects at string_append and string_push
2018-11-14 16:30:23 -08:00
Leonardo de Moura
9258a12ed4
feat(library/compiler): add new builtin management module
...
TODO: register `int`, `string` and `io` primitives
2018-11-14 15:58:12 -08:00
Leonardo de Moura
2fa938220b
chore(library/init/data/string): cleanup
2018-11-14 14:09:45 -08:00
Leonardo de Moura
dfdf42ce34
chore(library/init/io): minimize io interface
...
We are moving to new compiler stack.
2018-11-14 13:59:25 -08:00
Leonardo de Moura
c599d78639
feat(library/init/io): implement io.iterate in Lean
...
cc @kha
2018-11-14 13:43:02 -08:00
Leonardo de Moura
439d0319f0
fix(library/compiler/specialize): array out of bounds
2018-11-14 13:42:50 -08:00
Leonardo de Moura
835b3a10cc
chore(library/init): consistent names
2018-11-14 13:08:57 -08:00
Leonardo de Moura
49d779e3a6
fix(library/vm/vm_string): we were not using the builtin implementation for string.decidable_eq
2018-11-14 09:48:43 -08:00
Sebastian Ullrich
600b7ceb28
fix(library/init/lean/parser/syntax): make sure macro scopes are not pushed inside of ident nodes
2018-11-14 17:23:32 +01:00
Sebastian Ullrich
8d25c6edc5
fix(library/compiler/llnf): fix out-of-bounds access
...
@leodemoura is this correct?
2018-11-14 09:52:22 +01:00
Sebastian Ullrich
2f8e6cc975
chore(frontends/lean/elaborator,library/compiler/compiler): avoid error recovery errors
2018-11-14 09:52:22 +01:00