/[suikacvs]/messaging/manakai/lib/Message/DOM/XMLParser.dis
Suika

Diff of /messaging/manakai/lib/Message/DOM/XMLParser.dis

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

revision 1.7 by wakaba, Sat Jan 21 17:37:51 2006 UTC revision 1.8 by wakaba, Thu Jan 26 13:58:20 2006 UTC
# Line 23  Module: Line 23  Module:
23        @@@WithFor: ManakaiDOM|ManakaiDOMLatest        @@@WithFor: ManakaiDOM|ManakaiDOMLatest
24    
25  Namespace:  Namespace:
26      @c:
27        http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#
28    @d:    @d:
29      http://suika.fam.cx/~wakaba/archive/2004/dom/xdt#      http://suika.fam.cx/~wakaba/archive/2004/dom/xdt#
30    @dis:    @dis:
31      http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--      http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--
   @DOMCore:  
     http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#  
   @DOMMain:  
     http://suika.fam.cx/~wakaba/archive/2004/dom/main#  
32    @dtest:    @dtest:
33      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#Test/      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#Test/
34    @dx:    @dx:
# Line 65  Namespace: Line 63  Namespace:
63      http://suika.fam.cx/~wakaba/archive/2004/dom/tree#      http://suika.fam.cx/~wakaba/archive/2004/dom/tree#
64    @test:    @test:
65      http://suika.fam.cx/~wakaba/archive/2004/dis/Test#      http://suika.fam.cx/~wakaba/archive/2004/dis/Test#
66      @x:
67        http://suika.fam.cx/~wakaba/archive/2004/dom/xml#
68    @xml:    @xml:
69      http://www.w3.org/XML/1998/namespace      http://www.w3.org/XML/1998/namespace
70    @xmlns:    @xmlns:
# Line 121  ResourceDef: Line 121  ResourceDef:
121    @AliasFor: d|DocumentXDoctype    @AliasFor: d|DocumentXDoctype
122    @For: ManakaiDOM|DOM    @For: ManakaiDOM|DOM
123    
124    ResourceDef:
125      @QName: DTDef
126      @AliasFor: d|DocumentTypeDefinition
127      @For: ManakaiDOM|DOM
128    
129    ResourceDef:
130      @QName: ETDef
131      @AliasFor: d|ElementTypeDefinition
132      @For: ManakaiDOM|DOM
133    
134    ResourceDef:
135      @QName: ATDef
136      @AliasFor: d|AttributeDefinition
137      @For: ManakaiDOM|DOM
138    
139  ElementTypeBinding:  ElementTypeBinding:
140    @Name: ClsDef    @Name: ClsDef
141    @ElementType:    @ElementType:
# Line 1833  _ Line 1848  _
1848          ~ (Name == 'ELEMENT') {          ~ (Name == 'ELEMENT') {
1849            &_ElementDeclaration ($doc => $doc);            &_ElementDeclaration ($doc => $doc);
1850          } (Name == 'ATTLIST') {          } (Name == 'ATTLIST') {
1851            &_AttlistDeclaration ($doc => $doc);            &_AttlistDeclaration ($doc => $doc, $doctype => $doctype);
1852          } (Name == 'ENTITY') {          } (Name == 'ENTITY') {
1853            &_EntityDeclaration ($doc => $doc);            &_EntityDeclaration ($doc => $doc);
1854          } (Name == 'NOTATION') {          } (Name == 'NOTATION') {
# Line 2013  _ Line 2028  _
2028        }        }
2029      } // ContentParticle      } // ContentParticle
2030    
2031      rule _AttlistDeclaration ($doc) {      /*
2032          Attribute list declaration
2033        */
2034        rule _AttlistDeclaration ($doc, $doctype) {
2035        // ~ (MDO) { }        // ~ (MDO) { }
2036        // ~ (Name == 'ATTLIST') { }        // ~ (Name == 'ATTLIST') { }
2037    
# Line 2021  _ Line 2039  _
2039    
2040        ~ (S) { }        ~ (S) { }
2041    
2042          my $name;
2043        ~ (Name) {        ~ (Name) {
2044            lang:Perl ($v => $token.value) {
2045              $name = $v;
2046            }
2047          } else {
2048            lang:Perl { $name = '#ILLEGAL' }
2049          }
2050    
2051          my $docxd;
2052          my $et;
2053          lang:Perl {
2054            $et = $doctype-><M::DTDef.getElementTypeDefinitionNode> ($name);
2055            unless ($et) {
2056              $docxd = $doc-><M::Node.getFeature> (<Q::ManakaiDOM:XDoctype>, '3.0');
2057              $et = $docxd-><M::DocumentXDoctype.createElementTypeDefinition>
2058                              ($name);
2059              $doctype-><M::DTDef.setElementTypeDefinitionNode> ($et)
2060                unless $name eq '#ILLEGAL';
2061            }
2062        }        }
2063        
2064        ~? (S) { }        ~? (S) { }
2065    
2066        ~* (Name) {        ~* (Name) {
2067            my $at;
2068            lang:Perl ($v => $token.value) {
2069              $docxd ||= $doc-><M::Node.getFeature>
2070                                 (<Q::ManakaiDOM:XDoctype>, '3.0');
2071              $at = $docxd-><M::DocumentXDoctype.createAttributeDefinition> ($v);
2072              $et-><M::ETDef.setAttributeDefinitionNode> ($at)
2073                unless exists $et-><AG::ETDef.attributeDefinitions>->{$v};
2074            }
2075    
2076          ~ (S) { }          ~ (S) { }
2077                    
# Line 2035  _ Line 2079  _
2079          ~ (Name == 'NOTATION') {          ~ (Name == 'NOTATION') {
2080            ~ (S) { }            ~ (S) { }
2081    
2082              my $kwd;
2083              lang:Perl {
2084                $at-><AS::ATDef.declaredType> (<C::ATDef.NOTATION_ATTR>);
2085                $kwd = $at-><AG::ATDef.allowedTokens>;
2086              }
2087    
2088            ~ (EGO) {            ~ (EGO) {
2089              ~? (S) { }              ~? (S) { }
2090    
2091              ~ (Name) {              ~+ (Name) {
2092                  lang:Perl ($v => $token.value) {
2093                    push @$kwd, $v;
2094                  }
2095    
2096                ~? (S) { }                ~? (S) { }
2097              } (OR) : separator {              } (OR) : separator {
# Line 2047  _ Line 2100  _
2100    
2101              ~ (EGC) { }              ~ (EGC) { }
2102            }            }
2103    
2104          } (Name) {          } (Name) {
2105            // TODO: check keyword            my $type;
2106              lang:Perl ($v => $token.value) : has-error {
2107                my $map = {
2108                  CDATA => <C::ATDef.CDATA_ATTR>,
2109                  ID => <C::ATDef.ID_ATTR>,
2110                  IDREF => <C::ATDef.IDREF_ATTR>,
2111                  IDREFS => <C::ATDef.IDREFS_ATTR>,
2112                  ENTITY => <C::ATDef.ENTITY_ATTR>,
2113                  ENTITIES => <C::ATDef.ENTITIES_ATTR>,
2114                  NMTOKEN => <C::ATDef.NMTOKEN_ATTR>,
2115                  NMTOKENS => <C::ATDef.NMTOKENS_ATTR>,
2116                };
2117                if ($map->{$v}) {
2118                  $at-><AS::ATDef.declaredType> ($map->{$v});
2119                } else {
2120                  ## TODO: Exception
2121                }
2122              }
2123                    
2124          } (EGO) {          } (EGO) {
2125            ?lexmode Enumeration;            ?lexmode Enumeration;
2126    
2127            ~? (S) { }            ~? (S) { }
2128    
2129            ~ (Nmtoken) {            my $kwd;
2130              lang:Perl {
2131                $at-><AS::ATDef.declaredType> (<C::ATDef.ENUMERATION_ATTR>);
2132                $kwd = $at-><AG::ATDef.allowedTokens>;
2133              }
2134    
2135              ~+ (Nmtoken) {
2136                lang:Perl ($v => $token.value) {
2137                  push @$kwd, $v;
2138                }
2139    
2140              ~? (S) { }              ~? (S) { }
2141            } (OR) : separator {            } (OR) : separator {
# Line 2075  _ Line 2155  _
2155          // DefaultDecl          // DefaultDecl
2156          ~ (RNI) {          ~ (RNI) {
2157            ~ (Name == 'REQUIRED') {            ~ (Name == 'REQUIRED') {
2158                lang:Perl {
2159                  $at-><AS::ATDef.defaultType> (<C::ATDef.REQUIRED_DEFAULT>);
2160                }
2161            } (Name == 'IMPLIED') {            } (Name == 'IMPLIED') {
2162                lang:Perl {
2163                  $at-><AS::ATDef.defaultType> (<C::ATDef.IMPLIED_DEFAULT>);
2164                }
2165            } (Name == 'FIXED') {            } (Name == 'FIXED') {
2166              ~ (S) { }              ~ (S) { }
2167    
2168                lang:Perl {
2169                  $at-><AS::ATDef.defaultType> (<C::ATDef.FIXED_DEFAULT>);
2170                }
2171                            
2172              ~ (LIT) {              ~ (LIT) {
2173                my $vals;                my $vals;
2174                lang:Perl {                lang:Perl {
2175                  $vals = [];                  $vals = {nodes => [], value => ''};
2176                }                }
2177    
2178                &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);                &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
2179    
2180                  lang:Perl {
2181                    for (@{$vals->{nodes}}) {
2182                      $at-><M::Node.appendChild> ($_);
2183                    }
2184                  }
2185    
2186                ~ (LIT) {                ~ (LIT) {
2187                  ?lexmode AttlistDeclaration;                  ?lexmode AttlistDeclaration;
2188                } else {                } else {
# Line 2097  _ Line 2191  _
2191              } (LITA) {              } (LITA) {
2192                my $vals;                my $vals;
2193                lang:Perl {                lang:Perl {
2194                  $vals = [];                  $vals = {nodes => [], value => ''};
2195                }                }
2196    
2197                &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);                &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
2198    
2199                ~ (LIT) {                lang:Perl {
2200                    for (@{$vals->{nodes}}) {
2201                      $at-><M::Node.appendChild> ($_);
2202                    }
2203                  }
2204    
2205                  ~ (LITA) {
2206                  ?lexmode AttlistDeclaration;                  ?lexmode AttlistDeclaration;
2207                } else {                } else {
2208                  ?lexmode AttlistDeclaration;                  ?lexmode AttlistDeclaration;
# Line 2113  _ Line 2213  _
2213          } (LIT) {          } (LIT) {
2214            my $vals;            my $vals;
2215            lang:Perl {            lang:Perl {
2216              $vals = [];              $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
2217                $vals = {nodes => [], value => ''};
2218            }            }
2219    
2220            &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);            &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
2221    
2222              lang:Perl {
2223                for (@{$vals->{nodes}}) {
2224                  $at-><M::Node.appendChild> ($_);
2225                }
2226              }
2227    
2228            ~ (LIT) {            ~ (LIT) {
2229              ?lexmode AttlistDeclaration;              ?lexmode AttlistDeclaration;
2230            } else {            } else {
# Line 2126  _ Line 2233  _
2233          } (LITA) {          } (LITA) {
2234            my $vals;            my $vals;
2235            lang:Perl {            lang:Perl {
2236              $vals = [];              $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
2237                $vals = {nodes => [], value => ''};
2238            }            }
2239    
2240            &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);            &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
2241    
2242              lang:Perl {
2243                for (@{$vals->{nodes}}) {
2244                  $at-><M::Node.appendChild> ($_);
2245                }
2246              }
2247    
2248            ~ (LITA) {            ~ (LITA) {
2249              ?lexmode AttlistDeclaration;              ?lexmode AttlistDeclaration;
2250            } else {            } else {
# Line 3492  _ Line 3606  _
3606              }              }
3607            }            }
3608          }          }
3609        @@XMLTest:
3610          @@@QName: xp.doctype.internal.attr.empty.test
3611          @@@DEnt:
3612            @@@@test:value:
3613              <!DOCTYPE a [
3614                <!ATTLIST a>
3615              ]>
3616              <a></a>
3617          @@@test:domTree:
3618            document {
3619              xml-version: '1.0';
3620              xml-encoding: null;
3621              xml-standalone: false;
3622              document-type {
3623                node-name: 'a';
3624                element-type-definition {
3625                  node-name: 'a';
3626                }
3627              }
3628              element {
3629                namespace-uri: null;
3630                local-name: 'a';
3631              }
3632            }
3633        @@XMLTest:
3634          @@@QName: xp.doctype.internal.attr.cdata.implied.test
3635          @@@DEnt:
3636            @@@@test:value:
3637              <!DOCTYPE a [
3638                <!ATTLIST a
3639                  at   CDATA    #IMPLIED
3640                >
3641              ]>
3642              <a></a>
3643          @@@test:domTree:
3644            document {
3645              xml-version: '1.0';
3646              xml-encoding: null;
3647              xml-standalone: false;
3648              document-type {
3649                node-name: 'a';
3650                element-type-definition {
3651                  node-name: 'a';
3652                  attribute-definition {
3653                    node-name: 'at';
3654                    declared-type: const (CDATA_ATTR);
3655                    allowed-tokens: DOMStringList ();
3656                    default-type: const (IMPLIED_DEFAULT);
3657                    text-content: '';
3658                  }
3659                }
3660              }
3661              element {
3662                namespace-uri: null;
3663                local-name: 'a';
3664              }
3665            }
3666        @@XMLTest:
3667          @@@QName: xp.doctype.internal.attr.types.implied.test
3668          @@@DEnt:
3669            @@@@test:value:
3670              <!DOCTYPE a [
3671                <!ATTLIST a
3672                  at1   ID        #IMPLIED
3673                  at2   IDREF     #IMPLIED
3674                  at3   IDREFS    #IMPLIED
3675                  at4   ENTITY    #IMPLIED
3676                  at5   ENTITIES  #IMPLIED
3677                  at6   NMTOKEN   #IMPLIED
3678                  at7   NMTOKENS  #IMPLIED
3679                  at8   NOTATION  (n1 | n2|n3)  #IMPLIED
3680                  at9   (e1| e2| e3 ) #IMPLIED
3681                >
3682              ]>
3683              <a></a>
3684          @@@test:domTree:
3685            document {
3686              xml-version: '1.0';
3687              xml-encoding: null;
3688              xml-standalone: false;
3689              document-type {
3690                node-name: 'a';
3691                element-type-definition {
3692                  node-name: 'a';
3693                  attribute-definition {
3694                    node-name: 'at1';
3695                    declared-type: const (ID_ATTR);
3696                    allowed-tokens: DOMStringList ();
3697                    default-type: const (IMPLIED_DEFAULT);
3698                    text-content: '';
3699                  }
3700                  attribute-definition {
3701                    node-name: 'at2';
3702                    declared-type: const (IDREF_ATTR);
3703                    allowed-tokens: DOMStringList ();
3704                    default-type: const (IMPLIED_DEFAULT);
3705                    text-content: '';
3706                  }
3707                  attribute-definition {
3708                    node-name: 'at3';
3709                    declared-type: const (IDREFS_ATTR);
3710                    allowed-tokens: DOMStringList ();
3711                    default-type: const (IMPLIED_DEFAULT);
3712                    text-content: '';
3713                  }
3714                  attribute-definition {
3715                    node-name: 'at4';
3716                    declared-type: const (ENTITY_ATTR);
3717                    allowed-tokens: DOMStringList ();
3718                    default-type: const (IMPLIED_DEFAULT);
3719                    text-content: '';
3720                  }
3721                  attribute-definition {
3722                    node-name: 'at5';
3723                    declared-type: const (ENTITIES_ATTR);
3724                    allowed-tokens: DOMStringList ();
3725                    default-type: const (IMPLIED_DEFAULT);
3726                    text-content: '';
3727                  }
3728                  attribute-definition {
3729                    node-name: 'at6';
3730                    declared-type: const (NMTOKEN_ATTR);
3731                    allowed-tokens: DOMStringList ();
3732                    default-type: const (IMPLIED_DEFAULT);
3733                    text-content: '';
3734                  }
3735                  attribute-definition {
3736                    node-name: 'at7';
3737                    declared-type: const (NMTOKENS_ATTR);
3738                    allowed-tokens: DOMStringList ();
3739                    default-type: const (IMPLIED_DEFAULT);
3740                    text-content: '';
3741                  }
3742                  attribute-definition {
3743                    node-name: 'at8';
3744                    declared-type: const (NOTATION_ATTR);
3745                    allowed-tokens: DOMStringList ('n1', 'n2', 'n3');
3746                    default-type: const (IMPLIED_DEFAULT);
3747                    text-content: '';
3748                  }
3749                  attribute-definition {
3750                    node-name: 'at9';
3751                    declared-type: const (ENUMERATION_ATTR);
3752                    allowed-tokens: DOMStringList ('e1', 'e2', 'e3');
3753                    default-type: const (IMPLIED_DEFAULT);
3754                    text-content: '';
3755                  }
3756                }
3757              }
3758              element {
3759                namespace-uri: null;
3760                local-name: 'a';
3761              }
3762            }
3763        @@XMLTest:
3764          @@@QName: xp.doctype.internal.attr.cdata.defaults.test
3765          @@@DEnt:
3766            @@@@test:value:
3767              <!DOCTYPE a [
3768                <!ATTLIST a
3769                  at1   CDATA    #IMPLIED
3770                  at2   CDATA    #REQUIRED
3771                  at3   CDATA    #FIXED     "value3"
3772                  at4   CDATA    "value4"
3773                  at5   CDATA    #FIXED     'value5'
3774                  at6   CDATA    'value6'
3775                >
3776              ]>
3777              <a></a>
3778          @@@test:domTree:
3779            document {
3780              xml-version: '1.0';
3781              xml-encoding: null;
3782              xml-standalone: false;
3783              document-type {
3784                node-name: 'a';
3785                element-type-definition {
3786                  node-name: 'a';
3787                  attribute-definition {
3788                    node-name: 'at1';
3789                    declared-type: const (CDATA_ATTR);
3790                    allowed-tokens: DOMStringList ();
3791                    default-type: const (IMPLIED_DEFAULT);
3792                    text-content: '';
3793                  }
3794                  attribute-definition {
3795                    node-name: 'at2';
3796                    declared-type: const (CDATA_ATTR);
3797                    allowed-tokens: DOMStringList ();
3798                    default-type: const (REQUIRED_DEFAULT);
3799                    text-content: '';
3800                  }
3801                  attribute-definition {
3802                    node-name: 'at3';
3803                    declared-type: const (CDATA_ATTR);
3804                    allowed-tokens: DOMStringList ();
3805                    default-type: const (FIXED_DEFAULT);
3806                    text-content: 'value3';
3807                  }
3808                  attribute-definition {
3809                    node-name: 'at4';
3810                    declared-type: const (CDATA_ATTR);
3811                    allowed-tokens: DOMStringList ();
3812                    default-type: const (EXPLICIT_DEFAULT);
3813                    text-content: 'value4';
3814                  }
3815                  attribute-definition {
3816                    node-name: 'at5';
3817                    declared-type: const (CDATA_ATTR);
3818                    allowed-tokens: DOMStringList ();
3819                    default-type: const (FIXED_DEFAULT);
3820                    text-content: 'value5';
3821                  }
3822                  attribute-definition {
3823                    node-name: 'at6';
3824                    declared-type: const (CDATA_ATTR);
3825                    allowed-tokens: DOMStringList ();
3826                    default-type: const (EXPLICIT_DEFAULT);
3827                    text-content: 'value6';
3828                  }
3829                }
3830              }
3831              element {
3832                namespace-uri: null;
3833                local-name: 'a';
3834              }
3835            }
3836    
3837      @@PerlDef:      @@PerlDef:
3838        my $impl = $Message::DOM::ImplementationRegistry->get_implementation ({        my $impl = $Message::DOM::ImplementationRegistry->get_implementation ({

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24