/[papo]/papo/neb/neb/Parser.pm
ViewVC logotype

Diff of /papo/neb/neb/Parser.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by jlenton, Wed Apr 9 15:29:14 2003 UTC revision 1.3 by jlenton, Wed Apr 9 19:59:21 2003 UTC
# Line 12  my %classes = ( Perl => 1, Line 12  my %classes = ( Perl => 1,
12                  Block => 1,                  Block => 1,
13                  Vars => 1 );                  Vars => 1 );
14    
 my $i = 0;  
   
15  sub Init  sub Init
16  {  {
17      my $expat = shift;      my $expat = shift;
18      $expat->{TREE} = $expat->{PTR} = neb::Tree::Container->new;      my $obj = new neb::Tree::Container;
19        $expat->{"neb_parser_current"} = $obj;
20        $expat->{"neb_parser_stack"} = [];
21  }  }
22    
23  sub Start  sub Start
# Line 31  sub Start Line 31  sub Start
31      } else {      } else {
32          $obj = neb::Tree::Tag->new($name);          $obj = neb::Tree::Tag->new($name);
33      }      }
   
     $obj->bind_parent($expat->{PTR});  
34      $obj->attributes(@_);      $obj->attributes(@_);
35    
36      $expat->{PTR} = $obj;      $expat->{"neb_parser_current"}->add_content($obj);
37    
38        push @{$expat->{"neb_parser_stack"}}, $expat->{"neb_parser_current"};
39        $expat->{"neb_parser_current"} = $obj;
40  }  }
41    
42  sub End  sub End
43  {  {
44      my $expat = shift;      my $expat = shift;
45      my $name = shift;      my $name = shift;
46        
47      $expat->{PTR} = $expat->{PTR}->parent;      $expat->{"neb_parser_current"} = pop @{$expat->{"neb_parser_stack"}}
48  }  }
49    
50  sub Default  sub Default
# Line 51  sub Default Line 52  sub Default
52      my $expat = shift;      my $expat = shift;
53      my $stuff = shift;      my $stuff = shift;
54      my $obj = neb::Tree::Stuff->new($stuff);      my $obj = neb::Tree::Stuff->new($stuff);
55      $obj->bind_parent($expat->{PTR});      $expat->{"neb_parser_current"}->add_content($obj);
56        return $obj;
57  }  }
58    
59  sub Final  sub Final
60  {  {
61      my $expat = shift;      my $expat = shift;
62      delete $expat->{PTR};      my $result = $expat->{"neb_parser_current"};
63      return $expat->{TREE};  
64        delete $expat->{"neb_parser_stack"};
65        delete $expat->{"neb_parser_current"};
66        return $result->{CONTENT}->[0];
67  }  }
68    
69  1;  1;

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26