Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 296 lines (200 sloc) 8.352 kb
8f67bea Flavio S. Glock Perlito version 8.0
authored
1 TODO list for Perlito5
2
d6cad9b Flavio S. Glock Perlito5 - TODO update
authored
3
25b8875 Flavio S. Glock Perlito5 - TODO update
authored
4 * perlito5 command-line
e4641d7 Flavio S. Glock Perlito - extensive TODO update
authored
5
6
8f67bea Flavio S. Glock Perlito version 8.0
authored
7 * libraries
8
3004b77 Flavio S. Glock Perlito5 - cleanup, update TODO
authored
9 -- these should probably go into namespace Perlito5X::*
10
ce7ce91 Flavio S. Glock Perlito - TODO update
authored
11 -- Test (implemented as Perlito5::Test)
3004b77 Flavio S. Glock Perlito5 - cleanup, update TODO
authored
12
ce7ce91 Flavio S. Glock Perlito - TODO update
authored
13 -- Data::Dumper (implemented as Perlito5::Dumper)
8f67bea Flavio S. Glock Perlito version 8.0
authored
14
24c23f7 Flavio S. Glock Perlito5 - TODO update
authored
15 -- create perlito5-specific libs for:
7aeb314 Flavio S. Glock Perlito5 - TODO update
authored
16 feature.pm
17 Config.pm
18 overload.pm
19 bytes.pm
20 integer.pm
21 constant.pm
22 lib.pm
23 Carp.pm
24 vars.pm
25 Tie::Array
26 Tie::Hash
27 Tie::Scalar
24c23f7 Flavio S. Glock Perlito5 - TODO update
authored
28
4d56b5d Flavio S. Glock Perlito5 - add $ENV{PERL5LIB} to @INC
authored
29 alternately, check $^H for strictness - such that perl's own strict.pm just works
30 and ${^WARNING_BITS} for warnings
31
8f67bea Flavio S. Glock Perlito version 8.0
authored
32
7b982c3 Flavio S. Glock Perlito5 - update TODO
authored
33 * Parser
34
634599e Flavio S. Glock Perlito5 - parser - test end of term
authored
35 -- quotes vs. hash lookups:
36
37 $ perl -e ' q}} '
38 # ok
39
40 $ perl -e ' $x{ q}} } '
41 Unmatched right curly bracket at -e line 1, at end of line
42
43 $ perl -e ' $x{ q]] } '
44 # ok
45
02db591 Flavio S. Glock Perlito5 - update TODO
authored
46 -- attributes - see: http://perldoc.perl.org/attributes.html
47
ebce10f Flavio S. Glock Perlito5 - parser: add __END__, __DATA__
authored
48 -- create __DATA__
b4f4a35 Flavio S. Glock Perlito5 - perl5: "use" is compile-time (the emitted code contains all m...
authored
49
ecbc8f4 Flavio S. Glock Perlito5 - TODO update; fix "when"
authored
50 -- "given" statement not implemented
51 -- "default" statement not implemented
52
ae33743 Flavio S. Glock Perlito5 - TODO update
authored
53 -- compile-time eval() is not bound to the "program" environment, but to the "compiler" environment instead
54 my $v;
55 BEGIN { $v = "123" }
56 use Module $v; # $v is not accessible at compile-time
7b982c3 Flavio S. Glock Perlito5 - update TODO
authored
57
529225f Flavio S. Glock Perlito5 - TODO update
authored
58 -- parse the regexes
4b486e0 Flavio S. Glock Perlito5 - javascript - fix scalar assignment context under no-strict; T...
authored
59 -- create an AST for regexes
7b982c3 Flavio S. Glock Perlito5 - update TODO
authored
60
b32dc90 Flavio S. Glock Perlito5 - update TODO
authored
61 -- prototypes (signatures)
62 --- check that undeclared barewords give the right error
61d64aa Flavio S. Glock Perlito5 - parser: rewrite operator() in "perl5-land" for later tweaking
authored
63 --- *foo = sub () { ... } # does prototype work here?
85c5759 Flavio S. Glock Perlito5 - TODO update
authored
64 --- check signature in sort()
94163c8 Flavio S. Glock perlito5 - parser - tweak TODO list
authored
65 --- fix the prototype for 'stat(*)' (see t/test.pl in the perl test suite)
fde5276 Flavio S. Glock Perlito5 - update TODO
authored
66
df66182 Flavio S. Glock Perlito5 - fix hash lookup autoquote
authored
67 -- $v{x::y} autoquotes the index when x::y() exists
68 -- $v->{x} doesn't interpolate inside double quotes
25b8875 Flavio S. Glock Perlito5 - TODO update
authored
69 -- deref inside double quotes:
70 $ node perlito5.js -Bjs -e ' my $x = "123"; my $y = \$x; print "[$$y]\n" '
71 [$[object Object]]
dc1a0ec Flavio S. Glock Perlito5 - TODO update
authored
72
73 $ node perlito5.js -MO=Deparse -e ' " $v->{x} $$v{x} " '
74 (' ' . $v . '->{x} $' . $v{'x'} . ' ');
75
529225f Flavio S. Glock Perlito5 - TODO update
authored
76
8d71fff Flavio S. Glock Perlito5 - TODO update
authored
77 -- add "print", "printf", "say" special parsing - note this is related to indirect object notation
ed23a3a Flavio S. Glock Perlito5 - TODO update
authored
78 -- indirect object notation
4b486e0 Flavio S. Glock Perlito5 - javascript - fix scalar assignment context under no-strict; T...
authored
79 http://lwn.net/Articles/451486/
b9c058b Flavio S. Glock Perlito5 - parser: add TODO; considering whether to implement indirect o...
authored
80 http://www.modernperlbooks.com/mt/2009/08/the-problems-with-indirect-object-notation.html
81 http://shadow.cat/blog/matt-s-trout/indirect-but-still-fatal/
82 http://perlbuzz.com/mechanix/2008/02/the-perils-of-perl-5s-indirect.html
83
84 method Module $param;
85 new Class( arg => $value );
86 new Class::($args);
87 say $config->{output} "This is a diagnostic message!"; # indirect call
88 say {$config->{output}} "This is a diagnostic message!"; # say to filehandle
89
90 use Class;
91 sub Class {
92 warn 'Called Class sub not Class package';
93 'Class'
94 }
95 my $q = Class->new; # calls the Class sub above
96 my $s = new Class; # throws a 'Bareword found where operator expected' error
97 my $t = Class::->new # this works
98 my $u = new Class::; # this also works (even with sub main in the current package)
99
84f4ff7 Flavio S. Glock Perlito5 - TODO update
authored
100 -- lookup for existing subroutines:
101 sub m { my @x = 8, 9; @x } $x = m(); # m() is not a "match"
102
94163c8 Flavio S. Glock perlito5 - parser - tweak TODO list
authored
103 -- clean up:
104 the several "end_tables" in Expression.pm are duplicating the function of
105 $Precedence in Precedence.pm - Expression.pm should use $Precedence directly.
2077216 Flavio S. Glock Perlito5 - add TODO
authored
106
2cc1933 Flavio S. Glock Perlito5 - TODO update
authored
107 -- add tests for fixed bugs:
108
94163c8 Flavio S. Glock perlito5 - parser - tweak TODO list
authored
109 add tests for signatures: "empty" _ $ ;$
110
111 ---
caf3b30 Flavio S. Glock perlito5 - parser - fix "sub _" should be in package "main"
authored
112 add test for "sub _" should be in package "main"
113 $ perl -MO=Deparse -e ' package X; sub _ { 123 } '
114 package X;
115 sub main::_ {
116 123;
117 }
118
119 ---
120 add test for defined-or vs. m// (2012/9/25 Конрад Боровски <notifications@github.com>)
121 Note: fixed; see test t5/01-perlito/25-syntax-defined-or.t
122
123 $ perl perlito5.pl -Isrc5/lib -Cast-perl5 -e ' shift // 2 '
124 Number or Bareword found where operator expected
125
126 $ perl perlito5.pl -Isrc5/lib -Cast-perl5 -e ' shift / 2 '
127 Can't find string terminator '/' anywhere before EOF
128
129 ---
130 add test for filetest operators special case:
2cc1933 Flavio S. Glock Perlito5 - TODO update
authored
131 ' -f($file).".bak" ' should be equivalent to -f "$file.bak"
132 parses as -(f($file)).".bak"
133 but: ' -f ($file).".bak" '
134 parses correctly
135 This seems to be because there is a rule that \w followed by '(' is a function call;
136 this needs more testing: ' ... and(2) '
dd7a160 Flavio S. Glock Perlito5 - parser: fix a bug caused by incorrect is_term state
authored
137 Test: redefine 'and', 'not' and check what works.
2cc1933 Flavio S. Glock Perlito5 - TODO update
authored
138
139 ' $s111++ + $s222 '
140 parses as (+$s222)++
141
dd7a160 Flavio S. Glock Perlito5 - parser: fix a bug caused by incorrect is_term state
authored
142 ' $step++ < $steps '
143 Can't find string terminator '>' anywhere before EOF
144
2cc1933 Flavio S. Glock Perlito5 - TODO update
authored
145
8f67bea Flavio S. Glock Perlito version 8.0
authored
146
5bb50dd Flavio S. Glock Perlito5 - update TODO
authored
147 * Perl5 backend
399a3d2 Flavio S. Glock Perlito5 - use scalar() instead of .elems()
authored
148
66ec858 Flavio S. Glock Perlito5 - TODO update
authored
149 -- check that \(@a) and \@a have different meanings
150
529225f Flavio S. Glock Perlito5 - TODO update
authored
151 -- ${^NAME} needs curly-escaping
152
85c5759 Flavio S. Glock Perlito5 - TODO update
authored
153 - fix regex delimiters, or escape the regexes
154
47374c7 Flavio S. Glock Perlito5 - perl5: fix bareblock
authored
155 -- continue block in block: ' { print 1 } continue { print 2 } '
156
7a5d100 Flavio S. Glock Perlito5 - perl5: document emitter bug (significant parenthesis)
authored
157 -- emitter bug: significant parenthesis:
158 t5/01-perlito/12-context.t fails because:
159 " return (4, 5) " instead of " return 4, 5 "
160
1d5cf89 Flavio S. Glock Perlito5 - parser: new module Perlito5::Grammar::Sigil
authored
161 -- bug: ' $$x [$y] '
162 emits as ${$x}->[$y];
163
0cc64c5 Flavio S. Glock Perlito5 - kill perl6-ish "method"
authored
164
8f67bea Flavio S. Glock Perlito version 8.0
authored
165 * Javascript backend
166
66ec858 Flavio S. Glock Perlito5 - TODO update
authored
167 -- check that \(@a) and \@a have different meanings
168
09cc8db Flavio S. Glock Perlito5 - js - add TODO for delete() special case
authored
169 -- delete() in the middle of an array turns exists() off:
170
171 $ perl -e ' @a = (3..7); delete $a[2]; print "exists ", (exists $a[$_] ? 1 : 0), "\n" for 0 .. $#a '
172 exists 1
173 exists 1
174 exists 0
175 exists 1
176 exists 1
177
3b69c4e Flavio S. Glock Perlito5 - javascript - add bug: "return" and context inside eval
authored
178 -- "or" has SCALAR context (Abigail++):
25440bb Flavio S. Glock Perlito5 - TODO update
authored
179 See: t5/01-perlito/23-eval.t
3b69c4e Flavio S. Glock Perlito5 - javascript - add bug: "return" and context inside eval
authored
180
ecbc8f4 Flavio S. Glock Perlito5 - TODO update; fix "when"
authored
181 -- "~~" operator not implemented; See also "when" implementation
182
183 -- "when" should use a "break" exception inside "given", and a "next" exception inside "for".
184
185 -- "given" statement not implemented
186 -- "default" statement not implemented
187
db64ad6 Flavio S. Glock Perlito5 - parser: "C-style" loop
authored
188 -- bug: some declarations are not "seen":
189 for ( my $i = 0; $i < 10 ; $i++ ) { print "$i\n" } # compiles to global $i
190
bb77986 Flavio S. Glock Perlito5 - parser: optimize ident() rule
authored
191 -- bug: don't emit throw() in term position; javascript requires a function() wrapper because throw() is a statement
192
9f9d0dd Flavio S. Glock Perlito5 - javascript: TODO update
authored
193 -- javascript errors don't show in the global error handler when running in node.js
7a03ff4 Flavio S. Glock Perlito5 - javascript: eval-block works
authored
194
e584da6 Flavio S. Glock Perlito5 - javascript: TODO update
authored
195 -- "autoload" the compiler if eval-string is used (eval-string needs the compiler at run-time)
196
529225f Flavio S. Glock Perlito5 - TODO update
authored
197 -- symbol variables like $] ${"main::\$"} $#_
198 -- check that @_, $_, $a, $b and other special variables are in the right context (lexical, global, package global)
199
aa5eb05 Flavio S. Glock Perlito5 - TODO update
authored
200 -- emit array/hash slices: @a[@x], @a{@x}
201
014a584 Flavio S. Glock Perlito5 - javascript: working @ISA; update Changelog, examples
authored
202 -- add alternate mro's
85c5759 Flavio S. Glock Perlito5 - TODO update
authored
203 -- cache the mro
42a3449 Flavio S. Glock Perlito5 - TODO update
authored
204
205 -- add regex compiler
206 -- /e modifier
d2169b7 Flavio S. Glock Perlito5 - t/test.pl: use cmp_ok()
authored
207 -- /x modifier
42a3449 Flavio S. Glock Perlito5 - TODO update
authored
208 -- support all perl5 regex syntax
529225f Flavio S. Glock Perlito5 - TODO update
authored
209 -- @v = /x/g
42a3449 Flavio S. Glock Perlito5 - TODO update
authored
210
887219b Flavio S. Glock Perlito5 - javascript: work around variable redeclaration bug
authored
211 -- bug: variable redeclaration does not work
212 -- javascript "var" erases the outer value within the whole current lexical scope
42a3449 Flavio S. Glock Perlito5 - TODO update
authored
213 -- bug: "my" variables - this doesn't work as expected: my $v = $v
214 possible fix: rename variables
887219b Flavio S. Glock Perlito5 - javascript: work around variable redeclaration bug
authored
215
b75827a Flavio S. Glock Perlito5 - TODO update
authored
216 -- lvalue ternary: ($a_or_b ? $a : $b) = $c;
217 -- lvalue substr()
218 -- 4-arguments substr()
78fd976 Flavio S. Glock Perlito5 - javascript: fix 3-arguments substr()
authored
219 -- pos($str)
b44f592 Flavio S. Glock Perlito5 - TODO update
authored
220 -- lvalue chomp(), chop()
78fd976 Flavio S. Glock Perlito5 - javascript: fix 3-arguments substr()
authored
221
222 -- missing some types of subroutine signatures
5b56e5b Flavio S. Glock Perlito5 - change javascript calling convention
authored
223
8f67bea Flavio S. Glock Perlito version 8.0
authored
224 -- bug: variable aliases create copies instead
225
ce36bd0 Flavio S. Glock Perlito5 - update TODO
authored
226 -- generate more compact code; maybe use more subroutines instead of inlining;
227 autovivification is probably the most verbose part of the code.
ae7ad72 Flavio S. Glock Perlito5 - update docs
authored
228
7b982c3 Flavio S. Glock Perlito5 - update TODO
authored
229 -- in the browser: implement "use" with XMLHttpRequest (what are the security implications?)
4b15a00 Flavio S. Glock Perlito5 - cleanup parenthesis
authored
230
5bb50dd Flavio S. Glock Perlito5 - update TODO
authored
231 -- add symbol tables for scalar, array and hash
1b4e7ee Flavio S. Glock Perlito5 - TODO update: typeglobs
authored
232 -- references to typeglobs:
233 $ perl -e ' print ref(\*main) '
234 GLOB
235 -- aliasing between lexicals and globals
236 $ perl -e 'use strict; my $x = 3; *main::z = \$x; print $main::z; '
237 3
5bb50dd Flavio S. Glock Perlito5 - update TODO
authored
238
71b0905 Flavio S. Glock Perlito5 - docs update
authored
239 -- string increment and string ranges
e09904a Flavio S. Glock Perlito5 - javascript: infrastructure for string increment
authored
240 See: p5str_inc()
5b56e5b Flavio S. Glock Perlito5 - change javascript calling convention
authored
241
0e5b55f Flavio S. Glock Perlito5 - update TODO
authored
242 -- finish "overload" implementation
243
0718f37 Flavio S. Glock Perlito5 - javascript: TODO update
authored
244 -- pack(), unpack()
245 -- y()()
246
b343129 Flavio S. Glock Perlito - TODO update
authored
247 -- BEGIN{} should execute in the environment of the program under compilation
88914e1 Flavio S. Glock Perlito5 - TODO update
authored
248 -- BEGIN/END that are defined inside blocks/closures need to run inside some pseudo-environment
249 even if the closure was never created or used in the first place
b343129 Flavio S. Glock Perlito - TODO update
authored
250
ad3b918 Flavio S. Glock Perlito5 - javascript: implement $AUTOLOAD variable
authored
251 -- AUTOLOAD
252 AUTOLOAD is implemented for method lookups, but not for normal subroutines
253
0cc64c5 Flavio S. Glock Perlito5 - kill perl6-ish "method"
authored
254
59477ad Flavio S. Glock Perlito - TODO update
authored
255
fb9190c Flavio S. Glock Perlito5 - TODO update
authored
256 * Nice to Have
a7ab071 Flavio S. Glock Perlito5 - add TODO
authored
257
3c87580 Flavio S. Glock Perlito - TODO update
authored
258 -- debugging symbols
259 -- line numbers in error messages
260
8f60cb4 Flavio S. Glock Perlito5 - TODO update
authored
261 -- caller()
262 -- "when"
465ee11 Flavio S. Glock Perlito5 - TODO update
authored
263
fb9190c Flavio S. Glock Perlito5 - TODO update
authored
264 -- run more of the "perl" test suite
0cc64c5 Flavio S. Glock Perlito5 - kill perl6-ish "method"
authored
265
71b0905 Flavio S. Glock Perlito5 - docs update
authored
266 -- proper "use strict" and "use warnings"
1b2eecc Flavio S. Glock Perlito5 - use @ARGV instead of @*ARGS
authored
267 -- use the same error messages and warnings as 'perl'
42a3449 Flavio S. Glock Perlito5 - TODO update
authored
268 -- no warnings 'redefine';
1b2eecc Flavio S. Glock Perlito5 - use @ARGV instead of @*ARGS
authored
269
ebce10f Flavio S. Glock Perlito5 - parser: add __END__, __DATA__
authored
270 -- __LINE__, __FILE__
f4910a7 Flavio S. Glock Perlito5 - TODO update
authored
271
b343129 Flavio S. Glock Perlito - TODO update
authored
272 -- INIT{}, END{}
273 look at the implementation in perlito6-in-Go
f4910a7 Flavio S. Glock Perlito5 - TODO update
authored
274
4b15a00 Flavio S. Glock Perlito5 - cleanup parenthesis
authored
275 -- source code - remove Perl 6 code such as "token"
71b0905 Flavio S. Glock Perlito5 - docs update
authored
276 (fixed: This is only loaded if the grammar compiler is needed)
4b15a00 Flavio S. Glock Perlito5 - cleanup parenthesis
authored
277
61d64aa Flavio S. Glock Perlito5 - parser: rewrite operator() in "perl5-land" for later tweaking
authored
278 -- *{ $name }{CODE}->();
279
280 -- local(*{$caller."::a"}) = \my $a;
6217752 Flavio S. Glock Perlito5 - docs update
authored
281 -- *{$pkg . "::foo"} = \&bar;
61d64aa Flavio S. Glock Perlito5 - parser: rewrite operator() in "perl5-land" for later tweaking
authored
282
283
d6cad9b Flavio S. Glock Perlito5 - TODO update
authored
284
285 * Deprecate
286
287 -- remove unused features from src5/lib/Perlito5/Grammar/Regex.pm
288
289 -- Interpreter backend
290 this is not being maintained; the code is still in src5/lib/Perlito5/Eval.pm just in case
291
292 -- Perl6 backend (started)
293 this is not being maintained; not sure if compiling to Perl6 is the best way
294 maybe compiling directly to Parrot/dotnet/Haskell gives better results
295
Something went wrong with that request. Please try again.