mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 20:09:27 +02:00
* updated with compiler versions
This commit is contained in:
parent
5db2ac22e5
commit
da43ab8ad8
@ -26,6 +26,37 @@ interface
|
|||||||
maxidlen = 64;
|
maxidlen = 64;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
{ System independent float names }
|
||||||
|
{$ifdef i386}
|
||||||
|
bestreal = extended;
|
||||||
|
ts32real = single;
|
||||||
|
ts64real = double;
|
||||||
|
ts80real = extended;
|
||||||
|
ts64comp = extended;
|
||||||
|
{$endif}
|
||||||
|
{$ifdef m68k}
|
||||||
|
bestreal = real;
|
||||||
|
ts32real = single;
|
||||||
|
ts64real = double;
|
||||||
|
ts80real = extended;
|
||||||
|
ts64comp = comp;
|
||||||
|
{$endif}
|
||||||
|
{$ifdef alpha}
|
||||||
|
bestreal = extended;
|
||||||
|
ts32real = single;
|
||||||
|
ts64real = double;
|
||||||
|
ts80real = extended;
|
||||||
|
ts64comp = comp;
|
||||||
|
{$endif}
|
||||||
|
{$ifdef powerpc}
|
||||||
|
bestreal = double;
|
||||||
|
ts32real = single;
|
||||||
|
ts64real = double;
|
||||||
|
ts80real = extended;
|
||||||
|
ts64comp = comp;
|
||||||
|
{$endif powerpc}
|
||||||
|
pbestreal=^bestreal;
|
||||||
|
|
||||||
{ Switches which can be changed locally }
|
{ Switches which can be changed locally }
|
||||||
tlocalswitch = (cs_localnone,
|
tlocalswitch = (cs_localnone,
|
||||||
{ codegen }
|
{ codegen }
|
||||||
@ -36,7 +67,7 @@ interface
|
|||||||
{ parser }
|
{ parser }
|
||||||
cs_typed_addresses,cs_strict_var_strings,cs_ansistrings
|
cs_typed_addresses,cs_strict_var_strings,cs_ansistrings
|
||||||
);
|
);
|
||||||
tlocalswitches=set of tlocalswitch;
|
tlocalswitches = set of tlocalswitch;
|
||||||
|
|
||||||
{ Switches which can be changed only at the beginning of a new module }
|
{ Switches which can be changed only at the beginning of a new module }
|
||||||
tmoduleswitch = (cs_modulenone,
|
tmoduleswitch = (cs_modulenone,
|
||||||
@ -44,53 +75,84 @@ interface
|
|||||||
cs_fp_emulation,cs_extsyntax,cs_openstring,
|
cs_fp_emulation,cs_extsyntax,cs_openstring,
|
||||||
{ support }
|
{ support }
|
||||||
cs_support_inline,cs_support_goto,cs_support_macro,
|
cs_support_inline,cs_support_goto,cs_support_macro,
|
||||||
cs_support_c_operators,
|
cs_support_c_operators,cs_static_keyword,
|
||||||
|
cs_typed_const_not_changeable,
|
||||||
{ generation }
|
{ generation }
|
||||||
cs_profile,cs_debuginfo,cs_browser,cs_local_browser,cs_compilesystem,
|
cs_profile,cs_debuginfo,cs_browser,cs_local_browser,cs_compilesystem,
|
||||||
|
cs_lineinfo,
|
||||||
{ linking }
|
{ linking }
|
||||||
cs_smartlink,cs_create_sharedlib,cs_create_staticlib
|
cs_smartlink
|
||||||
);
|
);
|
||||||
tmoduleswitches=set of tmoduleswitch;
|
tmoduleswitches = set of tmoduleswitch;
|
||||||
|
|
||||||
{ Switches which can be changed only for a whole program/compilation,
|
{ Switches which can be changed only for a whole program/compilation,
|
||||||
mostly set with commandline }
|
mostly set with commandline }
|
||||||
tglobalswitch = (cs_globalnone,
|
tglobalswitch = (cs_globalnone,
|
||||||
{ parameter switches }
|
{ parameter switches }
|
||||||
cs_check_unit_name,cs_constructor_name,cs_static_keyword,
|
cs_check_unit_name,cs_constructor_name,
|
||||||
{ units }
|
{ units }
|
||||||
cs_load_objpas_unit,
|
cs_load_objpas_unit,
|
||||||
cs_load_gpc_unit,
|
cs_load_gpc_unit,
|
||||||
{ optimizer }
|
{ optimizer }
|
||||||
cs_regalloc,cs_uncertainopts,cs_littlesize,cs_optimize,
|
cs_regalloc,cs_uncertainopts,cs_littlesize,cs_optimize,
|
||||||
cs_fastoptimize, cs_slowoptimize,
|
cs_fastoptimize, cs_slowoptimize,
|
||||||
|
{ browser }
|
||||||
|
cs_browser_log,
|
||||||
{ debugger }
|
{ debugger }
|
||||||
cs_gdb_dbx,cs_gdb_gsym,cs_gdb_heaptrc,
|
cs_gdb_dbx,cs_gdb_gsym,cs_gdb_heaptrc,cs_checkpointer,
|
||||||
{ assembling }
|
{ assembling }
|
||||||
cs_asm_leave,cs_asm_extern,cs_asm_pipe,cs_asm_source,
|
cs_asm_leave,cs_asm_extern,cs_asm_pipe,cs_asm_source,
|
||||||
|
cs_asm_regalloc,cs_asm_tempalloc,
|
||||||
{ linking }
|
{ linking }
|
||||||
cs_link_extern,cs_link_shared,cs_link_static,cs_link_deffile
|
cs_link_extern,cs_link_static,cs_link_smart,cs_link_shared,cs_link_deffile,
|
||||||
|
cs_link_strip,cs_link_toc
|
||||||
);
|
);
|
||||||
tglobalswitches=set of tglobalswitch;
|
tglobalswitches = set of tglobalswitch;
|
||||||
|
|
||||||
{ Switches which can be changed by a mode (fpc,tp7,delphi) }
|
{ Switches which can be changed by a mode (fpc,tp7,delphi) }
|
||||||
tmodeswitch = (m_none,m_all, { needed for keyword }
|
tmodeswitch = (m_none,m_all, { needed for keyword }
|
||||||
{ generic }
|
{ generic }
|
||||||
m_fpc,m_delphi,m_tp,m_gpc,
|
m_fpc,m_delphi,m_tp,m_gpc,
|
||||||
{ more specific }
|
{ more specific }
|
||||||
m_class,m_objpas,m_result,m_string_pchar,m_cvar_support,
|
m_class, { delphi class model }
|
||||||
m_nested_comment,m_tp_procvar,m_repeat_forward,
|
m_objpas, { load objpas unit }
|
||||||
|
m_result, { result in functions }
|
||||||
|
m_string_pchar, { pchar 2 string conversion }
|
||||||
|
m_cvar_support, { cvar variable directive }
|
||||||
|
m_nested_comment, { nested comments }
|
||||||
|
m_tp_procvar, { tp style procvars (no @ needed) }
|
||||||
|
m_repeat_forward, { repeating forward declarations is needed }
|
||||||
m_pointer_2_procedure, { allows the assignement of pointers to
|
m_pointer_2_procedure, { allows the assignement of pointers to
|
||||||
procedure variables }
|
procedure variables }
|
||||||
m_autoderef { does auto dereferencing of struct. vars }
|
m_autoderef, { does auto dereferencing of struct. vars }
|
||||||
|
m_initfinal, { initialization/finalization for units }
|
||||||
|
m_add_pointer { allow pointer add/sub operations }
|
||||||
);
|
);
|
||||||
tmodeswitches=set of tmodeswitch;
|
tmodeswitches = set of tmodeswitch;
|
||||||
|
|
||||||
{ win32 sub system }
|
{ win32 sub system }
|
||||||
tapptype = (at_gui,at_cui);
|
tapptype = (at_none,
|
||||||
|
at_gui,at_cui
|
||||||
|
);
|
||||||
|
|
||||||
{ currently parsed block type }
|
{ currently parsed block type }
|
||||||
tblock_type = (bt_general,bt_type,bt_const);
|
tblock_type = (bt_none,
|
||||||
|
bt_general,bt_type,bt_const
|
||||||
|
);
|
||||||
|
|
||||||
|
{ packrecords types }
|
||||||
|
tpackrecords = (packrecord_none,
|
||||||
|
packrecord_1,packrecord_2,packrecord_4,
|
||||||
|
packrecord_8,packrecord_16,packrecord_32,
|
||||||
|
packrecord_C
|
||||||
|
);
|
||||||
|
|
||||||
|
const
|
||||||
|
packrecordalignment : array[tpackrecords] of byte=(0,
|
||||||
|
1,2,4,8,16,32,1
|
||||||
|
);
|
||||||
|
|
||||||
|
type
|
||||||
stringid = string[maxidlen];
|
stringid = string[maxidlen];
|
||||||
|
|
||||||
tnormalset = set of byte; { 256 elements set }
|
tnormalset = set of byte; { 256 elements set }
|
||||||
@ -101,20 +163,24 @@ interface
|
|||||||
pword = ^word;
|
pword = ^word;
|
||||||
plongint = ^longint;
|
plongint = ^longint;
|
||||||
|
|
||||||
|
const
|
||||||
|
{ link options }
|
||||||
|
link_none = $0;
|
||||||
|
link_allways = $1;
|
||||||
|
link_static = $2;
|
||||||
|
link_smart = $4;
|
||||||
|
link_shared = $8;
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
|
||||||
|
begin
|
||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.1 1999-01-28 19:56:12 peter
|
Revision 1.2 1999-09-17 09:16:12 peter
|
||||||
* moved to include compiler/gdb independent of each other
|
* updated with compiler versions
|
||||||
|
|
||||||
Revision 1.1 1998/12/22 14:27:54 peter
|
|
||||||
* moved
|
|
||||||
|
|
||||||
Revision 1.1 1998/12/10 23:54:28 peter
|
|
||||||
* initial version of the FV IDE
|
|
||||||
* initial version of a fake compiler
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -27,46 +27,47 @@ uses
|
|||||||
|
|
||||||
const
|
const
|
||||||
tokenidlen=14;
|
tokenidlen=14;
|
||||||
|
tokheader=#8'Free Pascal Compiler -- Token data'#13#10#26;
|
||||||
|
|
||||||
type
|
type
|
||||||
ttoken=(
|
ttoken=(NOTOKEN,
|
||||||
{ operators, which can also be overloaded }
|
{ operators, which can also be overloaded }
|
||||||
PLUS,
|
_PLUS,
|
||||||
MINUS,
|
_MINUS,
|
||||||
STAR,
|
_STAR,
|
||||||
SLASH,
|
_SLASH,
|
||||||
EQUAL,
|
_EQUAL,
|
||||||
GT,
|
_GT,
|
||||||
LT,
|
_LT,
|
||||||
GTE,
|
_GTE,
|
||||||
LTE,
|
_LTE,
|
||||||
SYMDIF,
|
_SYMDIF,
|
||||||
STARSTAR,
|
_STARSTAR,
|
||||||
OP_IS,
|
_OP_IS,
|
||||||
OP_AS,
|
_OP_AS,
|
||||||
OP_IN,
|
_OP_IN,
|
||||||
ASSIGNMENT,
|
_ASSIGNMENT,
|
||||||
{ special chars }
|
{ special chars }
|
||||||
CARET,
|
_CARET,
|
||||||
UNEQUAL,
|
_UNEQUAL,
|
||||||
LECKKLAMMER,
|
_LECKKLAMMER,
|
||||||
RECKKLAMMER,
|
_RECKKLAMMER,
|
||||||
POINT,
|
_POINT,
|
||||||
COMMA,
|
_COMMA,
|
||||||
LKLAMMER,
|
_LKLAMMER,
|
||||||
RKLAMMER,
|
_RKLAMMER,
|
||||||
COLON,
|
_COLON,
|
||||||
SEMICOLON,
|
_SEMICOLON,
|
||||||
KLAMMERAFFE,
|
_KLAMMERAFFE,
|
||||||
POINTPOINT,
|
_POINTPOINT,
|
||||||
DOUBLEADDR,
|
_DOUBLEADDR,
|
||||||
_EOF,
|
_EOF,
|
||||||
ID,
|
_ID,
|
||||||
NOID,
|
_NOID,
|
||||||
REALNUMBER,
|
_REALNUMBER,
|
||||||
INTCONST,
|
_INTCONST,
|
||||||
CSTRING,
|
_CSTRING,
|
||||||
CCHAR,
|
_CCHAR,
|
||||||
{ C like operators }
|
{ C like operators }
|
||||||
_PLUSASN,
|
_PLUSASN,
|
||||||
_MINUSASN,
|
_MINUSASN,
|
||||||
@ -80,6 +81,7 @@ type
|
|||||||
_XORASN,
|
_XORASN,
|
||||||
{ Normal words }
|
{ Normal words }
|
||||||
_AS,
|
_AS,
|
||||||
|
_AT,
|
||||||
_DO,
|
_DO,
|
||||||
_IF,
|
_IF,
|
||||||
_IN,
|
_IN,
|
||||||
@ -121,9 +123,11 @@ type
|
|||||||
_UNIT,
|
_UNIT,
|
||||||
_USES,
|
_USES,
|
||||||
_WITH,
|
_WITH,
|
||||||
|
_ALIAS,
|
||||||
_ARRAY,
|
_ARRAY,
|
||||||
_BEGIN,
|
_BEGIN,
|
||||||
_BREAK,
|
_BREAK,
|
||||||
|
_CDECL,
|
||||||
_CLASS,
|
_CLASS,
|
||||||
_CONST,
|
_CONST,
|
||||||
_FALSE,
|
_FALSE,
|
||||||
@ -139,21 +143,29 @@ type
|
|||||||
_INLINE,
|
_INLINE,
|
||||||
_OBJECT,
|
_OBJECT,
|
||||||
_PACKED,
|
_PACKED,
|
||||||
|
_PASCAL,
|
||||||
_PUBLIC,
|
_PUBLIC,
|
||||||
_RECORD,
|
_RECORD,
|
||||||
_REPEAT,
|
_REPEAT,
|
||||||
|
_RESULT,
|
||||||
_STATIC,
|
_STATIC,
|
||||||
_STORED,
|
_STORED,
|
||||||
_STRING,
|
_STRING,
|
||||||
|
_SYSTEM,
|
||||||
|
_ASMNAME,
|
||||||
_DEFAULT,
|
_DEFAULT,
|
||||||
_DISPOSE,
|
_DISPOSE,
|
||||||
_DYNAMIC,
|
_DYNAMIC,
|
||||||
_EXPORTS,
|
_EXPORTS,
|
||||||
_FINALLY,
|
_FINALLY,
|
||||||
_FORWARD,
|
_FORWARD,
|
||||||
|
_IOCHECK,
|
||||||
_LIBRARY,
|
_LIBRARY,
|
||||||
|
_MESSAGE,
|
||||||
_PRIVATE,
|
_PRIVATE,
|
||||||
_PROGRAM,
|
_PROGRAM,
|
||||||
|
_STDCALL,
|
||||||
|
_SYSCALL,
|
||||||
_VIRTUAL,
|
_VIRTUAL,
|
||||||
_ABSOLUTE,
|
_ABSOLUTE,
|
||||||
_ABSTRACT,
|
_ABSTRACT,
|
||||||
@ -162,8 +174,12 @@ type
|
|||||||
_FUNCTION,
|
_FUNCTION,
|
||||||
_OPERATOR,
|
_OPERATOR,
|
||||||
_OVERRIDE,
|
_OVERRIDE,
|
||||||
|
_POPSTACK,
|
||||||
_PROPERTY,
|
_PROPERTY,
|
||||||
|
_REGISTER,
|
||||||
_RESIDENT,
|
_RESIDENT,
|
||||||
|
_SAFECALL,
|
||||||
|
_ASSEMBLER,
|
||||||
_INHERITED,
|
_INHERITED,
|
||||||
_INTERFACE,
|
_INTERFACE,
|
||||||
_INTERRUPT,
|
_INTERRUPT,
|
||||||
@ -172,12 +188,18 @@ type
|
|||||||
_PROCEDURE,
|
_PROCEDURE,
|
||||||
_PROTECTED,
|
_PROTECTED,
|
||||||
_PUBLISHED,
|
_PUBLISHED,
|
||||||
|
_THREADVAR,
|
||||||
_DESTRUCTOR,
|
_DESTRUCTOR,
|
||||||
|
_INTERNPROC,
|
||||||
|
_OPENSTRING,
|
||||||
_CONSTRUCTOR,
|
_CONSTRUCTOR,
|
||||||
|
_INTERNCONST,
|
||||||
_SHORTSTRING,
|
_SHORTSTRING,
|
||||||
_FINALIZATION,
|
_FINALIZATION,
|
||||||
|
_SAVEREGISTERS,
|
||||||
_IMPLEMENTATION,
|
_IMPLEMENTATION,
|
||||||
_INITIALIZATION
|
_INITIALIZATION,
|
||||||
|
_RESOURCESTRING
|
||||||
);
|
);
|
||||||
|
|
||||||
tokenrec=record
|
tokenrec=record
|
||||||
@ -187,13 +209,19 @@ type
|
|||||||
encoded : longint;
|
encoded : longint;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
type
|
|
||||||
ttokenarray=array[ttoken] of tokenrec;
|
ttokenarray=array[ttoken] of tokenrec;
|
||||||
ptokenarray=^ttokenarray;
|
ptokenarray=^ttokenarray;
|
||||||
|
|
||||||
|
tokenidxrec=record
|
||||||
|
first,last : ttoken;
|
||||||
|
end;
|
||||||
|
|
||||||
|
ptokenidx=^ttokenidx;
|
||||||
|
ttokenidx=array[2..tokenidlen,'A'..'Z'] of tokenidxrec;
|
||||||
|
|
||||||
const
|
const
|
||||||
arraytokeninfo: ttokenarray =(
|
arraytokeninfo : ttokenarray =(
|
||||||
|
(str:'' ;special:true ;keyword:m_none),
|
||||||
{ Operators which can be overloaded }
|
{ Operators which can be overloaded }
|
||||||
(str:'+' ;special:true ;keyword:m_none),
|
(str:'+' ;special:true ;keyword:m_none),
|
||||||
(str:'-' ;special:true ;keyword:m_none),
|
(str:'-' ;special:true ;keyword:m_none),
|
||||||
@ -244,12 +272,13 @@ const
|
|||||||
(str:'' ;special:true ;keyword:m_none),
|
(str:'' ;special:true ;keyword:m_none),
|
||||||
{ Normal words }
|
{ Normal words }
|
||||||
(str:'AS' ;special:false;keyword:m_class),
|
(str:'AS' ;special:false;keyword:m_class),
|
||||||
|
(str:'AT' ;special:false;keyword:m_none),
|
||||||
(str:'DO' ;special:false;keyword:m_all),
|
(str:'DO' ;special:false;keyword:m_all),
|
||||||
(str:'IF' ;special:false;keyword:m_all),
|
(str:'IF' ;special:false;keyword:m_all),
|
||||||
(str:'IN' ;special:false;keyword:m_all),
|
(str:'IN' ;special:false;keyword:m_all),
|
||||||
(str:'IS' ;special:false;keyword:m_class),
|
(str:'IS' ;special:false;keyword:m_class),
|
||||||
(str:'OF' ;special:false;keyword:m_all),
|
(str:'OF' ;special:false;keyword:m_all),
|
||||||
(str:'ON' ;special:false;keyword:m_objpas),
|
(str:'ON' ;special:false;keyword:m_class),
|
||||||
(str:'OR' ;special:false;keyword:m_all),
|
(str:'OR' ;special:false;keyword:m_all),
|
||||||
(str:'TO' ;special:false;keyword:m_all),
|
(str:'TO' ;special:false;keyword:m_all),
|
||||||
(str:'AND' ;special:false;keyword:m_all),
|
(str:'AND' ;special:false;keyword:m_all),
|
||||||
@ -265,7 +294,7 @@ const
|
|||||||
(str:'SET' ;special:false;keyword:m_all),
|
(str:'SET' ;special:false;keyword:m_all),
|
||||||
(str:'SHL' ;special:false;keyword:m_all),
|
(str:'SHL' ;special:false;keyword:m_all),
|
||||||
(str:'SHR' ;special:false;keyword:m_all),
|
(str:'SHR' ;special:false;keyword:m_all),
|
||||||
(str:'TRY' ;special:false;keyword:m_objpas),
|
(str:'TRY' ;special:false;keyword:m_class),
|
||||||
(str:'VAR' ;special:false;keyword:m_all),
|
(str:'VAR' ;special:false;keyword:m_all),
|
||||||
(str:'XOR' ;special:false;keyword:m_all),
|
(str:'XOR' ;special:false;keyword:m_all),
|
||||||
(str:'CASE' ;special:false;keyword:m_all),
|
(str:'CASE' ;special:false;keyword:m_all),
|
||||||
@ -285,39 +314,49 @@ const
|
|||||||
(str:'UNIT' ;special:false;keyword:m_all),
|
(str:'UNIT' ;special:false;keyword:m_all),
|
||||||
(str:'USES' ;special:false;keyword:m_all),
|
(str:'USES' ;special:false;keyword:m_all),
|
||||||
(str:'WITH' ;special:false;keyword:m_all),
|
(str:'WITH' ;special:false;keyword:m_all),
|
||||||
|
(str:'ALIAS' ;special:false;keyword:m_none),
|
||||||
(str:'ARRAY' ;special:false;keyword:m_all),
|
(str:'ARRAY' ;special:false;keyword:m_all),
|
||||||
(str:'BEGIN' ;special:false;keyword:m_all),
|
(str:'BEGIN' ;special:false;keyword:m_all),
|
||||||
(str:'BREAK' ;special:false;keyword:m_none),
|
(str:'BREAK' ;special:false;keyword:m_none),
|
||||||
|
(str:'CDECL' ;special:false;keyword:m_none),
|
||||||
(str:'CLASS' ;special:false;keyword:m_class),
|
(str:'CLASS' ;special:false;keyword:m_class),
|
||||||
(str:'CONST' ;special:false;keyword:m_all),
|
(str:'CONST' ;special:false;keyword:m_all),
|
||||||
(str:'FALSE' ;special:false;keyword:m_all),
|
(str:'FALSE' ;special:false;keyword:m_all),
|
||||||
(str:'INDEX' ;special:false;keyword:m_none),
|
(str:'INDEX' ;special:false;keyword:m_none),
|
||||||
(str:'LABEL' ;special:false;keyword:m_all),
|
(str:'LABEL' ;special:false;keyword:m_all),
|
||||||
(str:'RAISE' ;special:false;keyword:m_objpas),
|
(str:'RAISE' ;special:false;keyword:m_class),
|
||||||
(str:'UNTIL' ;special:false;keyword:m_all),
|
(str:'UNTIL' ;special:false;keyword:m_all),
|
||||||
(str:'WHILE' ;special:false;keyword:m_all),
|
(str:'WHILE' ;special:false;keyword:m_all),
|
||||||
(str:'WRITE' ;special:false;keyword:m_none),
|
(str:'WRITE' ;special:false;keyword:m_none),
|
||||||
(str:'DOWNTO' ;special:false;keyword:m_all),
|
(str:'DOWNTO' ;special:false;keyword:m_all),
|
||||||
(str:'EXCEPT' ;special:false;keyword:m_objpas),
|
(str:'EXCEPT' ;special:false;keyword:m_class),
|
||||||
(str:'EXPORT' ;special:false;keyword:m_none),
|
(str:'EXPORT' ;special:false;keyword:m_none),
|
||||||
(str:'INLINE' ;special:false;keyword:m_none),
|
(str:'INLINE' ;special:false;keyword:m_none),
|
||||||
(str:'OBJECT' ;special:false;keyword:m_all),
|
(str:'OBJECT' ;special:false;keyword:m_all),
|
||||||
(str:'PACKED' ;special:false;keyword:m_all),
|
(str:'PACKED' ;special:false;keyword:m_all),
|
||||||
|
(str:'PASCAL' ;special:false;keyword:m_none),
|
||||||
(str:'PUBLIC' ;special:false;keyword:m_none),
|
(str:'PUBLIC' ;special:false;keyword:m_none),
|
||||||
(str:'RECORD' ;special:false;keyword:m_all),
|
(str:'RECORD' ;special:false;keyword:m_all),
|
||||||
(str:'REPEAT' ;special:false;keyword:m_all),
|
(str:'REPEAT' ;special:false;keyword:m_all),
|
||||||
|
(str:'RESULT' ;special:false;keyword:m_none),
|
||||||
(str:'STATIC' ;special:false;keyword:m_none),
|
(str:'STATIC' ;special:false;keyword:m_none),
|
||||||
(str:'STORED' ;special:false;keyword:m_none),
|
(str:'STORED' ;special:false;keyword:m_none),
|
||||||
(str:'STRING' ;special:false;keyword:m_all),
|
(str:'STRING' ;special:false;keyword:m_all),
|
||||||
|
(str:'SYSTEM' ;special:false;keyword:m_none),
|
||||||
|
(str:'ASMNAME' ;special:false;keyword:m_none),
|
||||||
(str:'DEFAULT' ;special:false;keyword:m_none),
|
(str:'DEFAULT' ;special:false;keyword:m_none),
|
||||||
(str:'DISPOSE' ;special:false;keyword:m_all),
|
(str:'DISPOSE' ;special:false;keyword:m_all),
|
||||||
(str:'DYNAMIC' ;special:false;keyword:m_none),
|
(str:'DYNAMIC' ;special:false;keyword:m_none),
|
||||||
(str:'EXPORTS' ;special:false;keyword:m_all),
|
(str:'EXPORTS' ;special:false;keyword:m_all),
|
||||||
(str:'FINALLY' ;special:false;keyword:m_objpas),
|
(str:'FINALLY' ;special:false;keyword:m_class),
|
||||||
(str:'FORWARD' ;special:false;keyword:m_none),
|
(str:'FORWARD' ;special:false;keyword:m_none),
|
||||||
|
(str:'IOCHECK' ;special:false;keyword:m_none),
|
||||||
(str:'LIBRARY' ;special:false;keyword:m_all),
|
(str:'LIBRARY' ;special:false;keyword:m_all),
|
||||||
|
(str:'MESSAGE' ;special:false;keyword:m_none),
|
||||||
(str:'PRIVATE' ;special:false;keyword:m_none),
|
(str:'PRIVATE' ;special:false;keyword:m_none),
|
||||||
(str:'PROGRAM' ;special:false;keyword:m_all),
|
(str:'PROGRAM' ;special:false;keyword:m_all),
|
||||||
|
(str:'STDCALL' ;special:false;keyword:m_none),
|
||||||
|
(str:'SYSCALL' ;special:false;keyword:m_none),
|
||||||
(str:'VIRTUAL' ;special:false;keyword:m_none),
|
(str:'VIRTUAL' ;special:false;keyword:m_none),
|
||||||
(str:'ABSOLUTE' ;special:false;keyword:m_none),
|
(str:'ABSOLUTE' ;special:false;keyword:m_none),
|
||||||
(str:'ABSTRACT' ;special:false;keyword:m_none),
|
(str:'ABSTRACT' ;special:false;keyword:m_none),
|
||||||
@ -326,8 +365,12 @@ const
|
|||||||
(str:'FUNCTION' ;special:false;keyword:m_all),
|
(str:'FUNCTION' ;special:false;keyword:m_all),
|
||||||
(str:'OPERATOR' ;special:false;keyword:m_fpc),
|
(str:'OPERATOR' ;special:false;keyword:m_fpc),
|
||||||
(str:'OVERRIDE' ;special:false;keyword:m_none),
|
(str:'OVERRIDE' ;special:false;keyword:m_none),
|
||||||
|
(str:'POPSTACK' ;special:false;keyword:m_none),
|
||||||
(str:'PROPERTY' ;special:false;keyword:m_class),
|
(str:'PROPERTY' ;special:false;keyword:m_class),
|
||||||
|
(str:'REGISTER' ;special:false;keyword:m_none),
|
||||||
(str:'RESIDENT' ;special:false;keyword:m_none),
|
(str:'RESIDENT' ;special:false;keyword:m_none),
|
||||||
|
(str:'SAFECALL' ;special:false;keyword:m_none),
|
||||||
|
(str:'ASSEMBLER' ;special:false;keyword:m_none),
|
||||||
(str:'INHERITED' ;special:false;keyword:m_all),
|
(str:'INHERITED' ;special:false;keyword:m_all),
|
||||||
(str:'INTERFACE' ;special:false;keyword:m_all),
|
(str:'INTERFACE' ;special:false;keyword:m_all),
|
||||||
(str:'INTERRUPT' ;special:false;keyword:m_none),
|
(str:'INTERRUPT' ;special:false;keyword:m_none),
|
||||||
@ -336,33 +379,120 @@ const
|
|||||||
(str:'PROCEDURE' ;special:false;keyword:m_all),
|
(str:'PROCEDURE' ;special:false;keyword:m_all),
|
||||||
(str:'PROTECTED' ;special:false;keyword:m_none),
|
(str:'PROTECTED' ;special:false;keyword:m_none),
|
||||||
(str:'PUBLISHED' ;special:false;keyword:m_none),
|
(str:'PUBLISHED' ;special:false;keyword:m_none),
|
||||||
|
(str:'THREADVAR' ;special:false;keyword:m_class),
|
||||||
(str:'DESTRUCTOR' ;special:false;keyword:m_all),
|
(str:'DESTRUCTOR' ;special:false;keyword:m_all),
|
||||||
|
(str:'INTERNPROC' ;special:false;keyword:m_none),
|
||||||
|
(str:'OPENSTRING' ;special:false;keyword:m_none),
|
||||||
(str:'CONSTRUCTOR' ;special:false;keyword:m_all),
|
(str:'CONSTRUCTOR' ;special:false;keyword:m_all),
|
||||||
|
(str:'INTERNCONST' ;special:false;keyword:m_none),
|
||||||
(str:'SHORTSTRING' ;special:false;keyword:m_none),
|
(str:'SHORTSTRING' ;special:false;keyword:m_none),
|
||||||
(str:'FINALIZATION' ;special:false;keyword:m_class),
|
(str:'FINALIZATION' ;special:false;keyword:m_initfinal),
|
||||||
|
(str:'SAVEREGISTERS' ;special:false;keyword:m_none),
|
||||||
(str:'IMPLEMENTATION';special:false;keyword:m_all),
|
(str:'IMPLEMENTATION';special:false;keyword:m_all),
|
||||||
(str:'INITIALIZATION';special:false;keyword:m_class)
|
(str:'INITIALIZATION';special:false;keyword:m_initfinal),
|
||||||
|
(str:'RESOURCESTRING';special:false;keyword:m_class)
|
||||||
);
|
);
|
||||||
|
|
||||||
const
|
var
|
||||||
tokeninfo: ptokenarray = @arraytokeninfo;
|
tokeninfo:ptokenarray;
|
||||||
|
tokenidx:ptokenidx;
|
||||||
|
|
||||||
|
procedure inittokens;
|
||||||
|
procedure donetokens;
|
||||||
|
procedure create_tokenidx;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
{$ifdef TP}
|
||||||
|
uses
|
||||||
|
dos;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
procedure create_tokenidx;
|
||||||
|
{ create an index with the first and last token for every possible token
|
||||||
|
length, so a search only will be done in that small part }
|
||||||
|
var
|
||||||
|
t : ttoken;
|
||||||
|
begin
|
||||||
|
fillchar(tokenidx^,sizeof(tokenidx^),0);
|
||||||
|
for t:=low(ttoken) to high(ttoken) do
|
||||||
|
begin
|
||||||
|
if not arraytokeninfo[t].special then
|
||||||
|
begin
|
||||||
|
if ord(tokenidx^[length(arraytokeninfo[t].str),arraytokeninfo[t].str[1]].first)=0 then
|
||||||
|
tokenidx^[length(arraytokeninfo[t].str),arraytokeninfo[t].str[1]].first:=t;
|
||||||
|
tokenidx^[length(arraytokeninfo[t].str),arraytokeninfo[t].str[1]].last:=t;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure inittokens;
|
||||||
|
{$ifdef TP}
|
||||||
|
var
|
||||||
|
f:file;
|
||||||
|
n : namestr;
|
||||||
|
d : dirstr;
|
||||||
|
e : extstr;
|
||||||
|
header:string;
|
||||||
|
a:longint;
|
||||||
|
{$endif TP}
|
||||||
|
begin
|
||||||
|
{$ifdef TP}
|
||||||
|
fsplit(paramstr(0),n,d,e);
|
||||||
|
assign(f,d+'\tokens.dat');
|
||||||
|
{$I-}
|
||||||
|
reset(f,1);
|
||||||
|
{We are not sure that the msg file is loaded!}
|
||||||
|
if ioresult<>0 then
|
||||||
|
begin
|
||||||
|
close(f);
|
||||||
|
{ Very nice indeed !!! PM }
|
||||||
|
writeln('Fatal: File tokens.dat not found.');
|
||||||
|
halt(3);
|
||||||
|
end;
|
||||||
|
blockread(f,header,1);
|
||||||
|
blockread(f,header[1],length(header));
|
||||||
|
blockread(f,a,sizeof(a));
|
||||||
|
if (ioresult<>0) or
|
||||||
|
(header<>tokheader) or (a<>sizeof(ttokenarray)) then
|
||||||
|
begin
|
||||||
|
close(f);
|
||||||
|
writeln('Fatal: File tokens.dat corrupt.');
|
||||||
|
halt(3);
|
||||||
|
end;
|
||||||
|
new(tokeninfo);
|
||||||
|
blockread(f,tokeninfo^,sizeof(ttokenarray));
|
||||||
|
new(tokenidx);
|
||||||
|
blockread(f,tokenidx^,sizeof(tokenidx^));
|
||||||
|
close(f);
|
||||||
|
{$I+}
|
||||||
|
if (ioresult<>0) then
|
||||||
|
begin
|
||||||
|
writeln('Fatal: File tokens.dat corrupt.');
|
||||||
|
halt(3);
|
||||||
|
end;
|
||||||
|
{$else not TP}
|
||||||
|
tokeninfo:=@arraytokeninfo;
|
||||||
|
new(tokenidx);
|
||||||
|
create_tokenidx;
|
||||||
|
{$endif not TP}
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure donetokens;
|
||||||
|
begin
|
||||||
|
{$ifdef TP}
|
||||||
|
dispose(tokeninfo);
|
||||||
|
{$else TP}
|
||||||
|
tokeninfo:=nil;
|
||||||
|
{$endif TP}
|
||||||
|
dispose(tokenidx);
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.2 1999-09-07 08:28:19 pierre
|
Revision 1.3 1999-09-17 09:16:13 peter
|
||||||
* adapted to new compiler/tokens unit
|
* updated with compiler versions
|
||||||
|
|
||||||
Revision 1.1 1999/01/28 19:56:12 peter
|
|
||||||
* moved to include compiler/gdb independent of each other
|
|
||||||
|
|
||||||
Revision 1.1 1998/12/22 14:27:54 peter
|
|
||||||
* moved
|
|
||||||
|
|
||||||
Revision 1.1 1998/12/10 23:54:28 peter
|
|
||||||
* initial version of the FV IDE
|
|
||||||
* initial version of a fake compiler
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user