mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-16 04:39:38 +02:00
* Patch from Anthony Walter to make IsValidIdent more strict in case of dotted identifiers (bug ID 29364)
git-svn-id: trunk@32920 -
This commit is contained in:
parent
9225ff3293
commit
8544b8a500
@ -706,34 +706,39 @@ end;
|
||||
'A' to 'Z', 'a' to 'z' or '_' and the following characters are
|
||||
on of: 'A' to 'Z', 'a' to 'z', '0'..'9' or '_' }
|
||||
|
||||
function IsValidIdent(const Ident: string; AllowDots : Boolean = False): boolean;
|
||||
|
||||
Const
|
||||
function IsValidIdent(const Ident: string; AllowDots: Boolean = False; StrictDots: Boolean = False): Boolean;
|
||||
const
|
||||
Alpha = ['A'..'Z', 'a'..'z', '_'];
|
||||
AlphaNum = Alpha + ['0'..'9'];
|
||||
AlphaDot = AlphaNum + ['.'];
|
||||
|
||||
var
|
||||
i, len: integer;
|
||||
allowed : Set of char;
|
||||
|
||||
Dot = '.';
|
||||
var
|
||||
First: Boolean;
|
||||
I, Len: Integer;
|
||||
begin
|
||||
Len:=Length(Ident);
|
||||
Result:=Len<>0;
|
||||
if Result then
|
||||
Len := Length(Ident);
|
||||
if Len < 1 then
|
||||
Exit(False);
|
||||
First := True;
|
||||
for I := 1 to Len do
|
||||
begin
|
||||
if First then
|
||||
begin
|
||||
result:=Ident[1] in Alpha;
|
||||
if AllowDots then
|
||||
Allowed:=AlphaDot
|
||||
else
|
||||
Allowed:=AlphaNum;
|
||||
I:=2;
|
||||
While Result and (I<=Len) do
|
||||
Result := Ident[I] in Alpha;
|
||||
First := False;
|
||||
end
|
||||
else if AllowDots and (Ident[I] = Dot) then
|
||||
begin
|
||||
if StrictDots then
|
||||
begin
|
||||
Result:=Ident[i] in Allowed;
|
||||
Inc(I);
|
||||
Result := I < Len;
|
||||
First := True;
|
||||
end;
|
||||
end;
|
||||
end
|
||||
else
|
||||
Result := Ident[I] in AlphaNum;
|
||||
if not Result then
|
||||
Break;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ IntToStr returns a string representing the value of Value }
|
||||
|
@ -103,7 +103,7 @@ function AnsiDequotedStr(const S: string; AQuote: Char): string;
|
||||
function AnsiExtractQuotedStr(var Src: PChar; Quote: Char): string;
|
||||
function AdjustLineBreaks(const S: string): string;
|
||||
function AdjustLineBreaks(const S: string; Style: TTextLineBreakStyle): string;
|
||||
function IsValidIdent(const Ident: string; AllowDots : Boolean = False): boolean;
|
||||
function IsValidIdent(const Ident: string; AllowDots: Boolean = False; StrictDots: Boolean = False): Boolean;
|
||||
function IntToStr(Value: Longint): string;
|
||||
function IntToStr(Value: Int64): string;
|
||||
function IntToStr(Value: QWord): string;
|
||||
|
Loading…
Reference in New Issue
Block a user