|
@@ -330,6 +330,7 @@ type
|
|
|
Function CurComments : TStrings;
|
|
|
Function SavedComments : String;
|
|
|
procedure NextToken; // read next non whitespace, non space
|
|
|
+ procedure ChangeToken(tk: TToken);
|
|
|
procedure UngetToken;
|
|
|
procedure CheckToken(tk: TToken);
|
|
|
procedure CheckTokens(tk: TTokens);
|
|
@@ -917,6 +918,26 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+procedure TPasParser.ChangeToken(tk: TToken);
|
|
|
+begin
|
|
|
+ //writeln('TPasParser.ChangeToken FTokenBufferSize=',FTokenBufferSize,' FTokenBufferIndex=',FTokenBufferIndex);
|
|
|
+ if (CurToken=tkshr) and (tk=tkGreaterThan) and (FTokenBufferSize=2)
|
|
|
+ and (FTokenBufferIndex=2) then
|
|
|
+ begin
|
|
|
+ // change current token '>>' into two '>'
|
|
|
+ FTokenBuffer[0]:=tkGreaterThan;
|
|
|
+ FTokenStringBuffer[0]:='<';
|
|
|
+ FTokenBuffer[1]:=tkGreaterThan;
|
|
|
+ FTokenStringBuffer[1]:='<';
|
|
|
+ FCommentsBuffer[0].Clear;
|
|
|
+ FCurToken:=tkGreaterThan;
|
|
|
+ FCurTokenString:='<';
|
|
|
+ FTokenBufferIndex:=1;
|
|
|
+ end
|
|
|
+ else
|
|
|
+ CheckToken(tk);
|
|
|
+end;
|
|
|
+
|
|
|
procedure TPasParser.UngetToken;
|
|
|
|
|
|
begin
|
|
@@ -3302,6 +3323,11 @@ begin
|
|
|
NextToken;
|
|
|
continue;
|
|
|
end
|
|
|
+ else if CurToken=tkshr then
|
|
|
+ begin
|
|
|
+ ChangeToken(tkGreaterThan);
|
|
|
+ break;
|
|
|
+ end
|
|
|
else if CurToken=tkGreaterThan then
|
|
|
break
|
|
|
else
|