Sebastian Ullrich
f693e910b1
fix: skip minimum amount of tokens during parser recovery
...
Fixes #186
2020-09-21 11:37:50 +02:00
Leonardo de Moura
6a90fbf855
test: String interpolation
...
@Kha I wrote this extended test using the new frontend. The new
frontend worked great. I only had a minor issue with `#exit`.
The example uses `let rec`, parsers, macros, lift-method notation, etc.
It implements the new parser `strInterpolant p` for string
interpolation. The parser `p` is used to process the elements inside
`{...}`. Then, I use this parser to implement the macro `toString!`.
Example: `toString! "1+2 = {1+2}"` produces `"1+2 = 3"`.
Even the new "lift-method" notation works inside the string interpolant.
```lean
def g (x : Nat) : StateRefT Nat IO Nat := do
modify (· + x);
get
def ex : StateRefT Nat IO Unit := do
IO.println $ toString! ">> hello {(<- g 1)}";
IO.println $ toString! ">> world {(<- g 1)}";
pure ()
```
2020-09-20 18:11:19 -07:00
Leonardo de Moura
9eb978946c
chore: add quotedCharCoreFn
2020-09-20 17:05:47 -07:00
Leonardo de Moura
241eabfc41
fix: non termination on ill-formed string literals
2020-09-20 17:05:18 -07:00
Leonardo de Moura
03a361edf4
feat: add initialize command parser
2020-09-20 13:42:50 -07:00
Leonardo de Moura
13abf0bd45
chore: update stage0
2020-09-20 09:17:12 -07:00
Leonardo de Moura
d33f7c7885
feat: attribute command
2020-09-20 09:11:36 -07:00
Leonardo de Moura
7d9118d2e2
feat: add resolveGlobalConst and resolveGlobalConstNoOverload
2020-09-20 08:54:24 -07:00
Leonardo de Moura
6ed69525ad
chore: move functions to Environment namespace
2020-09-20 08:28:43 -07:00
Leonardo de Moura
ac2a9539f9
fix: old&new frontend interference
...
The new test was not working because new frontend was using old
frontend function.
2020-09-20 08:25:45 -07:00
Leonardo de Moura
d5cb3aa85a
chore: add elabAttr
...
WIP
2020-09-20 07:51:11 -07:00
Leonardo de Moura
12acbaf392
doc: resolveGlobalName
2020-09-20 07:50:29 -07:00
Leonardo de Moura
6ac227a63c
chore: elabAttrs, elabDeclAttrs
2020-09-20 07:39:14 -07:00
Leonardo de Moura
4786cb12b5
fix: unknown namespace error message
2020-09-20 07:10:23 -07:00
Leonardo de Moura
6aea344b32
chore: update stage0
2020-09-19 19:09:02 -07:00
Leonardo de Moura
d2ee641e7f
chore: restore macro
2020-09-19 19:08:35 -07:00
Leonardo de Moura
3348e3c3a1
chore: update stage0
2020-09-19 19:05:14 -07:00
Leonardo de Moura
9fdef2e4eb
fix: commands that expand into syntax
2020-09-19 19:04:21 -07:00
Leonardo de Moura
3a386a27a9
chore: update stage0
2020-09-19 19:00:46 -07:00
Leonardo de Moura
87381e3329
feat: add support for parser priorities in the syntax command
...
@Kha Parser priorities are working :)
2020-09-19 18:47:08 -07:00
Leonardo de Moura
f0ab743ad0
chore: remove temporary workaround
2020-09-19 18:00:45 -07:00
Leonardo de Moura
e52f50b2fb
chore: update stage0
2020-09-19 17:55:57 -07:00
Leonardo de Moura
fe2d3be821
feat: parser priorities
2020-09-19 17:55:17 -07:00
Leonardo de Moura
3ee9cdd2dc
doc: document issue
...
@Kha One possible fix: we store `currNamespace` and `openDecls` at `CoreM`.
The issue is similar to the one we had with the pretty printer.
2020-09-19 16:55:50 -07:00
Leonardo de Moura
3e42dac1ee
chore: update stage0
2020-09-19 15:44:24 -07:00
Leonardo de Moura
f679b7d803
feat: add notFollowedBy to syntax
2020-09-19 15:43:44 -07:00
Leonardo de Moura
c43450f027
feat: macros for the syntax category
...
This is the last of a series of commits for adding this feature.
2020-09-19 15:00:41 -07:00
Leonardo de Moura
c2c57b4a5e
chore: update stage0
2020-09-19 14:44:48 -07:00
Leonardo de Moura
ee6d723554
feat: add stx.quot
2020-09-19 14:40:17 -07:00
Leonardo de Moura
f876177f26
feat: expand macros in syntax declaration
2020-09-19 14:39:49 -07:00
Leonardo de Moura
17d4117637
chore: remove temporary hacks
2020-09-19 14:21:38 -07:00
Leonardo de Moura
a96e5d4bcd
chore: update stage0
2020-09-19 14:17:10 -07:00
Leonardo de Moura
25b40b4b89
chore: disable macro
2020-09-19 14:15:24 -07:00
Leonardo de Moura
6307e1b855
chore: update stage0
2020-09-19 14:15:11 -07:00
Leonardo de Moura
71de0c8eb9
chore: rename category syntax to stx
...
Reason: `syntax` is a keywork. So, we can't write `macro "boo" x:syntax`
2020-09-19 14:11:35 -07:00
Leonardo de Moura
11e65fba2a
refactor: factor out macros from mutual elaborator
2020-09-19 13:10:10 -07:00
Leonardo de Moura
3e9b2a0b08
feat: add expandMacro? and expandMacros methods to MacroM
2020-09-19 13:02:27 -07:00
Leonardo de Moura
065a845bfd
chore: factor out nested macro at structInst elaborator
...
@Kha The new macro is another example where it would be super nice to
have better support for `optional` at `match_syntax`.
2020-09-19 11:56:20 -07:00
Leonardo de Moura
dc928d7b05
chore: cleanup do elaborator
...
Use the fact the macros are executed before elaboration functions.
cc @Kha
2020-09-19 11:49:47 -07:00
Leonardo de Moura
caa624c936
chore: cleanup
2020-09-19 09:24:50 -07:00
Leonardo de Moura
052e67d1af
feat: rewrite tactic
2020-09-18 16:13:14 -07:00
Leonardo de Moura
f7bd174bb8
chore: improve error message
2020-09-18 15:23:28 -07:00
Leonardo de Moura
43bc429abf
fix: typo
2020-09-18 15:18:20 -07:00
Leonardo de Moura
839f1e1ec8
feat: add elabTermWithHoles
2020-09-18 14:46:04 -07:00
Sebastian Ullrich
f1386672c8
chore: disable format-reparse test until hard linebreaks are working
2020-09-18 13:15:40 -07:00
Sebastian Ullrich
68568e78d3
feat: formatter: use hard space after opening structure instance brace
2020-09-18 13:15:40 -07:00
Sebastian Ullrich
519eda2459
feat: formatter: interpret checkWsBefore as soft space
2020-09-18 13:15:40 -07:00
Sebastian Ullrich
95007171a8
feat: formatter: group+indent binders and structure instance fields
2020-09-18 13:15:40 -07:00
Sebastian Ullrich
97a2198fe0
feat: change default indent width from 4 to 2 spaces
2020-09-18 13:15:40 -07:00
Sebastian Ullrich
ec3682ce15
feat: formatter: automatically group+indent syntax categories
2020-09-18 13:15:40 -07:00