Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100755 233 lines (149 sloc) 6.081 kb
8f67bea @fglock Perlito version 8.0
authored
1 TODO list for Perlito5
2
d6cad9b @fglock Perlito5 - TODO update
authored
3
25b8875 @fglock Perlito5 - TODO update
authored
4 * perlito5 command-line
e4641d7 @fglock Perlito - extensive TODO update
authored
5
6318642 @fglock Perlito5 - ChangeLog/TODO update
authored
6 -- search for modules in PERL5LIB
7 perlito5 own directories must be searched first (perlito5 defines it's own strict.pm)
8 maybe search PERLITO5LIB first
9 alternately, check $^H for strictness - such that perl's own strict.pm just works
10 and ${^WARNING_BITS} for warnings
e4641d7 @fglock Perlito - extensive TODO update
authored
11
12
c07de6d @fglock Perlito5 - TODO update
authored
13 * basic functionality
14
0718f37 @fglock Perlito5 - javascript: TODO update
authored
15 -- add "print" special parsing
16
0cc64c5 @fglock Perlito5 - kill perl6-ish "method"
authored
17
8f67bea @fglock Perlito version 8.0
authored
18 * libraries
19
3004b77 @fglock Perlito5 - cleanup, update TODO
authored
20 -- these should probably go into namespace Perlito5X::*
21
ce7ce91 @fglock Perlito - TODO update
authored
22 -- Test (implemented as Perlito5::Test)
3004b77 @fglock Perlito5 - cleanup, update TODO
authored
23
ce7ce91 @fglock Perlito - TODO update
authored
24 -- Data::Dumper (implemented as Perlito5::Dumper)
8f67bea @fglock Perlito version 8.0
authored
25
24c23f7 @fglock Perlito5 - TODO update
authored
26 -- create perlito5-specific libs for:
7aeb314 @fglock Perlito5 - TODO update
authored
27 feature.pm
28 Config.pm
29 overload.pm
30 bytes.pm
31 integer.pm
32 constant.pm
33 lib.pm
34 Carp.pm
35 vars.pm
36 Tie::Array
37 Tie::Hash
38 Tie::Scalar
24c23f7 @fglock Perlito5 - TODO update
authored
39
8f67bea @fglock Perlito version 8.0
authored
40
7b982c3 @fglock Perlito5 - update TODO
authored
41 * Parser
42
ecbc8f4 @fglock Perlito5 - TODO update; fix "when"
authored
43 -- "given" statement not implemented
44 -- "default" statement not implemented
45
e6b5e6d @fglock Perlito5 - TODO update
authored
46 -- clean up:
47 the several "end_tables" in Expression.pm are duplicating the function of
48 $Precedence in Precedence.pm - Expression.pm should use $Precedence directly.
49
2cc1933 @fglock Perlito5 - TODO update
authored
50 -- bug: ' $$x [$y] '
51 parses as ${$x}->[$y];
8a7d342 @fglock Perlito5 - parser: fix filetest operator precedence
authored
52
8f60cb4 @fglock Perlito5 - TODO update
authored
53 -- ' 123 456 ' should be a syntax error (parses as two statements)
54 -- ' $# ' should be a syntax error (parses as $#{undef} )
55 -- ' $x->meth 123 ' should be a syntax error
2700363 @fglock Perlito5 - TODO update
authored
56
57 -- fix the prototype for 'stat(*)' (see t/test.pl in the perl test suite)
00a6251 @fglock Perlito5 - javascript: optimize array literals
authored
58
ae33743 @fglock Perlito5 - TODO update
authored
59 -- compile-time eval() is not bound to the "program" environment, but to the "compiler" environment instead
60 my $v;
61 BEGIN { $v = "123" }
62 use Module $v; # $v is not accessible at compile-time
7b982c3 @fglock Perlito5 - update TODO
authored
63
529225f @fglock Perlito5 - TODO update
authored
64 -- parse the regexes
7b982c3 @fglock Perlito5 - update TODO
authored
65
b32dc90 @fglock Perlito5 - update TODO
authored
66 -- prototypes (signatures)
67 --- done: "empty" _ $ ;$
68 --- check that undeclared barewords give the right error
61d64aa @fglock Perlito5 - parser: rewrite operator() in "perl5-land" for later tweaking
authored
69 --- *foo = sub () { ... } # does prototype work here?
85c5759 @fglock Perlito5 - TODO update
authored
70 --- check signature in sort()
fde5276 @fglock Perlito5 - update TODO
authored
71
0464e31 @fglock Perlito5 - use perl5 array/hash in perl5 backend
authored
72 -- check that \(@a) and \@a have different meanings
7b982c3 @fglock Perlito5 - update TODO
authored
73
ce7ce91 @fglock Perlito - TODO update
authored
74 -- parse "local $x[1]"
7a03ff4 @fglock Perlito5 - javascript: eval-block works
authored
75 -- parse local $@
ce7ce91 @fglock Perlito - TODO update
authored
76
df66182 @fglock Perlito5 - fix hash lookup autoquote
authored
77 -- $v{x::y} autoquotes the index when x::y() exists
78 -- $v->{x} doesn't interpolate inside double quotes
25b8875 @fglock Perlito5 - TODO update
authored
79 -- deref inside double quotes:
80 $ node perlito5.js -Bjs -e ' my $x = "123"; my $y = \$x; print "[$$y]\n" '
81 [$[object Object]]
529225f @fglock Perlito5 - TODO update
authored
82
ed23a3a @fglock Perlito5 - TODO update
authored
83 -- indirect object notation
84 method Module $param;
84f4ff7 @fglock Perlito5 - TODO update
authored
85 -- lookup for existing subroutines:
86 sub m { my @x = 8, 9; @x } $x = m(); # m() is not a "match"
87
2cc1933 @fglock Perlito5 - TODO update
authored
88 -- add tests for fixed bugs:
89
90 filetest operators special case:
91 ' -f($file).".bak" ' should be equivalent to -f "$file.bak"
92 parses as -(f($file)).".bak"
93 but: ' -f ($file).".bak" '
94 parses correctly
95 This seems to be because there is a rule that \w followed by '(' is a function call;
96 this needs more testing: ' ... and(2) '
dd7a160 @fglock Perlito5 - parser: fix a bug caused by incorrect is_term state
authored
97 Test: redefine 'and', 'not' and check what works.
2cc1933 @fglock Perlito5 - TODO update
authored
98
99 ' $s111++ + $s222 '
100 parses as (+$s222)++
101
dd7a160 @fglock Perlito5 - parser: fix a bug caused by incorrect is_term state
authored
102 ' $step++ < $steps '
103 Can't find string terminator '>' anywhere before EOF
104
2cc1933 @fglock Perlito5 - TODO update
authored
105
8f67bea @fglock Perlito version 8.0
authored
106
5bb50dd @fglock Perlito5 - update TODO
authored
107 * Perl5 backend
399a3d2 @fglock Perlito5 - use scalar() instead of .elems()
authored
108
529225f @fglock Perlito5 - TODO update
authored
109 -- ${^NAME} needs curly-escaping
110
85c5759 @fglock Perlito5 - TODO update
authored
111 - fix regex delimiters, or escape the regexes
112
47374c7 @fglock Perlito5 - perl5: fix bareblock
authored
113 -- continue block in block: ' { print 1 } continue { print 2 } '
114
0cc64c5 @fglock Perlito5 - kill perl6-ish "method"
authored
115
8f67bea @fglock Perlito version 8.0
authored
116 * Javascript backend
117
ecbc8f4 @fglock Perlito5 - TODO update; fix "when"
authored
118 -- "~~" operator not implemented; See also "when" implementation
119
120 -- "when" should use a "break" exception inside "given", and a "next" exception inside "for".
121
122 -- "given" statement not implemented
123 -- "default" statement not implemented
124
db64ad6 @fglock Perlito5 - parser: "C-style" loop
authored
125 -- bug: some declarations are not "seen":
126 for ( my $i = 0; $i < 10 ; $i++ ) { print "$i\n" } # compiles to global $i
127
bb77986 @fglock Perlito5 - parser: optimize ident() rule
authored
128 -- bug: don't emit throw() in term position; javascript requires a function() wrapper because throw() is a statement
129
9f2a7d3 @fglock Perlito5 - TODO update
authored
130 -- initialize @INC from $ENV{PERL5LIB}
131
9f9d0dd @fglock Perlito5 - javascript: TODO update
authored
132 -- javascript errors don't show in the global error handler when running in node.js
7a03ff4 @fglock Perlito5 - javascript: eval-block works
authored
133
e584da6 @fglock Perlito5 - javascript: TODO update
authored
134 -- "autoload" the compiler if eval-string is used (eval-string needs the compiler at run-time)
135
529225f @fglock Perlito5 - TODO update
authored
136 -- symbol variables like $] ${"main::\$"} $#_
137 -- check that @_, $_, $a, $b and other special variables are in the right context (lexical, global, package global)
138
aa5eb05 @fglock Perlito5 - TODO update
authored
139 -- emit array/hash slices: @a[@x], @a{@x}
140
014a584 @fglock Perlito5 - javascript: working @ISA; update Changelog, examples
authored
141 -- add alternate mro's
85c5759 @fglock Perlito5 - TODO update
authored
142 -- cache the mro
42a3449 @fglock Perlito5 - TODO update
authored
143
144 -- add regex compiler
145 -- /e modifier
d2169b7 @fglock Perlito5 - t/test.pl: use cmp_ok()
authored
146 -- /x modifier
42a3449 @fglock Perlito5 - TODO update
authored
147 -- support all perl5 regex syntax
529225f @fglock Perlito5 - TODO update
authored
148 -- @v = /x/g
42a3449 @fglock Perlito5 - TODO update
authored
149
887219b @fglock Perlito5 - javascript: work around variable redeclaration bug
authored
150 -- bug: variable redeclaration does not work
151 -- javascript "var" erases the outer value within the whole current lexical scope
42a3449 @fglock Perlito5 - TODO update
authored
152 -- bug: "my" variables - this doesn't work as expected: my $v = $v
153 possible fix: rename variables
887219b @fglock Perlito5 - javascript: work around variable redeclaration bug
authored
154
b75827a @fglock Perlito5 - TODO update
authored
155 -- lvalue ternary: ($a_or_b ? $a : $b) = $c;
156 -- lvalue substr()
157 -- 4-arguments substr()
78fd976 @fglock Perlito5 - javascript: fix 3-arguments substr()
authored
158 -- pos($str)
159
160 -- missing some types of subroutine signatures
5b56e5b @fglock Perlito5 - change javascript calling convention
authored
161
8f67bea @fglock Perlito version 8.0
authored
162 -- bug: variable aliases create copies instead
163
ce36bd0 @fglock Perlito5 - update TODO
authored
164 -- generate more compact code; maybe use more subroutines instead of inlining;
165 autovivification is probably the most verbose part of the code.
ae7ad72 @fglock Perlito5 - update docs
authored
166
7b982c3 @fglock Perlito5 - update TODO
authored
167 -- in the browser: implement "use" with XMLHttpRequest (what are the security implications?)
4b15a00 @fglock Perlito5 - cleanup parenthesis
authored
168
5bb50dd @fglock Perlito5 - update TODO
authored
169 -- add symbol tables for scalar, array and hash
170
71b0905 @fglock Perlito5 - docs update
authored
171 -- string increment and string ranges
e09904a @fglock Perlito5 - javascript: infrastructure for string increment
authored
172 See: p5str_inc()
5b56e5b @fglock Perlito5 - change javascript calling convention
authored
173
0e5b55f @fglock Perlito5 - update TODO
authored
174 -- finish "overload" implementation
175
0718f37 @fglock Perlito5 - javascript: TODO update
authored
176 -- pack(), unpack()
177 -- sprintf()
178 -- y()()
179
b343129 @fglock Perlito - TODO update
authored
180 -- BEGIN{} should execute in the environment of the program under compilation
181
0cc64c5 @fglock Perlito5 - kill perl6-ish "method"
authored
182
fb9190c @fglock Perlito5 - TODO update
authored
183 * More backends
8f67bea @fglock Perlito version 8.0
authored
184
fb9190c @fglock Perlito5 - TODO update
authored
185 -- Python backend
d6cad9b @fglock Perlito5 - TODO update
authored
186 reuse the Perlito6 implementation
8f67bea @fglock Perlito version 8.0
authored
187
fb9190c @fglock Perlito5 - TODO update
authored
188 -- Ruby backend
d6cad9b @fglock Perlito5 - TODO update
authored
189 reuse the Perlito6 implementation
0cc64c5 @fglock Perlito5 - kill perl6-ish "method"
authored
190
fb9190c @fglock Perlito5 - TODO update
authored
191 -- Java backend
d6cad9b @fglock Perlito5 - TODO update
authored
192 not sure if this is a good idea; other dynamic languages are reported slow in JVM
0cc64c5 @fglock Perlito5 - kill perl6-ish "method"
authored
193
59477ad @fglock Perlito - TODO update
authored
194
fb9190c @fglock Perlito5 - TODO update
authored
195 * Nice to Have
a7ab071 @fglock Perlito5 - add TODO
authored
196
8f60cb4 @fglock Perlito5 - TODO update
authored
197 -- caller()
198 -- "when"
465ee11 @fglock Perlito5 - TODO update
authored
199
fb9190c @fglock Perlito5 - TODO update
authored
200 -- run more of the "perl" test suite
0cc64c5 @fglock Perlito5 - kill perl6-ish "method"
authored
201
71b0905 @fglock Perlito5 - docs update
authored
202 -- proper "use strict" and "use warnings"
1b2eecc @fglock Perlito5 - use @ARGV instead of @*ARGS
authored
203 -- use the same error messages and warnings as 'perl'
42a3449 @fglock Perlito5 - TODO update
authored
204 -- no warnings 'redefine';
1b2eecc @fglock Perlito5 - use @ARGV instead of @*ARGS
authored
205
03f0a3d @fglock Perlito5 - javascript: add __PACKAGE__
authored
206 -- __END__, __LINE__, __DATA__, __FILE__
f4910a7 @fglock Perlito5 - TODO update
authored
207
b343129 @fglock Perlito - TODO update
authored
208 -- INIT{}, END{}
209 look at the implementation in perlito6-in-Go
f4910a7 @fglock Perlito5 - TODO update
authored
210
4b15a00 @fglock Perlito5 - cleanup parenthesis
authored
211 -- source code - remove Perl 6 code such as "token"
71b0905 @fglock Perlito5 - docs update
authored
212 (fixed: This is only loaded if the grammar compiler is needed)
4b15a00 @fglock Perlito5 - cleanup parenthesis
authored
213
61d64aa @fglock Perlito5 - parser: rewrite operator() in "perl5-land" for later tweaking
authored
214 -- *{ $name }{CODE}->();
215
216 -- local(*{$caller."::a"}) = \my $a;
6217752 @fglock Perlito5 - docs update
authored
217 -- *{$pkg . "::foo"} = \&bar;
61d64aa @fglock Perlito5 - parser: rewrite operator() in "perl5-land" for later tweaking
authored
218
219 -- AUTOLOAD
220
d6cad9b @fglock Perlito5 - TODO update
authored
221
222 * Deprecate
223
224 -- remove unused features from src5/lib/Perlito5/Grammar/Regex.pm
225
226 -- Interpreter backend
227 this is not being maintained; the code is still in src5/lib/Perlito5/Eval.pm just in case
228
229 -- Perl6 backend (started)
230 this is not being maintained; not sure if compiling to Perl6 is the best way
231 maybe compiling directly to Parrot/dotnet/Haskell gives better results
232
Something went wrong with that request. Please try again.