mirror of https://gitlab.com/basile.b/dexed.git
internal methods added for HL
This commit is contained in:
parent
902d979e1a
commit
101a9f16b8
|
@ -63,8 +63,8 @@ type
|
|||
// a terminal range kind, cannot be combined with another range kind.
|
||||
TPrimaryRange = (prString1, prString2, prBlockCom1, prBlockCom2, prBlockDoc1, prBlockDoc2);
|
||||
|
||||
// can be combined to an primary range
|
||||
TSecondaryRange = (srTokenString, srActiveVersion, srInactiveVersion);
|
||||
// can be combined to a primary range
|
||||
TSecondaryRange = (srTokenString, srActiveVersion, srInactiveVersion, srAssembly);
|
||||
|
||||
// used by the secondary ranges to transform the standard token attributes.
|
||||
TAttributeTransform = (taFontStyle, taFontColor, taBackColor);
|
||||
|
@ -695,6 +695,22 @@ begin
|
|||
exit;
|
||||
end else readerReset;
|
||||
|
||||
|
||||
// hex litterals
|
||||
{if readDelim(reader, fTokStop, '0x') then
|
||||
begin
|
||||
readWhile(reader, fTokStop, hexaChars);
|
||||
if not tryReadDelim(reader, fTokStop, 'Lu') then
|
||||
if not tryReadDelim(reader, fTokStop, 'LU') then
|
||||
if not tryReadDelim(reader, fTokStop, 'uL') then
|
||||
if not tryReadDelim(reader, fTokStop, 'UL') then
|
||||
if not tryReadDelim(reader, fTokStop, 'L') then
|
||||
if not tryReadDelim(reader, fTokStop, 'u') then
|
||||
tryReadDelim(reader, fTokStop, 'U');
|
||||
fTokKind := tkNumbr;
|
||||
exit;
|
||||
end else readerReset;}
|
||||
|
||||
// numbers 1
|
||||
if (isNumber(reader^)) then
|
||||
begin
|
||||
|
@ -703,7 +719,7 @@ begin
|
|||
exit;
|
||||
end;
|
||||
|
||||
// symbols 1: ponctuation
|
||||
// symbChars 1: ponctuation
|
||||
if isSymbol(reader^) then
|
||||
begin
|
||||
fTokKind := tkSymbl;
|
||||
|
@ -715,7 +731,7 @@ begin
|
|||
exit;
|
||||
end;
|
||||
|
||||
// symbols 2: operators
|
||||
// symbChars 2: operators
|
||||
if isOperator1(reader^) then
|
||||
begin
|
||||
fTokKind := tkSymbl;
|
||||
|
@ -740,7 +756,7 @@ begin
|
|||
if not isOperator1(reader^) then exit;
|
||||
end;
|
||||
end;
|
||||
fTokKind := tkIdent;
|
||||
fTokKind := tkIdent; // invalid op not colorized.
|
||||
end;
|
||||
|
||||
// Keyword - Identifier
|
||||
|
|
|
@ -617,7 +617,7 @@ begin
|
|||
continue;
|
||||
end;
|
||||
|
||||
// symbols
|
||||
// symbChars
|
||||
if isSymbol(reader.head^) then
|
||||
begin
|
||||
identifier += reader.head^;
|
||||
|
|
|
@ -15,7 +15,8 @@ const
|
|||
stringPrefixes: TCharSet = ['r', 'x', '"'];
|
||||
stringStopChecks: TCharSet = ['\', '"'];
|
||||
charStopChecks: TCharSet = ['\', #39];
|
||||
symbols: TCharSet = [';', '{', '}', '(', ')', '[', ']', ',', '.', ':', '?', '$', '"', #39];
|
||||
symbChars: TCharSet = [';', '{', '}', '(', ')', '[', ']', ',', '.', ':', '?', '$', '"', #39];
|
||||
hexaChars: TCharSet = ['0'..'9', 'a'..'f', 'A'..'F', '_'];
|
||||
|
||||
function isWhite(const c: Char): boolean; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
function isSpace(const c: Char): boolean; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
|
@ -40,14 +41,18 @@ function readLine(var aReader: PChar; var aPosition: Integer): boolean; {$IFNDEF
|
|||
function readUntil(var aReader: PChar; var aPosition: Integer; const aDelim: Char): boolean; overload; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
function readUntil(var aReader: PChar; var aPosition: Integer; const aDelim: string): boolean; overload; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
|
||||
function readWhile(var aReader: PChar; var aPosition: Integer; const aDelim: Char): boolean; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
function readUntilAmong(var aReader: PChar; var aPosition: Integer; const aDelim: TCharSet): boolean; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
|
||||
function readUntilAmong(var aReader: PChar; var aPosition: Integer; const aDelim: TCharSet): boolean; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
function readWhile(var aReader: PChar; var aPosition: Integer; const aDelim: Char): boolean; overload; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
function readWhile(var aReader: PChar; var aPosition: Integer; const aDelim: TCharSet): boolean; overload;{$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
|
||||
function readDelim(var aReader: PChar; var aPosition: Integer; const aDelim: Char): boolean; overload; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
function readDelim(var aReader: PChar; var aPosition: Integer; const aDelim: string): boolean; overload; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
function readDelim(var aReader: PChar; var aPosition: Integer; const aDelims: TCharSet): boolean; overload; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
|
||||
function tryReadDelim(var aReader: PChar; var aPosition: Integer; const aDelim: Char): boolean; overload; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
function tryReadDelim(var aReader: PChar; var aPosition: Integer; const aDelim: string): boolean; overload; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||
|
||||
implementation
|
||||
|
||||
{$BOOLEVAL ON}
|
||||
|
@ -199,17 +204,6 @@ begin
|
|||
exit(true);
|
||||
end;
|
||||
|
||||
function readWhile(var aReader: PChar; var aPosition: Integer; const aDelim: Char): boolean;
|
||||
begin
|
||||
result := false;
|
||||
while aReader^ = aDelim do
|
||||
begin
|
||||
inc(aReader);
|
||||
inc(aPosition);
|
||||
result := true;
|
||||
end;
|
||||
end;
|
||||
|
||||
function readUntilAmong(var aReader: PChar; var aPosition: Integer; const aDelim: TCharSet): boolean;
|
||||
begin
|
||||
while not (aReader^ in aDelim) do
|
||||
|
@ -222,6 +216,29 @@ begin
|
|||
exit(true);
|
||||
end;
|
||||
|
||||
function readWhile(var aReader: PChar; var aPosition: Integer; const aDelim: Char): boolean;
|
||||
begin
|
||||
result := false;
|
||||
while aReader^ = aDelim do
|
||||
begin
|
||||
inc(aReader);
|
||||
inc(aPosition);
|
||||
result := true;
|
||||
end;
|
||||
end;
|
||||
|
||||
function readWhile(var aReader: PChar; var aPosition: Integer; const aDelim: TCharSet): boolean;
|
||||
begin
|
||||
result := false;
|
||||
while aReader^ in aDelim do
|
||||
begin
|
||||
inc(aReader);
|
||||
inc(aPosition);
|
||||
result := true;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
function readDelim(var aReader: PChar; var aPosition: Integer; const aDelim: Char): boolean;
|
||||
begin
|
||||
if aReader^ <> aDelim then
|
||||
|
@ -256,4 +273,30 @@ begin
|
|||
exit(true);
|
||||
end;
|
||||
|
||||
function tryReadDelim(var aReader: PChar; var aPosition: Integer; const aDelim: Char): boolean;
|
||||
var
|
||||
savedReader: PChar;
|
||||
savedPos: Integer;
|
||||
begin
|
||||
savedReader := aReader;
|
||||
savedPos := aPosition;
|
||||
if readDelim(aReader, aPosition, aDelim) then exit(true);
|
||||
aReader := savedReader;
|
||||
aPosition := savedPos;
|
||||
exit(false);
|
||||
end;
|
||||
|
||||
function tryReadDelim(var aReader: PChar; var aPosition: Integer; const aDelim: string): boolean;
|
||||
var
|
||||
savedReader: PChar;
|
||||
savedPos: Integer;
|
||||
begin
|
||||
savedReader := aReader;
|
||||
savedPos := aPosition;
|
||||
if readDelim(aReader, aPosition, aDelim) then exit(true);
|
||||
aReader := savedReader;
|
||||
aPosition := savedPos;
|
||||
exit(false);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
|
Loading…
Reference in New Issue