forked from fglock/Perlito
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO-perlito6
155 lines (71 loc) · 2.82 KB
/
TODO-perlito6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
TODO list for Perlito6
* Perlito6
- move all internal packages inside Perlito6 namespace
* Eval.pm module
- add exceptions
- complete ast nodes implementation
* Command line compiler (src6/util/perlito6.pl)
- build Ast cache using JSON (we currently use Perl5 Data::Dumper) or XML (Go has XML and JSON input)
- option to build binaries (Lisp, Java, Go) or modules (Perl, Lisp, Javascript)
- add "make" capabilities (test file dates, etc)
- does it need a config file? (lib location, make details)
- add '-B' option (execute)
* Perlito6 in Javascript
- reuse the good parts of Perlito5 data model
- add node.js features
-- properly implement die(); this should avoid some infinite-loops when we keep compiling after an error is found
* Perlito6 in Rakudo/Niecza/Pugs
- any Perl6 should be able to execute Perlito6 directly. What do we need to fix?
-- rakudo:
=begin must be followed by an identifier; (did you mean "=begin pod"?)
at src6/lib/Perlito6/Emitter/Token.pm:331
-- rakudo: use "augment" to add new methods to classes
[13:20] <jnthn> r: use MONKEY_TYPING; class Foo { ... }; augment class Foo { }
* Perlito6 in Lisp
- test other Lisp implementations
* Perlito6 in Go
- document which release of Go to use
* Perlito6 in Perl5
(no issues at the moment)
* Perlito6 in Parrot
- finish OO, class variables
- fix die() parameter handling
* Perlito6 in Python
- module loading uses mangled filenames (with underlines); it should use dot-separated names instead.
* Perlito6 in Ruby
- module loading uses mangled filenames (with underlines); it should use dot-separated names instead.
* Missing Backends
- Haskell
- Clojure
* Missing Features
- detailed syntax errors
- type annotations - FIXED
- 'use v5' is not supported
(maybe not needed for Perlito)
- no 'state', 'constant', 'local'
- debugger
- chain operators - supported by the grammar, but no AST representation
- "loop(;;)"
- "when"
* Missing Features of the Token sub-compiler
- no quantifiers - FIXED
- no variable interpolation
- use the new precedence parser
* Nice to Have
- 'perlito-format' script (see gofmt and perltidy)
* Tests
- run some tests from the standard test suite
- use Test.pm - FIXED
* Grammar
- item-assignment precedence is different from list-assignment
- captures like: / <a> <a>* / - the first capture must share storage with the second capture
- modify the grammar to return multi-line strings as multiple strings
(this makes it easier to write a beautifier script)
- parse Namespaces as array of string (we are going to split them anyway)
- double quote variable interpolation - FIXED (without method calls)
- and expression interpolation
- the grammar should be aware of function arity
* Semantics
- @a.values and %a.keys return Array
These should return a List
- Not implemented: %a = (list)