Skip to content

HTTPS clone URL

Subversion checkout URL

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