⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 synhighlighterpaxbasic.pas

📁 Delphi脚本控件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  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 + -