Commit graph

205 commits

Author SHA1 Message Date
Sebastian Ullrich
10b18e77a1 feat(library/init/lean/parser/reader/basic): combinators: create partial syntax trees 2018-07-27 16:19:02 -07:00
Sebastian Ullrich
0b240cbfe9 feat(library/init/lean/parser/reader/basic): read_m: change custom message type to syntax 2018-07-27 15:27:37 -07:00
Sebastian Ullrich
389e9b7b49 feat(library/init/lean/parser/parsec): use [inhabited μ] instead of unit for custom message type of basic parsers
In hindsight, this seems to simplify usage without compromising static typing much
2018-07-27 15:10:20 -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
ad1e72d3e1 fix(library/init/lean/parser/reader/module): fix file 2018-07-27 09:14:11 -07:00
Sebastian Ullrich
f714a6703f refactor(library/init/lean/parser/reader/module): coercions and notations 2018-07-26 17:28:11 -07:00
Sebastian Ullrich
d526262266 refactor(library/init/lean/parser/reader/basic): rec_t.recurse: clearer implementation 2018-07-26 17:28:11 -07:00
Sebastian Ullrich
669de39df8 refactor(library/init/lean/parser/reader/module): make symbol a local coercion 2018-07-26 17:28:11 -07:00
Leonardo de Moura
5d3f421e70 feat(library/init/lean/parser/parsec): avoid unnecessary [alternative m] dependencies 2018-07-26 15:51:00 -07:00
Leonardo de Moura
35b100bb94 feat(library/init/lean/parser/parsec): implement not_followed_by using catch 2018-07-26 15:47:19 -07:00
Sebastian Ullrich
134d27dbec feat(library/init/lean/parser/parsec): longest_match should return all longest parses
In the case of overlapping notations, we will return a choice node of all
possible parses.
2018-07-25 18:07:56 -07:00
Sebastian Ullrich
18b4456a84 Revert "refactor(library/init/lean/parser/parsec): monad_parsec: move from monad_lift/monad_map to direct primitives"
This reverts commit 9db0724bf1.
2018-07-25 13:53:29 -07:00
Sebastian Ullrich
218af640bb fix(library/init/lean/parser/reader/term): add missing file 2018-07-20 18:44:37 +02:00
Sebastian Ullrich
1c561726de feat(library/init/lean/parser/reader/module): basic notation command 2018-07-18 17:45:37 +02:00
Sebastian Ullrich
8444a7412e feat(library/init/lean/parser/reader/basic): add a small monad transformer for managing recursion and use it to implement recursive section parsing 2018-07-16 18:39:23 +02:00
Sebastian Ullrich
68936e3f80 fix(library/init/lean/format): ensure to_fmt (f : format) = f 2018-07-16 18:14:01 +02:00
Sebastian Ullrich
5b55600e71 feat(library/init/lean/parser/reader/module): open command 2018-07-16 12:38:27 +02:00
Sebastian Ullrich
9e5ae42625 chore(library/init/lean/parser/reader/token): improve error messages 2018-07-13 16:10:13 +02:00
Sebastian Ullrich
09a0397648 fix(library/init/lean/parser/reader/token): fix keyword parsing using longest_match 2018-07-13 15:51:48 +02:00
Sebastian Ullrich
8707773872 feat(library/init/lean/parser/parsec): introduce observing and longest_match primitive parser combinators 2018-07-13 15:51:00 +02:00
Sebastian Ullrich
9db0724bf1 refactor(library/init/lean/parser/parsec): monad_parsec: move from monad_lift/monad_map to direct primitives
This breaks the code for variable-length tokens that depended on lifting
`parsec` into `read_m`. Either `read_m` could be parameterized by its state,
or we just hard-code all variable-length tokens.
2018-07-12 17:53:43 +02:00
Sebastian Ullrich
5955e3fce8 chore(library/init/lean/parser/parsec): proper namespacing 2018-07-12 10:35:22 +02: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
6fa4e56fbe feat(library/init/lean/parser/syntax): add and test reprinter 2018-07-11 14:34:50 +02:00
Sebastian Ullrich
b2f9b2c180 feat(library/init/lean/parser/{syntax,reader}): store whitespace around tokens 2018-07-11 14:34:50 +02:00
Sebastian Ullrich
67d93ff051 fix(library/init/lean/parser/reader/token): fix loops running out of fuel 2018-07-06 15:56:01 +02:00
Sebastian Ullrich
ab19966d65 feat(library/init/lean/parser/reader): automatically promote tokens through readers 2018-07-05 18:01:17 +02:00
Sebastian Ullrich
fbdb73665f test(tests/lean/reader1): start testing the tokenizer on core.lean and fix a comment bug 2018-07-05 16:51:48 +02:00
Sebastian Ullrich
6b6c16b6d6 chore(library/init/lean/parser/reader/module): remove theory command
We plan to allow `noncomputable`, as well as more modifiers, on `namespace/section`
2018-07-05 10:42:52 +02:00
Sebastian Ullrich
8ef87818ce feat(library/init/lean/parser/reader): implement basic tokenizer 2018-07-05 10:42:37 +02:00
Sebastian Ullrich
d0e53be0dd feat(library/init/lean/parser/parser_t): improve str's error message and allow error messages without 'unexpected' part
Showing the expected string at the initial position is much more helpful than
showing "unexpected <char>"
2018-07-05 10:20:25 +02:00
Sebastian Ullrich
47f18661c5 refactor(library/init/lean/parser/parser_t): remove some uses of lift 2018-06-29 16:39:45 +02:00
Leonardo de Moura
bda46cc9ac feat(kernel): add inductive_decl type on top of runtime/object, and ajust kernel/inductive.cpp 2018-06-26 12:16:33 -07:00
Leonardo de Moura
bb0b43798c feat(kernel/declaration): add wrappers for accessing inductive/constructor/recursor declarations 2018-06-25 15:01:02 -07:00
Leonardo de Moura
f62256853c refactor(library/init/lean/declaration): use lean.declaration to implement init.meta.declaration 2018-06-25 13:08:13 -07:00
Leonardo de Moura
9c6238e1ac refactor(kernel/declaration): reducibility hints as runtime/object 2018-06-25 08:04:44 -07:00
Leonardo de Moura
ef6ed1e660 feat(library/init/lean/declaration): add lean.declaration 2018-06-23 10:19:26 -07:00
Leonardo de Moura
fdbb1964e0 chore(library/init/lean/expr): document mvar new design 2018-06-22 15:06:36 -07:00
Leonardo de Moura
1063905d07 chore(kernel/expr): reorder constructors and fix typo 2018-06-22 12:39:16 -07:00
Leonardo de Moura
318530cf07 refactor(library/init/meta/expr): use lean.expr
`expr` is finally non-meta
2018-06-22 10:29:56 -07:00
Leonardo de Moura
c5714c2fac chore(kernel): remove expr.macro constructor
We are now ready to implement `expr` using `runtime/object`.
2018-06-19 17:54:43 -07:00
Leonardo de Moura
d87dfbfb03 chore(library/equations_compiler): remove equations macro 2018-06-19 13:41:08 -07:00
Leonardo de Moura
140e906267 chore(library/equations_compiler): remove equation and no_equation macros 2018-06-19 13:41:07 -07:00
Leonardo de Moura
b4f4924be4 chore(library/equations_compiler): remove as_pattern macro 2018-06-19 13:41:07 -07:00
Leonardo de Moura
c0a9b0bb4b chore(frontends/lean): remove field_notation macro
In the new parser, field_notation will be a syntax object.
2018-06-19 13:41:07 -07:00
Leonardo de Moura
970d14afa9 refactor(frontends/lean/structure_instance): implement structure instances using mdata 2018-06-18 15:57:42 -07:00
Leonardo de Moura
f948892505 refactor(frontends/lean/choice): use mdata to implement choice 2018-06-18 14:21:11 -07:00
Leonardo de Moura
b84090aaca feat(library/annotation): remove annonation macro
We now use the new `expr.mdata` constructor.
2018-06-18 13:39:02 -07:00
Sebastian Ullrich
70970ce5e0 feat(library/init/lean/parser/reader): add simplistic implementation of a tiny initial part of the Lean reader
Maybe 'reader' isn't the best name.
2018-06-18 19:23:58 +02:00