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.
|
// a terminal range kind, cannot be combined with another range kind.
|
||||||
TPrimaryRange = (prString1, prString2, prBlockCom1, prBlockCom2, prBlockDoc1, prBlockDoc2);
|
TPrimaryRange = (prString1, prString2, prBlockCom1, prBlockCom2, prBlockDoc1, prBlockDoc2);
|
||||||
|
|
||||||
// can be combined to an primary range
|
// can be combined to a primary range
|
||||||
TSecondaryRange = (srTokenString, srActiveVersion, srInactiveVersion);
|
TSecondaryRange = (srTokenString, srActiveVersion, srInactiveVersion, srAssembly);
|
||||||
|
|
||||||
// used by the secondary ranges to transform the standard token attributes.
|
// used by the secondary ranges to transform the standard token attributes.
|
||||||
TAttributeTransform = (taFontStyle, taFontColor, taBackColor);
|
TAttributeTransform = (taFontStyle, taFontColor, taBackColor);
|
||||||
|
@ -695,6 +695,22 @@ begin
|
||||||
exit;
|
exit;
|
||||||
end else readerReset;
|
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
|
// numbers 1
|
||||||
if (isNumber(reader^)) then
|
if (isNumber(reader^)) then
|
||||||
begin
|
begin
|
||||||
|
@ -703,7 +719,7 @@ begin
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// symbols 1: ponctuation
|
// symbChars 1: ponctuation
|
||||||
if isSymbol(reader^) then
|
if isSymbol(reader^) then
|
||||||
begin
|
begin
|
||||||
fTokKind := tkSymbl;
|
fTokKind := tkSymbl;
|
||||||
|
@ -715,7 +731,7 @@ begin
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// symbols 2: operators
|
// symbChars 2: operators
|
||||||
if isOperator1(reader^) then
|
if isOperator1(reader^) then
|
||||||
begin
|
begin
|
||||||
fTokKind := tkSymbl;
|
fTokKind := tkSymbl;
|
||||||
|
@ -740,7 +756,7 @@ begin
|
||||||
if not isOperator1(reader^) then exit;
|
if not isOperator1(reader^) then exit;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
fTokKind := tkIdent;
|
fTokKind := tkIdent; // invalid op not colorized.
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Keyword - Identifier
|
// Keyword - Identifier
|
||||||
|
|
|
@ -617,7 +617,7 @@ begin
|
||||||
continue;
|
continue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// symbols
|
// symbChars
|
||||||
if isSymbol(reader.head^) then
|
if isSymbol(reader.head^) then
|
||||||
begin
|
begin
|
||||||
identifier += reader.head^;
|
identifier += reader.head^;
|
||||||
|
|
|
@ -15,7 +15,8 @@ const
|
||||||
stringPrefixes: TCharSet = ['r', 'x', '"'];
|
stringPrefixes: TCharSet = ['r', 'x', '"'];
|
||||||
stringStopChecks: TCharSet = ['\', '"'];
|
stringStopChecks: TCharSet = ['\', '"'];
|
||||||
charStopChecks: TCharSet = ['\', #39];
|
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 isWhite(const c: Char): boolean; {$IFNDEF DEBUG}inline;{$ENDIF}
|
||||||
function isSpace(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: 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 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: 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 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 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
|
implementation
|
||||||
|
|
||||||
{$BOOLEVAL ON}
|
{$BOOLEVAL ON}
|
||||||
|
@ -199,17 +204,6 @@ begin
|
||||||
exit(true);
|
exit(true);
|
||||||
end;
|
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;
|
function readUntilAmong(var aReader: PChar; var aPosition: Integer; const aDelim: TCharSet): boolean;
|
||||||
begin
|
begin
|
||||||
while not (aReader^ in aDelim) do
|
while not (aReader^ in aDelim) do
|
||||||
|
@ -222,6 +216,29 @@ begin
|
||||||
exit(true);
|
exit(true);
|
||||||
end;
|
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;
|
function readDelim(var aReader: PChar; var aPosition: Integer; const aDelim: Char): boolean;
|
||||||
begin
|
begin
|
||||||
if aReader^ <> aDelim then
|
if aReader^ <> aDelim then
|
||||||
|
@ -256,4 +273,30 @@ begin
|
||||||
exit(true);
|
exit(true);
|
||||||
end;
|
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.
|
end.
|
||||||
|
|
Loading…
Reference in New Issue