Thread Parsing von BNF (14 answers)
Opened by weismat at 2006-12-06 15:02

topeg
 2006-12-07 18:44
#72284 #72284
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;

my $data='{key1={key11=value11} | key2 = value2 | key3 = {key31=value31 | key32 = value32 | key33 = {key331=value331|key332={key3321=value3321|key3322=value3322|key3321=value3322}|key333=value333|key334=value334}}}';

package BNF;
sub encode($)
{
my $data=shift(@_);
my $rcu;
$rcu=sub
{
my $ref;
if($data=~s/^\s*\{//s)
{
$ref={};
while(index($data,'}')!=0)
{
$data=~s/^[\|\s]*(.+?)\s*=//s;
my $n=$1;
$ref->{$n}=$rcu->();
}
$data=~s/^}//;
}
else
{
$data=~s/^\s*(.+?)\s*(\||\})/$2/s;
$ref=$1;
}
return $ref;
};
return $rcu->();
}
package main;

print Dumper(BNF::encode($data))."\n";

Und was funktioniert nicht?

View full thread Parsing von BNF