Files
AGPascalTokenizer/Demo/Demo.dpr
2019-04-15 19:27:49 +03:00

75 lines
1.6 KiB
ObjectPascal

program Demo;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
{$APPTYPE CONSOLE}
{$R *.res}
uses
{$IF not defined(FPC)}
//FastMM4,
{$endif}
SysUtils,
Classes,
AG.PascalTokenizer in '../AG.PascalTokenizer.pas';
procedure Test(sList:TStrings; toStream:TStream; sync: boolean);
var tokenStack: TAGPasTokenizerStack;
s:UnicodeString;
begin
tokenStack := nil;
try
if sync then
tokenStack := TAGPasTokenizerStack.Create(sList)
else
tokenStack:= TAGPasTokenizerParallelStack.Create(sList);
while not tokenStack.ended do begin
s := tokenStack.Pop.Text+#10;
toStream.Write(Pointer(s)^, Length(s)*2);
end;
finally
FreeAndNil(tokenStack);
end;
end;
var start: Cardinal;
sList: TStringList;
sw:TFileStream;
begin
TObject.Create();//óòå÷êà
try
sList := TStringList.Create();
try
sList.LoadFromFile('c:\prosoft\RIO\source\rtl\common\System.Classes.pas');
sw:=TFileStream.Create('tokens1.txt', fmCreate or fmOpenWrite);
start := TThread.GetTickCount;
Test(sList,sw, true);
start := TThread.GetTickCount - start;
Writeln('Sync Done in ', start, ' ms');
sw.Free;
sw:=TFileStream.Create('tokens2.txt', fmCreate or fmOpenWrite);
start := TThread.GetTickCount;
Test(sList,sw, false);
start := TThread.GetTickCount - start;
sw.Free;
Writeln('Sync Done in ', start, ' ms');
finally
sList.Free;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.