/[suikacvs]/markup/html/whatpm/Whatpm/HTML/Tokenizer.pm.src
Suika

Diff of /markup/html/whatpm/Whatpm/HTML/Tokenizer.pm.src

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

revision 1.16 by wakaba, Sat Oct 18 11:34:49 2008 UTC revision 1.17 by wakaba, Sun Oct 19 04:39:25 2008 UTC
# Line 3632  sub _get_next_token ($) { Line 3632  sub _get_next_token ($) {
3632          $self->{state} = MD_HYPHEN_STATE;          $self->{state} = MD_HYPHEN_STATE;
3633          !!!next-input-character;          !!!next-input-character;
3634          redo A;          redo A;
3635        } elsif ($self->{nc} == 0x0045) { # E        } elsif ($self->{nc} == 0x0045 or # E
3636                   $self->{nc} == 0x0065) { # e
3637          $self->{state} = MD_E_STATE;          $self->{state} = MD_E_STATE;
3638          $self->{kwd} = chr $self->{nc};          $self->{kwd} = chr $self->{nc};
3639          !!!next-input-character;          !!!next-input-character;
3640          redo A;          redo A;
3641        } elsif ($self->{nc} == 0x0041) { # A        } elsif ($self->{nc} == 0x0041 or # A
3642                   $self->{nc} == 0x0061) { # a
3643          $self->{state} = MD_ATTLIST_STATE;          $self->{state} = MD_ATTLIST_STATE;
3644          $self->{kwd} = chr $self->{nc};          $self->{kwd} = chr $self->{nc};
3645          !!!next-input-character;          !!!next-input-character;
3646          redo A;          redo A;
3647        } elsif ($self->{nc} == 0x004E) { # N        } elsif ($self->{nc} == 0x004E or # N
3648                   $self->{nc} == 0x006E) { # n
3649          $self->{state} = MD_NOTATION_STATE;          $self->{state} = MD_NOTATION_STATE;
3650          $self->{kwd} = chr $self->{nc};          $self->{kwd} = chr $self->{nc};
3651          !!!next-input-character;          !!!next-input-character;
# Line 3660  sub _get_next_token ($) { Line 3663  sub _get_next_token ($) {
3663        $self->{ct} = {type => COMMENT_TOKEN, data => ''}; ## Will be discarded.        $self->{ct} = {type => COMMENT_TOKEN, data => ''}; ## Will be discarded.
3664        redo A;        redo A;
3665      } elsif ($self->{state} == MD_E_STATE) {      } elsif ($self->{state} == MD_E_STATE) {
3666        if ($self->{nc} == 0x004E) { # N        if ($self->{nc} == 0x004E or # N
3667              $self->{nc} == 0x006E) { # n
3668          $self->{state} = MD_ENTITY_STATE;          $self->{state} = MD_ENTITY_STATE;
3669          $self->{kwd} .= chr $self->{nc};          $self->{kwd} .= chr $self->{nc};
3670          !!!next-input-character;          !!!next-input-character;
3671          redo A;          redo A;
3672        } elsif ($self->{nc} == 0x004C) { # L        } elsif ($self->{nc} == 0x004C or # L
3673                   $self->{nc} == 0x006C) { # l
3674          ## XML5: <!ELEMENT> not supported.          ## XML5: <!ELEMENT> not supported.
3675          $self->{state} = MD_ELEMENT_STATE;          $self->{state} = MD_ELEMENT_STATE;
3676          $self->{kwd} .= chr $self->{nc};          $self->{kwd} .= chr $self->{nc};
# Line 3683  sub _get_next_token ($) { Line 3688  sub _get_next_token ($) {
3688          redo A;          redo A;
3689        }        }
3690      } elsif ($self->{state} == MD_ENTITY_STATE) {      } elsif ($self->{state} == MD_ENTITY_STATE) {
3691        if ($self->{nc} == {        if ($self->{nc} == [
3692              'EN' => 0x0054, # T              undef,
3693              'ENT' => 0x0049, # I              undef,
3694              'ENTI' => 0x0054, # T              0x0054, # T
3695            }->{$self->{kwd}}) {              0x0049, # I
3696                0x0054, # T
3697              ]->[length $self->{kwd}] or
3698              $self->{nc} == [
3699                undef,
3700                undef,
3701                0x0074, # t
3702                0x0069, # i
3703                0x0074, # t
3704              ]->[length $self->{kwd}]) {
3705          ## Stay in the state.          ## Stay in the state.
3706          $self->{kwd} .= chr $self->{nc};          $self->{kwd} .= chr $self->{nc};
3707          !!!next-input-character;          !!!next-input-character;
3708          redo A;          redo A;
3709        } elsif ($self->{kwd} eq 'ENTIT' and        } elsif ((length $self->{kwd}) == 5 and
3710                 $self->{nc} == 0x0059) { # Y                 ($self->{nc} == 0x0059 or # Y
3711          $self->{ct} = {type => GENERAL_ENTITY_TOKEN, name => '', text => '',                  $self->{nc} == 0x0079)) { # y
3712            if ($self->{kwd} ne 'ENTIT' or $self->{nc} == 0x0079) {
3713              !!!parse-error (type => 'lowercase keyword', ## TODO: type
3714                              text => 'ENTITY',
3715                              line => $self->{line_prev},
3716                              column => $self->{column_prev} - 4);
3717            }
3718            $self->{ct} = {type => GENERAL_ENTITY_TOKEN, name => '',
3719                         line => $self->{line_prev},                         line => $self->{line_prev},
3720                         column => $self->{column_prev} - 6};                         column => $self->{column_prev} - 6};
3721          $self->{state} = DOCTYPE_MD_STATE;          $self->{state} = DOCTYPE_MD_STATE;
# Line 3712  sub _get_next_token ($) { Line 3733  sub _get_next_token ($) {
3733          redo A;          redo A;
3734        }        }
3735      } elsif ($self->{state} == MD_ELEMENT_STATE) {      } elsif ($self->{state} == MD_ELEMENT_STATE) {
3736        if ($self->{nc} == {        if ($self->{nc} == [
3737              'EL' => 0x0045, # E             undef,
3738              'ELE' => 0x004D, # M             undef,
3739              'ELEM' => 0x0045, # E             0x0045, # E
3740              'ELEME' => 0x004E, # N             0x004D, # M
3741            }->{$self->{kwd}}) {             0x0045, # E
3742               0x004E, # N
3743              ]->[length $self->{kwd}] or
3744              $self->{nc} == [
3745               undef,
3746               undef,
3747               0x0065, # e
3748               0x006D, # m
3749               0x0065, # e
3750               0x006E, # n
3751              ]->[length $self->{kwd}]) {
3752          ## Stay in the state.          ## Stay in the state.
3753          $self->{kwd} .= chr $self->{nc};          $self->{kwd} .= chr $self->{nc};
3754          !!!next-input-character;          !!!next-input-character;
3755          redo A;          redo A;
3756        } elsif ($self->{kwd} eq 'ELEMEN' and        } elsif ((length $self->{kwd}) == 6 and
3757                 $self->{nc} == 0x0054) { # T                 ($self->{nc} == 0x0054 or # T
3758                    $self->{nc} == 0x0074)) { # t
3759            if ($self->{kwd} ne 'ELEMEN' or $self->{nc} == 0x0074) {
3760              !!!parse-error (type => 'lowercase keyword', ## TODO: type
3761                              text => 'ELEMENT',
3762                              line => $self->{line_prev},
3763                              column => $self->{column_prev} - 5);
3764            }
3765          $self->{ct} = {type => ELEMENT_TOKEN, name => '',          $self->{ct} = {type => ELEMENT_TOKEN, name => '',
3766                         line => $self->{line_prev},                         line => $self->{line_prev},
3767                         column => $self->{column_prev} - 6};                         column => $self->{column_prev} - 6};
# Line 3742  sub _get_next_token ($) { Line 3780  sub _get_next_token ($) {
3780          redo A;          redo A;
3781        }        }
3782      } elsif ($self->{state} == MD_ATTLIST_STATE) {      } elsif ($self->{state} == MD_ATTLIST_STATE) {
3783        if ($self->{nc} == {        if ($self->{nc} == [
3784              'A' => 0x0054, # T             undef,
3785              'AT' => 0x0054, # T             0x0054, # T
3786              'ATT' => 0x004C, # L             0x0054, # T
3787              'ATTL' => 0x0049, # I             0x004C, # L
3788              'ATTLI' => 0x0053, # S             0x0049, # I
3789            }->{$self->{kwd}}) {             0x0053, # S
3790              ]->[length $self->{kwd}] or
3791              $self->{nc} == [
3792               undef,
3793               0x0074, # t
3794               0x0074, # t
3795               0x006C, # l
3796               0x0069, # i
3797               0x0073, # s
3798              ]->[length $self->{kwd}]) {
3799          ## Stay in the state.          ## Stay in the state.
3800          $self->{kwd} .= chr $self->{nc};          $self->{kwd} .= chr $self->{nc};
3801          !!!next-input-character;          !!!next-input-character;
3802          redo A;          redo A;
3803        } elsif ($self->{kwd} eq 'ATTLIS' and        } elsif ((length $self->{kwd}) == 6 and
3804                 $self->{nc} == 0x0054) { # T                 ($self->{nc} == 0x0054 or # T
3805                    $self->{nc} == 0x0074)) { # t
3806            if ($self->{kwd} ne 'ATTLIS' or $self->{nc} == 0x0074) {
3807              !!!parse-error (type => 'lowercase keyword', ## TODO: type
3808                              text => 'ATTLIST',
3809                              line => $self->{line_prev},
3810                              column => $self->{column_prev} - 5);
3811            }
3812          $self->{ct} = {type => ATTLIST_TOKEN, name => '',          $self->{ct} = {type => ATTLIST_TOKEN, name => '',
3813                         attrdefs => [],                         attrdefs => [],
3814                         line => $self->{line_prev},                         line => $self->{line_prev},
# Line 3774  sub _get_next_token ($) { Line 3828  sub _get_next_token ($) {
3828          redo A;          redo A;
3829        }        }
3830      } elsif ($self->{state} == MD_NOTATION_STATE) {      } elsif ($self->{state} == MD_NOTATION_STATE) {
3831        if ($self->{nc} == {        if ($self->{nc} == [
3832              'N' => 0x004F, # O             undef,
3833              'NO' => 0x0054, # T             0x004F, # O
3834              'NOT' => 0x0041, # A             0x0054, # T
3835              'NOTA' => 0x0054, # T             0x0041, # A
3836              'NOTAT' => 0x0049, # I             0x0054, # T
3837              'NOTATI' => 0x004F, # O             0x0049, # I
3838            }->{$self->{kwd}}) {             0x004F, # O
3839              ]->[length $self->{kwd}] or
3840              $self->{nc} == [
3841               undef,
3842               0x006F, # o
3843               0x0074, # t
3844               0x0061, # a
3845               0x0074, # t
3846               0x0069, # i
3847               0x006F, # o
3848              ]->[length $self->{kwd}]) {
3849          ## Stay in the state.          ## Stay in the state.
3850          $self->{kwd} .= chr $self->{nc};          $self->{kwd} .= chr $self->{nc};
3851          !!!next-input-character;          !!!next-input-character;
3852          redo A;          redo A;
3853        } elsif ($self->{kwd} eq 'NOTATIO' and        } elsif ((length $self->{kwd}) == 7 and
3854                 $self->{nc} == 0x004E) { # N                 ($self->{nc} == 0x004E or # N
3855                    $self->{nc} == 0x006E)) { # n
3856            if ($self->{kwd} ne 'NOTATIO' or $self->{nc} == 0x006E) {
3857              !!!parse-error (type => 'lowercase keyword', ## TODO: type
3858                              text => 'NOTATION',
3859                              line => $self->{line_prev},
3860                              column => $self->{column_prev} - 6);
3861            }
3862          $self->{ct} = {type => NOTATION_TOKEN, name => '',          $self->{ct} = {type => NOTATION_TOKEN, name => '',
3863                         line => $self->{line_prev},                         line => $self->{line_prev},
3864                         column => $self->{column_prev} - 6};                         column => $self->{column_prev} - 6};

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24