3212 lines
146 KiB
C#
3212 lines
146 KiB
C#
//
|
||
// This CSharp output file generated by Gardens Point LEX
|
||
// Version: 1.1.3.301
|
||
// Machine: DESKTOP-L2INHKG
|
||
// DateTime: 07.10.2025 10:49:02
|
||
// UserName: user
|
||
// GPLEX input file <ABCPascal.lex>
|
||
// GPLEX frame file <embedded resource>
|
||
//
|
||
// Option settings: unicode, parser, minimize
|
||
// Option settings: classes, compressMap, compressNext, persistBuffer, embedbuffers
|
||
// Fallback code page: Target machine default
|
||
//
|
||
|
||
//
|
||
// Experimental embedded frame
|
||
// Version 1.1.3 of 18-April-2010
|
||
//
|
||
//
|
||
#define BACKUP
|
||
#define PERSIST
|
||
|
||
using System;
|
||
using System.IO;
|
||
using System.Text;
|
||
using System.Globalization;
|
||
using System.Collections.Generic;
|
||
using System.Runtime.Serialization;
|
||
using System.Diagnostics.CodeAnalysis;
|
||
|
||
using PascalABCCompiler.SyntaxTree;
|
||
using PascalABCCompiler.ParserTools;
|
||
using QUT.Gppg;
|
||
|
||
namespace Languages.Pascal.Frontend.Core
|
||
{
|
||
/// <summary>
|
||
/// Summary Canonical example of GPLEX automaton
|
||
/// </summary>
|
||
|
||
#if STANDALONE
|
||
//
|
||
// These are the dummy declarations for stand-alone GPLEX applications
|
||
// normally these declarations would come from the parser.
|
||
// If you declare /noparser, or %option noparser then you get this.
|
||
//
|
||
|
||
public enum Tokens
|
||
{
|
||
EOF = 0, maxParseToken = int.MaxValue
|
||
// must have at least these two, values are almost arbitrary
|
||
}
|
||
|
||
public abstract class ScanBase
|
||
{
|
||
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yylex")]
|
||
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yylex")]
|
||
public abstract int yylex();
|
||
|
||
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yywrap")]
|
||
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yywrap")]
|
||
protected virtual bool yywrap() { return true; }
|
||
|
||
#if BABEL
|
||
protected abstract int CurrentSc { get; set; }
|
||
// EolState is the 32-bit of state data persisted at
|
||
// the end of each line for Visual Studio colorization.
|
||
// The default is to return CurrentSc. You must override
|
||
// this if you want more complicated behavior.
|
||
public virtual int EolState {
|
||
get { return CurrentSc; }
|
||
set { CurrentSc = value; }
|
||
}
|
||
}
|
||
|
||
public interface IColorScan
|
||
{
|
||
void SetSource(string source, int offset);
|
||
int GetNext(ref int state, out int start, out int end);
|
||
#endif // BABEL
|
||
}
|
||
|
||
#endif // STANDALONE
|
||
|
||
// If the compiler can't find the scanner base class maybe you
|
||
// need to run GPPG with the /gplex option, or GPLEX with /noparser
|
||
#if BABEL
|
||
public sealed partial class Scanner : ScanBase, IColorScan
|
||
{
|
||
private ScanBuff buffer;
|
||
int currentScOrd; // start condition ordinal
|
||
|
||
protected override int CurrentSc
|
||
{
|
||
// The current start state is a property
|
||
// to try to avoid the user error of setting
|
||
// scState but forgetting to update the FSA
|
||
// start state "currentStart"
|
||
//
|
||
get { return currentScOrd; } // i.e. return YY_START;
|
||
set { currentScOrd = value; // i.e. BEGIN(value);
|
||
currentStart = startState[value]; }
|
||
}
|
||
#else // BABEL
|
||
public sealed partial class Scanner : ScanBase
|
||
{
|
||
private ScanBuff buffer;
|
||
int currentScOrd; // start condition ordinal
|
||
#endif // BABEL
|
||
|
||
/// <summary>
|
||
/// The input buffer for this scanner.
|
||
/// </summary>
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
public ScanBuff Buffer { get { return buffer; } }
|
||
|
||
private static int GetMaxParseToken() {
|
||
System.Reflection.FieldInfo f = typeof(Tokens).GetField("maxParseToken");
|
||
return (f == null ? int.MaxValue : (int)f.GetValue(null));
|
||
}
|
||
|
||
static int parserMax = GetMaxParseToken();
|
||
|
||
enum Result {accept, noMatch, contextFound};
|
||
|
||
const int maxAccept = 75;
|
||
const int initial = 76;
|
||
const int eofNum = 0;
|
||
const int goStart = -1;
|
||
const int INITIAL = 0;
|
||
const int COMMENT = 1;
|
||
const int COMMENT1 = 2;
|
||
const int COMMENTONELINE = 3;
|
||
const int INCL = 4;
|
||
const int EXCLUDETEXT = 5;
|
||
|
||
#region user code
|
||
public PascalParserTools parserTools;
|
||
public PascalABCKeywords keywords;
|
||
public List<string> Defines = new List<string>();
|
||
private Stack<BufferContext> buffStack = new Stack<BufferContext>();
|
||
private Stack<string> fNameStack = new Stack<string>();
|
||
private Stack<bool> IfDefInElseBranch = new Stack<bool>();
|
||
private Stack<string> IfDefVar = new Stack<string>();
|
||
private int IfExclude;
|
||
private LexLocation currentLexLocation;
|
||
private bool HiddenIdents = false;
|
||
private bool ExprMode = false;
|
||
|
||
public Scanner(string text, PascalParserTools parserTools, PascalABCCompiler.Parsers.BaseKeywords keywords, List<string> defines = null)
|
||
{
|
||
this.parserTools = parserTools;
|
||
this.keywords = (PascalABCKeywords)keywords;
|
||
if (defines != null)
|
||
this.Defines.AddRange(defines);
|
||
SetSource(text, 0);
|
||
}
|
||
#endregion user code
|
||
|
||
int state;
|
||
int currentStart = startState[0];
|
||
int code; // last code read
|
||
int cCol; // column number of code
|
||
int lNum; // current line number
|
||
//
|
||
// The following instance variables are used, among other
|
||
// things, for constructing the yylloc location objects.
|
||
//
|
||
int tokPos; // buffer position at start of token
|
||
int tokCol; // zero-based column number at start of token
|
||
int tokLin; // line number at start of token
|
||
int tokEPos; // buffer position at end of token
|
||
int tokECol; // column number at end of token
|
||
int tokELin; // line number at end of token
|
||
string tokTxt; // lazily constructed text of token
|
||
#if STACK
|
||
private Stack<int> scStack = new Stack<int>();
|
||
#endif // STACK
|
||
|
||
#region ScannerTables
|
||
struct Table {
|
||
public int min; public int rng; public int dflt;
|
||
public sbyte[] nxt;
|
||
public Table(int m, int x, int d, sbyte[] n) {
|
||
min = m; rng = x; dflt = d; nxt = n;
|
||
}
|
||
};
|
||
|
||
static int[] startState = new int[] {76, 119, 120, 121, 121, 122,
|
||
0};
|
||
|
||
#region TwoLevelCharacterMap
|
||
//
|
||
// There are 53 equivalence classes
|
||
// There are 256 character sequence regions
|
||
// There are 47 tables, 12032 entries
|
||
//
|
||
static sbyte[] mLo0 = new sbyte[256] {
|
||
/* '\0' */ 5, 43, 5, 5, 5, 5, 5, 5, 5, 12, 0, 5, 5, 6, 5, 5,
|
||
/* '\x10' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\x20' */ 52, 44, 5, 11, 4, 5, 13, 51, 7, 9, 8, 24, 14, 25, 16, 1,
|
||
/* '0' */ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 15, 17, 27, 23, 26, 20,
|
||
/* '@' */ 22, 49, 47, 49, 49, 50, 49, 45, 45, 48, 45, 45, 45, 45, 45, 45,
|
||
/* 'P' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 18, 29, 19, 28, 21,
|
||
/* '`' */ 5, 40, 47, 49, 49, 31, 49, 45, 45, 36, 45, 45, 45, 41, 38, 37,
|
||
/* 'p' */ 33, 45, 34, 35, 39, 45, 45, 45, 32, 42, 45, 3, 10, 2, 5, 5,
|
||
/* '\x80' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\x90' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\xA0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 5, 5, 5, 5, 5,
|
||
/* '\xB0' */ 5, 5, 5, 5, 5, 45, 5, 5, 5, 5, 45, 5, 5, 5, 5, 5,
|
||
/* '\xC0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\xD0' */ 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\xE0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\xF0' */ 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45 };
|
||
static sbyte[] mLo1 = new sbyte[256] {
|
||
/* '\u0100' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0110' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0120' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0130' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0140' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0150' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0160' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0170' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0180' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0190' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u01A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u01B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u01C0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u01D0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u01E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u01F0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45 };
|
||
static sbyte[] mLo2 = new sbyte[256] {
|
||
/* '\u0200' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0210' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0220' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0230' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0240' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0250' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0260' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0270' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0280' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0290' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u02A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u02B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u02C0' */ 45, 45, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u02D0' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u02E0' */ 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 5,
|
||
/* '\u02F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo3 = new sbyte[256] {
|
||
/* '\u0300' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0310' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0320' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0330' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0340' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0350' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0360' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0370' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 45, 45, 45, 5, 5,
|
||
/* '\u0380' */ 5, 5, 5, 5, 5, 5, 45, 5, 45, 45, 45, 5, 45, 5, 45, 45,
|
||
/* '\u0390' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u03A0' */ 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u03B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u03C0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5,
|
||
/* '\u03D0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u03E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u03F0' */ 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45 };
|
||
static sbyte[] mLo4 = new sbyte[256] {
|
||
/* '\u0400' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0410' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0420' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0430' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0440' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0450' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0460' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0470' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0480' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0490' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u04A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u04B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u04C0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u04D0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u04E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u04F0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45 };
|
||
static sbyte[] mLo5 = new sbyte[256] {
|
||
/* '\u0500' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0510' */ 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0520' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0530' */ 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0540' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0550' */ 45, 45, 45, 45, 45, 45, 45, 5, 5, 45, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0560' */ 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0570' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0580' */ 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0590' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u05A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u05B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u05C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u05D0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u05E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5,
|
||
/* '\u05F0' */ 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo6 = new sbyte[256] {
|
||
/* '\u0600' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0610' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0620' */ 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0630' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5,
|
||
/* '\u0640' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5,
|
||
/* '\u0650' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0660' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 45,
|
||
/* '\u0670' */ 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0680' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0690' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u06A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u06B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u06C0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u06D0' */ 45, 45, 45, 45, 5, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u06E0' */ 5, 5, 5, 5, 5, 45, 45, 5, 5, 5, 5, 5, 5, 5, 45, 45,
|
||
/* '\u06F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 45, 45, 5, 5, 45 };
|
||
static sbyte[] mLo7 = new sbyte[256] {
|
||
/* '\u0700' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0710' */ 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0720' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0730' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0740' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 45, 45,
|
||
/* '\u0750' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0760' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5,
|
||
/* '\u0770' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0780' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0790' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u07A0' */ 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u07B0' */ 5, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u07C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\u07D0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u07E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5,
|
||
/* '\u07F0' */ 5, 5, 5, 5, 45, 45, 5, 5, 5, 5, 45, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo8 = new sbyte[256] {
|
||
/* '\u0800' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0810' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0820' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0830' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0840' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0850' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0860' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0870' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0880' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0890' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u08A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u08B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u08C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u08D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u08E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u08F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo9 = new sbyte[256] {
|
||
/* '\u0900' */ 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0910' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0920' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0930' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 45, 5, 5,
|
||
/* '\u0940' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0950' */ 45, 5, 5, 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0960' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0970' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 45, 45, 45, 45,
|
||
/* '\u0980' */ 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 45,
|
||
/* '\u0990' */ 45, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u09A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\u09B0' */ 45, 5, 45, 5, 5, 5, 45, 45, 45, 45, 5, 5, 5, 45, 5, 5,
|
||
/* '\u09C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 5,
|
||
/* '\u09D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 45, 5, 45,
|
||
/* '\u09E0' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u09F0' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo10 = new sbyte[256] {
|
||
/* '\u0A00' */ 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 45,
|
||
/* '\u0A10' */ 45, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0A20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0A30' */ 45, 5, 45, 45, 5, 45, 45, 5, 45, 45, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0A40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0A50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 45, 45, 45, 5, 45, 5,
|
||
/* '\u0A60' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0A70' */ 5, 5, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0A80' */ 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45,
|
||
/* '\u0A90' */ 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0AA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0AB0' */ 45, 5, 45, 45, 5, 45, 45, 45, 45, 45, 5, 5, 5, 45, 5, 5,
|
||
/* '\u0AC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0AD0' */ 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0AE0' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0AF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo11 = new sbyte[256] {
|
||
/* '\u0B00' */ 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 45,
|
||
/* '\u0B10' */ 45, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0B20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0B30' */ 45, 5, 45, 45, 5, 45, 45, 45, 45, 45, 5, 5, 5, 45, 5, 5,
|
||
/* '\u0B40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0B50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 45, 5, 45,
|
||
/* '\u0B60' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0B70' */ 5, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0B80' */ 5, 5, 5, 45, 5, 45, 45, 45, 45, 45, 45, 5, 5, 5, 45, 45,
|
||
/* '\u0B90' */ 45, 5, 45, 45, 45, 45, 5, 5, 5, 45, 45, 5, 45, 5, 45, 45,
|
||
/* '\u0BA0' */ 5, 5, 5, 45, 45, 5, 5, 5, 45, 45, 45, 5, 5, 5, 45, 45,
|
||
/* '\u0BB0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0BC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0BD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0BE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0BF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo12 = new sbyte[256] {
|
||
/* '\u0C00' */ 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45,
|
||
/* '\u0C10' */ 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0C20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0C30' */ 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0C40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0C50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0C60' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0C70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0C80' */ 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45,
|
||
/* '\u0C90' */ 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0CA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0CB0' */ 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 5, 5, 5, 45, 5, 5,
|
||
/* '\u0CC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0CD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 5,
|
||
/* '\u0CE0' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0CF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo13 = new sbyte[256] {
|
||
/* '\u0D00' */ 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45,
|
||
/* '\u0D10' */ 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0D20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0D30' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0D40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0D50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0D60' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0D70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0D80' */ 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0D90' */ 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0DA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0DB0' */ 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 5, 5,
|
||
/* '\u0DC0' */ 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0DD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0DE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0DF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo14 = new sbyte[256] {
|
||
/* '\u0E00' */ 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0E10' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0E20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0E30' */ 45, 5, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0E40' */ 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0E50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0E60' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0E70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0E80' */ 5, 45, 45, 5, 45, 5, 5, 45, 45, 5, 45, 5, 5, 45, 5, 5,
|
||
/* '\u0E90' */ 5, 5, 5, 5, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0EA0' */ 5, 45, 45, 45, 5, 45, 5, 45, 5, 5, 45, 45, 5, 45, 45, 45,
|
||
/* '\u0EB0' */ 45, 5, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 5, 5,
|
||
/* '\u0EC0' */ 45, 45, 45, 45, 45, 5, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0ED0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 45, 5, 5,
|
||
/* '\u0EE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0EF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo15 = new sbyte[256] {
|
||
/* '\u0F00' */ 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0F10' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0F20' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0F30' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0F40' */ 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0F50' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u0F60' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5,
|
||
/* '\u0F70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0F80' */ 5, 5, 5, 5, 5, 5, 5, 5, 45, 45, 45, 45, 5, 5, 5, 5,
|
||
/* '\u0F90' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0FA0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0FB0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0FC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0FD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0FE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u0FF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo16 = new sbyte[256] {
|
||
/* '\u1000' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1010' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1020' */ 45, 45, 5, 45, 45, 45, 45, 45, 5, 45, 45, 5, 5, 5, 5, 5,
|
||
/* '\u1030' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1040' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1050' */ 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1060' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1070' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1080' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1090' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u10A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u10B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u10C0' */ 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u10D0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u10E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u10F0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 5, 5, 5 };
|
||
static sbyte[] mLo17 = new sbyte[256] {
|
||
/* '\u1100' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1110' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1120' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1130' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1140' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1150' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 45,
|
||
/* '\u1160' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1170' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1180' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1190' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u11A0' */ 45, 45, 45, 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u11B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u11C0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u11D0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u11E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u11F0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo18 = new sbyte[256] {
|
||
/* '\u1200' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1210' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1220' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1230' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1240' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 5, 5,
|
||
/* '\u1250' */ 45, 45, 45, 45, 45, 45, 45, 5, 45, 5, 45, 45, 45, 45, 5, 5,
|
||
/* '\u1260' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1270' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1280' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 5, 5,
|
||
/* '\u1290' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u12A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u12B0' */ 45, 5, 45, 45, 45, 45, 5, 5, 45, 45, 45, 45, 45, 45, 45, 5,
|
||
/* '\u12C0' */ 45, 5, 45, 45, 45, 45, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u12D0' */ 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u12E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u12F0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45 };
|
||
static sbyte[] mLo19 = new sbyte[256] {
|
||
/* '\u1300' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1310' */ 45, 5, 45, 45, 45, 45, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1320' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1330' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1340' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1350' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5,
|
||
/* '\u1360' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1370' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1380' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1390' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u13A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u13B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u13C0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u13D0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u13E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u13F0' */ 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo20 = new sbyte[256] {
|
||
/* '\u1400' */ 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1410' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1420' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1430' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1440' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1450' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1460' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1470' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1480' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1490' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u14A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u14B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u14C0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u14D0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u14E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u14F0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45 };
|
||
static sbyte[] mLo22 = new sbyte[256] {
|
||
/* '\u1600' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1610' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1620' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1630' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1640' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1650' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1660' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 45,
|
||
/* '\u1670' */ 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1680' */ 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1690' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5,
|
||
/* '\u16A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u16B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u16C0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u16D0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u16E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5,
|
||
/* '\u16F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo23 = new sbyte[256] {
|
||
/* '\u1700' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45,
|
||
/* '\u1710' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1720' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1730' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1740' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1750' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1760' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45,
|
||
/* '\u1770' */ 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1780' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1790' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u17A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u17B0' */ 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u17C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u17D0' */ 5, 5, 5, 5, 5, 5, 5, 45, 5, 5, 5, 5, 45, 5, 5, 5,
|
||
/* '\u17E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u17F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo24 = new sbyte[256] {
|
||
/* '\u1800' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1810' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1820' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1830' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1840' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1850' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1860' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1870' */ 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1880' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1890' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u18A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u18B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u18C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u18D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u18E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u18F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo25 = new sbyte[256] {
|
||
/* '\u1900' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1910' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5,
|
||
/* '\u1920' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1930' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1940' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1950' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1960' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5,
|
||
/* '\u1970' */ 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1980' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1990' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u19A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5,
|
||
/* '\u19B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u19C0' */ 5, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u19D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u19E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u19F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo26 = new sbyte[256] {
|
||
/* '\u1A00' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1A10' */ 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1A20' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1A30' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1A40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1A50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1A60' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1A70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1A80' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1A90' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1AA0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1AB0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1AC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1AD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1AE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1AF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo27 = new sbyte[256] {
|
||
/* '\u1B00' */ 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1B10' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1B20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1B30' */ 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1B40' */ 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5,
|
||
/* '\u1B50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1B60' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1B70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1B80' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1B90' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1BA0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1BB0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1BC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1BD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1BE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1BF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo29 = new sbyte[256] {
|
||
/* '\u1D00' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1D10' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1D20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1D30' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1D40' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1D50' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1D60' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1D70' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1D80' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1D90' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1DA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1DB0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1DC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1DD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1DE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u1DF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo30 = new sbyte[256] {
|
||
/* '\u1E00' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1E10' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1E20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1E30' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1E40' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1E50' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1E60' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1E70' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1E80' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1E90' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5,
|
||
/* '\u1EA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1EB0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1EC0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1ED0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1EE0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1EF0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo31 = new sbyte[256] {
|
||
/* '\u1F00' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1F10' */ 45, 45, 45, 45, 45, 45, 5, 5, 45, 45, 45, 45, 45, 45, 5, 5,
|
||
/* '\u1F20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1F30' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1F40' */ 45, 45, 45, 45, 45, 45, 5, 5, 45, 45, 45, 45, 45, 45, 5, 5,
|
||
/* '\u1F50' */ 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 5, 45, 5, 45, 5, 45,
|
||
/* '\u1F60' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1F70' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5,
|
||
/* '\u1F80' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1F90' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1FA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u1FB0' */ 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 5, 45, 5,
|
||
/* '\u1FC0' */ 5, 5, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5,
|
||
/* '\u1FD0' */ 45, 45, 45, 45, 5, 5, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5,
|
||
/* '\u1FE0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5,
|
||
/* '\u1FF0' */ 5, 5, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5 };
|
||
static sbyte[] mLo32 = new sbyte[256] {
|
||
/* '\u2000' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2010' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2020' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2030' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2040' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2050' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2060' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2070' */ 5, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45,
|
||
/* '\u2080' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2090' */ 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u20A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u20B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u20C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u20D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u20E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u20F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo33 = new sbyte[256] {
|
||
/* '\u2100' */ 5, 5, 45, 5, 5, 5, 5, 45, 5, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2110' */ 45, 45, 45, 45, 5, 45, 5, 5, 5, 45, 45, 45, 45, 45, 5, 5,
|
||
/* '\u2120' */ 5, 5, 5, 5, 45, 5, 45, 5, 45, 5, 45, 45, 45, 45, 5, 45,
|
||
/* '\u2130' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 45, 45, 45, 45,
|
||
/* '\u2140' */ 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 5, 5, 5, 5, 45, 5,
|
||
/* '\u2150' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2160' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2170' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2180' */ 5, 5, 5, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2190' */ 5, 5, 30, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u21A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u21B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u21C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u21D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u21E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u21F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo44 = new sbyte[256] {
|
||
/* '\u2C00' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2C10' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2C20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5,
|
||
/* '\u2C30' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2C40' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2C50' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5,
|
||
/* '\u2C60' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5,
|
||
/* '\u2C70' */ 5, 5, 5, 5, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2C80' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2C90' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2CA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2CB0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2CC0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2CD0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2CE0' */ 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2CF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo45 = new sbyte[256] {
|
||
/* '\u2D00' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2D10' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2D20' */ 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2D30' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2D40' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2D50' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2D60' */ 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45,
|
||
/* '\u2D70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2D80' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u2D90' */ 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2DA0' */ 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 5,
|
||
/* '\u2DB0' */ 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 5,
|
||
/* '\u2DC0' */ 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 5,
|
||
/* '\u2DD0' */ 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 5,
|
||
/* '\u2DE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u2DF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo48 = new sbyte[256] {
|
||
/* '\u3000' */ 5, 5, 5, 5, 5, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u3010' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u3020' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u3030' */ 5, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 45, 45, 5, 5, 5,
|
||
/* '\u3040' */ 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u3050' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u3060' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u3070' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u3080' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u3090' */ 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 45, 45, 45,
|
||
/* '\u30A0' */ 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u30B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u30C0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u30D0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u30E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u30F0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45 };
|
||
static sbyte[] mLo49 = new sbyte[256] {
|
||
/* '\u3100' */ 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u3110' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u3120' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5,
|
||
/* '\u3130' */ 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u3140' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u3150' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u3160' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u3170' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u3180' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5,
|
||
/* '\u3190' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u31A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u31B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u31C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u31D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u31E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u31F0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45 };
|
||
static sbyte[] mLo77 = new sbyte[256] {
|
||
/* '\u4D00' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u4D10' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u4D20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u4D30' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u4D40' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u4D50' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u4D60' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u4D70' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u4D80' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u4D90' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u4DA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u4DB0' */ 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u4DC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u4DD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u4DE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u4DF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo159 = new sbyte[256] {
|
||
/* '\u9F00' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u9F10' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u9F20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u9F30' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u9F40' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u9F50' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u9F60' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u9F70' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u9F80' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u9F90' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u9FA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\u9FB0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5,
|
||
/* '\u9FC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u9FD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u9FE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\u9FF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo164 = new sbyte[256] {
|
||
/* '\uA400' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uA410' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uA420' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uA430' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uA440' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uA450' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uA460' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uA470' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uA480' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5,
|
||
/* '\uA490' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA4A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA4B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA4C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA4D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA4E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA4F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo167 = new sbyte[256] {
|
||
/* '\uA700' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA710' */ 5, 5, 5, 5, 5, 5, 5, 45, 45, 45, 45, 5, 5, 5, 5, 5,
|
||
/* '\uA720' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA730' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA740' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA750' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA760' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA770' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA780' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA790' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA7A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA7B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA7C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA7D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA7E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA7F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo168 = new sbyte[256] {
|
||
/* '\uA800' */ 45, 45, 5, 45, 45, 45, 5, 45, 45, 45, 45, 5, 45, 45, 45, 45,
|
||
/* '\uA810' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uA820' */ 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA830' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA840' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uA850' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uA860' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uA870' */ 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA880' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA890' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA8A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA8B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA8C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA8D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA8E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uA8F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo215 = new sbyte[256] {
|
||
/* '\uD700' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uD710' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uD720' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uD730' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uD740' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uD750' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uD760' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uD770' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uD780' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uD790' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uD7A0' */ 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uD7B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uD7C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uD7D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uD7E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uD7F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo250 = new sbyte[256] {
|
||
/* '\uFA00' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFA10' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFA20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5,
|
||
/* '\uFA30' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFA40' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFA50' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFA60' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5,
|
||
/* '\uFA70' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFA80' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFA90' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFAA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFAB0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFAC0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFAD0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFAE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFAF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mLo251 = new sbyte[256] {
|
||
/* '\uFB00' */ 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFB10' */ 5, 5, 5, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 45, 5, 45,
|
||
/* '\uFB20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFB30' */ 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 5, 45, 5,
|
||
/* '\uFB40' */ 45, 45, 5, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFB50' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFB60' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFB70' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFB80' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFB90' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFBA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFBB0' */ 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFBC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFBD0' */ 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFBE0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFBF0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45 };
|
||
static sbyte[] mLo253 = new sbyte[256] {
|
||
/* '\uFD00' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFD10' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFD20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFD30' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5,
|
||
/* '\uFD40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFD50' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFD60' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFD70' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFD80' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFD90' */ 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFDA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFDB0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFDC0' */ 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFDD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFDE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFDF0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5 };
|
||
static sbyte[] mLo254 = new sbyte[256] {
|
||
/* '\uFE00' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFE10' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFE20' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFE30' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFE40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFE50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFE60' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFE70' */ 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFE80' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFE90' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFEA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFEB0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFEC0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFED0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFEE0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFEF0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5 };
|
||
static sbyte[] mLo255 = new sbyte[256] {
|
||
/* '\uFF00' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFF10' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFF20' */ 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFF30' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5,
|
||
/* '\uFF40' */ 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFF50' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5,
|
||
/* '\uFF60' */ 5, 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFF70' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFF80' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFF90' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFFA0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFFB0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5,
|
||
/* '\uFFC0' */ 5, 5, 45, 45, 45, 45, 45, 45, 5, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\uFFD0' */ 5, 5, 45, 45, 45, 45, 45, 45, 5, 5, 45, 45, 45, 5, 5, 5,
|
||
/* '\uFFE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\uFFF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
|
||
static sbyte[][] map = new sbyte[256][] {
|
||
/* '\u00xx' */ mLo0, mLo1, mLo2, mLo3, mLo4, mLo5, mLo6, mLo7, mLo8, mLo9, mLo10, mLo11, mLo12, mLo13, mLo14, mLo15,
|
||
/* '\u10xx' */ mLo16, mLo17, mLo18, mLo19, mLo20, mLo1, mLo22, mLo23, mLo24, mLo25, mLo26, mLo27, mLo8, mLo29, mLo30, mLo31,
|
||
/* '\u20xx' */ mLo32, mLo33, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo44, mLo45, mLo8, mLo8,
|
||
/* '\u30xx' */ mLo48, mLo49, mLo8, mLo8, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
|
||
/* '\u40xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo77, mLo1, mLo1,
|
||
/* '\u50xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
|
||
/* '\u60xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
|
||
/* '\u70xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
|
||
/* '\u80xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
|
||
/* '\u90xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo159,
|
||
/* '\uA0xx' */ mLo1, mLo1, mLo1, mLo1, mLo164, mLo8, mLo8, mLo167, mLo168, mLo8, mLo8, mLo8, mLo1, mLo1, mLo1, mLo1,
|
||
/* '\uB0xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
|
||
/* '\uC0xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
|
||
/* '\uD0xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo215, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8,
|
||
/* '\uE0xx' */ mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8,
|
||
/* '\uF0xx' */ mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo1, mLo250, mLo251, mLo1, mLo253, mLo254, mLo255};
|
||
|
||
#endregion
|
||
|
||
#region CompressedCharacterMap
|
||
//
|
||
// There are 53 equivalence classes
|
||
// There are 21 character sequence regions
|
||
// There are 6 tables, 1255 entries
|
||
// There are 15 runs, 0 singletons
|
||
// Decision tree depth is 5
|
||
//
|
||
static sbyte[] mapC0 = new sbyte[251] {
|
||
/* '\U00010000' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45,
|
||
/* '\U00010010' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U00010020' */ 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U00010030' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 5, 45,
|
||
/* '\U00010040' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5,
|
||
/* '\U00010050' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5,
|
||
/* '\U00010060' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\U00010070' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\U00010080' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U00010090' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U000100A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U000100B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U000100C0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U000100D0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U000100E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U000100F0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45 };
|
||
static sbyte[] mapC2 = new sbyte[256] {
|
||
/* '\U00010300' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U00010310' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5,
|
||
/* '\U00010320' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\U00010330' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U00010340' */ 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5,
|
||
/* '\U00010350' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\U00010360' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\U00010370' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\U00010380' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U00010390' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 5,
|
||
/* '\U000103A0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U000103B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U000103C0' */ 45, 45, 45, 45, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U000103D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\U000103E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\U000103F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
static sbyte[] mapC5 = new sbyte[64] {
|
||
/* '\U00010800' */ 45, 45, 45, 45, 45, 45, 5, 5, 45, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\U00010810' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U00010820' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U00010830' */ 45, 45, 45, 45, 45, 45, 5, 45, 45, 5, 5, 5, 45, 5, 5, 45 };
|
||
static sbyte[] mapC9 = new sbyte[52] {
|
||
/* '\U00010A00' */ 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||
/* '\U00010A10' */ 45, 45, 45, 45, 5, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U00010A20' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U00010A30' */ 45, 45, 45, 45 };
|
||
static sbyte[] mapC13 = new sbyte[338] {
|
||
/* '\U0001D400' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D410' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D420' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D430' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D440' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D450' */ 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D460' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D470' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D480' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D490' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45,
|
||
/* '\U0001D4A0' */ 5, 5, 45, 5, 5, 45, 45, 5, 5, 45, 45, 45, 45, 5, 45, 45,
|
||
/* '\U0001D4B0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 5, 45, 45, 45,
|
||
/* '\U0001D4C0' */ 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D4D0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D4E0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D4F0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D500' */ 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 5, 5, 45, 45, 45,
|
||
/* '\U0001D510' */ 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45,
|
||
/* '\U0001D520' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D530' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 5,
|
||
/* '\U0001D540' */ 45, 45, 45, 45, 45, 5, 45, 5, 5, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D550' */ 45, 5 };
|
||
static sbyte[] mapC15 = new sbyte[294] {
|
||
/* '\U0001D6A6' */ 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D6B6' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45,
|
||
/* '\U0001D6C6' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D6D6' */ 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D6E6' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D6F6' */ 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D706' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5,
|
||
/* '\U0001D716' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D726' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5,
|
||
/* '\U0001D736' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D746' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D756' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D766' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D776' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D786' */ 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D796' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D7A6' */ 45, 45, 45, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||
/* '\U0001D7B6' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 5, 45, 45,
|
||
/* '\U0001D7C6' */ 45, 45, 45, 45, 45, 45 };
|
||
|
||
static sbyte MapC(int code)
|
||
{ // '\U00010000' <= code <= '\U0010FFFF'
|
||
if (code < 68148) // '\U00010000' <= code <= '\U00010A33'
|
||
if (code < 67584) // '\U00010000' <= code <= '\U000107FF'
|
||
if (code < 66304) // '\U00010000' <= code <= '\U000102FF'
|
||
if (code < 65787) // '\U00010000' <= code <= '\U000100FA'
|
||
return mapC0[code - 65536];
|
||
else // '\U000100FB' <= code <= '\U000102FF'
|
||
return (sbyte)5;
|
||
else // '\U00010300' <= code <= '\U000107FF'
|
||
if (code < 66560) // '\U00010300' <= code <= '\U000103FF'
|
||
return mapC2[code - 66304];
|
||
else // '\U00010400' <= code <= '\U000107FF'
|
||
if (code < 66718) // '\U00010400' <= code <= '\U0001049D'
|
||
return (sbyte)45;
|
||
else // '\U0001049E' <= code <= '\U000107FF'
|
||
return (sbyte)5;
|
||
else // '\U00010800' <= code <= '\U00010A33'
|
||
if (code < 67840) // '\U00010800' <= code <= '\U000108FF'
|
||
if (code < 67648) // '\U00010800' <= code <= '\U0001083F'
|
||
return mapC5[code - 67584];
|
||
else // '\U00010840' <= code <= '\U000108FF'
|
||
return (sbyte)5;
|
||
else // '\U00010900' <= code <= '\U00010A33'
|
||
if (code < 67862) // '\U00010900' <= code <= '\U00010915'
|
||
return (sbyte)45;
|
||
else // '\U00010916' <= code <= '\U00010A33'
|
||
if (code < 68096) // '\U00010916' <= code <= '\U000109FF'
|
||
return (sbyte)5;
|
||
else // '\U00010A00' <= code <= '\U00010A33'
|
||
return mapC9[code - 68096];
|
||
else // '\U00010A34' <= code <= '\U0010FFFF'
|
||
if (code < 120486) // '\U00010A34' <= code <= '\U0001D6A5'
|
||
if (code < 74607) // '\U00010A34' <= code <= '\U0001236E'
|
||
if (code < 73728) // '\U00010A34' <= code <= '\U00011FFF'
|
||
return (sbyte)5;
|
||
else // '\U00012000' <= code <= '\U0001236E'
|
||
return (sbyte)45;
|
||
else // '\U0001236F' <= code <= '\U0001D6A5'
|
||
if (code < 119808) // '\U0001236F' <= code <= '\U0001D3FF'
|
||
return (sbyte)5;
|
||
else // '\U0001D400' <= code <= '\U0001D6A5'
|
||
if (code < 120146) // '\U0001D400' <= code <= '\U0001D551'
|
||
return mapC13[code - 119808];
|
||
else // '\U0001D552' <= code <= '\U0001D6A5'
|
||
return (sbyte)45;
|
||
else // '\U0001D6A6' <= code <= '\U0010FFFF'
|
||
if (code < 173783) // '\U0001D6A6' <= code <= '\U0002A6D6'
|
||
if (code < 120780) // '\U0001D6A6' <= code <= '\U0001D7CB'
|
||
return mapC15[code - 120486];
|
||
else // '\U0001D7CC' <= code <= '\U0002A6D6'
|
||
if (code < 131072) // '\U0001D7CC' <= code <= '\U0001FFFF'
|
||
return (sbyte)5;
|
||
else // '\U00020000' <= code <= '\U0002A6D6'
|
||
return (sbyte)45;
|
||
else // '\U0002A6D7' <= code <= '\U0010FFFF'
|
||
if (code < 194560) // '\U0002A6D7' <= code <= '\U0002F7FF'
|
||
return (sbyte)5;
|
||
else // '\U0002F800' <= code <= '\U0010FFFF'
|
||
if (code < 195102) // '\U0002F800' <= code <= '\U0002FA1D'
|
||
return (sbyte)45;
|
||
else // '\U0002FA1E' <= code <= '\U0010FFFF'
|
||
return (sbyte)5;
|
||
}
|
||
#endregion
|
||
|
||
|
||
static sbyte Map(int code)
|
||
{
|
||
if (code <= 65535)
|
||
return map[code / 256][code % 256];
|
||
else
|
||
return MapC(code);
|
||
}
|
||
|
||
static Table[] NxS = new Table[124] {
|
||
/* NxS[ 0] */ new Table(0, 0, 0, null),
|
||
/* NxS[ 1] */ new Table(1, 23, -1, new sbyte[] {64, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||
65}),
|
||
/* NxS[ 2] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 3] */ new Table(4, 1, -1, new sbyte[] {118}),
|
||
/* NxS[ 4] */ new Table(31, 21, -1, new sbyte[] {61, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, 61, -1, -1, -1, -1, -1, 61, 61, -1, 61, 61, 117}),
|
||
/* NxS[ 5] */ new Table(8, 1, -1, new sbyte[] {60}),
|
||
/* NxS[ 6] */ new Table(8, 16, -1, new sbyte[] {58, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, -1, -1, -1, -1, -1, 59}),
|
||
/* NxS[ 7] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 8] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 9] */ new Table(11, 40, -1, new sbyte[] {115, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, 54,
|
||
54, 54, 54, 54, 54, 54, 54, 54, 54, 54, -1, -1, 54, 55, 54, 54,
|
||
54, 54}),
|
||
/* NxS[ 10] */ new Table(21, 30, -1, new sbyte[] {28, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
|
||
-1, 114, 28, -1, 28, 28, 28, 28}),
|
||
/* NxS[ 11] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 12] */ new Table(23, 1, -1, new sbyte[] {53}),
|
||
/* NxS[ 13] */ new Table(16, 1, -1, new sbyte[] {52}),
|
||
/* NxS[ 14] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 15] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 16] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 17] */ new Table(16, 5, -1, new sbyte[] {49, -1, 50, -1, 51}),
|
||
/* NxS[ 18] */ new Table(21, 30, -1, new sbyte[] {28, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
|
||
-1, -1, 28, 28, 28, 28, 28, 28}),
|
||
/* NxS[ 19] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 20] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 21] */ new Table(23, 1, -1, new sbyte[] {48}),
|
||
/* NxS[ 22] */ new Table(23, 4, -1, new sbyte[] {46, -1, -1, 47}),
|
||
/* NxS[ 23] */ new Table(23, 1, -1, new sbyte[] {45}),
|
||
/* NxS[ 24] */ new Table(23, 5, -1, new sbyte[] {40, -1, -1, 41, 87}),
|
||
/* NxS[ 25] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 26] */ new Table(7, 1, -1, new sbyte[] {39}),
|
||
/* NxS[ 27] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 28] */ new Table(21, 30, -1, new sbyte[] {28, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
|
||
-1, -1, 28, 28, 28, 28, 28, 28}),
|
||
/* NxS[ 29] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 30] */ new Table(21, 30, -1, new sbyte[] {28, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
|
||
-1, -1, 28, -1, 28, 28, 28, 28}),
|
||
/* NxS[ 31] */ new Table(16, 35, -1, new sbyte[] {83, -1, -1, -1, -1, 31,
|
||
-1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, -1, -1, -1, -1, 31, 85, -1, -1, 84}),
|
||
/* NxS[ 32] */ new Table(51, 3, 77, new sbyte[] {33, 77, -1}),
|
||
/* NxS[ 33] */ new Table(51, 1, -1, new sbyte[] {78}),
|
||
/* NxS[ 34] */ new Table(51, 1, -1, new sbyte[] {77}),
|
||
/* NxS[ 35] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 36] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 37] */ new Table(21, 26, -1, new sbyte[] {37, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, 37}),
|
||
/* NxS[ 38] */ new Table(21, 30, -1, new sbyte[] {38, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, 38, -1, -1, -1, 84}),
|
||
/* NxS[ 39] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 40] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 41] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 42] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 43] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 44] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 45] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 46] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 47] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 48] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 49] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 50] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 51] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 52] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 53] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 54] */ new Table(21, 30, -1, new sbyte[] {54, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
|
||
-1, -1, 54, 54, 54, 54, 54, 54}),
|
||
/* NxS[ 55] */ new Table(46, 1, -1, new sbyte[] {55}),
|
||
/* NxS[ 56] */ new Table(52, 14, -1, new sbyte[] {56, 56, -1, -1, -1, -1,
|
||
-1, 56, -1, -1, -1, -1, -1, 56}),
|
||
/* NxS[ 57] */ new Table(52, 14, -1, new sbyte[] {57, 57, -1, -1, -1, -1,
|
||
-1, 57, -1, -1, -1, -1, -1, 57}),
|
||
/* NxS[ 58] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 59] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 60] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 61] */ new Table(21, 30, -1, new sbyte[] {61, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1,
|
||
-1, -1, -1, 61, 61, -1, 61, 61}),
|
||
/* NxS[ 62] */ new Table(51, 1, -1, new sbyte[] {117}),
|
||
/* NxS[ 63] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 64] */ new Table(0, 7, 64, new sbyte[] {-1, 64, 64, 64, 64, 64,
|
||
-1}),
|
||
/* NxS[ 65] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 66] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 67] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 68] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 69] */ new Table(9, 1, -1, new sbyte[] {70}),
|
||
/* NxS[ 70] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 71] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 72] */ new Table(1, 1, -1, new sbyte[] {75}),
|
||
/* NxS[ 73] */ new Table(4, 1, -1, new sbyte[] {123}),
|
||
/* NxS[ 74] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 75] */ new Table(0, 7, 75, new sbyte[] {-1, 75, 75, 75, 75, 75,
|
||
-1}),
|
||
/* NxS[ 76] */ new Table(43, 41, 28, new sbyte[] {29, 30, 28, 31, 28, 28,
|
||
28, 28, 32, -1, -1, 1, 2, 3, 4, 2, -1, 5, 6, 7, 8, 9,
|
||
-1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
|
||
25, 26, 27}),
|
||
/* NxS[ 77] */ new Table(51, 3, 77, new sbyte[] {34, 77, -1}),
|
||
/* NxS[ 78] */ new Table(51, 9, 77, new sbyte[] {34, 78, 79, 77, 77, 77,
|
||
77, 77, 80}),
|
||
/* NxS[ 79] */ new Table(51, 1, 79, new sbyte[] {81}),
|
||
/* NxS[ 80] */ new Table(51, 3, 77, new sbyte[] {34, 77, 79}),
|
||
/* NxS[ 81] */ new Table(51, 1, 79, new sbyte[] {82}),
|
||
/* NxS[ 82] */ new Table(51, 1, 79, new sbyte[] {35}),
|
||
/* NxS[ 83] */ new Table(46, 1, -1, new sbyte[] {38}),
|
||
/* NxS[ 84] */ new Table(24, 23, -1, new sbyte[] {86, 86, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||
37}),
|
||
/* NxS[ 85] */ new Table(36, 13, -1, new sbyte[] {36, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, -1, -1, 36}),
|
||
/* NxS[ 86] */ new Table(46, 1, -1, new sbyte[] {37}),
|
||
/* NxS[ 87] */ new Table(31, 9, -1, new sbyte[] {88, -1, -1, -1, 89, -1,
|
||
-1, -1, 90}),
|
||
/* NxS[ 88] */ new Table(32, 1, -1, new sbyte[] {104}),
|
||
/* NxS[ 89] */ new Table(39, 1, -1, new sbyte[] {95}),
|
||
/* NxS[ 90] */ new Table(42, 1, -1, new sbyte[] {91}),
|
||
/* NxS[ 91] */ new Table(33, 1, -1, new sbyte[] {92}),
|
||
/* NxS[ 92] */ new Table(31, 1, -1, new sbyte[] {93}),
|
||
/* NxS[ 93] */ new Table(26, 1, -1, new sbyte[] {94}),
|
||
/* NxS[ 94] */ new Table(26, 1, -1, new sbyte[] {42}),
|
||
/* NxS[ 95] */ new Table(40, 1, -1, new sbyte[] {96}),
|
||
/* NxS[ 96] */ new Table(39, 1, -1, new sbyte[] {97}),
|
||
/* NxS[ 97] */ new Table(31, 1, -1, new sbyte[] {98}),
|
||
/* NxS[ 98] */ new Table(41, 1, -1, new sbyte[] {99}),
|
||
/* NxS[ 99] */ new Table(31, 1, -1, new sbyte[] {100}),
|
||
/* NxS[ 100] */ new Table(38, 1, -1, new sbyte[] {101}),
|
||
/* NxS[ 101] */ new Table(39, 1, -1, new sbyte[] {102}),
|
||
/* NxS[ 102] */ new Table(26, 1, -1, new sbyte[] {103}),
|
||
/* NxS[ 103] */ new Table(26, 1, -1, new sbyte[] {43}),
|
||
/* NxS[ 104] */ new Table(33, 1, -1, new sbyte[] {105}),
|
||
/* NxS[ 105] */ new Table(34, 1, -1, new sbyte[] {106}),
|
||
/* NxS[ 106] */ new Table(31, 1, -1, new sbyte[] {107}),
|
||
/* NxS[ 107] */ new Table(35, 1, -1, new sbyte[] {108}),
|
||
/* NxS[ 108] */ new Table(35, 1, -1, new sbyte[] {109}),
|
||
/* NxS[ 109] */ new Table(36, 1, -1, new sbyte[] {110}),
|
||
/* NxS[ 110] */ new Table(37, 1, -1, new sbyte[] {111}),
|
||
/* NxS[ 111] */ new Table(38, 1, -1, new sbyte[] {112}),
|
||
/* NxS[ 112] */ new Table(26, 1, -1, new sbyte[] {113}),
|
||
/* NxS[ 113] */ new Table(26, 1, -1, new sbyte[] {44}),
|
||
/* NxS[ 114] */ new Table(21, 30, -1, new sbyte[] {28, -1, -1, -1, -1, -1,
|
||
-1, -1, -1, -1, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
|
||
-1, -1, 28, -1, 28, 28, 28, 28}),
|
||
/* NxS[ 115] */ new Table(52, 14, -1, new sbyte[] {56, 56, -1, -1, -1, -1,
|
||
-1, 56, -1, -1, -1, -1, 116, 56}),
|
||
/* NxS[ 116] */ new Table(52, 14, -1, new sbyte[] {57, 57, -1, -1, -1, -1,
|
||
-1, 57, -1, -1, -1, -1, -1, 57}),
|
||
/* NxS[ 117] */ new Table(51, 3, 117, new sbyte[] {62, 117, -1}),
|
||
/* NxS[ 118] */ new Table(0, 7, 118, new sbyte[] {-1, 118, 63, 118, 118, 118,
|
||
-1}),
|
||
/* NxS[ 119] */ new Table(2, 1, 66, new sbyte[] {67}),
|
||
/* NxS[ 120] */ new Table(8, 1, 68, new sbyte[] {69}),
|
||
/* NxS[ 121] */ new Table(0, 0, -1, null),
|
||
/* NxS[ 122] */ new Table(1, 3, 71, new sbyte[] {72, 71, 73}),
|
||
/* NxS[ 123] */ new Table(0, 7, 123, new sbyte[] {-1, 123, 74, 123, 123, 123,
|
||
-1}),
|
||
};
|
||
|
||
int NextState() {
|
||
if (code == ScanBuff.EndOfFile)
|
||
return eofNum;
|
||
else
|
||
unchecked {
|
||
int rslt;
|
||
int idx = Map(code) - NxS[state].min;
|
||
if (idx < 0) idx += 53;
|
||
if ((uint)idx >= (uint)NxS[state].rng) rslt = NxS[state].dflt;
|
||
else rslt = NxS[state].nxt[idx];
|
||
return rslt;
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
|
||
#if BACKUP
|
||
// ==============================================================
|
||
// == Nested struct used for backup in automata that do backup ==
|
||
// ==============================================================
|
||
|
||
struct Context // class used for automaton backup.
|
||
{
|
||
public int bPos;
|
||
public int rPos; // scanner.readPos saved value
|
||
public int cCol;
|
||
public int lNum; // Need this in case of backup over EOL.
|
||
public int state;
|
||
public int cChr;
|
||
}
|
||
|
||
private Context ctx = new Context();
|
||
#endif // BACKUP
|
||
|
||
// ==============================================================
|
||
// ==== Nested struct to support input switching in scanners ====
|
||
// ==============================================================
|
||
|
||
struct BufferContext {
|
||
internal ScanBuff buffSv;
|
||
internal int chrSv;
|
||
internal int cColSv;
|
||
internal int lNumSv;
|
||
}
|
||
|
||
// ==============================================================
|
||
// ===== Private methods to save and restore buffer contexts ====
|
||
// ==============================================================
|
||
|
||
/// <summary>
|
||
/// This method creates a buffer context record from
|
||
/// the current buffer object, together with some
|
||
/// scanner state values.
|
||
/// </summary>
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
BufferContext MkBuffCtx()
|
||
{
|
||
BufferContext rslt;
|
||
rslt.buffSv = this.buffer;
|
||
rslt.chrSv = this.code;
|
||
rslt.cColSv = this.cCol;
|
||
rslt.lNumSv = this.lNum;
|
||
return rslt;
|
||
}
|
||
|
||
/// <summary>
|
||
/// This method restores the buffer value and allied
|
||
/// scanner state from the given context record value.
|
||
/// </summary>
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
void RestoreBuffCtx(BufferContext value)
|
||
{
|
||
this.buffer = value.buffSv;
|
||
this.code = value.chrSv;
|
||
this.cCol = value.cColSv;
|
||
this.lNum = value.lNumSv;
|
||
}
|
||
// =================== End Nested classes =======================
|
||
|
||
#if !NOFILES
|
||
public Scanner(Stream file) {
|
||
SetSource(file, 0); // unicode option
|
||
}
|
||
|
||
public Scanner(Stream file, string codepage) {
|
||
SetSource(file, CodePageHandling.GetCodePage(codepage));
|
||
}
|
||
|
||
#endif // !NOFILES
|
||
|
||
public Scanner() { }
|
||
|
||
private int readPos;
|
||
|
||
void GetCode()
|
||
{
|
||
if (code == '\n') // This needs to be fixed for other conventions
|
||
// i.e. [\r\n\205\u2028\u2029]
|
||
{
|
||
cCol = -1;
|
||
lNum++;
|
||
}
|
||
readPos = buffer.Pos;
|
||
|
||
// Now read new codepoint.
|
||
code = buffer.Read();
|
||
if (code > ScanBuff.EndOfFile)
|
||
{
|
||
#if (!BYTEMODE)
|
||
if (code >= 0xD800 && code <= 0xDBFF)
|
||
{
|
||
int next = buffer.Read();
|
||
if (next < 0xDC00 || next > 0xDFFF)
|
||
code = ScanBuff.UnicodeReplacementChar;
|
||
else
|
||
code = (0x10000 + (code & 0x3FF << 10) + (next & 0x3FF));
|
||
}
|
||
#endif
|
||
cCol++;
|
||
}
|
||
}
|
||
|
||
void MarkToken()
|
||
{
|
||
#if (!PERSIST)
|
||
buffer.Mark();
|
||
#endif
|
||
tokPos = readPos;
|
||
tokLin = lNum;
|
||
tokCol = cCol;
|
||
}
|
||
|
||
void MarkEnd()
|
||
{
|
||
tokTxt = null;
|
||
tokEPos = readPos;
|
||
tokELin = lNum;
|
||
tokECol = cCol;
|
||
}
|
||
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
int Peek()
|
||
{
|
||
int rslt, codeSv = code, cColSv = cCol, lNumSv = lNum, bPosSv = buffer.Pos;
|
||
GetCode(); rslt = code;
|
||
lNum = lNumSv; cCol = cColSv; code = codeSv; buffer.Pos = bPosSv;
|
||
return rslt;
|
||
}
|
||
|
||
// ==============================================================
|
||
// ===== Initialization of string-based input buffers ====
|
||
// ==============================================================
|
||
|
||
/// <summary>
|
||
/// Create and initialize a StringBuff buffer object for this scanner
|
||
/// </summary>
|
||
/// <param name="source">the input string</param>
|
||
/// <param name="offset">starting offset in the string</param>
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
public void SetSource(string source, int offset)
|
||
{
|
||
this.buffer = ScanBuff.GetBuffer(source);
|
||
this.buffer.Pos = offset;
|
||
this.lNum = 0;
|
||
this.code = '\n'; // to initialize yyline, yycol and lineStart
|
||
GetCode();
|
||
}
|
||
|
||
#if !NOFILES
|
||
// ================ LineBuffer Initialization ===================
|
||
|
||
/// <summary>
|
||
/// Create and initialize a LineBuff buffer object for this scanner
|
||
/// </summary>
|
||
/// <param name="source">the list of input strings</param>
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
public void SetSource(IList<string> source)
|
||
{
|
||
this.buffer = ScanBuff.GetBuffer(source);
|
||
this.code = '\n'; // to initialize yyline, yycol and lineStart
|
||
this.lNum = 0;
|
||
GetCode();
|
||
}
|
||
|
||
// =============== StreamBuffer Initialization ==================
|
||
|
||
/// <summary>
|
||
/// Create and initialize a StreamBuff buffer object for this scanner.
|
||
/// StreamBuff is buffer for 8-bit byte files.
|
||
/// </summary>
|
||
/// <param name="source">the input byte stream</param>
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
public void SetSource(Stream source)
|
||
{
|
||
this.buffer = ScanBuff.GetBuffer(source);
|
||
this.lNum = 0;
|
||
this.code = '\n'; // to initialize yyline, yycol and lineStart
|
||
GetCode();
|
||
}
|
||
|
||
#if !BYTEMODE
|
||
// ================ TextBuffer Initialization ===================
|
||
|
||
/// <summary>
|
||
/// Create and initialize a TextBuff buffer object for this scanner.
|
||
/// TextBuff is a buffer for encoded unicode files.
|
||
/// </summary>
|
||
/// <param name="source">the input text file</param>
|
||
/// <param name="fallbackCodePage">Code page to use if file has
|
||
/// no BOM. For 0, use machine default; for -1, 8-bit binary</param>
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
public void SetSource(Stream source, int fallbackCodePage)
|
||
{
|
||
this.buffer = ScanBuff.GetBuffer(source, fallbackCodePage);
|
||
this.lNum = 0;
|
||
this.code = '\n'; // to initialize yyline, yycol and lineStart
|
||
GetCode();
|
||
}
|
||
#endif // !BYTEMODE
|
||
#endif // !NOFILES
|
||
|
||
// ==============================================================
|
||
|
||
#if BABEL
|
||
//
|
||
// Get the next token for Visual Studio
|
||
//
|
||
// "state" is the inout mode variable that maintains scanner
|
||
// state between calls, using the EolState property. In principle,
|
||
// if the calls of EolState are costly set could be called once
|
||
// only per line, at the start; and get called only at the end
|
||
// of the line. This needs more infrastructure ...
|
||
//
|
||
public int GetNext(ref int state, out int start, out int end)
|
||
{
|
||
Tokens next;
|
||
int s, e;
|
||
s = state; // state at start
|
||
EolState = state;
|
||
next = (Tokens)Scan();
|
||
state = EolState;
|
||
e = state; // state at end;
|
||
start = tokPos;
|
||
end = tokEPos - 1; // end is the index of last char.
|
||
return (int)next;
|
||
}
|
||
#endif // BABEL
|
||
|
||
// ======== AbstractScanner<> Implementation =========
|
||
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yylex")]
|
||
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yylex")]
|
||
public override int yylex()
|
||
{
|
||
// parserMax is set by reflecting on the Tokens
|
||
// enumeration. If maxParseToken is defined
|
||
// that is used, otherwise int.MaxValue is used.
|
||
int next;
|
||
do { next = Scan(); } while (next >= parserMax);
|
||
return next;
|
||
}
|
||
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
int yypos { get { return tokPos; } }
|
||
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
int yyline { get { return tokLin; } }
|
||
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
int yycol { get { return tokCol; } }
|
||
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yytext")]
|
||
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yytext")]
|
||
public string yytext
|
||
{
|
||
get
|
||
{
|
||
if (tokTxt == null)
|
||
tokTxt = buffer.GetString(tokPos, tokEPos);
|
||
return tokTxt;
|
||
}
|
||
}
|
||
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
void yyless(int n)
|
||
{
|
||
buffer.Pos = tokPos;
|
||
// Must read at least one char, so set before start.
|
||
cCol = tokCol - 1;
|
||
GetCode();
|
||
// Now ensure that line counting is correct.
|
||
lNum = tokLin;
|
||
// And count the rest of the text.
|
||
for (int i = 0; i < n; i++) GetCode();
|
||
MarkEnd();
|
||
}
|
||
|
||
//
|
||
// It would be nice to count backward in the text
|
||
// but it does not seem possible to re-establish
|
||
// the correct column counts except by going forward.
|
||
//
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
void _yytrunc(int n) { yyless(yyleng - n); }
|
||
|
||
//
|
||
// This is painful, but we no longer count
|
||
// codepoints. For the overwhelming majority
|
||
// of cases the single line code is fast, for
|
||
// the others, well, at least it is all in the
|
||
// buffer so no files are touched. Note that we
|
||
// can't use (tokEPos - tokPos) because of the
|
||
// possibility of surrogate pairs in the token.
|
||
//
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yyleng")]
|
||
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yyleng")]
|
||
public int yyleng
|
||
{
|
||
get {
|
||
#if BYTEMODE
|
||
return tokEPos - tokPos;
|
||
#else
|
||
if (tokELin == tokLin)
|
||
return tokECol - tokCol;
|
||
else {
|
||
int ch;
|
||
int count = 0;
|
||
int save = buffer.Pos;
|
||
buffer.Pos = tokPos;
|
||
do {
|
||
ch = buffer.Read();
|
||
if (!char.IsHighSurrogate((char)ch)) count++;
|
||
} while (buffer.Pos < tokEPos && ch != ScanBuff.EndOfFile);
|
||
buffer.Pos = save;
|
||
return count;
|
||
}
|
||
#endif // BYTEMODE
|
||
}
|
||
}
|
||
|
||
// ============ methods available in actions ==============
|
||
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
internal int YY_START {
|
||
get { return currentScOrd; }
|
||
set { currentScOrd = value;
|
||
currentStart = startState[value];
|
||
}
|
||
}
|
||
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
internal void BEGIN(int next) {
|
||
currentScOrd = next;
|
||
currentStart = startState[next];
|
||
}
|
||
|
||
// ============== The main tokenizer code =================
|
||
|
||
int Scan()
|
||
{
|
||
try {
|
||
for (; ; )
|
||
{
|
||
int next; // next state to enter
|
||
#if BACKUP
|
||
Result rslt = Result.noMatch;
|
||
#endif // BACKUP
|
||
#if LEFTANCHORS
|
||
for (;;)
|
||
{
|
||
// Discard characters that do not start any pattern.
|
||
// Must check the left anchor condition after *every* GetCode!
|
||
state = ((cCol == 0) ? anchorState[currentScOrd] : currentStart);
|
||
if ((next = NextState()) != goStart)
|
||
break; // LOOP EXIT HERE...
|
||
GetCode();
|
||
}
|
||
|
||
#else // !LEFTANCHORS
|
||
state = currentStart;
|
||
while ((next = NextState()) == goStart)
|
||
// At this point, the current character has no
|
||
// transition from the current state. We discard
|
||
// the "no-match" char. In traditional LEX such
|
||
// characters are echoed to the console.
|
||
GetCode();
|
||
#endif // LEFTANCHORS
|
||
// At last, a valid transition ...
|
||
MarkToken();
|
||
state = next;
|
||
GetCode();
|
||
|
||
while ((next = NextState()) > eofNum) // Exit for goStart AND for eofNum
|
||
#if BACKUP
|
||
if (state <= maxAccept && next > maxAccept) // need to prepare backup data
|
||
{
|
||
// ctx is an object. The fields may be
|
||
// mutated by the call to Recurse2.
|
||
// On return the data in ctx is the
|
||
// *latest* accept state that was found.
|
||
|
||
rslt = Recurse2(ref ctx, next);
|
||
if (rslt == Result.noMatch)
|
||
RestoreStateAndPos(ref ctx);
|
||
break;
|
||
}
|
||
else
|
||
#endif // BACKUP
|
||
{
|
||
state = next;
|
||
GetCode();
|
||
}
|
||
if (state <= maxAccept)
|
||
{
|
||
MarkEnd();
|
||
#region ActionSwitch
|
||
#pragma warning disable 162
|
||
switch (state)
|
||
{
|
||
case eofNum:
|
||
if (yywrap())
|
||
return (int)Tokens.EOF;
|
||
break;
|
||
case 1:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.Division); return (int)Tokens.tkSlash;
|
||
break;
|
||
case 2:
|
||
case 4:
|
||
case 9:
|
||
case 26:
|
||
case 30:
|
||
case 32:
|
||
parserTools.AddErrorFromResource("UNEXPECTED_SYMBOL{0}",CurrentLexLocation, yytext);
|
||
return -1;
|
||
break;
|
||
case 3:
|
||
BEGIN(COMMENT);
|
||
break;
|
||
case 5:
|
||
return (int)Tokens.tkRoundOpen;
|
||
break;
|
||
case 6:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.Multiplication); return (int)Tokens.tkStar;
|
||
break;
|
||
case 7:
|
||
return (int)Tokens.tkRoundClose;
|
||
break;
|
||
case 8:
|
||
return (int)Tokens.tkVertParen;
|
||
break;
|
||
case 10:
|
||
return (int)Tokens.tkAmpersend;
|
||
break;
|
||
case 11:
|
||
yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkComma;
|
||
break;
|
||
case 12:
|
||
return (int)Tokens.tkColon;
|
||
break;
|
||
case 13:
|
||
return (int)Tokens.tkPoint;
|
||
break;
|
||
case 14:
|
||
return (int)Tokens.tkSemiColon;
|
||
break;
|
||
case 15:
|
||
return (int)Tokens.tkSquareOpen;
|
||
break;
|
||
case 16:
|
||
return (int)Tokens.tkSquareClose;
|
||
break;
|
||
case 17:
|
||
return (int)Tokens.tkQuestion;
|
||
break;
|
||
case 18:
|
||
return (int)Tokens.tkUnderscore;
|
||
break;
|
||
case 19:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.AddressOf); return (int)Tokens.tkAddressOf;
|
||
break;
|
||
case 20:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.Equal); return (int)Tokens.tkEqual;
|
||
break;
|
||
case 21:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.Plus); return (int)Tokens.tkPlus;
|
||
break;
|
||
case 22:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.Minus); return (int)Tokens.tkMinus;
|
||
break;
|
||
case 23:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.Greater); return (int)Tokens.tkGreater;
|
||
break;
|
||
case 24:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.Less); return (int)Tokens.tkLower;
|
||
break;
|
||
case 25:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.Deref); return (int)Tokens.tkDeref;
|
||
break;
|
||
case 27:
|
||
yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkArrow;
|
||
break;
|
||
case 28:
|
||
string cur_yytext = yytext;
|
||
int res = keywords.KeywordOrIDToken(cur_yytext);
|
||
currentLexLocation = CurrentLexLocation;
|
||
if (res == (int)Tokens.tkIdentifier)
|
||
{
|
||
if (cur_yytext[0] == '!' && !HiddenIdents && !ExprMode)
|
||
parserTools.AddErrorFromResource("UNEXPECTED_SYMBOL{0}",CurrentLexLocation, ""+cur_yytext[0]);
|
||
yylval = new Union();
|
||
yylval.id = parserTools.create_ident(cur_yytext,currentLexLocation);
|
||
}
|
||
else
|
||
switch (res)
|
||
{
|
||
case (int)Tokens.tkOr:
|
||
yylval = new Union();
|
||
yylval.op = new op_type_node(Operators.LogicalOR,currentLexLocation);
|
||
yylval.op.text = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkXor:
|
||
yylval = new Union();
|
||
yylval.op = new op_type_node(Operators.BitwiseXOR,currentLexLocation);
|
||
yylval.op.text = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkAnd:
|
||
yylval = new Union();
|
||
yylval.op = new op_type_node(Operators.LogicalAND,currentLexLocation);
|
||
yylval.op.text = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkDiv:
|
||
yylval = new Union();
|
||
yylval.op = new op_type_node(Operators.IntegerDivision,currentLexLocation);
|
||
yylval.op.text = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkMod:
|
||
yylval = new Union();
|
||
yylval.op = new op_type_node(Operators.ModulusRemainder,currentLexLocation);
|
||
yylval.op.text = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkShl:
|
||
yylval = new Union();
|
||
yylval.op = new op_type_node(Operators.BitwiseLeftShift,currentLexLocation);
|
||
yylval.op.text = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkShr:
|
||
yylval = new Union();
|
||
yylval.op = new op_type_node(Operators.BitwiseRightShift,currentLexLocation);
|
||
yylval.op.text = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkNot:
|
||
yylval = new Union();
|
||
yylval.op = new op_type_node(Operators.LogicalNOT,currentLexLocation);
|
||
yylval.op.text = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkAs:
|
||
yylval = new Union();
|
||
yylval.op = new op_type_node(Operators.As,currentLexLocation);
|
||
yylval.op.text = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkIn:
|
||
yylval = new Union();
|
||
yylval.op = new op_type_node(Operators.In,currentLexLocation);
|
||
yylval.op.text = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkIs:
|
||
yylval = new Union();
|
||
yylval.op = new op_type_node(Operators.Is,currentLexLocation);
|
||
yylval.op.text = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkImplicit:
|
||
yylval = new Union();
|
||
yylval.op = new op_type_node(Operators.Implicit,currentLexLocation);
|
||
yylval.op.text = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkExplicit:
|
||
yylval = new Union();
|
||
yylval.op = new op_type_node(Operators.Explicit,currentLexLocation);
|
||
yylval.op.text = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkSizeOf:
|
||
case (int)Tokens.tkTypeOf:
|
||
case (int)Tokens.tkWhere:
|
||
case (int)Tokens.tkArray:
|
||
case (int)Tokens.tkCase:
|
||
case (int)Tokens.tkClass:
|
||
case (int)Tokens.tkAuto:
|
||
case (int)Tokens.tkConst:
|
||
case (int)Tokens.tkConstructor:
|
||
case (int)Tokens.tkDestructor:
|
||
case (int)Tokens.tkDo:
|
||
case (int)Tokens.tkElse:
|
||
case (int)Tokens.tkExcept:
|
||
case (int)Tokens.tkFile:
|
||
case (int)Tokens.tkFinalization:
|
||
case (int)Tokens.tkFinally:
|
||
case (int)Tokens.tkFor:
|
||
case (int)Tokens.tkLoop:
|
||
case (int)Tokens.tkForeach:
|
||
case (int)Tokens.tkFunction:
|
||
case (int)Tokens.tkIf:
|
||
case (int)Tokens.tkImplementation:
|
||
case (int)Tokens.tkInherited:
|
||
case (int)Tokens.tkInitialization:
|
||
case (int)Tokens.tkInterface:
|
||
case (int)Tokens.tkProcedure:
|
||
case (int)Tokens.tkOperator:
|
||
case (int)Tokens.tkProperty:
|
||
case (int)Tokens.tkRaise:
|
||
case (int)Tokens.tkRecord:
|
||
case (int)Tokens.tkRepeat:
|
||
case (int)Tokens.tkSet:
|
||
case (int)Tokens.tkType:
|
||
case (int)Tokens.tkThen:
|
||
case (int)Tokens.tkUntil:
|
||
case (int)Tokens.tkUses:
|
||
case (int)Tokens.tkVar:
|
||
case (int)Tokens.tkWhile:
|
||
case (int)Tokens.tkWith:
|
||
case (int)Tokens.tkNil:
|
||
case (int)Tokens.tkGoto:
|
||
case (int)Tokens.tkOf:
|
||
case (int)Tokens.tkLabel:
|
||
case (int)Tokens.tkLock:
|
||
case (int)Tokens.tkProgram:
|
||
case (int)Tokens.tkEvent:
|
||
case (int)Tokens.tkDefault:
|
||
case (int)Tokens.tkTemplate:
|
||
case (int)Tokens.tkExports:
|
||
case (int)Tokens.tkResourceString:
|
||
case (int)Tokens.tkThreadvar:
|
||
case (int)Tokens.tkSealed:
|
||
case (int)Tokens.tkPartial:
|
||
case (int)Tokens.tkParams:
|
||
case (int)Tokens.tkTo:
|
||
case (int)Tokens.tkDownto:
|
||
case (int)Tokens.tkUnit:
|
||
case (int)Tokens.tkNamespace:
|
||
case (int)Tokens.tkLibrary:
|
||
case (int)Tokens.tkExternal:
|
||
case (int)Tokens.tkYield:
|
||
case (int)Tokens.tkSequence:
|
||
case (int)Tokens.tkMatch:
|
||
case (int)Tokens.tkWhen:
|
||
case (int)Tokens.tkStatic:
|
||
case (int)Tokens.tkStep:
|
||
case (int)Tokens.tkAsync:
|
||
case (int)Tokens.tkAwait:
|
||
yylval = new Union();
|
||
yylval.ti = new token_info(cur_yytext,currentLexLocation);
|
||
break;
|
||
case (int)Tokens.tkBegin:
|
||
case (int)Tokens.tkEnd:
|
||
case (int)Tokens.tkTry:
|
||
yylval = new Union();
|
||
yylval.ti = new token_info(cur_yytext,currentLexLocation);
|
||
break;
|
||
case (int)Tokens.tkNew:
|
||
case (int)Tokens.tkOn:
|
||
case (int)Tokens.tkName:
|
||
case (int)Tokens.tkPrivate:
|
||
case (int)Tokens.tkProtected:
|
||
case (int)Tokens.tkPublic:
|
||
case (int)Tokens.tkInternal:
|
||
case (int)Tokens.tkRead:
|
||
case (int)Tokens.tkWrite:
|
||
case (int)Tokens.tkIndex:
|
||
yylval = new Union();
|
||
yylval.id = new ident(cur_yytext,currentLexLocation);
|
||
break;
|
||
case (int)Tokens.tkAbstract:
|
||
yylval = new Union();
|
||
yylval.id = new procedure_attribute(proc_attribute.attr_abstract,currentLexLocation);
|
||
yylval.id.name = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkForward:
|
||
yylval = new Union();
|
||
yylval.id = new procedure_attribute(proc_attribute.attr_forward,currentLexLocation);
|
||
yylval.id.name = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkOverload:
|
||
yylval = new Union();
|
||
yylval.id = new procedure_attribute(proc_attribute.attr_overload,currentLexLocation);
|
||
yylval.id.name = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkReintroduce:
|
||
yylval = new Union();
|
||
yylval.id = new procedure_attribute(proc_attribute.attr_reintroduce,currentLexLocation);
|
||
yylval.id.name = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkOverride:
|
||
yylval = new Union();
|
||
yylval.id = new procedure_attribute(proc_attribute.attr_override,currentLexLocation);
|
||
yylval.id.name = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkExtensionMethod:
|
||
yylval = new Union();
|
||
yylval.id = new procedure_attribute(proc_attribute.attr_extension,currentLexLocation);
|
||
yylval.id.name = cur_yytext;
|
||
break;
|
||
case (int)Tokens.tkVirtual:
|
||
yylval = new Union();
|
||
yylval.id = new procedure_attribute(proc_attribute.attr_virtual,currentLexLocation);
|
||
yylval.id.name = cur_yytext;
|
||
break;
|
||
}
|
||
return res;
|
||
break;
|
||
case 29:
|
||
return (int)Tokens.INVISIBLE;
|
||
break;
|
||
case 31:
|
||
yylval = new Union();
|
||
currentLexLocation = CurrentLexLocation;
|
||
yylval.ex = parserTools.create_int_const(yytext,currentLexLocation);
|
||
return (int)Tokens.tkInteger;
|
||
break;
|
||
case 33:
|
||
case 34:
|
||
yylval = new Union();
|
||
currentLexLocation = CurrentLexLocation;
|
||
yylval.stn = parserTools.create_string_const(yytext,currentLexLocation);
|
||
return (int)Tokens.tkStringLiteral;
|
||
break;
|
||
case 35:
|
||
yylval = new Union();
|
||
currentLexLocation = CurrentLexLocation;
|
||
yylval.stn = parserTools.create_multiline_string_const(yytext,currentLexLocation);
|
||
return (int)Tokens.tkMultilineStringLiteral;
|
||
break;
|
||
case 36:
|
||
yylval = new Union();
|
||
currentLexLocation = CurrentLexLocation;
|
||
yylval.ex = parserTools.create_bigint_const(yytext,currentLexLocation);
|
||
return (int)Tokens.tkBigInteger;
|
||
break;
|
||
case 37:
|
||
case 38:
|
||
yylval = new Union();
|
||
currentLexLocation = CurrentLexLocation;
|
||
yylval.ex = parserTools.create_double_const(yytext,currentLexLocation);
|
||
return (int)Tokens.tkFloat;
|
||
break;
|
||
case 39:
|
||
yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkBackSlashRoundOpen;
|
||
break;
|
||
case 40:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.LessEqual); return (int)Tokens.tkLowerEqual;
|
||
break;
|
||
case 41:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.NotEqual); return (int)Tokens.tkNotEqual;
|
||
break;
|
||
case 42:
|
||
ExprMode = true; return (int)Tokens.tkParseModeType;
|
||
break;
|
||
case 43:
|
||
ExprMode = true; return (int)Tokens.tkParseModeStatement;
|
||
break;
|
||
case 44:
|
||
ExprMode = true; return (int)Tokens.tkParseModeExpression;
|
||
break;
|
||
case 45:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.GreaterEqual); return (int)Tokens.tkGreaterEqual;
|
||
break;
|
||
case 46:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentSubtraction); return (int)Tokens.tkMinusEqual;
|
||
break;
|
||
case 47:
|
||
yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkArrow;
|
||
break;
|
||
case 48:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentAddition); return (int)Tokens.tkPlusEqual;
|
||
break;
|
||
case 49:
|
||
return (int)Tokens.tkQuestionPoint;
|
||
break;
|
||
case 50:
|
||
return (int)Tokens.tkQuestionSquareOpen;
|
||
break;
|
||
case 51:
|
||
return (int)Tokens.tkDoubleQuestion;
|
||
break;
|
||
case 52:
|
||
return (int)Tokens.tkDotDot;
|
||
break;
|
||
case 53:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.Assignment); return (int)Tokens.tkAssign;
|
||
break;
|
||
case 54:
|
||
yylval = new Union();
|
||
yylval.id = new ident(yytext,CurrentLexLocation);
|
||
return (int)Tokens.tkDirectiveName;
|
||
break;
|
||
case 55:
|
||
yylval = new Union();
|
||
currentLexLocation = CurrentLexLocation;
|
||
yylval.stn = parserTools.create_sharp_char_const(yytext,currentLexLocation);
|
||
return (int)Tokens.tkAsciiChar;
|
||
break;
|
||
case 56:
|
||
yylval = new Union(); yylval.ti = new token_info("##",CurrentLexLocation); return (int)Tokens.tkShortProgram;
|
||
break;
|
||
case 57:
|
||
yylval = new Union(); yylval.ti = new token_info("###",CurrentLexLocation); return (int)Tokens.tkShortSFProgram;
|
||
break;
|
||
case 58:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.Power); return (int)Tokens.tkStarStar;
|
||
break;
|
||
case 59:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentMultiplication); return (int)Tokens.tkMultEqual;
|
||
break;
|
||
case 60:
|
||
BEGIN(COMMENT1);
|
||
break;
|
||
case 61:
|
||
yylval = new Union();
|
||
currentLexLocation = CurrentLexLocation;
|
||
yylval.ex = parserTools.create_hex_const(yytext,currentLexLocation);
|
||
return (int)Tokens.tkHex;
|
||
break;
|
||
case 62:
|
||
yylval = new Union();
|
||
currentLexLocation = CurrentLexLocation;
|
||
yylval.stn = parserTools.create_format_string_const(yytext,currentLexLocation);
|
||
return (int)Tokens.tkFormatStringLiteral;
|
||
break;
|
||
case 63:
|
||
if (parserTools.buildTreeForFormatter)
|
||
break;
|
||
|
||
parserTools.ParseDirective(yytext, CurrentLexLocation, out var directiveName, out var directiveParams);
|
||
var orgDirectiveName = directiveName;
|
||
|
||
if (directiveName == "") // сл<D181>?<3F>?ай п<>?с<>?ой ди<D0B4>?ек<D0B5>?ив<D0B8>?
|
||
break;
|
||
|
||
directiveName = directiveName.ToUpper();
|
||
|
||
if (directiveName == "HIDDENIDENTS")
|
||
{
|
||
HiddenIdents = true;
|
||
}
|
||
else if (directiveName == "INCLUDE")
|
||
{
|
||
TryInclude(directiveParams[0]);
|
||
}
|
||
else if (directiveName == "IFDEF")
|
||
{
|
||
IfDefInElseBranch.Push(false);
|
||
IfDefVar.Push(directiveParams[0]);
|
||
if (!Defines.Contains(directiveParams[0]))
|
||
{
|
||
BEGIN(EXCLUDETEXT);
|
||
IfExclude = 1;
|
||
}
|
||
}
|
||
else if (directiveName == "IFNDEF")
|
||
{
|
||
IfDefInElseBranch.Push(false);
|
||
IfDefVar.Push(directiveParams[0]);
|
||
if (Defines.Contains(directiveParams[0]))
|
||
{
|
||
BEGIN(EXCLUDETEXT);
|
||
IfExclude = 1;
|
||
}
|
||
}
|
||
else if (directiveName == "ELSE")
|
||
{
|
||
if (directiveParams.Count!=0 && directiveParams[0]!=IfDefVar.Peek())
|
||
parserTools.AddWarningFromResource("DIFF_DEFINE_NAME", CurrentLexLocation, orgDirectiveName, IfDefVar.Peek(), directiveParams[0]);
|
||
if (IfDefInElseBranch.Count==0 || IfDefInElseBranch.Pop())
|
||
parserTools.AddErrorFromResource("UNNECESSARY $else",CurrentLexLocation);
|
||
IfDefInElseBranch.Push(true);
|
||
BEGIN(EXCLUDETEXT);
|
||
IfExclude = 1;
|
||
}
|
||
else if (directiveName == "ENDIF")
|
||
{
|
||
if (IfDefInElseBranch.Count == 0)
|
||
parserTools.AddErrorFromResource("UNNECESSARY $endif",CurrentLexLocation);
|
||
IfDefInElseBranch.Pop();
|
||
var define_name = IfDefVar.Pop();
|
||
if (directiveParams.Count!=0 && directiveParams[0]!=define_name)
|
||
parserTools.AddWarningFromResource("DIFF_DEFINE_NAME", CurrentLexLocation, orgDirectiveName, define_name, directiveParams[0]);
|
||
}
|
||
else if (directiveName == "DEFINE")
|
||
{
|
||
if (!Defines.Contains(directiveParams[0]))
|
||
Defines.Add(directiveParams[0]);
|
||
}
|
||
else if (directiveName == "UNDEF")
|
||
{
|
||
if (Defines.Contains(directiveParams[0]))
|
||
Defines.Remove(directiveParams[0]);
|
||
}
|
||
parserTools.compilerDirectives.Add(new compiler_directive(new token_info(directiveName), new token_info(string.Join(" ", directiveParams)), CurrentLexLocation));
|
||
break;
|
||
case 64:
|
||
{
|
||
|
||
}
|
||
break;
|
||
case 65:
|
||
yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentDivision); return (int)Tokens.tkDivEqual;
|
||
break;
|
||
case 66:
|
||
{
|
||
}
|
||
break;
|
||
case 67:
|
||
BEGIN(INITIAL);
|
||
break;
|
||
case 68:
|
||
case 69:
|
||
{
|
||
}
|
||
break;
|
||
case 70:
|
||
BEGIN(INITIAL);
|
||
break;
|
||
case 71:
|
||
case 72:
|
||
case 73:
|
||
{
|
||
}
|
||
break;
|
||
case 74:
|
||
parserTools.ParseDirective(yytext, CurrentLexLocation, out directiveName, out directiveParams);
|
||
orgDirectiveName = directiveName;
|
||
|
||
if (directiveName == "") // сл<D181>?<3F>?ай п<>?с<>?ой ди<D0B4>?ек<D0B5>?ив<D0B8>?
|
||
break;
|
||
|
||
directiveName = directiveName.ToUpper();
|
||
|
||
bool addDirective = false;
|
||
|
||
if (directiveName == "IFDEF")
|
||
{
|
||
IfDefInElseBranch.Push(false);
|
||
IfDefVar.Push(directiveParams[0]);
|
||
IfExclude++;
|
||
}
|
||
else if (directiveName == "IFNDEF")
|
||
{
|
||
IfDefInElseBranch.Push(false);
|
||
IfDefVar.Push(directiveParams[0]);
|
||
IfExclude++;
|
||
}
|
||
else if (directiveName == "ELSE")
|
||
{
|
||
if (directiveParams.Count!=0 && directiveParams[0]!=IfDefVar.Peek())
|
||
parserTools.AddWarningFromResource("DIFF_DEFINE_NAME", CurrentLexLocation, orgDirectiveName, IfDefVar.Peek(), directiveParams[0]);
|
||
if (IfDefInElseBranch.Count==0 || IfDefInElseBranch.Pop())
|
||
parserTools.AddErrorFromResource("UNNECESSARY $else",CurrentLexLocation);
|
||
IfDefInElseBranch.Push(true);
|
||
if (IfExclude == 1)
|
||
{
|
||
BEGIN(INITIAL);
|
||
addDirective = true;
|
||
}
|
||
|
||
}
|
||
else if (directiveName == "ENDIF")
|
||
{
|
||
if (IfDefInElseBranch.Count == 0)
|
||
parserTools.AddErrorFromResource("UNNECESSARY $endif",CurrentLexLocation);
|
||
IfDefInElseBranch.Pop();
|
||
var define_name = IfDefVar.Pop();
|
||
if (directiveParams.Count!=0 && directiveParams[0]!=define_name)
|
||
parserTools.AddWarningFromResource("DIFF_DEFINE_NAME", CurrentLexLocation, orgDirectiveName, define_name, directiveParams[0]);
|
||
IfExclude--;
|
||
if (IfExclude == 0)
|
||
{
|
||
BEGIN(INITIAL);
|
||
addDirective = true;
|
||
}
|
||
|
||
}
|
||
|
||
if (addDirective)
|
||
parserTools.compilerDirectives.Add(new compiler_directive(new token_info(directiveName), new token_info(string.Join(" ", directiveParams)), CurrentLexLocation));
|
||
break;
|
||
case 75:
|
||
{
|
||
|
||
}
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
#pragma warning restore 162
|
||
#endregion
|
||
}
|
||
}
|
||
} // end try
|
||
finally {
|
||
// User-specified epilog to scan()
|
||
if (currentLexLocation != null)
|
||
yylloc = currentLexLocation;
|
||
else
|
||
yylloc = CurrentLexLocation;
|
||
currentLexLocation = null;
|
||
// End, user-specified epilog
|
||
} // end finally
|
||
}
|
||
|
||
#if BACKUP
|
||
Result Recurse2(ref Context ctx, int next)
|
||
{
|
||
// Assert: at entry "state" is an accept state AND
|
||
// NextState(state, code) != goStart AND
|
||
// NextState(state, code) is not an accept state.
|
||
//
|
||
SaveStateAndPos(ref ctx);
|
||
state = next;
|
||
GetCode();
|
||
|
||
while ((next = NextState()) > eofNum)
|
||
{
|
||
if (state <= maxAccept && next > maxAccept) // need to update backup data
|
||
SaveStateAndPos(ref ctx);
|
||
state = next;
|
||
if (state == eofNum) return Result.accept;
|
||
GetCode();
|
||
}
|
||
return (state <= maxAccept ? Result.accept : Result.noMatch);
|
||
}
|
||
|
||
void SaveStateAndPos(ref Context ctx)
|
||
{
|
||
ctx.bPos = buffer.Pos;
|
||
ctx.rPos = readPos;
|
||
ctx.cCol = cCol;
|
||
ctx.lNum = lNum;
|
||
ctx.state = state;
|
||
ctx.cChr = code;
|
||
}
|
||
|
||
void RestoreStateAndPos(ref Context ctx)
|
||
{
|
||
buffer.Pos = ctx.bPos;
|
||
readPos = ctx.rPos;
|
||
cCol = ctx.cCol;
|
||
lNum = ctx.lNum;
|
||
state = ctx.state;
|
||
code = ctx.cChr;
|
||
}
|
||
|
||
#endif // BACKUP
|
||
|
||
// ============= End of the tokenizer code ================
|
||
|
||
#if STACK
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
internal void yy_clear_stack() { scStack.Clear(); }
|
||
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
internal int yy_top_state() { return scStack.Peek(); }
|
||
|
||
internal void yy_push_state(int state)
|
||
{
|
||
scStack.Push(currentScOrd);
|
||
BEGIN(state);
|
||
}
|
||
|
||
internal void yy_pop_state()
|
||
{
|
||
// Protect against input errors that pop too far ...
|
||
if (scStack.Count > 0) {
|
||
int newSc = scStack.Pop();
|
||
BEGIN(newSc);
|
||
} // Otherwise leave stack unchanged.
|
||
}
|
||
#endif // STACK
|
||
|
||
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||
internal void ECHO() { Console.Out.Write(yytext); }
|
||
|
||
#region UserCodeSection
|
||
|
||
public LexLocation CurrentLexLocation
|
||
{
|
||
get {
|
||
return new LexLocation(tokLin, tokCol, tokELin, tokECol, parserTools.currentFileName);
|
||
}
|
||
}
|
||
|
||
protected override bool yywrap()
|
||
{
|
||
if (IfDefInElseBranch.Count != 0)
|
||
parserTools.AddErrorFromResource("ENDIF_ABSENT",CurrentLexLocation);
|
||
BEGIN(INITIAL);
|
||
if (buffStack.Count == 0)
|
||
return true;
|
||
RestoreBuffCtx(buffStack.Pop());
|
||
parserTools.currentFileName = fNameStack.Pop();
|
||
return false;
|
||
}
|
||
|
||
public override void yyerror(string format, params object[] args)
|
||
{
|
||
string errorMsg = parserTools.CreateErrorString(yytext,args);
|
||
parserTools.AddError(errorMsg,CurrentLexLocation);
|
||
}
|
||
|
||
private void TryInclude(string fName)
|
||
{
|
||
if (fName == null || fName.Length == 0)
|
||
parserTools.AddErrorFromResource("INCLUDE_EMPTY_FILE",CurrentLexLocation);
|
||
else
|
||
try {
|
||
if (fName.StartsWith("'"))
|
||
{
|
||
fName = fName.Substring(1);
|
||
if (fName.EndsWith("'"))
|
||
fName = fName.Substring(0, fName.Length-1);
|
||
}
|
||
BufferContext savedCtx = MkBuffCtx();
|
||
string full_path = fName;
|
||
if (!Path.IsPathRooted(full_path))
|
||
full_path = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(parserTools.currentFileName), fName));
|
||
|
||
if (fNameStack.Contains(full_path))
|
||
{
|
||
parserTools.AddErrorFromResource("RECUR_INCLUDE", CurrentLexLocation, fName);
|
||
return;
|
||
}
|
||
|
||
SetSource(File.ReadAllText(full_path), 0);
|
||
fNameStack.Push(parserTools.currentFileName);
|
||
parserTools.currentFileName = full_path;
|
||
buffStack.Push(savedCtx);
|
||
}
|
||
catch
|
||
{
|
||
parserTools.AddErrorFromResource("INCLUDE_COULDNT_OPEN_FILE{0}",CurrentLexLocation,fName);
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
} // end class $Scanner
|
||
|
||
// ==============================================================
|
||
// <auto-generated>
|
||
// This code automatically produced from an embedded resource.
|
||
// Do not edit this file, or it will become incompatible with
|
||
// the specification from which it was generated.
|
||
// </auto-generated>
|
||
// ==============================================================
|
||
|
||
// Code copied from GPLEX embedded resource
|
||
[Serializable]
|
||
public class BufferException : Exception
|
||
{
|
||
public BufferException() { }
|
||
public BufferException(string message) : base(message) { }
|
||
public BufferException(string message, Exception innerException)
|
||
: base(message, innerException) { }
|
||
protected BufferException(SerializationInfo info, StreamingContext context)
|
||
: base(info, context) { }
|
||
}
|
||
|
||
public abstract class ScanBuff
|
||
{
|
||
private string fileNm;
|
||
|
||
public const int EndOfFile = -1;
|
||
public const int UnicodeReplacementChar = 0xFFFD;
|
||
|
||
public bool IsFile { get { return (fileNm != null); } }
|
||
public string FileName { get { return fileNm; } set { fileNm = value; } }
|
||
|
||
public abstract int Pos { get; set; }
|
||
public abstract int Read();
|
||
public virtual void Mark() { }
|
||
|
||
public abstract string GetString(int begin, int limit);
|
||
|
||
public static ScanBuff GetBuffer(string source)
|
||
{
|
||
return new StringBuffer(source);
|
||
}
|
||
|
||
public static ScanBuff GetBuffer(IList<string> source)
|
||
{
|
||
return new LineBuffer(source);
|
||
}
|
||
|
||
public static ScanBuff GetBuffer(Stream source)
|
||
{
|
||
return new BuildBuffer(source);
|
||
}
|
||
|
||
#if (!BYTEMODE)
|
||
public static ScanBuff GetBuffer(Stream source, int fallbackCodePage)
|
||
{
|
||
return new BuildBuffer(source, fallbackCodePage);
|
||
}
|
||
#endif
|
||
}
|
||
|
||
#region Buffer classes
|
||
|
||
// ==============================================================
|
||
// ===== Definitions for various ScanBuff derived classes ====
|
||
// ==============================================================
|
||
// =============== String input ================
|
||
// ==============================================================
|
||
|
||
/// <summary>
|
||
/// This class reads characters from a single string as
|
||
/// required, for example, by Visual Studio language services
|
||
/// </summary>
|
||
sealed class StringBuffer : ScanBuff
|
||
{
|
||
string str; // input buffer
|
||
int bPos; // current position in buffer
|
||
int sLen;
|
||
|
||
public StringBuffer(string source)
|
||
{
|
||
this.str = source;
|
||
this.sLen = source.Length;
|
||
this.FileName = null;
|
||
}
|
||
|
||
public override int Read()
|
||
{
|
||
if (bPos < sLen) return str[bPos++];
|
||
else if (bPos == sLen) { bPos++; return '\n'; } // one strike, see new line
|
||
else { bPos++; return EndOfFile; } // two strikes and you're out!
|
||
}
|
||
|
||
public override string GetString(int begin, int limit)
|
||
{
|
||
// "limit" can be greater than sLen with the BABEL
|
||
// option set. Read returns a "virtual" EOL if
|
||
// an attempt is made to read past the end of the
|
||
// string buffer. Without the guard any attempt
|
||
// to fetch yytext for a token that includes the
|
||
// EOL will throw an index exception.
|
||
if (limit > sLen) limit = sLen;
|
||
if (limit <= begin) return "";
|
||
else return str.Substring(begin, limit - begin);
|
||
}
|
||
|
||
public override int Pos
|
||
{
|
||
get { return bPos; }
|
||
set { bPos = value; }
|
||
}
|
||
|
||
public override string ToString() { return "StringBuffer"; }
|
||
}
|
||
|
||
// ==============================================================
|
||
// The LineBuff class contributed by Nigel Horspool,
|
||
// nigelh@cs.uvic.cs
|
||
// ==============================================================
|
||
|
||
sealed class LineBuffer : ScanBuff
|
||
{
|
||
IList<string> line; // list of source lines from a file
|
||
int numLines; // number of strings in line list
|
||
string curLine; // current line in that list
|
||
int cLine; // index of current line in the list
|
||
int curLen; // length of current line
|
||
int curLineStart; // position of line start in whole file
|
||
int curLineEnd; // position of line end in whole file
|
||
int maxPos; // max position ever visited in whole file
|
||
int cPos; // ordinal number of code in source
|
||
|
||
// Constructed from a list of strings, one per source line.
|
||
// The lines have had trailing '\n' characters removed.
|
||
public LineBuffer(IList<string> lineList)
|
||
{
|
||
line = lineList;
|
||
numLines = line.Count;
|
||
cPos = curLineStart = 0;
|
||
curLine = (numLines > 0 ? line[0] : "");
|
||
maxPos = curLineEnd = curLen = curLine.Length;
|
||
cLine = 1;
|
||
FileName = null;
|
||
}
|
||
|
||
public override int Read()
|
||
{
|
||
if (cPos < curLineEnd)
|
||
return curLine[cPos++ - curLineStart];
|
||
if (cPos++ == curLineEnd)
|
||
return '\n';
|
||
if (cLine >= numLines)
|
||
return EndOfFile;
|
||
curLine = line[cLine];
|
||
curLen = curLine.Length;
|
||
curLineStart = curLineEnd + 1;
|
||
curLineEnd = curLineStart + curLen;
|
||
if (curLineEnd > maxPos)
|
||
maxPos = curLineEnd;
|
||
cLine++;
|
||
return curLen > 0 ? curLine[0] : '\n';
|
||
}
|
||
|
||
// To speed up searches for the line containing a position
|
||
private int cachedPosition;
|
||
private int cachedIxdex;
|
||
private int cachedLineStart;
|
||
|
||
// Given a position pos within the entire source, the results are
|
||
// ix -- the index of the containing line
|
||
// lstart -- the position of the first character on that line
|
||
private void findIndex(int pos, out int ix, out int lstart)
|
||
{
|
||
if (pos >= cachedPosition)
|
||
{
|
||
ix = cachedIxdex; lstart = cachedLineStart;
|
||
}
|
||
else
|
||
{
|
||
ix = lstart = 0;
|
||
}
|
||
for (; ; )
|
||
{
|
||
int len = line[ix].Length + 1;
|
||
if (pos < lstart + len) break;
|
||
lstart += len;
|
||
ix++;
|
||
}
|
||
cachedPosition = pos;
|
||
cachedIxdex = ix;
|
||
cachedLineStart = lstart;
|
||
}
|
||
|
||
public override string GetString(int begin, int limit)
|
||
{
|
||
if (begin >= maxPos || limit <= begin) return "";
|
||
int endIx, begIx, endLineStart, begLineStart;
|
||
findIndex(begin, out begIx, out begLineStart);
|
||
int begCol = begin - begLineStart;
|
||
findIndex(limit, out endIx, out endLineStart);
|
||
int endCol = limit - endLineStart;
|
||
string s = line[begIx];
|
||
if (begIx == endIx)
|
||
{
|
||
// the usual case, substring all on one line
|
||
return (endCol <= s.Length) ?
|
||
s.Substring(begCol, endCol - begCol)
|
||
: s.Substring(begCol) + "\n";
|
||
}
|
||
// the string spans multiple lines, yuk!
|
||
StringBuilder sb = new StringBuilder();
|
||
if (begCol < s.Length)
|
||
sb.Append(s.Substring(begCol));
|
||
for (; ; )
|
||
{
|
||
sb.Append("\n");
|
||
s = line[++begIx];
|
||
if (begIx >= endIx) break;
|
||
sb.Append(s);
|
||
}
|
||
if (endCol <= s.Length)
|
||
{
|
||
sb.Append(s.Substring(0, endCol));
|
||
}
|
||
else
|
||
{
|
||
sb.Append(s);
|
||
sb.Append("\n");
|
||
}
|
||
return sb.ToString();
|
||
}
|
||
|
||
public override int Pos
|
||
{
|
||
get { return cPos; }
|
||
set
|
||
{
|
||
cPos = value;
|
||
findIndex(cPos, out cLine, out curLineStart);
|
||
curLine = line[cLine];
|
||
curLineEnd = curLineStart + curLine.Length;
|
||
}
|
||
}
|
||
|
||
public override string ToString() { return "LineBuffer"; }
|
||
}
|
||
|
||
|
||
// ==============================================================
|
||
// ===== class BuildBuff : for unicode text files ========
|
||
// ==============================================================
|
||
|
||
class BuildBuffer : ScanBuff
|
||
{
|
||
// Double buffer for char stream.
|
||
class BufferElement
|
||
{
|
||
StringBuilder bldr = new StringBuilder();
|
||
StringBuilder next = new StringBuilder();
|
||
int minIx;
|
||
int maxIx;
|
||
int brkIx;
|
||
bool appendToNext;
|
||
|
||
internal BufferElement() { }
|
||
|
||
internal int MaxIndex { get { return maxIx; } }
|
||
// internal int MinIndex { get { return minIx; } }
|
||
|
||
internal char this[int index]
|
||
{
|
||
get
|
||
{
|
||
if (index < minIx || index >= maxIx)
|
||
throw new BufferException("Index was outside data buffer");
|
||
else if (index < brkIx)
|
||
return bldr[index - minIx];
|
||
else
|
||
return next[index - brkIx];
|
||
}
|
||
}
|
||
|
||
internal void Append(char[] block, int count)
|
||
{
|
||
maxIx += count;
|
||
if (appendToNext)
|
||
this.next.Append(block, 0, count);
|
||
else
|
||
{
|
||
this.bldr.Append(block, 0, count);
|
||
brkIx = maxIx;
|
||
appendToNext = true;
|
||
}
|
||
}
|
||
|
||
internal string GetString(int start, int limit)
|
||
{
|
||
if (limit <= start)
|
||
return "";
|
||
if (start >= minIx && limit <= maxIx)
|
||
if (limit < brkIx) // String entirely in bldr builder
|
||
return bldr.ToString(start - minIx, limit - start);
|
||
else if (start >= brkIx) // String entirely in next builder
|
||
return next.ToString(start - brkIx, limit - start);
|
||
else // Must do a string-concatenation
|
||
return
|
||
bldr.ToString(start - minIx, brkIx - start) +
|
||
next.ToString(0, limit - brkIx);
|
||
else
|
||
throw new BufferException("String was outside data buffer");
|
||
}
|
||
|
||
internal void Mark(int limit)
|
||
{
|
||
if (limit > brkIx + 16) // Rotate blocks
|
||
{
|
||
StringBuilder temp = bldr;
|
||
bldr = next;
|
||
next = temp;
|
||
next.Length = 0;
|
||
minIx = brkIx;
|
||
brkIx = maxIx;
|
||
}
|
||
}
|
||
}
|
||
|
||
BufferElement data = new BufferElement();
|
||
|
||
int bPos; // Postion index in the StringBuilder
|
||
BlockReader NextBlk; // Delegate that serves char-arrays;
|
||
|
||
private string EncodingName
|
||
{
|
||
get
|
||
{
|
||
StreamReader rdr = NextBlk.Target as StreamReader;
|
||
return (rdr == null ? "raw-bytes" : rdr.CurrentEncoding.BodyName);
|
||
}
|
||
}
|
||
|
||
public BuildBuffer(Stream stream)
|
||
{
|
||
FileStream fStrm = (stream as FileStream);
|
||
if (fStrm != null) FileName = fStrm.Name;
|
||
NextBlk = BlockReaderFactory.Raw(stream);
|
||
}
|
||
|
||
#if (!BYTEMODE)
|
||
public BuildBuffer(Stream stream, int fallbackCodePage)
|
||
{
|
||
FileStream fStrm = (stream as FileStream);
|
||
if (fStrm != null) FileName = fStrm.Name;
|
||
NextBlk = BlockReaderFactory.Get(stream, fallbackCodePage);
|
||
}
|
||
#endif
|
||
|
||
/// <summary>
|
||
/// Marks a conservative lower bound for the buffer,
|
||
/// allowing space to be reclaimed. If an application
|
||
/// needs to call GetString at arbitrary past locations
|
||
/// in the input stream, Mark() is not called.
|
||
/// </summary>
|
||
public override void Mark() { data.Mark(bPos - 2); }
|
||
|
||
public override int Pos
|
||
{
|
||
get { return bPos; }
|
||
set { bPos = value; }
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Read returns the ordinal number of the next char, or
|
||
/// EOF (-1) for an end of stream. Note that the next
|
||
/// code point may require *two* calls of Read().
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public override int Read()
|
||
{
|
||
//
|
||
// Characters at positions
|
||
// [data.offset, data.offset + data.bldr.Length)
|
||
// are available in data.bldr.
|
||
//
|
||
if (bPos < data.MaxIndex)
|
||
{
|
||
// ch0 cannot be EOF
|
||
return (int)data[bPos++];
|
||
}
|
||
else // Read from underlying stream
|
||
{
|
||
// Experimental code, blocks of page size
|
||
char[] chrs = new char[4096];
|
||
int count = NextBlk(chrs, 0, 4096);
|
||
if (count == 0)
|
||
return EndOfFile;
|
||
else
|
||
{
|
||
data.Append(chrs, count);
|
||
return (int)data[bPos++];
|
||
}
|
||
}
|
||
}
|
||
|
||
public override string GetString(int begin, int limit)
|
||
{
|
||
return data.GetString(begin, limit);
|
||
}
|
||
|
||
public override string ToString()
|
||
{
|
||
return "StringBuilder buffer, encoding: " + this.EncodingName;
|
||
}
|
||
}
|
||
|
||
// =============== End ScanBuff-derived classes ==================
|
||
|
||
public delegate int BlockReader(char[] block, int index, int number);
|
||
|
||
// A delegate factory, serving up a delegate that
|
||
// reads a block of characters from the underlying
|
||
// encoded stream, via a StreamReader object.
|
||
//
|
||
public static class BlockReaderFactory
|
||
{
|
||
public static BlockReader Raw(Stream stream)
|
||
{
|
||
return delegate(char[] block, int index, int number)
|
||
{
|
||
byte[] b = new byte[number];
|
||
int count = stream.Read(b, 0, number);
|
||
int i = 0;
|
||
int j = index;
|
||
for (; i < count; i++, j++)
|
||
block[j] = (char)b[i];
|
||
return count;
|
||
};
|
||
}
|
||
|
||
#if (!BYTEMODE)
|
||
public static BlockReader Get(Stream stream, int fallbackCodePage)
|
||
{
|
||
Encoding encoding;
|
||
int preamble = Preamble(stream);
|
||
|
||
if (preamble != 0) // There is a valid BOM here!
|
||
encoding = Encoding.GetEncoding(preamble);
|
||
else if (fallbackCodePage == -1) // Fallback is "raw" bytes
|
||
return Raw(stream);
|
||
else if (fallbackCodePage != -2) // Anything but "guess"
|
||
encoding = Encoding.GetEncoding(fallbackCodePage);
|
||
else // This is the "guess" option
|
||
{
|
||
int guess = new Guesser(stream).GuessCodePage();
|
||
stream.Seek(0, SeekOrigin.Begin);
|
||
if (guess == -1) // ==> this is a 7-bit file
|
||
encoding = Encoding.ASCII;
|
||
else if (guess == 65001)
|
||
encoding = Encoding.UTF8;
|
||
else // ==> use the machine default
|
||
encoding = Encoding.Default;
|
||
}
|
||
StreamReader reader = new StreamReader(stream, encoding);
|
||
return reader.Read;
|
||
}
|
||
|
||
static int Preamble(Stream stream)
|
||
{
|
||
int b0 = stream.ReadByte();
|
||
int b1 = stream.ReadByte();
|
||
|
||
if (b0 == 0xfe && b1 == 0xff)
|
||
return 1201; // UTF16BE
|
||
if (b0 == 0xff && b1 == 0xfe)
|
||
return 1200; // UTF16LE
|
||
|
||
int b2 = stream.ReadByte();
|
||
if (b0 == 0xef && b1 == 0xbb && b2 == 0xbf)
|
||
return 65001; // UTF8
|
||
//
|
||
// There is no unicode preamble, so we
|
||
// return denoter for the machine default.
|
||
//
|
||
stream.Seek(0, SeekOrigin.Begin);
|
||
return 0;
|
||
}
|
||
#endif // !BYTEMODE
|
||
}
|
||
#endregion Buffer classes
|
||
|
||
// ==============================================================
|
||
// ============ class CodePageHandling =============
|
||
// ==============================================================
|
||
|
||
public static class CodePageHandling
|
||
{
|
||
public static int GetCodePage(string option)
|
||
{
|
||
string command = option.ToUpperInvariant();
|
||
if (command.StartsWith("CodePage:", StringComparison.OrdinalIgnoreCase))
|
||
command = command.Substring(9);
|
||
try
|
||
{
|
||
if (command.Equals("RAW"))
|
||
return -1;
|
||
else if (command.Equals("GUESS"))
|
||
return -2;
|
||
else if (command.Equals("DEFAULT"))
|
||
return 0;
|
||
else if (char.IsDigit(command[0]))
|
||
return int.Parse(command, CultureInfo.InvariantCulture);
|
||
else
|
||
{
|
||
Encoding enc = Encoding.GetEncoding(command);
|
||
return enc.CodePage;
|
||
}
|
||
}
|
||
catch (FormatException)
|
||
{
|
||
Console.Error.WriteLine(
|
||
"Invalid format \"{0}\", using machine default", option);
|
||
}
|
||
catch (ArgumentException)
|
||
{
|
||
Console.Error.WriteLine(
|
||
"Unknown code page \"{0}\", using machine default", option);
|
||
}
|
||
return 0;
|
||
}
|
||
}
|
||
#region guesser
|
||
#if (!BYTEMODE)
|
||
// ==============================================================
|
||
// ============ Encoding Guesser =============
|
||
// ==============================================================
|
||
|
||
/// <summary>
|
||
/// This class provides a simple finite state automaton that
|
||
/// scans the file looking for (1) valid UTF-8 byte patterns,
|
||
/// (2) bytes >= 0x80 which are not part of a UTF-8 sequence.
|
||
/// The method then guesses whether it is UTF-8 or maybe some
|
||
/// local machine default encoding. This works well for the
|
||
/// various Latin encodings.
|
||
/// </summary>
|
||
internal class Guesser
|
||
{
|
||
ScanBuff buffer;
|
||
|
||
public int GuessCodePage() { return Scan(); }
|
||
|
||
const int maxAccept = 10;
|
||
const int initial = 0;
|
||
const int eofNum = 0;
|
||
const int goStart = -1;
|
||
const int INITIAL = 0;
|
||
const int EndToken = 0;
|
||
|
||
#region user code
|
||
/*
|
||
* Reads the bytes of a file to determine if it is
|
||
* UTF-8 or a single-byte code page file.
|
||
*/
|
||
public long utfX;
|
||
public long uppr;
|
||
#endregion user code
|
||
|
||
int state;
|
||
int currentStart = startState[0];
|
||
int code;
|
||
|
||
#region ScannerTables
|
||
static int[] startState = new int[] { 11, 0 };
|
||
|
||
#region CharacterMap
|
||
static sbyte[] map = new sbyte[256] {
|
||
/* '\0' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
/* '\x10' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
/* '\x20' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
/* '0' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
/* '@' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
/* 'P' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
/* '`' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
/* 'p' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
/* '\x80' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
/* '\x90' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
/* '\xA0' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
/* '\xB0' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
/* '\xC0' */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
/* '\xD0' */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
/* '\xE0' */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||
/* '\xF0' */ 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5 };
|
||
#endregion
|
||
|
||
static sbyte[][] nextState = new sbyte[][] {
|
||
new sbyte[] {0, 0, 0, 0, 0, 0},
|
||
new sbyte[] {-1, -1, 10, -1, -1, -1},
|
||
new sbyte[] {-1, -1, -1, -1, -1, -1},
|
||
new sbyte[] {-1, -1, 8, -1, -1, -1},
|
||
new sbyte[] {-1, -1, 5, -1, -1, -1},
|
||
new sbyte[] {-1, -1, 6, -1, -1, -1},
|
||
new sbyte[] {-1, -1, 7, -1, -1, -1},
|
||
null,
|
||
new sbyte[] {-1, -1, 9, -1, -1, -1},
|
||
null,
|
||
null,
|
||
new sbyte[] {-1, 1, 2, 3, 4, 2}
|
||
};
|
||
|
||
|
||
[SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")]
|
||
// Reason for suppression: cannot have self-reference in array initializer.
|
||
static Guesser()
|
||
{
|
||
nextState[7] = nextState[2];
|
||
nextState[9] = nextState[2];
|
||
nextState[10] = nextState[2];
|
||
}
|
||
|
||
int NextState()
|
||
{
|
||
if (code == ScanBuff.EndOfFile)
|
||
return eofNum;
|
||
else
|
||
return nextState[state][map[code]];
|
||
}
|
||
#endregion
|
||
|
||
public Guesser(System.IO.Stream file) { SetSource(file); }
|
||
|
||
public void SetSource(System.IO.Stream source)
|
||
{
|
||
this.buffer = new BuildBuffer(source);
|
||
code = buffer.Read();
|
||
}
|
||
|
||
int Scan()
|
||
{
|
||
for (; ; )
|
||
{
|
||
int next;
|
||
state = currentStart;
|
||
while ((next = NextState()) == goStart)
|
||
code = buffer.Read();
|
||
|
||
state = next;
|
||
code = buffer.Read();
|
||
|
||
while ((next = NextState()) > eofNum)
|
||
{
|
||
state = next;
|
||
code = buffer.Read();
|
||
}
|
||
if (state <= maxAccept)
|
||
{
|
||
#region ActionSwitch
|
||
#pragma warning disable 162
|
||
switch (state)
|
||
{
|
||
case eofNum:
|
||
switch (currentStart)
|
||
{
|
||
case 11:
|
||
if (utfX == 0 && uppr == 0) return -1; /* raw ascii */
|
||
else if (uppr * 10 > utfX) return 0; /* default code page */
|
||
else return 65001; /* UTF-8 encoding */
|
||
break;
|
||
}
|
||
return EndToken;
|
||
case 1: // Recognized '{Upper128}', Shortest string "\xC0"
|
||
case 2: // Recognized '{Upper128}', Shortest string "\x80"
|
||
case 3: // Recognized '{Upper128}', Shortest string "\xE0"
|
||
case 4: // Recognized '{Upper128}', Shortest string "\xF0"
|
||
uppr++;
|
||
break;
|
||
case 5: // Recognized '{Utf8pfx4}{Utf8cont}', Shortest string "\xF0\x80"
|
||
uppr += 2;
|
||
break;
|
||
case 6: // Recognized '{Utf8pfx4}{Utf8cont}{2}', Shortest string "\xF0\x80\x80"
|
||
uppr += 3;
|
||
break;
|
||
case 7: // Recognized '{Utf8pfx4}{Utf8cont}{3}', Shortest string "\xF0\x80\x80\x80"
|
||
utfX += 3;
|
||
break;
|
||
case 8: // Recognized '{Utf8pfx3}{Utf8cont}', Shortest string "\xE0\x80"
|
||
uppr += 2;
|
||
break;
|
||
case 9: // Recognized '{Utf8pfx3}{Utf8cont}{2}', Shortest string "\xE0\x80\x80"
|
||
utfX += 2;
|
||
break;
|
||
case 10: // Recognized '{Utf8pfx2}{Utf8cont}', Shortest string "\xC0\x80"
|
||
utfX++;
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
#pragma warning restore 162
|
||
#endregion
|
||
}
|
||
}
|
||
}
|
||
} // end class Guesser
|
||
|
||
#endif // !BYTEMODE
|
||
#endregion
|
||
|
||
// End of code copied from embedded resource
|
||
|
||
} // end namespace
|