8 |
## doc.write (''); |
## doc.write (''); |
9 |
## alert (doc.compatMode); |
## alert (doc.compatMode); |
10 |
|
|
|
## TODO: Control charcters and noncharacters are not allowed (HTML5 revision 1263) |
|
11 |
## TODO: 1252 parse error (revision 1264) |
## TODO: 1252 parse error (revision 1264) |
12 |
## TODO: 8859-11 = 874 (revision 1271) |
## TODO: 8859-11 = 874 (revision 1271) |
13 |
|
|
442 |
$self->{column}++; |
$self->{column}++; |
443 |
|
|
444 |
if ($self->{next_char} == 0x000A) { # LF |
if ($self->{next_char} == 0x000A) { # LF |
445 |
|
!!!cp ('j1'); |
446 |
$self->{line}++; |
$self->{line}++; |
447 |
$self->{column} = 0; |
$self->{column} = 0; |
448 |
} elsif ($self->{next_char} == 0x000D) { # CR |
} elsif ($self->{next_char} == 0x000D) { # CR |
449 |
|
!!!cp ('j2'); |
450 |
$i++ if substr ($$s, $i, 1) eq "\x0A"; |
$i++ if substr ($$s, $i, 1) eq "\x0A"; |
451 |
$self->{next_char} = 0x000A; # LF # MUST |
$self->{next_char} = 0x000A; # LF # MUST |
452 |
$self->{line}++; |
$self->{line}++; |
453 |
$self->{column} = 0; |
$self->{column} = 0; |
454 |
} elsif ($self->{next_char} > 0x10FFFF) { |
} elsif ($self->{next_char} > 0x10FFFF) { |
455 |
|
!!!cp ('j3'); |
456 |
$self->{next_char} = 0xFFFD; # REPLACEMENT CHARACTER # MUST |
$self->{next_char} = 0xFFFD; # REPLACEMENT CHARACTER # MUST |
457 |
} elsif ($self->{next_char} == 0x0000) { # NULL |
} elsif ($self->{next_char} == 0x0000) { # NULL |
458 |
|
!!!cp ('j4'); |
459 |
!!!parse-error (type => 'NULL'); |
!!!parse-error (type => 'NULL'); |
460 |
$self->{next_char} = 0xFFFD; # REPLACEMENT CHARACTER # MUST |
$self->{next_char} = 0xFFFD; # REPLACEMENT CHARACTER # MUST |
461 |
|
} elsif ($self->{next_char} <= 0x0008 or |
462 |
|
(0x000E <= $self->{next_char} and $self->{next_char} <= 0x001F) or |
463 |
|
(0x007F <= $self->{next_char} and $self->{next_char} <= 0x009F) or |
464 |
|
(0xD800 <= $self->{next_char} and $self->{next_char} <= 0xDFFF) or |
465 |
|
(0xFDD0 <= $self->{next_char} and $self->{next_char} <= 0xFDDF) or |
466 |
|
{ |
467 |
|
0xFFFE => 1, 0xFFFF => 1, 0x1FFFE => 1, 0x1FFFF => 1, |
468 |
|
0x2FFFE => 1, 0x2FFFF => 1, 0x3FFFE => 1, 0x3FFFF => 1, |
469 |
|
0x4FFFE => 1, 0x4FFFF => 1, 0x5FFFE => 1, 0x5FFFF => 1, |
470 |
|
0x6FFFE => 1, 0x6FFFF => 1, 0x7FFFE => 1, 0x7FFFF => 1, |
471 |
|
0x8FFFE => 1, 0x8FFFF => 1, 0x9FFFE => 1, 0x9FFFF => 1, |
472 |
|
0xAFFFE => 1, 0xAFFFF => 1, 0xBFFFE => 1, 0xBFFFF => 1, |
473 |
|
0xCFFFE => 1, 0xCFFFF => 1, 0xDFFFE => 1, 0xDFFFF => 1, |
474 |
|
0xEFFFE => 1, 0xEFFFF => 1, 0xFFFFE => 1, 0xFFFFF => 1, |
475 |
|
0x10FFFE => 1, 0x10FFFF => 1, |
476 |
|
}->{$self->{next_char}}) { |
477 |
|
!!!cp ('j5'); |
478 |
|
!!!parse-error (type => 'control char', level => $self->{must_level}); |
479 |
|
## TODO: error type documentation |
480 |
} |
} |
481 |
}; |
}; |
482 |
$self->{prev_char} = [-1, -1, -1]; |
$self->{prev_char} = [-1, -1, -1]; |
7081 |
!!!cp ('i4'); |
!!!cp ('i4'); |
7082 |
!!!parse-error (type => 'NULL'); |
!!!parse-error (type => 'NULL'); |
7083 |
$self->{next_char} = 0xFFFD; # REPLACEMENT CHARACTER # MUST |
$self->{next_char} = 0xFFFD; # REPLACEMENT CHARACTER # MUST |
7084 |
|
} elsif ($self->{next_char} <= 0x0008 or |
7085 |
|
(0x000E <= $self->{next_char} and |
7086 |
|
$self->{next_char} <= 0x001F) or |
7087 |
|
(0x007F <= $self->{next_char} and |
7088 |
|
$self->{next_char} <= 0x009F) or |
7089 |
|
(0xD800 <= $self->{next_char} and |
7090 |
|
$self->{next_char} <= 0xDFFF) or |
7091 |
|
(0xFDD0 <= $self->{next_char} and |
7092 |
|
$self->{next_char} <= 0xFDDF) or |
7093 |
|
{ |
7094 |
|
0xFFFE => 1, 0xFFFF => 1, 0x1FFFE => 1, 0x1FFFF => 1, |
7095 |
|
0x2FFFE => 1, 0x2FFFF => 1, 0x3FFFE => 1, 0x3FFFF => 1, |
7096 |
|
0x4FFFE => 1, 0x4FFFF => 1, 0x5FFFE => 1, 0x5FFFF => 1, |
7097 |
|
0x6FFFE => 1, 0x6FFFF => 1, 0x7FFFE => 1, 0x7FFFF => 1, |
7098 |
|
0x8FFFE => 1, 0x8FFFF => 1, 0x9FFFE => 1, 0x9FFFF => 1, |
7099 |
|
0xAFFFE => 1, 0xAFFFF => 1, 0xBFFFE => 1, 0xBFFFF => 1, |
7100 |
|
0xCFFFE => 1, 0xCFFFF => 1, 0xDFFFE => 1, 0xDFFFF => 1, |
7101 |
|
0xEFFFE => 1, 0xEFFFF => 1, 0xFFFFE => 1, 0xFFFFF => 1, |
7102 |
|
0x10FFFE => 1, 0x10FFFF => 1, |
7103 |
|
}->{$self->{next_char}}) { |
7104 |
|
!!!cp ('i4.1'); |
7105 |
|
!!!parse-error (type => 'control char', level => $self->{must_level}); |
7106 |
|
## TODO: error type documentation |
7107 |
} |
} |
7108 |
}; |
}; |
7109 |
$p->{prev_char} = [-1, -1, -1]; |
$p->{prev_char} = [-1, -1, -1]; |