|
@@ -389,8 +389,9 @@ begin
|
|
|
end
|
|
|
else if u1<>0 then
|
|
|
MaybeAppendUnicode;
|
|
|
- if FTokenStr^ = #0 then
|
|
|
- Error(SErrOpenString,[FCurRow]);
|
|
|
+ if FTokenStr^ < #$20 then
|
|
|
+ if FTokenStr^ = #0 then Error(SErrOpenString,[FCurRow])
|
|
|
+ else if joStrict in Options then Error(SErrInvalidCharacter, [CurRow,CurColumn,FTokenStr[0]]);
|
|
|
Inc(FTokenStr);
|
|
|
end;
|
|
|
if FTokenStr^ = #0 then
|
|
@@ -546,23 +547,33 @@ begin
|
|
|
tstart:=CurRow;
|
|
|
Tcol:=CurColumn;
|
|
|
TokenStart := FTokenStr;
|
|
|
+ Result:=tkIdentifier;
|
|
|
+ case TokenStart^ of
|
|
|
+ 't': if (TokenStart[1] = 'r') and (TokenStart[2] = 'u') and (TokenStart[3] = 'e') then
|
|
|
+ Result:=tkTrue;
|
|
|
+ 'f': if (TokenStart[1] = 'a') and (TokenStart[2] = 'l') and (TokenStart[3] = 's') and (TokenStart[4] = 'e') then
|
|
|
+ Result:=tkFalse;
|
|
|
+ 'n': if (TokenStart[1] = 'u') and (TokenStart[2] = 'l') and (TokenStart[3] = 'l') then
|
|
|
+ Result:=tkNull;
|
|
|
+ end;
|
|
|
+ if result <> tkIdentifier then inc(FTokenStr, length(TokenInfos[result]) - 1);
|
|
|
repeat
|
|
|
Inc(FTokenStr);
|
|
|
until not (FTokenStr^ in ['A'..'Z', 'a'..'z', '0'..'9', '_']);
|
|
|
SectionLength := FTokenStr - TokenStart;
|
|
|
FCurTokenString:='';
|
|
|
SetString(FCurTokenString, TokenStart, SectionLength);
|
|
|
- for it := tkTrue to tkNull do
|
|
|
- if CompareText(CurTokenString, TokenInfos[it]) = 0 then
|
|
|
- begin
|
|
|
- Result := it;
|
|
|
- FCurToken := Result;
|
|
|
- exit;
|
|
|
- end;
|
|
|
- if (joStrict in Options) then
|
|
|
- Error(SErrInvalidCharacter, [tStart,tcol,TokenStart[0]])
|
|
|
- else
|
|
|
- Result:=tkIdentifier;
|
|
|
+ if (result = tkIdentifier) or (SectionLength <> length(TokenInfos[result])) then begin
|
|
|
+ if (joStrict in Options) then
|
|
|
+ Error(SErrInvalidCharacter, [tStart,tcol,TokenStart[0]]);
|
|
|
+ for it := tkTrue to tkNull do
|
|
|
+ if CompareText(CurTokenString, TokenInfos[it]) = 0 then
|
|
|
+ begin
|
|
|
+ Result := it;
|
|
|
+ FCurToken := Result;
|
|
|
+ exit;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
end;
|
|
|
else
|
|
|
Error(SErrInvalidCharacter, [CurRow,CurColumn,FTokenStr[0]]);
|