mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-11 11:28:07 +02:00
Fix 34119: factor out IsDigit function
git-svn-id: trunk@39609 -
This commit is contained in:
parent
2d2ba5f0cd
commit
a3f756013d
@ -269,6 +269,7 @@ type
|
|||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
function IsWordChar(AChar : REChar) : Boolean; inline;
|
function IsWordChar(AChar : REChar) : Boolean; inline;
|
||||||
function IsSpaceChar(AChar : PRegExprChar) : Boolean; inline;
|
function IsSpaceChar(AChar : PRegExprChar) : Boolean; inline;
|
||||||
|
function IsDigit(AChar : PRegExprChar) : Boolean; inline;
|
||||||
|
|
||||||
// Mark programm as having to be [re]compiled
|
// Mark programm as having to be [re]compiled
|
||||||
procedure InvalidateProgramm;
|
procedure InvalidateProgramm;
|
||||||
@ -1391,6 +1392,12 @@ begin
|
|||||||
Result:=Pos(AChar^,fSpaceChars)>0;
|
Result:=Pos(AChar^,fSpaceChars)>0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TRegExpr.IsDigit(AChar: PRegExprChar): Boolean;
|
||||||
|
begin
|
||||||
|
// Avoid Unicode char-> ansi char conversion in case of unicode regexp.
|
||||||
|
Result:=Ord(AChar^) in [Ord('0')..Ord('9')]
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TRegExpr.InvalidateProgramm;
|
procedure TRegExpr.InvalidateProgramm;
|
||||||
begin
|
begin
|
||||||
if programm <> nil then begin
|
if programm <> nil then begin
|
||||||
@ -2684,17 +2691,17 @@ function TRegExpr.regrepeat (p : PRegExprChar; AMax : PtrInt) : PtrInt;
|
|||||||
UNTIL Result >= AMax;
|
UNTIL Result >= AMax;
|
||||||
end;
|
end;
|
||||||
ANYDIGIT:
|
ANYDIGIT:
|
||||||
while (Result < TheMax) and
|
while (Result < TheMax) and isDigit(Scan) do
|
||||||
(scan^ >= '0') and (scan^ <= '9') do begin
|
begin
|
||||||
inc (Result);
|
inc (Result);
|
||||||
inc (scan);
|
inc (scan);
|
||||||
end;
|
end;
|
||||||
NOTDIGIT:
|
NOTDIGIT:
|
||||||
while (Result < TheMax) and
|
while (Result < TheMax) and not IsDigit(Scan) do
|
||||||
((scan^ < '0') or (scan^ > '9')) do begin
|
begin
|
||||||
inc (Result);
|
inc (Result);
|
||||||
inc (scan);
|
inc (scan);
|
||||||
end;
|
end;
|
||||||
{$IFNDEF UseSetOfChar} //###0.929
|
{$IFNDEF UseSetOfChar} //###0.929
|
||||||
ANYLETTER:
|
ANYLETTER:
|
||||||
while (Result < TheMax) and IsWordChar(scan^) do //###0.940
|
while (Result < TheMax) and IsWordChar(scan^) do //###0.940
|
||||||
@ -2895,13 +2902,13 @@ function TRegExpr.MatchPrim (prog : PRegExprChar) : boolean;
|
|||||||
inc (reginput);
|
inc (reginput);
|
||||||
end;
|
end;
|
||||||
ANYDIGIT: begin
|
ANYDIGIT: begin
|
||||||
if (reginput^ = #0) or (reginput^ < '0') or (reginput^ > '9')
|
if (reginput^ = #0) or Not IsDigit(reginput) then
|
||||||
then EXIT;
|
EXIT;
|
||||||
inc (reginput);
|
inc (reginput);
|
||||||
end;
|
end;
|
||||||
NOTDIGIT: begin
|
NOTDIGIT: begin
|
||||||
if (reginput^ = #0) or ((reginput^ >= '0') and (reginput^ <= '9'))
|
if (reginput^ = #0) or IsDigit(reginput) then
|
||||||
then EXIT;
|
EXIT;
|
||||||
inc (reginput);
|
inc (reginput);
|
||||||
end;
|
end;
|
||||||
{$IFNDEF UseSetOfChar} //###0.929
|
{$IFNDEF UseSetOfChar} //###0.929
|
||||||
@ -3563,6 +3570,7 @@ function TRegExpr.ExecPrim (AOffset: PtrInt) : boolean;
|
|||||||
--------------------------------------------------------------}
|
--------------------------------------------------------------}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function TRegExpr.ExecNext : boolean;
|
function TRegExpr.ExecNext : boolean;
|
||||||
var offset : PtrInt;
|
var offset : PtrInt;
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user