| 803 |
URI_PREFIX_TOKEN, URI_PREFIX_INVALID_TOKEN, |
URI_PREFIX_TOKEN, URI_PREFIX_INVALID_TOKEN, |
| 804 |
URI_PREFIX_INVALID_TOKEN, URI_PREFIX_INVALID_TOKEN, |
URI_PREFIX_INVALID_TOKEN, URI_PREFIX_INVALID_TOKEN, |
| 805 |
}->{$self->{t}->{type}}; |
}->{$self->{t}->{type}}; |
| 806 |
$self->{t}->{value} .= "\x0D\x0A"; |
$self->{t}->{value} .= "\x0D"; |
| 807 |
$self->{state} = URI_UNQUOTED_STATE; |
$self->{state} = ESCAPE_BEFORE_LF_STATE; |
| 808 |
$self->{c} = $self->{get_char}->(); |
$self->{c} = $self->{get_char}->(); |
| 809 |
redo A; |
redo A; |
| 810 |
} else { |
} else { |
| 811 |
## Note: In |nl| in ... in |string| or |ident|. |
## Note: In |nl| in ... in |string| or |ident|. |
| 812 |
$self->{t}->{value} .= "\x0D\x0A"; |
$self->{t}->{value} .= "\x0D"; |
| 813 |
$self->{state} = ESCAPE_BEFORE_LF_STATE; |
$self->{state} = ESCAPE_BEFORE_LF_STATE; |
| 814 |
$self->{c} = $self->{get_char}->(); |
$self->{c} = $self->{get_char}->(); |
| 815 |
redo A; |
redo A; |
| 840 |
return {type => DELIM_TOKEN, value => '\\'}; |
return {type => DELIM_TOKEN, value => '\\'}; |
| 841 |
#redo A; |
#redo A; |
| 842 |
} |
} |
| 843 |
} else { |
} elsif ($q == 1) { |
| 844 |
$self->{state} = $q == 1 ? URI_UNQUOTED_STATE : STRING_STATE; |
$self->{state} = URI_UNQUOTED_STATE; |
| 845 |
$self->{c} = $self->{get_char}->(); |
$self->{c} = $self->{get_char}->(); |
| 846 |
redo A; |
redo A; |
| 847 |
|
} else { |
| 848 |
|
unshift @{$self->{token}}, {type => DELIM_TOKEN, value => '\\'}; |
| 849 |
|
$self->{t}->{type} = { |
| 850 |
|
STRING_TOKEN, INVALID_TOKEN, |
| 851 |
|
URI_TOKEN, URI_INVALID_TOKEN, |
| 852 |
|
URI_PREFIX_TOKEN, URI_PREFIX_INVALID_TOKEN, |
| 853 |
|
}->{$self->{t}->{type}} || $self->{t}->{type}; |
| 854 |
|
$self->{state} = BEFORE_TOKEN_STATE; |
| 855 |
|
# reprocess |
| 856 |
|
return $self->{t}; |
| 857 |
|
#redo A; |
| 858 |
} |
} |
| 859 |
} elsif ($self->{state} == ESCAPE_STATE) { |
} elsif ($self->{state} == ESCAPE_STATE) { |
| 860 |
## NOTE: third..seventh character of |unicode| in |escape|. |
## NOTE: third..seventh character of |unicode| in |escape|. |
| 918 |
} elsif ($self->{state} == ESCAPE_BEFORE_LF_STATE) { |
} elsif ($self->{state} == ESCAPE_BEFORE_LF_STATE) { |
| 919 |
## NOTE: |\n| in |\r\n| in |unicode| in |escape|. |
## NOTE: |\n| in |\r\n| in |unicode| in |escape|. |
| 920 |
if ($self->{c} == 0x000A) { # \n |
if ($self->{c} == 0x000A) { # \n |
| 921 |
$self->{t}->{value} .= chr $char; |
$self->{t}->{value} .= chr $self->{c}; |
| 922 |
$self->{state} = $q == 0 ? NAME_STATE : |
$self->{state} = $q == 0 ? NAME_STATE : |
| 923 |
$q == 1 ? URI_UNQUOTED_STATE : STRING_STATE; |
$q == 1 ? URI_UNQUOTED_STATE : STRING_STATE; |
| 924 |
$self->{c} = $self->{get_char}->(); |
$self->{c} = $self->{get_char}->(); |
| 925 |
redo A; |
redo A; |
| 926 |
} else { |
} else { |
|
$self->{t}->{value} .= chr $char; |
|
| 927 |
$self->{state} = $q == 0 ? NAME_STATE : |
$self->{state} = $q == 0 ? NAME_STATE : |
| 928 |
$q == 1 ? URI_UNQUOTED_STATE : STRING_STATE; |
$q == 1 ? URI_UNQUOTED_STATE : STRING_STATE; |
| 929 |
# reconsume |
# reprocess |
| 930 |
redo A; |
redo A; |
| 931 |
} |
} |
| 932 |
} elsif ($self->{state} == STRING_STATE) { |
} elsif ($self->{state} == STRING_STATE) { |