- Timestamp:
- Mar 14, 2005, 6:44:01 PM (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/PS-IPP-Metadata-Config/lib/PS/IPP/Metadata/Config.pm
r3395 r3422 1 1 # Copyright (c) 2005 Joshua Hoblitt 2 2 # 3 # $Id: Config.pm,v 1. 3 2005-03-09 23:44:18jhoblitt Exp $3 # $Id: Config.pm,v 1.4 2005-03-15 04:44:01 jhoblitt Exp $ 4 4 5 5 package PS::IPP::Metadata::Config; … … 25 25 my $class = shift; 26 26 27 my $myparser = Parse::RecDescent->new( $grammar ); 28 29 my $self = { _parser => $myparser }; 27 my $self = {}; 30 28 31 29 bless $self, $class; … … 39 37 my ( $self, $metadata ) = @_; 40 38 41 my $tree = $self->{_parser}->startrule( $metadata );39 my $tree = Parse::RecDescent->new( $grammar )->startrule( $metadata ); 42 40 43 41 return undef unless defined $tree; … … 203 201 | metadata 204 202 | blank_line 205 # | { 206 # use Carp qw( croak ); 207 # $text =~ /([^\n]*)/; 208 # croak "Invalid statement at line $thisline near \"$1\""; 209 # } 203 | typedef_declare 204 | typedef 210 205 211 206 scalar: … … 260 255 261 256 metadata: 262 metadata_name grammar metadata_end257 metadata_name <commit> grammar metadata_end 263 258 {{ 264 259 class => 'metadata', … … 273 268 comment => $item{comment}, 274 269 }} 270 271 typedef_declare: 272 <skip:'[ \t\r]*'> 'TYPE' <commit> name name(s) "\n" 273 { 274 use Carp; 275 276 my $len = scalar @{ $item{'name(s)'} }; 277 278 if (defined $thisparser->{local}{typedef}{ $item{name} }) { 279 croak "refinition of TYPE $item{name}"; 280 } 281 282 $thisparser->{local}{typedef}{ $item{name} } = $len; 283 284 $return = { 285 class => 'typedef_declare', 286 name => $item{name}, 287 value => $item{'name(s)'}, 288 }; 289 } 290 | <skip:'[ \t\r]*'> 'TYPE' <commit> name name(s) comment "\n" 291 {{ 292 class => 'typedef_declare', 293 name => $item{name}, 294 value => $item{'name(s)'}, 295 comment => $item{comment}, 296 }} 297 298 typedef: 299 <skip:'[ \t\r]*'> name typedef_type name(s) "\n" 300 { 301 $return = { 302 class => 'typedef', 303 name => $item{name}, 304 type => $item{typedef_type}, 305 value => $item{'name(s)'}, 306 }; 307 } 308 309 typedef_type: name 310 { 311 use Carp; 312 313 if ( ! defined $thisparser->{local}{typedef}{ $item{name} } ) { 314 croak "missing TYPE defintion for $item{name}"; 315 } 316 317 $return = $item{name}; 318 } 275 319 276 320 metadata_name: … … 286 330 287 331 name: 288 /[a-z][.\w ]*/i332 /[a-z][.\w-]*/i 289 333 290 334 vname:
Note:
See TracChangeset
for help on using the changeset viewer.
