+ support for a different set of compiler directives under $MODE MAC

+ added mac directives $SETC $IFC $ELSEC $ENDC
This commit is contained in:
olle 2003-09-17 22:30:19 +00:00
parent f891435ca0
commit 6f78eac09f
2 changed files with 210 additions and 108 deletions

View File

@ -898,84 +898,84 @@ implementation
procedure InitScannerDirectives;
begin
AddDirective('ALIGN',{$ifdef FPCPROCVAR}@{$endif}dir_align);
AddDirective('ALIGN',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_align);
{$ifdef m68k}
AddDirective('APPID',{$ifdef FPCPROCVAR}@{$endif}dir_appid);
AddDirective('APPNAME',{$ifdef FPCPROCVAR}@{$endif}dir_appname);
AddDirective('APPID',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_appid);
AddDirective('APPNAME',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_appname);
{$endif m68k}
AddDirective('APPTYPE',{$ifdef FPCPROCVAR}@{$endif}dir_apptype);
AddDirective('ASMMODE',{$ifdef FPCPROCVAR}@{$endif}dir_asmmode);
AddDirective('ASSERTIONS',{$ifdef FPCPROCVAR}@{$endif}dir_assertions);
AddDirective('BOOLEVAL',{$ifdef FPCPROCVAR}@{$endif}dir_booleval);
AddDirective('CALLING',{$ifdef FPCPROCVAR}@{$endif}dir_calling);
AddDirective('CODEPAGE',{$ifdef FPCPROCVAR}@{$endif}dir_codepage);
AddDirective('COPYRIGHT',{$ifdef FPCPROCVAR}@{$endif}dir_copyright);
AddDirective('D',{$ifdef FPCPROCVAR}@{$endif}dir_description);
AddDirective('DEBUGINFO',{$ifdef FPCPROCVAR}@{$endif}dir_debuginfo);
AddDirective('DESCRIPTION',{$ifdef FPCPROCVAR}@{$endif}dir_description);
AddDirective('ERROR',{$ifdef FPCPROCVAR}@{$endif}dir_error);
AddDirective('EXTENDEDSYNTAX',{$ifdef FPCPROCVAR}@{$endif}dir_extendedsyntax);
AddDirective('EXTERNALSYM',{$ifdef FPCPROCVAR}@{$endif}dir_externalsym);
AddDirective('FATAL',{$ifdef FPCPROCVAR}@{$endif}dir_fatal);
AddDirective('GOTO',{$ifdef FPCPROCVAR}@{$endif}dir_goto);
AddDirective('HINT',{$ifdef FPCPROCVAR}@{$endif}dir_hint);
AddDirective('HINTS',{$ifdef FPCPROCVAR}@{$endif}dir_hints);
AddDirective('IOCHECKS',{$ifdef FPCPROCVAR}@{$endif}dir_iochecks);
AddDirective('IMPLICITEXCEPTIONS',{$ifdef FPCPROCVAR}@{$endif}dir_implicitexceptions);
AddDirective('INCLUDEPATH',{$ifdef FPCPROCVAR}@{$endif}dir_includepath);
AddDirective('INFO',{$ifdef FPCPROCVAR}@{$endif}dir_info);
AddDirective('INLINE',{$ifdef FPCPROCVAR}@{$endif}dir_inline);
AddDirective('INTERFACES',{$ifdef FPCPROCVAR}@{$endif}dir_interfaces);
AddDirective('L',{$ifdef FPCPROCVAR}@{$endif}dir_link);
AddDirective('LIBRARYPATH',{$ifdef FPCPROCVAR}@{$endif}dir_librarypath);
AddDirective('LINK',{$ifdef FPCPROCVAR}@{$endif}dir_link);
AddDirective('LINKLIB',{$ifdef FPCPROCVAR}@{$endif}dir_linklib);
AddDirective('LOCALSYMBOLS',{$ifdef FPCPROCVAR}@{$endif}dir_localsymbols);
AddDirective('LONGSTRINGS',{$ifdef FPCPROCVAR}@{$endif}dir_longstrings);
AddDirective('M',{$ifdef FPCPROCVAR}@{$endif}dir_memory);
AddDirective('MACRO',{$ifdef FPCPROCVAR}@{$endif}dir_macro);
AddDirective('MAXFPUREGISTERS',{$ifdef FPCPROCVAR}@{$endif}dir_maxfpuregisters);
AddDirective('MEMORY',{$ifdef FPCPROCVAR}@{$endif}dir_memory);
AddDirective('MESSAGE',{$ifdef FPCPROCVAR}@{$endif}dir_message);
AddDirective('MINENUMSIZE',{$ifdef FPCPROCVAR}@{$endif}dir_packenum);
AddDirective('MMX',{$ifdef FPCPROCVAR}@{$endif}dir_mmx);
AddDirective('MODE',{$ifdef FPCPROCVAR}@{$endif}dir_mode);
AddDirective('NOTE',{$ifdef FPCPROCVAR}@{$endif}dir_note);
AddDirective('NOTES',{$ifdef FPCPROCVAR}@{$endif}dir_notes);
AddDirective('OBJECTCHECKS',{$ifdef FPCPROCVAR}@{$endif}dir_objectchecks);
AddDirective('OBJECTPATH',{$ifdef FPCPROCVAR}@{$endif}dir_objectpath);
AddDirective('OPENSTRINGS',{$ifdef FPCPROCVAR}@{$endif}dir_openstrings);
AddDirective('OUTPUT_FORMAT',{$ifdef FPCPROCVAR}@{$endif}dir_output_format);
AddDirective('OVERFLOWCHECKS',{$ifdef FPCPROCVAR}@{$endif}dir_overflowchecks);
AddDirective('PACKENUM',{$ifdef FPCPROCVAR}@{$endif}dir_packenum);
AddDirective('PACKRECORDS',{$ifdef FPCPROCVAR}@{$endif}dir_packrecords);
AddDirective('APPTYPE',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_apptype);
AddDirective('ASMMODE',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_asmmode);
AddDirective('ASSERTIONS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_assertions);
AddDirective('BOOLEVAL',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_booleval);
AddDirective('CALLING',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_calling);
AddDirective('CODEPAGE',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_codepage);
AddDirective('COPYRIGHT',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_copyright);
AddDirective('D',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_description);
AddDirective('DEBUGINFO',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_debuginfo);
AddDirective('DESCRIPTION',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_description);
AddDirective('ERROR',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_error);
AddDirective('EXTENDEDSYNTAX',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_extendedsyntax);
AddDirective('EXTERNALSYM',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_externalsym);
AddDirective('FATAL',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_fatal);
AddDirective('GOTO',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_goto);
AddDirective('HINT',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_hint);
AddDirective('HINTS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_hints);
AddDirective('IOCHECKS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_iochecks);
AddDirective('IMPLICITEXCEPTIONS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_implicitexceptions);
AddDirective('INCLUDEPATH',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_includepath);
AddDirective('INFO',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_info);
AddDirective('INLINE',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_inline);
AddDirective('INTERFACES',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_interfaces);
AddDirective('L',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_link);
AddDirective('LIBRARYPATH',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_librarypath);
AddDirective('LINK',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_link);
AddDirective('LINKLIB',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_linklib);
AddDirective('LOCALSYMBOLS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_localsymbols);
AddDirective('LONGSTRINGS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_longstrings);
AddDirective('M',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_memory);
AddDirective('MACRO',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_macro);
AddDirective('MAXFPUREGISTERS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_maxfpuregisters);
AddDirective('MEMORY',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_memory);
AddDirective('MESSAGE',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_message);
AddDirective('MINENUMSIZE',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_packenum);
AddDirective('MMX',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_mmx);
AddDirective('MODE',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_mode);
AddDirective('NOTE',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_note);
AddDirective('NOTES',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_notes);
AddDirective('OBJECTCHECKS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_objectchecks);
AddDirective('OBJECTPATH',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_objectpath);
AddDirective('OPENSTRINGS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_openstrings);
AddDirective('OUTPUT_FORMAT',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_output_format);
AddDirective('OVERFLOWCHECKS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_overflowchecks);
AddDirective('PACKENUM',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_packenum);
AddDirective('PACKRECORDS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_packrecords);
{$IFDEF TestVarsets}
AddDirective('PACKSET',{$ifdef FPCPROCVAR}@{$endif}dir_packset);
AddDirective('PACKSET',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_packset);
{$ENDIF}
AddDirective('PROFILE',{$ifdef FPCPROCVAR}@{$endif}dir_profile);
AddDirective('R',{$ifdef FPCPROCVAR}@{$endif}dir_resource);
AddDirective('RANGECHECKS',{$ifdef FPCPROCVAR}@{$endif}dir_rangechecks);
AddDirective('REFERENCEINFO',{$ifdef FPCPROCVAR}@{$endif}dir_referenceinfo);
AddDirective('SATURATION',{$ifdef FPCPROCVAR}@{$endif}dir_saturation);
AddDirective('SCREENNAME',{$ifdef FPCPROCVAR}@{$endif}dir_screenname);
AddDirective('SMARTLINK',{$ifdef FPCPROCVAR}@{$endif}dir_smartlink);
AddDirective('STACKFRAMES',{$ifdef FPCPROCVAR}@{$endif}dir_stackframes);
AddDirective('STATIC',{$ifdef FPCPROCVAR}@{$endif}dir_static);
AddDirective('STOP',{$ifdef FPCPROCVAR}@{$endif}dir_stop);
AddDirective('THREADING',{$ifdef FPCPROCVAR}@{$endif}dir_threading);
AddDirective('THREADNAME',{$ifdef FPCPROCVAR}@{$endif}dir_threadname);
AddDirective('TYPEDADDRESS',{$ifdef FPCPROCVAR}@{$endif}dir_typedaddress);
AddDirective('TYPEINFO',{$ifdef FPCPROCVAR}@{$endif}dir_typeinfo);
AddDirective('UNITPATH',{$ifdef FPCPROCVAR}@{$endif}dir_unitpath);
AddDirective('VARSTRINGCHECKS',{$ifdef FPCPROCVAR}@{$endif}dir_varstringchecks);
AddDirective('VERSION',{$ifdef FPCPROCVAR}@{$endif}dir_version);
AddDirective('WAIT',{$ifdef FPCPROCVAR}@{$endif}dir_wait);
AddDirective('WARNING',{$ifdef FPCPROCVAR}@{$endif}dir_warning);
AddDirective('WARNINGS',{$ifdef FPCPROCVAR}@{$endif}dir_warnings);
AddDirective('WRITEABLECONST',{$ifdef FPCPROCVAR}@{$endif}dir_writeableconst);
AddDirective('Z1',{$ifdef FPCPROCVAR}@{$endif}dir_z1);
AddDirective('Z2',{$ifdef FPCPROCVAR}@{$endif}dir_z2);
AddDirective('Z4',{$ifdef FPCPROCVAR}@{$endif}dir_z4);
AddDirective('PROFILE',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_profile);
AddDirective('R',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_resource);
AddDirective('RANGECHECKS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_rangechecks);
AddDirective('REFERENCEINFO',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_referenceinfo);
AddDirective('SATURATION',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_saturation);
AddDirective('SCREENNAME',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_screenname);
AddDirective('SMARTLINK',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_smartlink);
AddDirective('STACKFRAMES',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_stackframes);
AddDirective('STATIC',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_static);
AddDirective('STOP',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_stop);
AddDirective('THREADING',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_threading);
AddDirective('THREADNAME',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_threadname);
AddDirective('TYPEDADDRESS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_typedaddress);
AddDirective('TYPEINFO',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_typeinfo);
AddDirective('UNITPATH',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_unitpath);
AddDirective('VARSTRINGCHECKS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_varstringchecks);
AddDirective('VERSION',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_version);
AddDirective('WAIT',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_wait);
AddDirective('WARNING',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_warning);
AddDirective('WARNINGS',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_warnings);
AddDirective('WRITEABLECONST',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_writeableconst);
AddDirective('Z1',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_z1);
AddDirective('Z2',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_z2);
AddDirective('Z4',directive_all, {$ifdef FPCPROCVAR}@{$endif}dir_z4);
end;
@ -983,7 +983,11 @@ implementation
end.
{
$Log$
Revision 1.25 2003-03-23 23:20:38 hajny
Revision 1.26 2003-09-17 22:30:19 olle
+ support for a different set of compiler directives under $MODE MAC
+ added mac directives $SETC $IFC $ELSEC $ENDC
Revision 1.25 2003/03/23 23:20:38 hajny
+ emx target added
Revision 1.24 2003/01/03 21:25:01 peter

View File

@ -180,15 +180,16 @@ interface
current_scanner : tscannerfile; { current scanner in use }
scannerdirectives : tdictionary; { dictionary with the supported directives }
aktcommentstyle : tcommentstyle; { needed to use read_comment from directives }
{$ifdef PREPROCWRITE}
preprocfile : tpreprocfile; { used with only preprocessing }
{$endif PREPROCWRITE}
procedure adddirective(const s:string;p:tdirectiveproc);
procedure addconditional(const s:string;p:tdirectiveproc);
type
tdirectivemode = (directive_all, directive_turbo, directive_mac);
procedure AddDirective(const s:string; dm: tdirectivemode; p:tdirectiveproc);
procedure AddConditional(const s:string; dm: tdirectivemode; p:tdirectiveproc);
procedure InitScanner;
procedure DoneScanner;
@ -207,6 +208,12 @@ implementation
switches,
fmodule;
var
{ dictionaries with the supported directives }
turbo_scannerdirectives : tdictionary; { for other modes }
mac_scannerdirectives : tdictionary; { for mode mac }
{*****************************************************************************
Helper routines
*****************************************************************************}
@ -309,7 +316,7 @@ implementation
end;
procedure dir_if;
function parse_compiler_expr:string;
function read_expr : string; forward;
@ -522,16 +529,21 @@ implementation
read_expr:='0';
end;
var
hs : string;
begin
begin
current_scanner.skipspace;
{ start preproc expression scanner }
current_scanner.preproc_token:=current_scanner.readpreproc;
hs:=read_expr;
current_scanner.addpreprocstack(pp_if,hs<>'0',hs,scan_c_if_found);
parse_compiler_expr:=read_expr;
end;
procedure dir_if;
var
hs : string;
begin
hs:=parse_compiler_expr;
current_scanner.addpreprocstack(pp_if,hs<>'0',hs,scan_c_if_found);
end;
procedure dir_define;
var
@ -625,6 +637,68 @@ implementation
end;
end;
procedure dir_setc;
var
hs : string;
mac : tmacro;
begin
current_scanner.skipspace;
hs:=current_scanner.readid;
mac:=tmacro(current_scanner.macros.search(hs));
if not assigned(mac) then
begin
mac:=tmacro.create(hs);
mac.defined:=true;
Message1(parser_c_macro_defined,mac.name);
current_scanner.macros.insert(mac);
end
else
begin
Message1(parser_c_macro_defined,mac.name);
mac.defined:=true;
{ delete old definition }
if assigned(mac.buftext) then
begin
freemem(mac.buftext,mac.buflen);
mac.buftext:=nil;
end;
end;
mac.is_used:=true;
{ key words are never substituted }
if is_keyword(hs) then
Message(scan_e_keyword_cant_be_a_macro);
{ !!!!!! handle macro params, need we this? }
current_scanner.skipspace;
{ may be a macro? }
//both versions with := and = are allowed
if c=':' then
current_scanner.readchar;
if c='=' then
begin
current_scanner.readchar;
hs:= parse_compiler_expr;
if length(hs) <> 0 then
begin
{ free buffer of macro ?}
if assigned(mac.buftext) then
freemem(mac.buftext,mac.buflen);
{ get new mem }
getmem(mac.buftext,length(hs));
mac.buflen:=length(hs);
{ copy the text }
move(hs[1],mac.buftext^,mac.buflen);
end
else
Message(scan_e_preproc_syntax_error);
end
else
Message(scan_e_preproc_syntax_error);
end;
procedure dir_undef;
var
@ -1376,7 +1450,10 @@ implementation
Message(scan_c_skipping_until);
repeat
current_scanner.skipuntildirective;
p:=tdirectiveitem(scannerdirectives.search(current_scanner.readid));
if not (m_mac in aktmodeswitches) then
p:=tdirectiveitem(turbo_scannerdirectives.search(current_scanner.readid))
else
p:=tdirectiveitem(mac_scannerdirectives.search(current_scanner.readid));
until assigned(p) and (p.is_conditional);
current_scanner.gettokenpos;
Message1(scan_d_handling_switch,'$'+p.name);
@ -1448,7 +1525,11 @@ implementation
{ directives may follow switches after a , }
if hs<>'' then
begin
t:=tdirectiveitem(scannerdirectives.search(hs));
if not (m_mac in aktmodeswitches) then
t:=tdirectiveitem(turbo_scannerdirectives.search(hs))
else
t:=tdirectiveitem(mac_scannerdirectives.search(hs));
if assigned(t) then
begin
if t.is_conditional then
@ -2767,18 +2848,22 @@ exit_label:
Helpers
*****************************************************************************}
procedure adddirective(const s:string;p:tdirectiveproc);
procedure AddDirective(const s:string; dm: tdirectivemode; p:tdirectiveproc);
begin
scannerdirectives.insert(tdirectiveitem.create(s,p));
if dm in [directive_all, directive_turbo] then
turbo_scannerdirectives.insert(tdirectiveitem.create(s,p));
if dm in [directive_all, directive_mac] then
mac_scannerdirectives.insert(tdirectiveitem.create(s,p));
end;
procedure addconditional(const s:string;p:tdirectiveproc);
procedure AddConditional(const s:string; dm: tdirectivemode; p:tdirectiveproc);
begin
scannerdirectives.insert(tdirectiveitem.createcond(s,p));
if dm in [directive_all, directive_turbo] then
turbo_scannerdirectives.insert(tdirectiveitem.createcond(s,p));
if dm in [directive_all, directive_mac] then
mac_scannerdirectives.insert(tdirectiveitem.createcond(s,p));
end;
{*****************************************************************************
Initialization
*****************************************************************************}
@ -2786,25 +2871,34 @@ exit_label:
procedure InitScanner;
begin
InitWideString(patternw);
scannerdirectives:=TDictionary.Create;
{ Default directives }
AddDirective('DEFINE',{$ifdef FPCPROCVAR}@{$endif}dir_define);
AddDirective('UNDEF',{$ifdef FPCPROCVAR}@{$endif}dir_undef);
AddDirective('I',{$ifdef FPCPROCVAR}@{$endif}dir_include);
AddDirective('INCLUDE',{$ifdef FPCPROCVAR}@{$endif}dir_include);
{ Default conditionals }
AddConditional('ELSE',{$ifdef FPCPROCVAR}@{$endif}dir_else);
AddConditional('ENDIF',{$ifdef FPCPROCVAR}@{$endif}dir_endif);
AddConditional('IF',{$ifdef FPCPROCVAR}@{$endif}dir_if);
AddConditional('IFDEF',{$ifdef FPCPROCVAR}@{$endif}dir_ifdef);
AddConditional('IFNDEF',{$ifdef FPCPROCVAR}@{$endif}dir_ifndef);
AddConditional('IFOPT',{$ifdef FPCPROCVAR}@{$endif}dir_ifopt);
turbo_scannerdirectives:=TDictionary.Create;
mac_scannerdirectives:=TDictionary.Create;
{ Default Turbo directives and conditionals }
AddDirective('DEFINE',directive_turbo, {$ifdef FPCPROCVAR}@{$endif}dir_define);
AddDirective('UNDEF',directive_turbo, {$ifdef FPCPROCVAR}@{$endif}dir_undef);
AddDirective('I',directive_turbo, {$ifdef FPCPROCVAR}@{$endif}dir_include);
AddDirective('INCLUDE',directive_turbo, {$ifdef FPCPROCVAR}@{$endif}dir_include);
AddConditional('ELSE',directive_turbo, {$ifdef FPCPROCVAR}@{$endif}dir_else);
AddConditional('ENDIF',directive_turbo, {$ifdef FPCPROCVAR}@{$endif}dir_endif);
AddConditional('IF',directive_turbo, {$ifdef FPCPROCVAR}@{$endif}dir_if);
AddConditional('IFDEF',directive_turbo, {$ifdef FPCPROCVAR}@{$endif}dir_ifdef);
AddConditional('IFNDEF',directive_turbo, {$ifdef FPCPROCVAR}@{$endif}dir_ifndef);
AddConditional('IFOPT',directive_turbo, {$ifdef FPCPROCVAR}@{$endif}dir_ifopt);
{ Default Mac directives and conditionals: }
AddDirective('SETC',directive_mac, {$ifdef FPCPROCVAR}@{$endif}dir_setc);
AddConditional('IFC',directive_mac, {$ifdef FPCPROCVAR}@{$endif}dir_if);
AddConditional('ELSEC',directive_mac, {$ifdef FPCPROCVAR}@{$endif}dir_else);
AddConditional('ENDC',directive_mac, {$ifdef FPCPROCVAR}@{$endif}dir_endif);
end;
procedure DoneScanner;
begin
scannerdirectives.Free;
turbo_scannerdirectives.Free;
mac_scannerdirectives.Free;
DoneWideString(patternw);
end;
@ -2812,7 +2906,11 @@ exit_label:
end.
{
$Log$
Revision 1.61 2003-09-03 11:18:37 florian
Revision 1.62 2003-09-17 22:30:19 olle
+ support for a different set of compiler directives under $MODE MAC
+ added mac directives $SETC $IFC $ELSEC $ENDC
Revision 1.61 2003/09/03 11:18:37 florian
* fixed arm concatcopy
+ arm support in the common compiler sources added
* moved some generic cg code around