Сообщение Re: Nitra и UTF-16 от 21.04.2016 18:27
Изменено 21.04.2016 18:32 VladD2
Здравствуйте, WolfHound, Вы писали:
WH>
Это вообще не верный код. У автомат на первом символе всегда сожрет один любой.
Должно быть что-то вроде:
Вот тогда он сожрет или правильную сурогатную пару, или два отдельных символа, в которых может быть грязь.
DBFF — это граница корректного HighSurrogate все что между ним и DFFF — это некорректрый сурогат. Это значение должно встречаться в LowSurrogates.
WH>
WH>regex HighSurrogates = ['\uD800'..'\uDBFF'];
WH>regex LowSurrogates = ['\uDC00'..'\uDFFF'];
WH>regex Any = HighSurrogates LowSurrogates | ['\u0000'..'\uFFFF'];
WH>
Это вообще не верный код. У автомат на первом символе всегда сожрет один любой.
Должно быть что-то вроде:
regex Any16 = ['\u0000'..'\uFFFF'];
regex HighSurrogate = ['\uD800'..'\uDBFF']; // DBFF - это граница корректного HighSurrogate
regex NonSurrogate = Any16 - HighSurrogate;
regex Any = HighSurrogate Any16 | NonSurrogate;
Вот тогда он сожрет или правильную сурогатную пару, или два отдельных символа, в которых может быть грязь.
DBFF — это граница корректного HighSurrogate все что между ним и DFFF — это некорректрый сурогат. Это значение должно встречаться в LowSurrogates.
Re: Nitra и UTF-16
Здравствуйте, WolfHound, Вы писали:
WH>
Это вообще не верный код. Он автомат на первом символе всегда сожрет один любой.
Должно быть что-то вроде:
Вот тогда он сожрет или правильную сурогатную пару, или два отдельных символа, в которых может быть грязь.
DBFF — это граница корректного HighSurrogate все что между ним и DFFF — это некорректрый сурогат. Это значение должно встречаться в LowSurrogates.
WH>
WH>regex HighSurrogates = ['\uD800'..'\uDBFF'];
WH>regex LowSurrogates = ['\uDC00'..'\uDFFF'];
WH>regex Any = HighSurrogates LowSurrogates | ['\u0000'..'\uFFFF'];
WH>
Это вообще не верный код. Он автомат на первом символе всегда сожрет один любой.
Должно быть что-то вроде:
regex Any16 = ['\u0000'..'\uFFFF'];
regex HighSurrogate = ['\uD800'..'\uDBFF']; // DBFF - это граница корректного HighSurrogate
regex NonSurrogate = Any16 - HighSurrogate;
regex Any = HighSurrogate Any16 | NonSurrogate;
Вот тогда он сожрет или правильную сурогатную пару, или два отдельных символа, в которых может быть грязь.
DBFF — это граница корректного HighSurrogate все что между ним и DFFF — это некорректрый сурогат. Это значение должно встречаться в LowSurrogates.