📄 synhighlighterpaxbasic.pas
字号:
fLine := PChar(NewValue);
Run := 0;
fLineNumber := LineNumber;
Next;
end;
procedure TSynPaxBasicSyn.ApostropheProc;
begin
fTokenID := tkComment;
repeat
inc(Run);
until fLine[Run] in [#0, #10, #13];
end;
procedure TSynPaxBasicSyn.CRProc;
begin
fTokenID := tkSpace;
inc(Run);
if fLine[Run] = #10 then inc(Run);
end;
procedure TSynPaxBasicSyn.DateProc;
begin
fTokenID := tkString;
repeat
case FLine[Run] of
#0, #10, #13: break;
end;
inc(Run);
until FLine[Run] = '#';
if FLine[Run] <> #0 then inc(Run);
end;
procedure TSynPaxBasicSyn.GreaterProc;
begin
fTokenID := tkSymbol;
Inc(Run);
if fLine[Run] = '=' then Inc(Run);
end;
procedure TSynPaxBasicSyn.IdentProc;
begin
fTokenID := IdentKind((fLine + Run));
inc(Run, fStringLen);
while Identifiers[fLine[Run]] do inc(Run);
end;
procedure TSynPaxBasicSyn.LFProc;
begin
fTokenID := tkSpace;
inc(Run);
end;
procedure TSynPaxBasicSyn.LowerProc;
begin
fTokenID := tkSymbol;
Inc(Run);
if fLine[Run] in ['=', '>'] then Inc(Run);
end;
procedure TSynPaxBasicSyn.NullProc;
begin
fTokenID := tkNull;
end;
procedure TSynPaxBasicSyn.NumberProc;
begin
inc(Run);
fTokenID := tkNumber;
while FLine[Run] in ['0'..'9', '.', 'e', 'E'] do inc(Run);
end;
procedure TSynPaxBasicSyn.SpaceProc;
begin
inc(Run);
fTokenID := tkSpace;
while FLine[Run] in [#1..#9, #11, #12, #14..#32] do inc(Run);
end;
procedure TSynPaxBasicSyn.StringProc;
begin
fTokenID := tkString;
if (FLine[Run + 1] = #34) and (FLine[Run + 2] = #34) then inc(Run, 2);
repeat
case FLine[Run] of
#0, #10, #13: break;
end;
inc(Run);
until FLine[Run] = #34;
if FLine[Run] <> #0 then inc(Run);
end;
procedure TSynPaxBasicSyn.SymbolProc;
begin
inc(Run);
fTokenID := tkSymbol;
end;
procedure TSynPaxBasicSyn.UnknownProc;
begin
{$IFDEF SYN_MBCSSUPPORT}
if FLine[Run] in LeadBytes then
Inc(Run,2)
else
{$ENDIF}
inc(Run);
fTokenID := tkIdentifier;
end;
procedure TSynPaxBasicSyn.Next;
begin
fTokenPos := Run;
fProcTable[fLine[Run]];
end;
function TSynPaxBasicSyn.GetDefaultAttribute(Index: integer):
TSynHighlighterAttributes;
begin
case Index of
SYN_ATTR_COMMENT: Result := fCommentAttri;
SYN_ATTR_IDENTIFIER: Result := fIdentifierAttri;
SYN_ATTR_KEYWORD: Result := fKeyAttri;
SYN_ATTR_STRING: Result := fStringAttri;
SYN_ATTR_WHITESPACE: Result := fSpaceAttri;
SYN_ATTR_SYMBOL: Result := fSymbolAttri;
else
Result := nil;
end;
end;
function TSynPaxBasicSyn.GetEol: Boolean;
begin
Result := fTokenId = tkNull;
end;
function TSynPaxBasicSyn.GetToken: String;
var
Len: LongInt;
begin
Len := Run - fTokenPos;
SetString(Result, (FLine + fTokenPos), Len);
end;
function TSynPaxBasicSyn.GetTokenID: TtkTokenKind;
begin
Result := fTokenId;
end;
function TSynPaxBasicSyn.GetTokenAttribute: TSynHighlighterAttributes;
begin
case fTokenID of
tkComment: Result := fCommentAttri;
tkIdentifier: Result := fIdentifierAttri;
tkKey: Result := fKeyAttri;
tkNumber: Result := fNumberAttri;
tkSpace: Result := fSpaceAttri;
tkString: Result := fStringAttri;
tkSymbol: Result := fSymbolAttri;
tkUnknown: Result := fIdentifierAttri;
else Result := nil;
end;
end;
function TSynPaxBasicSyn.GetTokenKind: integer;
begin
Result := Ord(fTokenId);
end;
function TSynPaxBasicSyn.GetTokenPos: Integer;
begin
Result := fTokenPos;
end;
function TSynPaxBasicSyn.GetIdentChars: TSynIdentChars;
begin
Result := TSynValidStringChars;
end;
{$IFNDEF SYN_CPPB_1} class {$ENDIF}
function TSynPaxBasicSyn.GetLanguageName: string;
begin
Result := SYNS_LangVBSScript;
end;
function TSynPaxBasicSyn.GetSampleSource: string;
begin
Result := ''' Syntax highlighting'#13#10 +
'function printNumber()'#13#10 +
' number = 12345'#13#10 +
' document.write("The number is " + number)'#13#10 +
' for i = 0 to 10'#13#10 +
' x = x + 1.0'#13#10 +
' next'#13#10 +
'end function';
end;
initialization
MakeIdentTable;
{$IFNDEF SYN_CPPB_1}
RegisterPlaceableHighlighter(TSynPaxBasicSyn);
{$ENDIF}
PaxBasicKeywords := TStringList.Create;
with PaxBasicKeywords do
begin
Add('alias');
Add('addressof');
Add('and');
Add('as');
Add('byte');
Add('byval');
Add('byref');
Add('case');
Add('catch');
Add('cdecl');
Add('class');
Add('declare');
Add('default');
Add('delete');
Add('dim');
Add('do');
Add('else');
Add('elseif');
Add('end');
Add('enum');
Add('exit');
Add('finally');
Add('for');
Add('function');
Add('inherits');
Add('get');
Add('goto');
Add('if');
Add('imports');
Add('in');
Add('lib');
Add('long');
Add('loop');
Add('me');
Add('mybase');
Add('myclass');
Add('namespace');
Add('next');
Add('new');
Add('not');
Add('null');
Add('or');
Add('pascal');
Add('private');
Add('public');
Add('property');
Add('protected');
Add('reduced');
Add('register');
Add('return');
Add('safecall');
Add('sbyte');
Add('set');
Add('select');
Add('shared');
Add('short');
Add('stdcall');
Add('step');
Add('structure');
Add('sub');
Add('terminalof');
Add('then');
Add('throw');
Add('to');
Add('try');
Add('until');
Add('ushort');
Add('while');
Add('with');
Add('xor');
Add('currency');
Add('single');
Add('print');
Add('println');
Add('virtual');
Add('override');
end;
finalization
PaxBasicKeywords.Free;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -