1 | 1 |
----
|
2 | 2 |
|
3 | 3 |
* turn system library back into built-in keywords (esp. if ¶ can be used)
|
4 | |
* better command-line argument parsing
|
5 | |
* `@include` -- for the scanner, especially
|
6 | |
* `$.unquote` should take left and right quotes to expect
|
7 | |
* define a stringify-repr operation on terms
|
|
4 |
* `@include` -- for the scanner, especially -- move metac's to `lib`
|
|
5 |
* figure out why compiled version of tamsin-ast hangs...
|
|
6 |
* arbitrary non-printable characters in terms: `\x99`
|
|
7 |
* `byte` versus `utf_8` scanners ("char" is vague, isn't it?)
|
8 | 8 |
|
9 | 9 |
### 8-bit clean/UTF-8 ###
|
10 | 10 |
|
11 | 11 |
* 8-bit clean strings, in both Python and C. tests for these as string
|
12 | 12 |
literals, ability to scan them on input, and ability to produce them
|
13 | 13 |
on output.
|
14 | |
* arbitrary non-printable characters in terms and such
|
15 | 14 |
* decode UTF-8 in compiled C code : character scanner yields one Unicode char
|
16 | 15 |
* more tests for UTF-8
|
17 | 16 |
|
18 | |
### meta-circularity/bootstrapping ###
|
19 | |
|
20 | |
* meta-circular implementation of analyzer!
|
21 | |
* meta-circular implementation of compiler!
|
22 | |
* meta-circular implementation of interpreter! (not so useful?)
|
23 | |
* figure out why compiled verstion of tamsin-ast hangs...
|
24 | |
|
25 | 17 |
### lower-priority/experimental ###
|
26 | 18 |
|
|
19 |
* meta-circular implementation of compiler!
|
|
20 |
* `$.unquote` should take left and right quotes to expect
|
|
21 |
* define a stringify-repr operation on terms
|
27 | 22 |
* Tamsin scanner: more liberal (every non-alphanum+_ symbol scans as itself,
|
28 | 23 |
incl. ones that have no meaning currently like `/` and `?`)
|
29 | 24 |
* use `←` instead of `@`, why not?
|
30 | 25 |
* `¶foo` means production called `foo`, to disambiguate
|
31 | 26 |
(this would mean unaliasing is less necessary -- call your production
|
32 | |
`¶return` if you like) -- ASCII version? `p^foo`?
|
|
27 |
`¶return` if you like) -- ASCII version? `^^foo`? `:foo`? `||foo`? `//foo`?
|
33 | 28 |
* pattern match in send:
|
34 | 29 |
* `fields → F@fields(H,T) & H`
|
35 | 30 |
* maps, implemented as hash tables.
|
|
41 | 36 |
indeed, this is a fold! something like...
|
42 | 37 |
* `fold rule '' +`
|
43 | 38 |
* `fold rule nil cons`
|
|
39 |
* maybe `rule/nil/cons`
|
44 | 40 |
i.e.
|
45 | 41 |
* `"fold" & expr0 & term & ("+" | term)`
|
46 | 42 |
that certainly implies that `+` is a constructor though. hmmm...
|
|
50 | 46 |
expr1 = term → E & fold ("*" & term) E mul.
|
51 | 47 |
term = "x" | "y" | "z" | "(" & expr0 → E & ")" & E.
|
52 | 48 |
|
|
49 |
* on that topic — production values and/or lambda productions...
|
53 | 50 |
* auto-generate terms from productions, like Rooibos does
|
54 | 51 |
* `;` = `&`?
|
55 | 52 |
* pretty-print AST for error messages
|