Sebastian Ullrich
203545ce99
chore(library/init/lean/parser/trie): add debug print
...
Also make sure it's in the prelude, whoops
2018-09-28 13:08:24 -07:00
Sebastian Ullrich
5123148aa6
feat(library/init/data/string/basic): trim whitespace around symbols
2018-09-28 13:08:24 -07:00
Sebastian Ullrich
1733d3ec12
feat(library/init/lean/elaborator): default leading notation symbols to max_prec
2018-09-28 13:08:24 -07:00
Sebastian Ullrich
b6ca2e945d
feat(library/init/lean): support unquoted symbols in mixfix notation
2018-09-28 13:08:24 -07:00
Sebastian Ullrich
63201c2a78
feat(library/init/lean/elaborator): add elaborator, elaborate notation and reserve notation
2018-09-28 13:08:24 -07:00
Sebastian Ullrich
1f85d34153
chore(library/init/lean/parser/notation): remove old notation <numeric-literal> := ... syntax
2018-09-28 13:08:24 -07:00
Sebastian Ullrich
2e5ea16e2f
perf(library/init/lean/parser): cache consecutive calls to token at the same position
...
Parser performance improved by about 33%
2018-09-27 16:08:19 -07:00
Sebastian Ullrich
e535cd92f7
perf(library/init/lean/parser/token): inline hot polymorphic functions
...
Decreases parser runtime by ~15%
2018-09-27 16:02:19 -07:00
Leonardo de Moura
b3451fb682
perf(library/init/lean/parser/parsec): merge ok and ok_eps
2018-09-27 15:14:37 -07:00
Leonardo de Moura
64b5e05a3e
feat(library/init/lean/parser/parsec): try to minimize the amount of inlined code
2018-09-27 14:53:30 -07:00
Leonardo de Moura
dd50cc1785
feat(library/init/lean/parser/parsec): add orelse_cont to improve compilation time
2018-09-27 13:22:18 -07:00
Sebastian Ullrich
26c0f36848
doc(library/init/lean/parser/basic): expand comment
2018-09-27 10:16:40 -07:00
Sebastian Ullrich
e661aaeacf
refactor(library/init/lean/parser): store registered parsers in configs, use config hierarchy to avoid mutually recursive types
...
And other refactorings along the way
2018-09-27 10:05:10 -07:00
Leonardo de Moura
7f64033111
chore(library/init): remove all occurrences of parameter command
...
We will not support the `parameter` command in Lean 4.
It is seldom used and creates many complications.
2018-09-26 17:54:11 -07:00
Sebastian Ullrich
2c07922327
refactor(library/init/lean/parser): minimize parser_state, have the module coroutine take and return parser_config
2018-09-26 13:20:07 -07:00
Sebastian Ullrich
07901fcfcb
refactor(library/init/lean/parser/module): put prelude and imports into non-optional header parser to make the life of the elaborator and other consumers a bit easier
2018-09-26 13:20:07 -07:00
Leonardo de Moura
938c8dae83
fix(library/init/control/combinators): [inline] ==> [macro_inline]
2018-09-26 09:08:06 -07:00
Sebastian Ullrich
1d01e81de8
refactor(library/init/lean/parser): do not construct final syntax tree independent from intermediate outputs
...
This makes sure we have a single consistent view of the file
2018-09-25 18:28:53 -07:00
Sebastian Ullrich
f8dd94c4bf
feat(library/init/lean/expander): full mixfix and reserve_mixfix expanders
2018-09-25 15:05:47 -07:00
Sebastian Ullrich
bba8beca63
feat(library/init/lean/parser/token): give number a view
2018-09-25 14:18:52 -07:00
Sebastian Ullrich
d8b49e1dee
feat(library/init/control/functor): add <&>, which the old elaborator likes better than <$>
2018-09-25 13:23:56 -07:00
Sebastian Ullrich
2d69d85193
fix(library/init/lean/expander): fix mixfix.transform
2018-09-25 11:56:40 -07:00
Sebastian Ullrich
c3c6a0e3a5
chore(library/init/lean/expander): minor simplifications
2018-09-25 09:18:56 -07:00
Sebastian Ullrich
4afcc0aab0
fix(library/init/lean/parser/term): do not allow mixing bracketed and unbracketed binders
2018-09-25 09:16:02 -07:00
Sebastian Ullrich
15927f21c9
refactor(library/init/lean/parser/token): unicode_symbol parser
2018-09-25 09:16:02 -07:00
Sebastian Ullrich
5a21d45836
refactor(library/init/lean/expander): introduce some coercions
2018-09-25 09:16:02 -07:00
Leonardo de Moura
b4b42ef8b2
feat(library/init/lean/parser/parsec): missing [inline]
2018-09-24 18:57:49 -07:00
Leonardo de Moura
6a7fbb24f5
feat(library/init/data/dlist): inlining dlist functions is counterproductive
2018-09-24 18:47:10 -07:00
Sebastian Ullrich
32f4d52e1c
refactor(library/init/lean): revert introduction of tysyntax; push syntax.missing through views
2018-09-24 18:24:27 -07:00
Sebastian Ullrich
db0fc4a448
feat(library/init/lean/expander): very basic expander
2018-09-24 09:53:28 -07:00
Sebastian Ullrich
ed0a8a8827
feat(library/init/lean/parser/combinators): make optional's view default to none
2018-09-24 09:53:28 -07:00
Sebastian Ullrich
76ea8169bc
feat(library/init/lean/expander): prefix ~> notation macro: construct RHS, move to new module
2018-09-24 09:53:28 -07:00
Sebastian Ullrich
9a0b1c7a7f
feat(library/init/lean/parser/basic): allow views to specify default value used with opt_param when nested in other views
2018-09-24 09:53:28 -07:00
Leonardo de Moura
a31f12d8cd
chore(library/init/core): revert ite+thunks modification
...
We don't need it since we marked `ite` as `[macro_inline]`
2018-09-23 19:27:06 -07:00
Leonardo de Moura
ad82ad69ec
feat(library/init/core): cleanup bor and band
2018-09-23 19:27:06 -07:00
Leonardo de Moura
dd046b0e0a
feat(library/init/core): mark id_rhs as [macro_inline]
2018-09-23 19:27:06 -07:00
Leonardo de Moura
d43f9627c2
feat(library/init/core): use [macro_inline] to get shortcircuit semantics in new compiler stack
2018-09-23 19:27:06 -07:00
Sebastian Ullrich
41c0bc87fd
refactor(library/init/lean/parser): make views shallow via tysyntax
2018-09-22 21:24:38 -07:00
Sebastian Ullrich
65ddca1510
perf(library/init/lean/parser/syntax): avoid quadratic behavior in update_leading
2018-09-20 09:40:21 -07:00
Sebastian Ullrich
b859560a83
feat(library/init/lean/parser/term): @/@@ notation
2018-09-20 09:40:21 -07:00
Sebastian Ullrich
0a8d0a6870
feat(library/init/lean/parser/term): projection notation
2018-09-20 09:40:21 -07:00
Sebastian Ullrich
b8bd0cc5e6
feat(library/init/lean/parser/term): parentheses and tuples
2018-09-20 09:40:21 -07:00
Sebastian Ullrich
d7d968cead
feat(library/init/lean/parser/basic): merge explicit and default (0) token precedences
2018-09-20 09:40:21 -07:00
Sebastian Ullrich
6f68a0d1eb
feat(library/init/lean/parser/basic): check for conflicting tokens
2018-09-20 09:40:21 -07:00
Sebastian Ullrich
64a5d0f240
refactor(library/init/lean/parser): has_tokens default
2018-09-20 09:38:10 -07:00
Sebastian Ullrich
c7c459d47b
Revert "perf(library/init/lean/parser): collect tokens in trie instead of list, do not inline"
...
This reverts commit e4c50b2b09 .
Lists are efficient enough and make it easier to customize the trie construction.
Keep the `donotinline` though.
2018-09-20 09:38:10 -07:00
Sebastian Ullrich
b7f7f257c5
feat(library/init/lean/parser/declaration): inductive, structure
2018-09-20 09:38:10 -07:00
Leonardo de Moura
f640b1bbac
feat(library/init/lean/ir/extract_cpp): missing inlines
2018-09-20 08:39:25 -07:00
Leonardo de Moura
a3a8165388
feat(library/init/control/monad): provide seq_right default implementation for monad
...
It was using the `seq_right` from `applicative` which is
```
(seq_right := λ α β a b, const α id <$> a <*> b)
```
and horrible code was being generated.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2018-09-20 08:39:25 -07:00
Leonardo de Moura
5ff9e24b17
feat(library/init/control): do not use unnecessary structures
...
It confuses the compiler.
2018-09-20 08:39:25 -07:00