📄 synhighlightervrml97.pas
字号:
property VrmlInterpolatorAttri :TSynHighlighterAttributes read fVrmlInterpolatorAttri write fVrmlInterpolatorAttri;
property VrmlLightAttri :TSynHighlighterAttributes read fVrmlLightAttri write fVrmlLightAttri;
property VrmlNodeAttri :TSynHighlighterAttributes read fVrmlNodeAttri write fVrmlNodeAttri;
property VrmlParameterAttri :TSynHighlighterAttributes read fVrmlParameterAttri write fVrmlParameterAttri;
property VrmlprotoAttri :TSynHighlighterAttributes read fVrmlprotoAttri write fVrmlprotoAttri;
property VrmlSensorAttri :TSynHighlighterAttributes read fVrmlSensorAttri write fVrmlSensorAttri;
property VrmlShapeAttri :TSynHighlighterAttributes read fVrmlShapeAttri write fVrmlShapeAttri;
property VrmlShape_HintAttri :TSynHighlighterAttributes read fVrmlShape_HintAttri write fVrmlShape_HintAttri;
property VrmlTime_dependentAttri :TSynHighlighterAttributes read fVrmlTime_dependentAttri write fVrmlTime_dependentAttri;
property VrmlViewpointAttri :TSynHighlighterAttributes read fVrmlViewpointAttri write fVrmlViewpointAttri;
property VrmlWorldInfoAttri :TSynHighlighterAttributes read fVrmlWorldInfoAttri write fVrmlWorldInfoAttri;
property X3DDocTypeAttri :TSynHighlighterAttributes read fX3DDocTypeAttri write fX3DDocTypeAttri;
property X3DHeaderAttri :TSynHighlighterAttributes read fX3DHeaderAttri write fX3DHeaderAttri;
end;
implementation
uses
{$IFDEF SYN_CLX}
QSynEditStrConst;
{$ELSE}
SynEditStrConst;
{$ENDIF}
var
Identifiers :array[#0..#255] of ByteBool;
mHashTable :array[#0..#255] of Integer;
procedure MakeIdentTable;
var
I, J :Char;
begin
for I := #0 to #255 do
begin
case I of
'_', '0'..'9', 'a'..'z', 'A'..'Z' :Identifiers[I] := True;
else
Identifiers[I] := False;
end;
J := UpCase(I);
case I in ['_', 'A'..'Z', 'a'..'z'] of
True :mHashTable[I] := Ord(J) - 64
else
mHashTable[I] := 0;
end;
end;
end;
procedure TSynVrml97Syn.InitIdent;
var
I :Integer;
pF :PIdentFuncTableFunc;
begin
pF := PIdentFuncTableFunc(@fIdentFuncTable);
for I := Low(fIdentFuncTable) to High(fIdentFuncTable) do
begin
pF^ := AltFunc;
Inc(pF);
end;
fIdentFuncTable[5] := Func5;
fIdentFuncTable[15] := Func15;
fIdentFuncTable[17] := Func17;
fIdentFuncTable[18] := Func18;
fIdentFuncTable[19] := Func19;
fIdentFuncTable[22] := Func22;
fIdentFuncTable[23] := Func23;
fIdentFuncTable[25] := Func25;
fIdentFuncTable[26] := Func26;
fIdentFuncTable[27] := Func27;
fIdentFuncTable[28] := Func28;
fIdentFuncTable[29] := Func29;
fIdentFuncTable[30] := Func30;
fIdentFuncTable[31] := Func31;
fIdentFuncTable[32] := Func32;
fIdentFuncTable[33] := Func33;
fIdentFuncTable[34] := Func34;
fIdentFuncTable[35] := Func35;
fIdentFuncTable[36] := Func36;
fIdentFuncTable[37] := Func37;
fIdentFuncTable[38] := Func38;
fIdentFuncTable[39] := Func39;
fIdentFuncTable[40] := Func40;
fIdentFuncTable[41] := Func41;
fIdentFuncTable[42] := Func42;
fIdentFuncTable[43] := Func43;
fIdentFuncTable[44] := Func44;
fIdentFuncTable[45] := Func45;
fIdentFuncTable[46] := Func46;
fIdentFuncTable[47] := Func47;
fIdentFuncTable[48] := Func48;
fIdentFuncTable[49] := Func49;
fIdentFuncTable[50] := Func50;
fIdentFuncTable[51] := Func51;
fIdentFuncTable[52] := Func52;
fIdentFuncTable[53] := Func53;
fIdentFuncTable[54] := Func54;
fIdentFuncTable[55] := Func55;
fIdentFuncTable[56] := Func56;
fIdentFuncTable[57] := Func57;
fIdentFuncTable[58] := Func58;
fIdentFuncTable[59] := Func59;
fIdentFuncTable[60] := Func60;
fIdentFuncTable[61] := Func61;
fIdentFuncTable[62] := Func62;
fIdentFuncTable[63] := Func63;
fIdentFuncTable[64] := Func64;
fIdentFuncTable[65] := Func65;
fIdentFuncTable[66] := Func66;
fIdentFuncTable[67] := Func67;
fIdentFuncTable[68] := Func68;
fIdentFuncTable[69] := Func69;
fIdentFuncTable[70] := Func70;
fIdentFuncTable[71] := Func71;
fIdentFuncTable[72] := Func72;
fIdentFuncTable[73] := Func73;
fIdentFuncTable[74] := Func74;
fIdentFuncTable[75] := Func75;
fIdentFuncTable[76] := Func76;
fIdentFuncTable[77] := Func77;
fIdentFuncTable[78] := Func78;
fIdentFuncTable[79] := Func79;
fIdentFuncTable[80] := Func80;
fIdentFuncTable[81] := Func81;
fIdentFuncTable[82] := Func82;
fIdentFuncTable[83] := Func83;
fIdentFuncTable[84] := Func84;
fIdentFuncTable[85] := Func85;
fIdentFuncTable[86] := Func86;
fIdentFuncTable[87] := Func87;
fIdentFuncTable[88] := Func88;
fIdentFuncTable[89] := Func89;
fIdentFuncTable[90] := Func90;
fIdentFuncTable[91] := Func91;
fIdentFuncTable[92] := Func92;
fIdentFuncTable[93] := Func93;
fIdentFuncTable[94] := Func94;
fIdentFuncTable[95] := Func95;
fIdentFuncTable[96] := Func96;
fIdentFuncTable[97] := Func97;
fIdentFuncTable[98] := Func98;
fIdentFuncTable[99] := Func99;
fIdentFuncTable[100] := Func100;
fIdentFuncTable[101] := Func101;
fIdentFuncTable[102] := Func102;
fIdentFuncTable[103] := Func103;
fIdentFuncTable[104] := Func104;
fIdentFuncTable[105] := Func105;
fIdentFuncTable[106] := Func106;
fIdentFuncTable[107] := Func107;
fIdentFuncTable[108] := Func108;
fIdentFuncTable[109] := Func109;
fIdentFuncTable[110] := Func110;
fIdentFuncTable[111] := Func111;
fIdentFuncTable[112] := Func112;
fIdentFuncTable[113] := Func113;
fIdentFuncTable[114] := Func114;
fIdentFuncTable[115] := Func115;
fIdentFuncTable[116] := Func116;
fIdentFuncTable[117] := Func117;
fIdentFuncTable[118] := Func118;
fIdentFuncTable[119] := Func119;
fIdentFuncTable[120] := Func120;
fIdentFuncTable[121] := Func121;
fIdentFuncTable[122] := Func122;
fIdentFuncTable[123] := Func123;
fIdentFuncTable[124] := Func124;
fIdentFuncTable[125] := Func125;
fIdentFuncTable[126] := Func126;
fIdentFuncTable[128] := Func128;
fIdentFuncTable[129] := Func129;
fIdentFuncTable[130] := Func130;
fIdentFuncTable[131] := Func131;
fIdentFuncTable[132] := Func132;
fIdentFuncTable[133] := Func133;
fIdentFuncTable[134] := Func134;
fIdentFuncTable[135] := Func135;
fIdentFuncTable[136] := Func136;
fIdentFuncTable[137] := Func137;
fIdentFuncTable[138] := Func138;
fIdentFuncTable[139] := Func139;
fIdentFuncTable[140] := Func140;
fIdentFuncTable[141] := Func141;
fIdentFuncTable[142] := Func142;
fIdentFuncTable[143] := Func143;
fIdentFuncTable[144] := Func144;
fIdentFuncTable[145] := Func145;
fIdentFuncTable[146] := Func146;
fIdentFuncTable[147] := Func147;
fIdentFuncTable[148] := Func148;
fIdentFuncTable[149] := Func149;
fIdentFuncTable[150] := Func150;
fIdentFuncTable[151] := Func151;
fIdentFuncTable[153] := Func153;
fIdentFuncTable[154] := Func154;
fIdentFuncTable[155] := Func155;
fIdentFuncTable[156] := Func156;
fIdentFuncTable[157] := Func157;
fIdentFuncTable[158] := Func158;
fIdentFuncTable[159] := Func159;
fIdentFuncTable[160] := Func160;
fIdentFuncTable[161] := Func161;
fIdentFuncTable[162] := Func162;
fIdentFuncTable[164] := Func164;
fIdentFuncTable[166] := Func166;
fIdentFuncTable[167] := Func167;
fIdentFuncTable[168] := Func168;
fIdentFuncTable[169] := Func169;
fIdentFuncTable[170] := Func170;
fIdentFuncTable[171] := Func171;
fIdentFuncTable[172] := Func172;
fIdentFuncTable[173] := Func173;
fIdentFuncTable[174] := Func174;
fIdentFuncTable[175] := Func175;
fIdentFuncTable[176] := Func176;
fIdentFuncTable[177] := Func177;
fIdentFuncTable[178] := Func178;
fIdentFuncTable[179] := Func179;
fIdentFuncTable[180] := Func180;
fIdentFuncTable[181] := Func181;
fIdentFuncTable[182] := Func182;
fIdentFuncTable[183] := Func183;
fIdentFuncTable[184] := Func184;
fIdentFuncTable[185] := Func185;
fIdentFuncTable[186] := Func186;
fIdentFuncTable[188] := Func188;
fIdentFuncTable[189] := Func189;
fIdentFuncTable[190] := Func190;
fIdentFuncTable[194] := Func194;
fIdentFuncTable[196] := Func196;
fIdentFuncTable[198] := Func198;
fIdentFuncTable[199] := Func199;
fIdentFuncTable[200] := Func200;
fIdentFuncTable[202] := Func202;
fIdentFuncTable[204] := Func204;
fIdentFuncTable[206] := Func206;
fIdentFuncTable[209] := Func209;
fIdentFuncTable[210] := Func210;
fIdentFuncTable[212] := Func212;
fIdentFuncTable[213] := Func213;
fIdentFuncTable[214] := Func214;
fIdentFuncTable[215] := Func215;
fIdentFuncTable[216] := Func216;
fIdentFuncTable[217] := Func217;
fIdentFuncTable[218] := Func218;
fIdentFuncTable[220] := Func220;
fIdentFuncTable[221] := Func221;
fIdentFuncTable[222] := Func222;
fIdentFuncTable[223] := Func223;
fIdentFuncTable[226] := Func226;
fIdentFuncTable[229] := Func229;
fIdentFuncTable[233] := Func233;
fIdentFuncTable[234] := Func234;
fIdentFuncTable[235] := Func235;
fIdentFuncTable[236] := Func236;
fIdentFuncTable[237] := Func237;
fIdentFuncTable[239] := Func239;
fIdentFuncTable[245] := Func245;
fIdentFuncTable[252] := Func252;
fIdentFuncTable[255] := Func255;
fIdentFuncTable[260] := Func260;
fIdentFuncTable[262] := Func262;
fIdentFuncTable[263] := Func263;
fIdentFuncTable[264] := Func264;
fIdentFuncTable[267] := Func267;
fIdentFuncTable[271] := Func271;
fIdentFuncTable[278] := Func278;
fIdentFuncTable[280] := Func280;
fIdentFuncTable[283] := Func283;
fIdentFuncTable[284] := Func284;
fIdentFuncTable[289] := Func289;
fIdentFuncTable[292] := Func292;
fIdentFuncTable[303] := Func303;
fIdentFuncTable[307] := Func307;
fIdentFuncTable[308] := Func308;
fIdentFuncTable[318] := Func318;
fIdentFuncTable[320] := Func320;
fIdentFuncTable[354] := Func354;
end;
function TSynVrml97Syn.KeyHash(ToHash :PChar) :Integer;
begin
Result := 0;
while ToHash^ in ['_', '0'..'9', 'a'..'z', 'A'..'Z'] do
begin
inc(Result, mHashTable[ToHash^]);
inc(ToHash);
end;
fStringLen := ToHash - fToIdent;
end;
function TSynVrml97Syn.KeyComp(const aKey :string) :Boolean;
var
I :Integer;
Temp :PChar;
begin
Temp := fToIdent;
if Length(aKey) = fStringLen then
begin
Result := True;
for i := 1 to fStringLen do
begin
if Temp^ <> aKey[i] then
begin
Result := False;
break;
end;
inc(Temp);
end;
end
else
Result := False;
end;
//------------------------------------------------------------------------------
function TSynVrml97Syn.Func5 :TtkTokenKind;
begin
if KeyComp('E') then
Result := tkNonReservedKey
else
Result := tkIdentifier;
end;
function TSynVrml97Syn.Func15 :TtkTokenKind;
begin
if KeyComp('DEF') then
Result := tkVrmlProto
else
if KeyComp('FACE') then
Result := tkVrmlParameter
else
if KeyComp('if') then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynVrml97Syn.Func17 :TtkTokenKind;
begin
if KeyComp('back') then
Result := tkNonReservedKey
else
Result := tkIdentifier;
end;
function TSynVrml97Syn.Func18 :TtkTokenKind;
begin
if KeyComp('head') then
Result := tkKey
else
if KeyComp('big') then
Result := tkNonReservedKey
else
Result := tkIdentifier;
end;
function TSynVrml97Syn.Func19 :TtkTokenKind;
begin
if KeyComp('do') then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynVrml97Syn.Func22 :TtkTokenKind;
begin
if KeyComp('abs') then
Result := tkNonReservedKey
else
if KeyComp('go') then
Result := tkNonReservedKey
else
Result := tkIdentifier;
end;
function TSynVrml97Syn.Func23 :TtkTokenKind;
begin
if KeyComp('in') then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynVrml97Syn.Func25 :TtkTokenKind;
begin
if KeyComp('ALL') then
Result := tkVrmlParameter
else
if KeyComp('Area') then
Result := tkNonReservedKey
else
if KeyComp('PI') then
Result := tkNonReservedKey
else
if KeyComp('All') then
Result := tkNonReservedKey
else
if KeyComp('all') then
Result := tkNonReservedKey
else
Result := tkIdentifier;
end;
function TSynVrml97Syn.Func26 :TtkTokenKind;
begin
if KeyComp('Arc2D') then
Result := tkVrmlShape
else
if KeyComp('LN10') then
Result := tkNonReservedKey
else
if KeyComp('LN2') then
Result := tkNonReservedKey
else
Result := tkIdentifier;
end;
function TSynVrml97Syn.Func27 :TtkTokenKind;
begin
if KeyComp('OFF') then
Result := tkVrmlParameter
else
Result := tkIdentifier;
end;
function TSynVrml97Syn.Func28 :TtkTokenKind;
begin
if KeyComp('X3D') then
Result := tkVrmlProto
else
if KeyComp('IS') then
Result := tkVrmlProto
else
if KeyComp('Fog') then
Result := tkVrmlNode
else
if KeyComp('case') then
Result := tkKey
else
if KeyComp('call') then
Result := tkNonReservedKey
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -