parrotcode:
Untitled
Contents
|
Language Implementations
|
M4
Documentation
Prepare slides
Testing
Modify 'output_is' such that GNU m4 is only tested when available.
Add tests for new features
Add test for dumping frozen file
Perl5
Create module Language::m4 or Text::m4
Test with Perl 5.005
Features
The features that need to be implemented are arranged by chapters in the GNU m4 documentation.
Chapter 1 Introduction and preliminaries
read from STDIN, when no file is passed
Add some tests with Autoconf macros
Parsing of short options
recognize unambigous long options
Option -G or --traditional
Option -E or --fatal-warnings
Option -d or --debug
Option -l or --arglength
Option -o or --error-output
Option -I or --include
Option -e or --interactive
Option -s or --synclines
Option -P or --prefix-builtins
Option -W or --word-regexp
Option -H or --hash-size
Option -L or --nesting-limit
Option -Q or --quiet or --silent
Option -B, -S, -T
Option -N or --diversions
Option -D or --define
Option -U or --undefine
Option -t or --trace
Chapter 2 Lexical and syntactic conventions
Nested quoted strings
Chapter 3 How to invoke macros
Option -P or --prefix-builtins
trailing whitespace in macro calls
warnings for inappropriate number of arguments
implement option '--changeword'
recognize unquoted parenthesis in macros
Chapter 4 How to define new macros
implement indirect macro calls
implement 'pushdef' and 'popdef'
implement 'defn'
Do 'input_stack' properly
Special arguments to macros
Chapter 5 Conditionals, loops and recursion
implement 'shift'
implement 'ifelse' used as switch
Write tests with recursion
Chapter 6 How to debug macros and input
implement macro 'dumpdef'
Implement debugging options
implement tracing
implement 'debugfile'
Chapter 7 Input control
everything
Chapter 8 File inclusions
File inclusion
include path
implement 'include'
implement 'sinclude'
Chapter 9 Diverting and undiverting output
Diversions
Chapter 10 Macros for text handling
macro b<translit> add as an op or port from GNU m4
macros b<regexp> and b<patsubst> POSIX regexes
Chapter 11 Macros for doing arithmetic
incr, decr of large numbers
radix support for `eval'
Chapter 12 Running UNIX commands
Why isn't there a 'system' in Parrot?
names for temporary files
Chapter 13 Micellaneous builtin Functions
Macro b<__file__>
Macro b<__line__>
Chapter 14 Fast loading of frozen states
more tests
Chapter 15 Compatability with other versions of m4
Document the differences between Parrot m4 and GNU m4