Leonardo de Moura
5dae0303af
chore(library/init/lean/parser): force eta expansion and remove unnecessary [inline]
...
TODO: improve eta-expansion step in the compiler.
2019-07-09 14:09:24 -07:00
Leonardo de Moura
eb69c914e8
chore(library/init/lean/parser/term): add missing [inline]
2019-07-08 22:06:52 -07:00
Leonardo de Moura
b89a389427
chore(library/init/lean/parser/parser): force eta-expansion
2019-07-08 20:46:34 -07:00
Leonardo de Moura
95dc2c5ade
chore(library/init/lean/parser): minor
2019-07-08 14:45:20 -07:00
Leonardo de Moura
f37cd3cd11
feat(library/init/lean/parser/term): match-expression
...
TODO: add whitespace sensitivity
2019-07-08 14:14:49 -07:00
Leonardo de Moura
5cfa13d08b
fix(library/init/lean/parser/parser): consume whitespace in the beginning of the input
2019-07-08 14:13:50 -07:00
Leonardo de Moura
f66f6fd455
fix(library/init/lean/parser/parser): The first tokens of try p are the first tokens of p
2019-07-08 13:46:19 -07:00
Leonardo de Moura
846ec9578d
fix(library/init/lean/parser/term): allow namedArgument notation in applications only
2019-07-08 13:43:12 -07:00
Leonardo de Moura
4a17cf134b
feat(library/init/lean/parser/term): add forall parser
2019-07-08 13:03:21 -07:00
Leonardo de Moura
a6f9633e64
feat(library/init/lean/parser/term): dependent arrow notation
2019-07-08 12:57:49 -07:00
Leonardo de Moura
d3ca360e7f
feat(library/init/lean/parser): depArrow proof of concept
2019-07-08 10:49:54 -07:00
Leonardo de Moura
e2bcf179ac
fix(library/init/lean/parser/parser): missing trim
2019-07-08 10:33:51 -07:00
Leonardo de Moura
8b3d932212
chore(library/init/lean/parser): maxPrec ==> appPrec
2019-07-08 09:17:32 -07:00
Leonardo de Moura
9334f54b87
feat(library/init/lean/parser/parser): support for whitespace sensitive left binding power
...
We use this new feature to implement array access notation `a[i]`.
2019-07-07 07:21:10 -07:00
Leonardo de Moura
2498f197b8
feat(library/init/lean/parser/term): declare some builtin infix operators
...
In Lean4, several builtin operators will be defined programmatically to
make sure we can bootstrap the system before we have all primitives
necessary for defining parsers.
2019-07-05 18:51:14 -07:00
Leonardo de Moura
794edcb18c
chore(library/init/lean/parser): minor modifications
2019-07-05 18:31:03 -07:00
Leonardo de Moura
483b7ae51a
feat(library/init/lean/parser/term): add field notation trailing parser
2019-07-05 16:23:25 -07:00
Leonardo de Moura
ee5ec98fa9
feat(library/init/lean/parser/parser): add symbolNoWs trailing parser
2019-07-05 16:22:36 -07:00
Leonardo de Moura
dca0ba60fa
feat(library/init/lean/parser/parser): add fieldIdx parser
...
We should not use `numLit` for projections since it will parse
`p.1.2` as
```
Term.proj `p (numLit "1.2")
```
2019-07-05 15:07:51 -07:00
Leonardo de Moura
68d29fcdd4
feat(library/init/lean/parser/term): structure instances and subtypes
2019-07-05 12:09:59 -07:00
Leonardo de Moura
e3c75d2af6
fix(library/init/lean/parser/parser): position information for strLit, numLit, ident
2019-07-05 12:07:37 -07:00
Leonardo de Moura
24f9cd9564
chore(library/init/lean/parser/parser): minor
2019-07-05 11:23:45 -07:00
Leonardo de Moura
70fbf58c50
fix(library/init/lean/parser/parser): bug at identFnAux
2019-07-05 10:46:20 -07:00
Leonardo de Moura
326c22e75d
feat(library/init/lean/parser/term): anonymous constructors and lambdas
2019-07-05 10:26:39 -07:00
Leonardo de Moura
ea6eee516b
chore(frontends/lean): use => instead of := in match-expressions
...
Motivation: use same separator used in lambda expressions as in
other programming languages.
2019-07-04 11:38:38 -07:00
Leonardo de Moura
0bee94886e
feat(frontends/lean/builtin_exprs): , from ==> from, and cleanup suffices
2019-07-02 17:22:50 -07:00
Leonardo de Moura
9f24e77200
chore(library/init/lean/parser/term): add show and have parsers
2019-07-02 16:59:43 -07:00
Leonardo de Moura
44730314ff
feat(library/init/lean/parser/term): add ifTerm
2019-07-02 16:32:09 -07:00
Leonardo de Moura
56007d7c97
feat(library/init/lean/parser/parser): display builtinParser name when updateTokens fails
2019-07-02 16:06:39 -07:00
Leonardo de Moura
a02443d23d
chore(frontends/lean): fun x, e ==> fun x => e
2019-07-02 13:22:11 -07:00
Leonardo de Moura
39221adcd6
chore(frontends/lean/builtin_exprs): remove assume notation
2019-07-02 10:40:07 -07:00
Leonardo de Moura
d4a5306d82
feat(library/init/lean/parser/term): explicit universe notation in the new parser
2019-07-02 09:00:58 -07:00
Leonardo de Moura
6841e47aa4
chore(frontends/lean/builtin_exprs): remove support for (<infix>) and (<infix> <expr>) notations
...
In Lean 4, we will support the more general
`a + ·` ==> `fun x, a + x`
`· + b` ==> `fun x, x + b`
`· + ·` ==> `fun x y, x + y`
`f · y` ==> `fun x, f a y`
`g · · b` ==> `fun x y, g x y b`
2019-07-02 08:06:06 -07:00
Leonardo de Moura
ee2d3faa63
feat(library/init/lean/parser/parser): change optional p behavior
...
It ignores error only if `p` does not consume any input. This change
improves the quality of the error messages. The previous behavior can be
obtained by using `optional (try p)`.
2019-07-02 07:52:22 -07:00
Leonardo de Moura
9d50b3ca47
feat(library/init/lean/parser/term): paren parser
2019-07-01 19:44:13 -07:00
Leonardo de Moura
13b5747713
fix(library/init/lean/parser/parser): prattParser
2019-07-01 16:00:58 -07:00
Leonardo de Moura
5691450b5b
feat(library/init/lean/parser): term parser skeleton
2019-07-01 15:04:13 -07:00
Leonardo de Moura
24647cb7cb
fix(library/init/lean/parser/parser): better representation for many1 Syntax node
2019-06-30 09:02:06 -07:00
Leonardo de Moura
531ef5d700
feat(library/init/lean/parser): universe level parser and bug fixes
2019-06-30 09:02:06 -07:00
Leonardo de Moura
91e1d30cf8
feat(frontends/lean/builtin_exprs): use ; in do-notation
2019-06-27 18:00:43 -07:00
Leonardo de Moura
ab487ea4ac
feat(frontends/lean): allow ; instead of in in let-decls
2019-06-27 17:12:03 -07:00
Leonardo de Moura
2e01ac508a
feat(library/init/lean/syntax): primitives for creating and testing string and nat literals
2019-06-25 10:39:23 -07:00
Leonardo de Moura
da09ef4f66
feat(frontends/lean/builtin_exprs): minor improvement
2019-06-24 15:48:11 -07:00
Leonardo de Moura
8f1345dc53
chore(library/init/lean/syntax): simplify SyntaxNodeKind
2019-06-21 14:24:44 -07:00
Leonardo de Moura
e4344b0c94
chore(library/init/lean/parser/default): update default
2019-06-21 14:20:40 -07:00
Leonardo de Moura
0fe8fd1307
feat(library/init/lean/parser/parser): notation
2019-06-21 14:20:22 -07:00
Leonardo de Moura
bc9e460f62
fix(library/init/lean/compiler/ir): collectUsedDecls must take initialization functions into account
...
Move builtin parser level to its own directory
2019-06-21 13:34:42 -07:00
Leonardo de Moura
93e5746739
chore(library/init/lean/parser/parser): naming consistency
2019-06-20 16:47:55 -07:00
Leonardo de Moura
98879f1580
refactor(library/init/lean/parser/parser): simplify SyntaxNodeKind
...
The numeric `id` generation is works well for builtin parsers, but it
creates problems when defining dynamic ones.
2019-06-20 14:51:59 -07:00
Leonardo de Moura
8724a8cfd5
feat(library/init/lean/parser/parser): builtin parser attributes must be applied after compilation
2019-06-20 09:22:03 -07:00