# $Id: TODO.pod 11501 2006-02-10 18:27:13Z particle $

=head1 Documentation

=over

=item Prepare slides

=back

=head1 Internal

=over

=item For matching use PGE instead of PCRE.

=back

=head1 Testing

=over

=item Modify 'output_is' such that GNU m4 is only tested when available.

=item Add tests for new features

=item Add test for dumping frozen file

=back

=head1 Features

The features that need to be implemented are arranged
by chapters in the GNU m4 documentation.

=head2 Chapter 1 Introduction and preliminaries

=over

=item read from STDIN, when no file is passed

=item Add some tests with Autoconf macros

=item Parsing of short options

=item recognize unambigous long options

=item Option -G or --traditional

=item Option -E or --fatal-warnings

=item Option -d or --debug

=item Option -l or --arglength

=item Option -o or --error-output

=item Option -I or --include

=item Option -e or --interactive

=item Option -s or --synclines

=item Option -P or --prefix-builtins

=item Option -W or --word-regexp

=item Option -H or --hash-size

=item Option -L or --nesting-limit

=item Option -Q or --quiet or --silent

=item Option -B, -S, -T

=item Option -N or --diversions

=item Option -D or --define

=item Option -U or --undefine

=item Option -t or --trace

=back

=head2 Chapter 2 Lexical and syntactic conventions

=over

=item Nested quoted strings

=back

=head2 Chapter 3 How to invoke macros

=over

=item Option -P or --prefix-builtins

=item trailing whitespace in macro calls

=item warnings for inappropriate number of arguments

=item implement option '--changeword'

=item recognize unquoted parenthesis in macros

=back

=head2 Chapter 4 How to define new macros

=over

=item implement indirect macro calls

=item implement 'pushdef' and 'popdef'

=item implement 'defn'

=item Do 'input_stack' properly

=item Special arguments to macros

=back

=head2 Chapter 5 Conditionals, loops and recursion

=over

=item implement 'shift' 

=item implement 'ifelse' used as switch

=item Write tests with recursion

=back

=head2 Chapter 6 How to debug macros and input

=over

=item implement macro 'dumpdef'

=item Implement debugging options 

=item implement tracing

=item implement 'debugfile'

=back

=head2 Chapter 7 Input control

=over

=item everything

=back

=head2 Chapter 8 File inclusions

=over

=item File inclusion

=item include path

=item implement 'include'

=item implement 'sinclude'

=back

=head2 Chapter 9 Diverting and undiverting output

=over

=item Diversions

=back

=head2 Chapter 10 Macros for text handling

=over

=item macro b<translit> add as an op or port from GNU m4

=item macros b<regexp> and b<patsubst> POSIX regexes 

=back

=head2 Chapter 11 Macros for doing arithmetic

=over

=item incr, decr of large numbers

=item radix support for `eval'

=back

=head2 Chapter 12 Running UNIX commands

=over

=item Why isn't there a 'system' in Parrot?

=item names for temporary files

=back

=head2 Chapter 13 Micellaneous builtin Functions

=over

=item Macro b<__file__>

=item Macro b<__line__>

=back

=head2 Chapter 14 Fast loading of frozen states

=over

=item Needs to be fixed, as the rx_* ops are gone

=item more tests

=back

=head2 Chapter 15 Compatability with other versions of m4

=over

=item Document the differences between Parrot m4 and GNU m4

=back
