parser
author "Tomas Zeman <tzeman@volny.cz>"
Sun, 15 Nov 2009 22:52:18 +0100
changeset 11 c170b1da9b6e
parent 9 837e0e828d06
child 17 d39ff14a8964
permissions -rw-r--r--
cisco.grammar: refactored to use indentation markers fro proper in-section parsing; more controller, interface properties

#!/usr/bin/perl -w

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

my $grammar_file = shift;
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);

#print Dumper $p_res;

print Dumper $::res;