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
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
fea91abf88
chore(tests/lean): add leanpkg file to make sure the same cwd is used in test runs and the interactive server
2018-07-05 16:48:56 +02:00
Sebastian Ullrich
08474e04ff
fix(library/system/io): read_to_end: work around UTF-8 bug in io.read
2018-07-05 16:47:53 +02:00
Sebastian Ullrich
f254a906b3
fix(src/library/vm/vm_io): get_cwd
2018-07-05 10:53:07 +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
80745ba776
chore(library/init/data/string/basic): rename string.iterator's next_to_string to remaining_to_string
...
The old name implied that `curr` was not part of its result
2018-07-05 10:42:37 +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
9e51ff5580
feat(library/init/data/string/basic): add forward and is_prefix_of_remaining to iterator
2018-07-05 10:20:25 +02:00
Sebastian Ullrich
2ebbfa813c
doc(doc/coding_style,doc/commit_convention): fix git hook commands
2018-07-05 10:20:25 +02:00