A liberalised re-implementation of cpp, the C pre-processor