Gnaw

Gnaw is a perl module which implements full regular expressions and 
full text parsing grammars using nothing but pure perl code limited 
to subroutine closures, exception trapping via eval, and basic perl 
variables such as scalars, hashes, and arrays. It does not use 
regular expressions. 

You write your grammar in pure perl. There is no intermediate 
"parser language" that then gets interpreted into something 
executable. It does not use something like "Parse::RecDescent" 
to read a grammar as a text file and convert it into something 
executable. You write the grammar in pure, raw, perl code.

When you do a "use Gnaw", the Gnaw module will import a number 
of functions directly into your namespace. Yes, this is completely 
bad form for normal modules. But this is not a normal module. The 
imported subroutines include regular expression and parsing 
equivalents for matching, quantifiers, literals, alternations, 
character classes, and so on. You build up your grammar by calling 
these functions. The final call will return a code reference. This 
code reference is your grammar.

When you dereference that grammar, if it is a "match" grammar 
(i.e. $string =~ m//) then you pass in the string you want to parse.


	use Gnaw;

	# create the grammar
	my $grammar = match(lit('hello'));

	# apply the grammar to a string
	if($grammar->('hello world')) {
		print "match\n";
	} else {
		print "no match";
	}

Please note that this is a beta release. This is more of a proof of 
concept than something ready for production code or for massive 
grammars. The interfaces may change completely in the future. When 
the interfaces have settled, I will release this as a version 1.0+ 
module. Until then, please do not use this to develop some gigantic 
parser when the grammar may have to completely change.

Most importantly, the "commit" function is broken, and fixing it 
might require major rewrites. I haven't got the solution sorted out 
just yet. Not sure what will have to change to make it work. So no 
guarantees on anything when the next version comes out.

INSTALLATION

To install this module, run the following commands:

	perl Makefile.PL
	make
	make test
	make install

SUPPORT AND DOCUMENTATION

After installing, you can find documentation for this module with the
perldoc command.

    perldoc Gnaw

You can also look for information at:

    RT, CPAN's request tracker
        http://rt.cpan.org/NoAuth/Bugs.html?Dist=Gnaw

    AnnoCPAN, Annotated CPAN documentation
        http://annocpan.org/dist/Gnaw

    CPAN Ratings
        http://cpanratings.perl.org/d/Gnaw

    Search CPAN
        http://search.cpan.org/dist/Gnaw


COPYRIGHT AND LICENCE

Copyright (C) 2008 Greg London

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

