Sebastian Ullrich
8666047703
feat(library/init/lean/parser/reader/module): reserve, mixfix, universe commands
2018-07-30 17:30:20 -07:00
Sebastian Ullrich
1c2ca922af
test(tests/lean/reader1): test for perfect roundtripping
2018-07-30 17:30:20 -07:00
Sebastian Ullrich
3127553e72
chore(script/prepare-commit-msg): filter out .expected.out files
2018-07-30 17:30:20 -07:00
Sebastian Ullrich
242d63af25
fix(library/init/lean/parser/reader/basic): store token start position for perfect roundtripping
2018-07-30 17:30:20 -07:00
Sebastian Ullrich
312de57aec
test(tests/lean/reader1): test error recovery and fix bug
2018-07-30 17:30:20 -07:00
Leonardo de Moura
c0b93d3694
refactor(kernel): remove unnecessary certify_unchecked
2018-07-30 12:54:05 -07:00
Leonardo de Moura
6e5440d49f
test(tests/library/phashtable): add std::unordered_map test
2018-07-30 10:58:22 -07:00
Sebastian Ullrich
0fd9d29ba2
feat(library/init/lean/parser/reader/module): command-level error recovery
2018-07-30 10:38:00 -07:00
Sebastian Ullrich
3728b2ba3f
feat(library/init/lean/parser/reader/basic): add error list handling
2018-07-30 10:38:00 -07:00
Sebastian Ullrich
e34f2e8cd7
chore(library/init/lean/parser): improve error messages
2018-07-30 10:38:00 -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
898e14cdf5
fix(library/init/lean/parser/parsec): orelse: do not backtrack on success
...
This change makes backtracking behavior more predictable and
matches Parsec and Megaparsec's behavior. While the original Parsec paper
motivates the old behavior by arguing it implements the "longest match" rule,
this is obviously only true in a very limited sense.
2018-07-30 10:38:00 -07:00
Sebastian Ullrich
ea2bed7481
feat(library/init/control/combinators): make more universe polymorphic (for e.g. io)
2018-07-30 10:38:00 -07:00
Leonardo de Moura
049a807709
test(tests/library/phashtable): simple performance tests
2018-07-30 10:29:03 -07:00
Gabriel Ebner
73d4a004ac
fix(library/print): add missing break in switch
2018-07-27 16:27:57 -07:00
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
046b1890ad
feat(src/frontends/lean/decl_util): ignore out_params when deciding whether to include an anonymous inst implicit section variable
2018-07-27 14:49:09 -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
95f758d240
feat(library/system/io_interface): improve iterate interface
...
The new version is better for lifting.
2018-07-26 16:07:30 -07:00
Leonardo de Moura
805a5d8180
feat(library/system): fix resulting universe
...
Otherwise we will not be able to implement a mockup implementation in
pure Lean.
2018-07-26 15:59:04 -07:00
Leonardo de Moura
c7762d07c1
feat(library/init/control/lift): add comment
2018-07-26 15:52:47 -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
a91de26c90
chore(script/prepare-commit-msg): use file with largest diff
2018-07-19 18:49:31 +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
d8122a7284
feat(src/frontends/lean/structure_cmd): allow default values in field parameters
2018-07-12 17:40:45 +02:00
Sebastian Ullrich
7cb90bedfe
fix(src/kernel/old_type_checker): literals in inductive defs
2018-07-12 10:55:28 +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