pastojs: fixed parsing multi line comment

This commit is contained in:
mattias 2024-01-07 12:53:48 +01:00
parent 03d7518b9b
commit 20ac72e7aa
2 changed files with 8 additions and 7 deletions

View File

@ -1389,7 +1389,7 @@ begin
p^.TokenPos:=Scanner.CurTokenPos; p^.TokenPos:=Scanner.CurTokenPos;
P^.IsEscaped:=Scanner.CurTokenEscaped; P^.IsEscaped:=Scanner.CurTokenEscaped;
end; end;
//writeln('TPasParser.NextToken END Start=',FTokenRingStart,' Cur=',FTokenRingCur,' End=',FTokenRingEnd,' Cur=',CurTokenString); //writeln('TPasParser.NextToken END Start=',FTokenRingStart,' Cur=',FTokenRingCur,' End=',FTokenRingEnd,' Cur="',CurTokenString,'"');
end; end;
procedure TPasParser.ChangeToken(tk: TToken); procedure TPasParser.ChangeToken(tk: TToken);

View File

@ -5481,6 +5481,9 @@ begin
{$ifdef UsePChar} {$ifdef UsePChar}
LE:=LineEnding; LE:=LineEnding;
OldLength := 0; OldLength := 0;
{$else}
s:=FCurLine;
l:=length(FCurLine);
{$endif} {$endif}
NestingLevel := 0; NestingLevel := 0;
repeat repeat
@ -5536,7 +5539,7 @@ begin
{$endif} {$endif}
Inc(FTokenPos); Inc(FTokenPos);
Result := tkComment; Result := tkComment;
if (Copy(CurTokenString,1,1)='$') then if (length(CurTokenString)>0) and (CurTokenString[1]='$') then
Result:=HandleDirective(CurTokenString) Result:=HandleDirective(CurTokenString)
else else
DoHandleComment(Self, CurTokenString) DoHandleComment(Self, CurTokenString)
@ -5547,7 +5550,7 @@ function TPascalScanner.DoFetchToken: TToken;
var var
TokenStart: {$ifdef UsePChar}PAnsiChar{$else}integer{$endif}; TokenStart: {$ifdef UsePChar}PAnsiChar{$else}integer{$endif};
i: TToken; i: TToken;
QuoteLen,SectionLength, Index: Integer; QuoteLen, SectionLength, Index: Integer;
{$ifdef UsePChar} {$ifdef UsePChar}
// //
{$else} {$else}
@ -5580,7 +5583,6 @@ var
Function IsDelphiMultiLine (out QuoteLen : integer): Boolean; Function IsDelphiMultiLine (out QuoteLen : integer): Boolean;
var var
P : PAnsiChar; P : PAnsiChar;
begin begin
P:=FTokenPos; P:=FTokenPos;
QuoteLen:=0; QuoteLen:=0;
@ -5595,10 +5597,8 @@ var
end; end;
{$ELSE} {$ELSE}
Function IsDelphiMultiLine(out Quotelen : integer) : Boolean; Function IsDelphiMultiLine(out Quotelen : integer) : Boolean;
var var
P : Integer; P : Integer;
begin begin
P:=FTokenPos; P:=FTokenPos;
QuoteLen:=0; QuoteLen:=0;
@ -5623,6 +5623,7 @@ begin
begin begin
Result := tkEOF; Result := tkEOF;
FCurToken := Result; FCurToken := Result;
FCurTokenString := '';
exit; exit;
end; end;
FCurTokenString := ''; FCurTokenString := '';
@ -5676,7 +5677,7 @@ begin
end; end;
'#': '#':
Result:=DoFetchTextToken; Result:=DoFetchTextToken;
#39: '''':
if (msDelphiMultiLineStrings in CurrentModeSwitches) and IsDelphiMultiLine(Quotelen) then if (msDelphiMultiLineStrings in CurrentModeSwitches) and IsDelphiMultiLine(Quotelen) then
Result:=DoFetchDelphiMultiLineTextToken(Quotelen) Result:=DoFetchDelphiMultiLineTextToken(Quotelen)
else else