All pastes #937017 Raw Edit

Mine

public text v1 · immutable
·published 2008-03-10 19:55 UTC
rendered paste body
#!/usr/bin/perl
use strict;
use Parse::RecDescent;
use File::Slurp;
use Data::Dumper; $Data::Dumper::Indent = 1;
$::RD_HINT = 1;

my $text = read_file( 'escrima.dump' );

my $parser = Parse::RecDescent->new( <<'END_GRAMMAR' );
hex_digit: /[abcdefABCDEF0123456789]/
uuid: 'UUID: ' ( hex_digit(8) '-' hex_digit(4) '-' hex_digit(4) '-' hex_digit(4) '-' hex_digit(12) ) "\n"
number:   /\d+/
newline: /\n|\r\n|\x0A|\x0D|\x0D\x0A/

key: "K " number newline
  { print ::Dumper({%item}); my $len = $item{number}; $return = substr( $text, 0, $len, "" ); print ::Dumper([$return,$text]);}
value: "V " number newline
  { print ::Dumper({%item}); my $len = $item{number}; $return = substr( $text, 0, $len, "" ); print ::Dumper($text);}

kv_pair: key value
property_block: kv_pair(1..) 'PROPS-END' newline


dumpfile: key value

revision: revision_header "\n" property_block "\n" node(1..)
revision_header: 'Revision-number: ' number "\n" 'Prop-content-length: ' number "\n" 'Content-length: ' number "\n"
node: /.*/
END_GRAMMAR
die "Bad Grammar!" unless defined $parser;

$text = "K 7
svn:log
V 13
Inital import
"; my $foo = "
K 10
svn:author
V 6
immute
K 8
svn:date
V 27
2006-08-30T23:08:39.850827Z";

my $result = $parser->dumpfile( $text );
die "Bad Result!" unless defined $result;

print Dumper( $result );