mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-06 00:30:34 +02:00
parent
9464a009a8
commit
8983879aeb
@ -402,9 +402,18 @@ type
|
||||
property LastMsgArgs: TMessageArgs read FLastMsgArgs write FLastMsgArgs;
|
||||
end;
|
||||
|
||||
Type
|
||||
TParseSourceOption = (poUseStreams,poSkipDefaultDefs);
|
||||
TParseSourceOptions = set of TParseSourceOption;
|
||||
function ParseSource(AEngine: TPasTreeContainer;
|
||||
const FPCCommandLine, OSTarget, CPUTarget: String): TPasModule;
|
||||
function ParseSource(AEngine: TPasTreeContainer;
|
||||
const FPCCommandLine, OSTarget, CPUTarget: String;
|
||||
UseStreams : Boolean = False): TPasModule;
|
||||
UseStreams : Boolean): TPasModule; deprecated;
|
||||
function ParseSource(AEngine: TPasTreeContainer;
|
||||
const FPCCommandLine, OSTarget, CPUTarget: String;
|
||||
Options : TParseSourceOptions): TPasModule;
|
||||
|
||||
Function IsHintToken(T : String; Out AHint : TPasMemberHint) : boolean;
|
||||
Function IsProcModifier(S : String; Out PM : TProcedureModifier) : Boolean;
|
||||
Function IsCallingConvention(S : String; out CC : TCallingConvention) : Boolean;
|
||||
@ -497,9 +506,26 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function ParseSource(AEngine: TPasTreeContainer;
|
||||
const FPCCommandLine, OSTarget, CPUTarget: String): TPasModule;
|
||||
|
||||
begin
|
||||
Result:=ParseSource(AENgine,FPCCommandLine, OSTarget, CPUTarget,[]);
|
||||
end;
|
||||
|
||||
function ParseSource(AEngine: TPasTreeContainer;
|
||||
const FPCCommandLine, OSTarget, CPUTarget: String; UseStreams : Boolean): TPasModule;
|
||||
|
||||
begin
|
||||
if UseStreams then
|
||||
Result:=ParseSource(AENgine,FPCCommandLine, OSTarget, CPUTarget,[poUseStreams])
|
||||
else
|
||||
Result:=ParseSource(AENgine,FPCCommandLine, OSTarget, CPUTarget,[]);
|
||||
end;
|
||||
|
||||
function ParseSource(AEngine: TPasTreeContainer;
|
||||
const FPCCommandLine, OSTarget, CPUTarget: String;
|
||||
UseStreams : Boolean = False): TPasModule;
|
||||
Options : TParseSourceOptions): TPasModule;
|
||||
var
|
||||
FileResolver: TFileResolver;
|
||||
Parser: TPasParser;
|
||||
@ -557,51 +583,52 @@ begin
|
||||
Parser := nil;
|
||||
try
|
||||
FileResolver := TFileResolver.Create;
|
||||
FileResolver.UseStreams:=UseStreams;
|
||||
FileResolver.UseStreams:=poUseStreams in Options;
|
||||
Scanner := TPascalScanner.Create(FileResolver);
|
||||
Scanner.AddDefine('FPK');
|
||||
Scanner.AddDefine('FPC');
|
||||
SCanner.LogEvents:=AEngine.ScannerLogEvents;
|
||||
SCanner.OnLog:=AEngine.Onlog;
|
||||
if not (poSkipDefaultDefs in Options) then
|
||||
begin
|
||||
Scanner.AddDefine('FPK');
|
||||
Scanner.AddDefine('FPC');
|
||||
// TargetOS
|
||||
s := UpperCase(OSTarget);
|
||||
Scanner.AddDefine(s);
|
||||
if s = 'LINUX' then
|
||||
Scanner.AddDefine('UNIX')
|
||||
else if s = 'FREEBSD' then
|
||||
begin
|
||||
Scanner.AddDefine('BSD');
|
||||
Scanner.AddDefine('UNIX');
|
||||
end else if s = 'NETBSD' then
|
||||
begin
|
||||
Scanner.AddDefine('BSD');
|
||||
Scanner.AddDefine('UNIX');
|
||||
end else if s = 'SUNOS' then
|
||||
begin
|
||||
Scanner.AddDefine('SOLARIS');
|
||||
Scanner.AddDefine('UNIX');
|
||||
end else if s = 'GO32V2' then
|
||||
Scanner.AddDefine('DPMI')
|
||||
else if s = 'BEOS' then
|
||||
Scanner.AddDefine('UNIX')
|
||||
else if s = 'QNX' then
|
||||
Scanner.AddDefine('UNIX')
|
||||
else if s = 'AROS' then
|
||||
Scanner.AddDefine('HASAMIGA')
|
||||
else if s = 'MORPHOS' then
|
||||
Scanner.AddDefine('HASAMIGA')
|
||||
else if s = 'AMIGA' then
|
||||
Scanner.AddDefine('HASAMIGA');
|
||||
|
||||
// TargetOS
|
||||
s := UpperCase(OSTarget);
|
||||
Scanner.AddDefine(s);
|
||||
if s = 'LINUX' then
|
||||
Scanner.AddDefine('UNIX')
|
||||
else if s = 'FREEBSD' then
|
||||
begin
|
||||
Scanner.AddDefine('BSD');
|
||||
Scanner.AddDefine('UNIX');
|
||||
end else if s = 'NETBSD' then
|
||||
begin
|
||||
Scanner.AddDefine('BSD');
|
||||
Scanner.AddDefine('UNIX');
|
||||
end else if s = 'SUNOS' then
|
||||
begin
|
||||
Scanner.AddDefine('SOLARIS');
|
||||
Scanner.AddDefine('UNIX');
|
||||
end else if s = 'GO32V2' then
|
||||
Scanner.AddDefine('DPMI')
|
||||
else if s = 'BEOS' then
|
||||
Scanner.AddDefine('UNIX')
|
||||
else if s = 'QNX' then
|
||||
Scanner.AddDefine('UNIX')
|
||||
else if s = 'AROS' then
|
||||
Scanner.AddDefine('HASAMIGA')
|
||||
else if s = 'MORPHOS' then
|
||||
Scanner.AddDefine('HASAMIGA')
|
||||
else if s = 'AMIGA' then
|
||||
Scanner.AddDefine('HASAMIGA');
|
||||
|
||||
// TargetCPU
|
||||
s := UpperCase(CPUTarget);
|
||||
Scanner.AddDefine('CPU'+s);
|
||||
if (s='X86_64') then
|
||||
Scanner.AddDefine('CPU64')
|
||||
else
|
||||
Scanner.AddDefine('CPU32');
|
||||
|
||||
// TargetCPU
|
||||
s := UpperCase(CPUTarget);
|
||||
Scanner.AddDefine('CPU'+s);
|
||||
if (s='X86_64') then
|
||||
Scanner.AddDefine('CPU64')
|
||||
else
|
||||
Scanner.AddDefine('CPU32');
|
||||
end;
|
||||
Parser := TPasParser.Create(Scanner, FileResolver, AEngine);
|
||||
Filename := '';
|
||||
Parser.LogEvents:=AEngine.ParserLogEvents;
|
||||
|
Loading…
Reference in New Issue
Block a user