wmsqlsyn.pas
来自「本人买的<<VC++项目开发实例>>源代码配套光盘.」· PAS 代码 · 共 1,397 行 · 第 1/3 页
PAS
1,397 行
if KeyComp('JOIN') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func49: TwmTokenKind;
begin
if KeyComp('SCHEMA') then Result := wmKey else
if KeyComp('ESCAPE') then Result := wmKey else
if KeyComp('NOT') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func50: TwmTokenKind;
begin
if KeyComp('AFTER') then Result := wmKey else
if KeyComp('WHEN') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func51: TwmTokenKind;
begin
if KeyComp('DELETE') then Result := wmKey else
if KeyComp('FULL') then Result := wmKey else
if KeyComp('BEFORE') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func52: TwmTokenKind;
begin
if KeyComp('FROM') then Result := wmKey else
if KeyComp('SOME') then Result := wmKey else
if KeyComp('CREATE') then Result := wmKey else
if KeyComp('NAMES') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func53: TwmTokenKind;
begin
if KeyComp('DROP') then Result := wmKey else
if KeyComp('WAIT') then Result := wmKey else
if KeyComp('DATABASE') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func55: TwmTokenKind;
begin
if KeyComp('SHARED') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func56: TwmTokenKind;
begin
if KeyComp('DOMAIN') then Result := wmKey else
if KeyComp('INDEX') then Result := wmKey else
if KeyComp('LEVEL') then Result := wmKey else
if KeyComp('ALTER') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func57: TwmTokenKind;
begin
if KeyComp('WHILE') then Result := wmKey else
if KeyComp('AUTO') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func58: TwmTokenKind;
begin
if KeyComp('INTO') then Result := wmKey else
if KeyComp('EXIT') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func59: TwmTokenKind;
begin
if KeyComp('VIEW') then Result := wmKey else
if KeyComp('NULL') then Result := wmKey else
if KeyComp('WHERE') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func60: TwmTokenKind;
begin
if KeyComp('ACTIVE') then Result := wmKey else
if KeyComp('ORDER') then Result := wmKey else
if KeyComp('BASE_NAME') then Result := wmKey else
if KeyComp('GRANT') then Result := wmKey else
if KeyComp('INNER') then Result := wmKey else
if KeyComp('WITH') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func61: TwmTokenKind;
begin
if KeyComp('HAVING') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func62: TwmTokenKind;
begin
if KeyComp('RIGHT') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func63: TwmTokenKind;
begin
if KeyComp('USER') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func64: TwmTokenKind;
begin
if KeyComp('SELECT') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func66: TwmTokenKind;
begin
if KeyComp('ONLY') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func67: TwmTokenKind;
begin
if KeyComp('RETAIN') then Result := wmKey else
if KeyComp('UPDATE') then Result := wmKey else
if KeyComp('WORK') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func69: TwmTokenKind;
begin
if KeyComp('DEFAULT') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func70: TwmTokenKind;
begin
if KeyComp('FILTER') then Result := wmKey else
if KeyComp('SHADOW') then Result := wmKey else
if KeyComp('USING') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func73: TwmTokenKind;
begin
if KeyComp('UNION') then Result := wmKey else
if KeyComp('COUNT') then Result := wmKey else
if KeyComp('COMMIT') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func74: TwmTokenKind;
begin
if KeyComp('ROLLBACK') then Result := wmKey else
if KeyComp('BETWEEN') then Result := wmKey else
if KeyComp('FOREIGN') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func76: TwmTokenKind;
begin
if KeyComp('ASCENDING') then Result := wmKey else
if KeyComp('REVOKE') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func77: TwmTokenKind;
begin
if KeyComp('GROUP') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func78: TwmTokenKind;
begin
if KeyComp('COLUMN') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func79: TwmTokenKind;
begin
if KeyComp('OUTER') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func83: TwmTokenKind;
begin
if KeyComp('EXECUTE') then Result := wmKey else
if KeyComp('INACTIVE') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func84: TwmTokenKind;
begin
if KeyComp('DESCENDING') then Result := wmKey else
if KeyComp('TRIGGER') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func85: TwmTokenKind;
begin
if KeyComp('INSERT') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func87: TwmTokenKind;
begin
if KeyComp('UNIQUE') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func91: TwmTokenKind;
begin
if KeyComp('EXTRACT') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func94: TwmTokenKind;
begin
if KeyComp('CURSOR') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func96: TwmTokenKind;
begin
if KeyComp('EXISTS') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func97: TwmTokenKind;
begin
if KeyComp('PARAMETER') then Result := wmKey else
if KeyComp('COMPUTED') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func98: TwmTokenKind;
begin
if KeyComp('DISTINCT') then Result := wmKey else
if KeyComp('SUSPEND') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func99: TwmTokenKind;
begin
if KeyComp('EXTERNAL') then Result := wmKey else
if KeyComp('CURRENT') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func100: TwmTokenKind;
begin
if KeyComp('PRIMARY') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func102: TwmTokenKind;
begin
if KeyComp('FUNCTION') then Result := wmKey else
if KeyComp('COMMITTED') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func103: TwmTokenKind;
begin
if KeyComp('GENERATOR') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func105: TwmTokenKind;
begin
if KeyComp('PROCEDURE') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func106: TwmTokenKind;
begin
if KeyComp('CONTAINING') then Result := wmKey else
if KeyComp('PROTECTED') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func111: TwmTokenKind;
begin
if KeyComp('EXCEPTION') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func112: TwmTokenKind;
begin
if KeyComp('SNAPSHOT') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func114: TwmTokenKind;
begin
if KeyComp('ISOLATION') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func115: TwmTokenKind;
begin
if KeyComp('PASSWORD') then Result := wmKey else
if KeyComp('RETURNS') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func116: TwmTokenKind;
begin
if KeyComp('CONDITIONAL') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func117: TwmTokenKind;
begin
if KeyComp('POSITION') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func122: TwmTokenKind;
begin
if KeyComp('PRIVILEGES') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func133: TwmTokenKind;
begin
if KeyComp('CONSTRAINT') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func134: TwmTokenKind;
begin
if KeyComp('TRANSACTION') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func137: TwmTokenKind;
begin
if KeyComp('UNCOMMITTED') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.Func156: TwmTokenKind;
begin
if KeyComp('ENTRY_POINT') then Result := wmKey else Result := wmIdentifier;
end;
function TwmSQLSyn.AltFunc: TwmTokenKind;
begin
Result := wmIdentifier;
end;
function TwmSQLSyn.IdentKind(MayBe: PChar): TwmTokenKind;
var
HashKey: Integer;
begin
fToIdent := MayBe;
HashKey := KeyHash(MayBe);
if HashKey < 157 then Result := fIdentFuncTable[HashKey] else Result := wmIdentifier;
end;
procedure TwmSQLSyn.MakeMethodTables;
var
I: Char;
begin
for I := #0 to #255 do
case I of
'&': fProcTable[I] := AndSymbolProc;
'\': fProcTable[I] := BackslashProc;
#13: fProcTable[I] := CRProc;
':': fProcTable[I] := ColonProc;
',': fProcTable[I] := CommaProc;
'#': fProcTable[I] := CommentProc;
'=': fProcTable[I] := EqualProc;
'>': fProcTable[I] := GreaterProc;
'A'..'Z', 'a'..'z', '_': fProcTable[I] := IdentProc;
#10: fProcTable[I] := LFProc;
'<': fProcTable[I] := LowerProc;
'-': fProcTable[I] := MinusProc;
#0: fProcTable[I] := NullProc;
'0'..'9', '.': fProcTable[I] := NumberProc;
'|': fProcTable[I] := OrSymbolProc;
'+': fProcTable[I] := PlusProc;
'?': fProcTable[I] := QuestionProc;
')': fProcTable[I] := RoundCloseProc;
'(': fProcTable[I] := RoundOpenProc;
';': fProcTable[I] := SemiColonProc;
'/': fProcTable[I] := SlashProc;
#1..#9, #11, #12, #14..#32: fProcTable[I] := SpaceProc;
']': fProcTable[I] := SquareCloseProc;
'[': fProcTable[I] := SquareOpenProc;
'*': fProcTable[I] := StarProc;
#34: fProcTable[I] := StringInterpProc;
#39: fProcTable[I] := StringLiteralProc;
'^': fProcTable[I] := XOrSymbolProc;
else fProcTable[I] := UnknownProc;
end;
end;
function TwmSQLSyn.GetCapability: THighlighterCapability;
begin
Result := inherited GetCapability + [hcUserSettings,hcExportable];
end;
constructor TwmSQLSyn.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
InitIdent;
MakeMethodTables;
fDefaultFilter := MWS_FilterSQL;
fCommentAttri := TmwHighLightAttributes.Create(MWS_AttrComment);
fCommentAttri.Style := [fsItalic];
fIdentifierAttri := TmwHighLightAttributes.Create(MWS_AttrIdentifier);
fKeyAttri := TmwHighLightAttributes.Create(MWS_AttrReservedWord);
fKeyAttri.Style := [fsBold];
fNumberAttri := TmwHighLightAttributes.Create(MWS_AttrNumber);
fStringAttri := TmwHighLightAttributes.Create(MWS_AttrString);
fSymbolAttri := TmwHighLightAttributes.Create(MWS_AttrSymbol);
AddAttribute(fCommentAttri);
AddAttribute(fIdentifierAttri);
AddAttribute(fKeyAttri);
AddAttribute(fNumberAttri);
AddAttribute(fStringAttri);
AddAttribute(fSymbolAttri);
SetAttributesOnChange(DefHighlightChange);
UseUserSettings(0);
end; { Create }
procedure TwmSQLSyn.SetLine(NewValue : string; LineNumber : Integer);
begin
fLine := PChar(NewValue);
Run := 0;
fEol := False;
fLineNumber := LineNumber;
Next;
end;{ SetLine }
procedure TwmSQLSyn.AndSymbolProc;
begin
inc(Run);
fTokenID := wmSymbol;
end;
procedure TwmSQLSyn.BackslashProc;
begin
fTokenID := wmSymbol; {reference}
inc(Run);
end;
procedure TwmSQLSyn.CRProc;
begin
fTokenID := wmSymbol;
Case FLine[Run + 1] of
#10: inc(Run, 2);
else inc(Run);
end;
end;
procedure TwmSQLSyn.ColonProc;
begin
inc(Run);
fTokenID := wmSymbol;
end;
procedure TwmSQLSyn.CommaProc;
begin
inc(Run);
fTokenID := wmSymbol; {comma}
end;
procedure TwmSQLSyn.CommentProc;
begin
fTokenID := wmComment;
repeat
case FLine[Run] of
#0, #10, #13: break;
end;
inc(Run);
until FLine[Run] = #0;
end;
procedure TwmSQLSyn.EqualProc;
begin
inc(Run);
fTokenID := wmSymbol;
end;
procedure TwmSQLSyn.GreaterProc;
begin
inc(Run);
fTokenID := wmSymbol;
end;
procedure TwmSQLSyn.IdentProc;
begin
{regular identifier}
fTokenID := IdentKind((fLine + Run));
inc(Run, fStringLen);
while Identifiers[fLine[Run]] do inc(Run);
end;
procedure TwmSQLSyn.LFProc;
begin
fTokenID := wmSymbol;
inc(Run);
end;
procedure TwmSQLSyn.LowerProc;
begin
inc(Run);
fTokenID := wmSymbol;
end;
procedure TwmSQLSyn.MinusProc;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?