This is nice! However, the module restricts one to use only constants as array indices, required to calculate offsets, etc. So it will not handle more complicated expressions:
use Convert::Binary::C; use 5.010; my $structs = <<EOT; struct vertex { int id; double lon; double lat; }; struct arc { struct vertex from; struct vertex to; double cost; }; struct graph { struct vertex v[]; struct arc a[]; }; EOT $c = Convert::Binary::C->new; $c->parse($structs); # now we can validate say $c->typeof("graph"); # says "struct graph" say $c->typeof("graph.v[0].id"); # says "int" say $c->typeof("graph.v[graph.v[0].id].id"); # error: Array indices m +ust be constant decimal values
In reply to Re^2: C-like structures parsing and validation
by przemo
in thread C-like structures parsing and validation
by przemo
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |