parser
author "Tomas Zeman <tzeman@volny.cz>"
Fri, 27 Nov 2009 23:12:41 +0100
changeset 17 d39ff14a8964
parent 9 837e0e828d06
child 18 8d541766cd1f
permissions -rw-r--r--
parser: store result via Storable if requested

#!/usr/bin/perl -w

use strict;
use Parse::RecDescent;
use Data::Dumper;
use Storable;

my $grammar_file = shift;
my $storable = shift; # optional
unless (defined $grammar_file) {
	print "Usage: $0 grammar_file\n";
	exit 1;
}

unless (-f $grammar_file) {
	die "Grammar file $grammar_file does not exit";
}

my $grammar = '';
{
	open G, $grammar_file;
	local $/;
	$grammar = <G>;
	close G;
}

# Enable warnings within the Parse::RecDescent module.
$::RD_ERRORS = 1; # Make sure the parser dies when it encounters an error
$::RD_WARN   = 1; # Enable warnings. This will warn on unused rules &c.
$::RD_HINT   = 1; # Give out hints to help fix problems.

my $parser = Parse::RecDescent->new($grammar);

my $content = '';
{
	local $/;
	$content = <>;
}

$::res = {};
my $p_res = $parser->file($content);
store($::res, $storable) if (defined $storable && length($storable) > 0);
print Dumper $::res;