mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-18 12:49:12 +02:00
* tokendat compiles for tp
* tokens.dat supplied by default
This commit is contained in:
parent
d8cce3f25a
commit
91962591f3
@ -21,190 +21,20 @@
|
|||||||
|
|
||||||
****************************************************************************
|
****************************************************************************
|
||||||
}
|
}
|
||||||
{$ifdef TP}
|
|
||||||
program tokendat;
|
program tokendat;
|
||||||
|
|
||||||
uses tokens,globtype;
|
{$ifdef FPC}
|
||||||
|
{$FATAL Use tp 7 to compile, FPC can't be used because the records are written different.}
|
||||||
|
{$else}
|
||||||
|
{$ifndef TP}
|
||||||
|
-- You need to define -dTP and -dI386
|
||||||
|
{$endif}
|
||||||
|
{$ifndef I386}
|
||||||
|
-- You need to define -dTP and -dI386
|
||||||
|
{$endif}
|
||||||
|
{$endif}
|
||||||
|
|
||||||
{$define IncludeTokens}
|
uses tokens;
|
||||||
{$define IncludeCreateTokenIndex}
|
|
||||||
{$endif TP}
|
|
||||||
|
|
||||||
{$ifdef IncludeTokens}
|
|
||||||
const
|
|
||||||
arraytokeninfo : ttokenarray =(
|
|
||||||
(str:'' ;special:true ;keyword:m_none),
|
|
||||||
{ 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),
|
|
||||||
(str:'=' ;special:true ;keyword:m_none),
|
|
||||||
(str:'>' ;special:true ;keyword:m_none),
|
|
||||||
(str:'<' ;special:true ;keyword:m_none),
|
|
||||||
(str:'>=' ;special:true ;keyword:m_none),
|
|
||||||
(str:'<=' ;special:true ;keyword:m_none),
|
|
||||||
(str:'><' ;special:true ;keyword:m_none),
|
|
||||||
(str:'**' ;special:true ;keyword:m_none),
|
|
||||||
(str:'is' ;special:true ;keyword:m_none),
|
|
||||||
(str:'as' ;special:true ;keyword:m_none),
|
|
||||||
(str:'in' ;special:true ;keyword:m_none),
|
|
||||||
(str:':=' ;special:true ;keyword:m_none),
|
|
||||||
{ Special chars }
|
|
||||||
(str:'^' ;special:true ;keyword:m_none),
|
|
||||||
(str:'<>' ;special:true ;keyword:m_none),
|
|
||||||
(str:'[' ;special:true ;keyword:m_none),
|
|
||||||
(str:']' ;special:true ;keyword:m_none),
|
|
||||||
(str:'.' ;special:true ;keyword:m_none),
|
|
||||||
(str:',' ;special:true ;keyword:m_none),
|
|
||||||
(str:'(' ;special:true ;keyword:m_none),
|
|
||||||
(str:')' ;special:true ;keyword:m_none),
|
|
||||||
(str:':' ;special:true ;keyword:m_none),
|
|
||||||
(str:';' ;special:true ;keyword:m_none),
|
|
||||||
(str:'@' ;special:true ;keyword:m_none),
|
|
||||||
(str:'..' ;special:true ;keyword:m_none),
|
|
||||||
(str:'@@' ;special:true ;keyword:m_none),
|
|
||||||
(str:'end of file' ;special:true ;keyword:m_none),
|
|
||||||
(str:'identifier' ;special:true ;keyword:m_none),
|
|
||||||
(str:'non identifier';special:true ;keyword:m_none),
|
|
||||||
(str:'const real' ;special:true ;keyword:m_none),
|
|
||||||
(str:'ordinal const' ;special:true ;keyword:m_none),
|
|
||||||
(str:'const string' ;special:true ;keyword:m_none),
|
|
||||||
(str:'const char' ;special:true ;keyword:m_none),
|
|
||||||
{ C like operators }
|
|
||||||
(str:'+=' ;special:true ;keyword:m_none),
|
|
||||||
(str:'-=' ;special:true ;keyword:m_none),
|
|
||||||
(str:'&=' ;special:true ;keyword:m_none),
|
|
||||||
(str:'|=' ;special:true ;keyword:m_none),
|
|
||||||
(str:'*=' ;special:true ;keyword:m_none),
|
|
||||||
(str:'/=' ;special:true ;keyword:m_none),
|
|
||||||
(str:'' ;special:true ;keyword:m_none),
|
|
||||||
(str:'' ;special:true ;keyword:m_none),
|
|
||||||
(str:'' ;special:true ;keyword:m_none),
|
|
||||||
(str:'' ;special:true ;keyword:m_none),
|
|
||||||
{ Normal words }
|
|
||||||
(str:'AS' ;special:false;keyword:m_class),
|
|
||||||
(str:'AT' ;special:false;keyword:m_none),
|
|
||||||
(str:'DO' ;special:false;keyword:m_all),
|
|
||||||
(str:'IF' ;special:false;keyword:m_all),
|
|
||||||
(str:'IN' ;special:false;keyword:m_all),
|
|
||||||
(str:'IS' ;special:false;keyword:m_class),
|
|
||||||
(str:'OF' ;special:false;keyword:m_all),
|
|
||||||
(str:'ON' ;special:false;keyword:m_class),
|
|
||||||
(str:'OR' ;special:false;keyword:m_all),
|
|
||||||
(str:'TO' ;special:false;keyword:m_all),
|
|
||||||
(str:'AND' ;special:false;keyword:m_all),
|
|
||||||
(str:'ASM' ;special:false;keyword:m_all),
|
|
||||||
(str:'DIV' ;special:false;keyword:m_all),
|
|
||||||
(str:'END' ;special:false;keyword:m_all),
|
|
||||||
(str:'FAR' ;special:false;keyword:m_none),
|
|
||||||
(str:'FOR' ;special:false;keyword:m_all),
|
|
||||||
(str:'MOD' ;special:false;keyword:m_all),
|
|
||||||
(str:'NEW' ;special:false;keyword:m_all),
|
|
||||||
(str:'NIL' ;special:false;keyword:m_all),
|
|
||||||
(str:'NOT' ;special:false;keyword:m_all),
|
|
||||||
(str:'SET' ;special:false;keyword:m_all),
|
|
||||||
(str:'SHL' ;special:false;keyword:m_all),
|
|
||||||
(str:'SHR' ;special:false;keyword:m_all),
|
|
||||||
(str:'TRY' ;special:false;keyword:m_class),
|
|
||||||
(str:'VAR' ;special:false;keyword:m_all),
|
|
||||||
(str:'XOR' ;special:false;keyword:m_all),
|
|
||||||
(str:'CASE' ;special:false;keyword:m_all),
|
|
||||||
(str:'CVAR' ;special:false;keyword:m_none),
|
|
||||||
(str:'ELSE' ;special:false;keyword:m_all),
|
|
||||||
(str:'EXIT' ;special:false;keyword:m_all),
|
|
||||||
(str:'FAIL' ;special:false;keyword:m_none), { only set within constructors PM }
|
|
||||||
(str:'FILE' ;special:false;keyword:m_all),
|
|
||||||
(str:'GOTO' ;special:false;keyword:m_all),
|
|
||||||
(str:'NAME' ;special:false;keyword:m_none),
|
|
||||||
(str:'NEAR' ;special:false;keyword:m_none),
|
|
||||||
(str:'READ' ;special:false;keyword:m_none),
|
|
||||||
(str:'SELF' ;special:false;keyword:m_none), {set inside methods only PM }
|
|
||||||
(str:'THEN' ;special:false;keyword:m_all),
|
|
||||||
(str:'TRUE' ;special:false;keyword:m_all),
|
|
||||||
(str:'TYPE' ;special:false;keyword:m_all),
|
|
||||||
(str:'UNIT' ;special:false;keyword:m_all),
|
|
||||||
(str:'USES' ;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:'BEGIN' ;special:false;keyword:m_all),
|
|
||||||
(str:'BREAK' ;special:false;keyword:m_none),
|
|
||||||
(str:'CDECL' ;special:false;keyword:m_none),
|
|
||||||
(str:'CLASS' ;special:false;keyword:m_class),
|
|
||||||
(str:'CONST' ;special:false;keyword:m_all),
|
|
||||||
(str:'FALSE' ;special:false;keyword:m_all),
|
|
||||||
(str:'INDEX' ;special:false;keyword:m_none),
|
|
||||||
(str:'LABEL' ;special:false;keyword:m_all),
|
|
||||||
(str:'RAISE' ;special:false;keyword:m_class),
|
|
||||||
(str:'UNTIL' ;special:false;keyword:m_all),
|
|
||||||
(str:'WHILE' ;special:false;keyword:m_all),
|
|
||||||
(str:'WRITE' ;special:false;keyword:m_none),
|
|
||||||
(str:'DOWNTO' ;special:false;keyword:m_all),
|
|
||||||
(str:'EXCEPT' ;special:false;keyword:m_class),
|
|
||||||
(str:'EXPORT' ;special:false;keyword:m_none),
|
|
||||||
(str:'INLINE' ;special:false;keyword:m_none),
|
|
||||||
(str:'OBJECT' ;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:'RECORD' ;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:'STORED' ;special:false;keyword:m_none),
|
|
||||||
(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:'DISPOSE' ;special:false;keyword:m_all),
|
|
||||||
(str:'DYNAMIC' ;special:false;keyword:m_none),
|
|
||||||
(str:'EXPORTS' ;special:false;keyword:m_all),
|
|
||||||
(str:'FINALLY' ;special:false;keyword:m_class),
|
|
||||||
(str:'FORWARD' ;special:false;keyword:m_none),
|
|
||||||
(str:'IOCHECK' ;special:false;keyword:m_none),
|
|
||||||
(str:'LIBRARY' ;special:false;keyword:m_all),
|
|
||||||
(str:'MESSAGE' ;special:false;keyword:m_none),
|
|
||||||
(str:'PRIVATE' ;special:false;keyword:m_none),
|
|
||||||
(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:'ABSOLUTE' ;special:false;keyword:m_none),
|
|
||||||
(str:'ABSTRACT' ;special:false;keyword:m_none),
|
|
||||||
(str:'CONTINUE' ;special:false;keyword:m_none),
|
|
||||||
(str:'EXTERNAL' ;special:false;keyword:m_none),
|
|
||||||
(str:'FUNCTION' ;special:false;keyword:m_all),
|
|
||||||
(str:'OPERATOR' ;special:false;keyword:m_fpc),
|
|
||||||
(str:'OVERRIDE' ;special:false;keyword:m_none),
|
|
||||||
(str:'POPSTACK' ;special:false;keyword:m_none),
|
|
||||||
(str:'PROPERTY' ;special:false;keyword:m_class),
|
|
||||||
(str:'REGISTER' ;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:'INTERFACE' ;special:false;keyword:m_all),
|
|
||||||
(str:'INTERRUPT' ;special:false;keyword:m_none),
|
|
||||||
(str:'NODEFAULT' ;special:false;keyword:m_none),
|
|
||||||
(str:'OTHERWISE' ;special:false;keyword:m_all),
|
|
||||||
(str:'PROCEDURE' ;special:false;keyword:m_all),
|
|
||||||
(str:'PROTECTED' ;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:'INTERNPROC' ;special:false;keyword:m_none),
|
|
||||||
(str:'OPENSTRING' ;special:false;keyword:m_none),
|
|
||||||
(str:'CONSTRUCTOR' ;special:false;keyword:m_all),
|
|
||||||
(str:'INTERNCONST' ;special:false;keyword:m_none),
|
|
||||||
(str:'SHORTSTRING' ;special:false;keyword:m_none),
|
|
||||||
(str:'FINALIZATION' ;special:false;keyword:m_initfinal),
|
|
||||||
(str:'SAVEREGISTERS' ;special:false;keyword:m_none),
|
|
||||||
(str:'IMPLEMENTATION';special:false;keyword:m_all),
|
|
||||||
(str:'INITIALIZATION';special:false;keyword:m_initfinal),
|
|
||||||
(str:'RESOURCESTRING';special:false;keyword:m_class)
|
|
||||||
);
|
|
||||||
{$endif IncludeTokens}
|
|
||||||
|
|
||||||
{Header is designed both to identify the file and to display a nice
|
{Header is designed both to identify the file and to display a nice
|
||||||
message when you use the type command on it.
|
message when you use the type command on it.
|
||||||
@ -216,35 +46,11 @@ Explanation:
|
|||||||
#26 End of file. Causes type to stop reading the file.
|
#26 End of file. Causes type to stop reading the file.
|
||||||
}
|
}
|
||||||
|
|
||||||
{$ifdef IncludeCreateTokenIndex}
|
const
|
||||||
|
headerstr:string[length(tokheader)]=tokheader;
|
||||||
procedure create_tokenidx;
|
var
|
||||||
|
f:file;
|
||||||
{ 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;
|
|
||||||
{$endif IncludeCreateTokenIndex}
|
|
||||||
|
|
||||||
{$ifdef TP}
|
|
||||||
const headerstr:string[length(tokheader)]=tokheader;
|
|
||||||
|
|
||||||
var f:file;
|
|
||||||
a:longint;
|
a:longint;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
new(tokenidx);
|
new(tokenidx);
|
||||||
create_tokenidx;
|
create_tokenidx;
|
||||||
@ -253,14 +59,20 @@ begin
|
|||||||
{Write header...}
|
{Write header...}
|
||||||
blockwrite(f,headerstr,sizeof(headerstr));
|
blockwrite(f,headerstr,sizeof(headerstr));
|
||||||
{Write size of tokeninfo.}
|
{Write size of tokeninfo.}
|
||||||
a:=sizeof(tokeninfo);
|
a:=sizeof(arraytokeninfo);
|
||||||
blockwrite(f,a,sizeof(a));
|
blockwrite(f,a,sizeof(a));
|
||||||
{Write tokeninfo.}
|
{Write tokeninfo.}
|
||||||
blockwrite(f,tokeninfo,sizeof(tokeninfo));
|
blockwrite(f,arraytokeninfo,sizeof(arraytokeninfo));
|
||||||
{Write tokenindex.}
|
{Write tokenindex.}
|
||||||
blockwrite(f,tokenidx^,sizeof(tokenidx^));
|
blockwrite(f,tokenidx^,sizeof(tokenidx^));
|
||||||
close(f);
|
close(f);
|
||||||
dispose(tokenidx);
|
dispose(tokenidx);
|
||||||
end.
|
end.
|
||||||
|
{
|
||||||
|
$Log$
|
||||||
|
Revision 1.4 1999-09-08 16:02:03 peter
|
||||||
|
* tokendat compiles for tp
|
||||||
|
* tokens.dat supplied by default
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
{$endif TP}
|
|
||||||
|
@ -25,7 +25,6 @@ interface
|
|||||||
uses
|
uses
|
||||||
globtype;
|
globtype;
|
||||||
|
|
||||||
|
|
||||||
const
|
const
|
||||||
tokenidlen=14;
|
tokenidlen=14;
|
||||||
tokheader=#8'Free Pascal Compiler -- Token data'#13#10#26;
|
tokheader=#8'Free Pascal Compiler -- Token data'#13#10#26;
|
||||||
@ -220,39 +219,218 @@ type
|
|||||||
ptokenidx=^ttokenidx;
|
ptokenidx=^ttokenidx;
|
||||||
ttokenidx=array[2..tokenidlen,'A'..'Z'] of tokenidxrec;
|
ttokenidx=array[2..tokenidlen,'A'..'Z'] of tokenidxrec;
|
||||||
|
|
||||||
|
const
|
||||||
|
arraytokeninfo : ttokenarray =(
|
||||||
|
(str:'' ;special:true ;keyword:m_none),
|
||||||
|
{ 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),
|
||||||
|
(str:'=' ;special:true ;keyword:m_none),
|
||||||
|
(str:'>' ;special:true ;keyword:m_none),
|
||||||
|
(str:'<' ;special:true ;keyword:m_none),
|
||||||
|
(str:'>=' ;special:true ;keyword:m_none),
|
||||||
|
(str:'<=' ;special:true ;keyword:m_none),
|
||||||
|
(str:'><' ;special:true ;keyword:m_none),
|
||||||
|
(str:'**' ;special:true ;keyword:m_none),
|
||||||
|
(str:'is' ;special:true ;keyword:m_none),
|
||||||
|
(str:'as' ;special:true ;keyword:m_none),
|
||||||
|
(str:'in' ;special:true ;keyword:m_none),
|
||||||
|
(str:':=' ;special:true ;keyword:m_none),
|
||||||
|
{ Special chars }
|
||||||
|
(str:'^' ;special:true ;keyword:m_none),
|
||||||
|
(str:'<>' ;special:true ;keyword:m_none),
|
||||||
|
(str:'[' ;special:true ;keyword:m_none),
|
||||||
|
(str:']' ;special:true ;keyword:m_none),
|
||||||
|
(str:'.' ;special:true ;keyword:m_none),
|
||||||
|
(str:',' ;special:true ;keyword:m_none),
|
||||||
|
(str:'(' ;special:true ;keyword:m_none),
|
||||||
|
(str:')' ;special:true ;keyword:m_none),
|
||||||
|
(str:':' ;special:true ;keyword:m_none),
|
||||||
|
(str:';' ;special:true ;keyword:m_none),
|
||||||
|
(str:'@' ;special:true ;keyword:m_none),
|
||||||
|
(str:'..' ;special:true ;keyword:m_none),
|
||||||
|
(str:'@@' ;special:true ;keyword:m_none),
|
||||||
|
(str:'end of file' ;special:true ;keyword:m_none),
|
||||||
|
(str:'identifier' ;special:true ;keyword:m_none),
|
||||||
|
(str:'non identifier';special:true ;keyword:m_none),
|
||||||
|
(str:'const real' ;special:true ;keyword:m_none),
|
||||||
|
(str:'ordinal const' ;special:true ;keyword:m_none),
|
||||||
|
(str:'const string' ;special:true ;keyword:m_none),
|
||||||
|
(str:'const char' ;special:true ;keyword:m_none),
|
||||||
|
{ C like operators }
|
||||||
|
(str:'+=' ;special:true ;keyword:m_none),
|
||||||
|
(str:'-=' ;special:true ;keyword:m_none),
|
||||||
|
(str:'&=' ;special:true ;keyword:m_none),
|
||||||
|
(str:'|=' ;special:true ;keyword:m_none),
|
||||||
|
(str:'*=' ;special:true ;keyword:m_none),
|
||||||
|
(str:'/=' ;special:true ;keyword:m_none),
|
||||||
|
(str:'' ;special:true ;keyword:m_none),
|
||||||
|
(str:'' ;special:true ;keyword:m_none),
|
||||||
|
(str:'' ;special:true ;keyword:m_none),
|
||||||
|
(str:'' ;special:true ;keyword:m_none),
|
||||||
|
{ Normal words }
|
||||||
|
(str:'AS' ;special:false;keyword:m_class),
|
||||||
|
(str:'AT' ;special:false;keyword:m_none),
|
||||||
|
(str:'DO' ;special:false;keyword:m_all),
|
||||||
|
(str:'IF' ;special:false;keyword:m_all),
|
||||||
|
(str:'IN' ;special:false;keyword:m_all),
|
||||||
|
(str:'IS' ;special:false;keyword:m_class),
|
||||||
|
(str:'OF' ;special:false;keyword:m_all),
|
||||||
|
(str:'ON' ;special:false;keyword:m_class),
|
||||||
|
(str:'OR' ;special:false;keyword:m_all),
|
||||||
|
(str:'TO' ;special:false;keyword:m_all),
|
||||||
|
(str:'AND' ;special:false;keyword:m_all),
|
||||||
|
(str:'ASM' ;special:false;keyword:m_all),
|
||||||
|
(str:'DIV' ;special:false;keyword:m_all),
|
||||||
|
(str:'END' ;special:false;keyword:m_all),
|
||||||
|
(str:'FAR' ;special:false;keyword:m_none),
|
||||||
|
(str:'FOR' ;special:false;keyword:m_all),
|
||||||
|
(str:'MOD' ;special:false;keyword:m_all),
|
||||||
|
(str:'NEW' ;special:false;keyword:m_all),
|
||||||
|
(str:'NIL' ;special:false;keyword:m_all),
|
||||||
|
(str:'NOT' ;special:false;keyword:m_all),
|
||||||
|
(str:'SET' ;special:false;keyword:m_all),
|
||||||
|
(str:'SHL' ;special:false;keyword:m_all),
|
||||||
|
(str:'SHR' ;special:false;keyword:m_all),
|
||||||
|
(str:'TRY' ;special:false;keyword:m_class),
|
||||||
|
(str:'VAR' ;special:false;keyword:m_all),
|
||||||
|
(str:'XOR' ;special:false;keyword:m_all),
|
||||||
|
(str:'CASE' ;special:false;keyword:m_all),
|
||||||
|
(str:'CVAR' ;special:false;keyword:m_none),
|
||||||
|
(str:'ELSE' ;special:false;keyword:m_all),
|
||||||
|
(str:'EXIT' ;special:false;keyword:m_all),
|
||||||
|
(str:'FAIL' ;special:false;keyword:m_none), { only set within constructors PM }
|
||||||
|
(str:'FILE' ;special:false;keyword:m_all),
|
||||||
|
(str:'GOTO' ;special:false;keyword:m_all),
|
||||||
|
(str:'NAME' ;special:false;keyword:m_none),
|
||||||
|
(str:'NEAR' ;special:false;keyword:m_none),
|
||||||
|
(str:'READ' ;special:false;keyword:m_none),
|
||||||
|
(str:'SELF' ;special:false;keyword:m_none), {set inside methods only PM }
|
||||||
|
(str:'THEN' ;special:false;keyword:m_all),
|
||||||
|
(str:'TRUE' ;special:false;keyword:m_all),
|
||||||
|
(str:'TYPE' ;special:false;keyword:m_all),
|
||||||
|
(str:'UNIT' ;special:false;keyword:m_all),
|
||||||
|
(str:'USES' ;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:'BEGIN' ;special:false;keyword:m_all),
|
||||||
|
(str:'BREAK' ;special:false;keyword:m_none),
|
||||||
|
(str:'CDECL' ;special:false;keyword:m_none),
|
||||||
|
(str:'CLASS' ;special:false;keyword:m_class),
|
||||||
|
(str:'CONST' ;special:false;keyword:m_all),
|
||||||
|
(str:'FALSE' ;special:false;keyword:m_all),
|
||||||
|
(str:'INDEX' ;special:false;keyword:m_none),
|
||||||
|
(str:'LABEL' ;special:false;keyword:m_all),
|
||||||
|
(str:'RAISE' ;special:false;keyword:m_class),
|
||||||
|
(str:'UNTIL' ;special:false;keyword:m_all),
|
||||||
|
(str:'WHILE' ;special:false;keyword:m_all),
|
||||||
|
(str:'WRITE' ;special:false;keyword:m_none),
|
||||||
|
(str:'DOWNTO' ;special:false;keyword:m_all),
|
||||||
|
(str:'EXCEPT' ;special:false;keyword:m_class),
|
||||||
|
(str:'EXPORT' ;special:false;keyword:m_none),
|
||||||
|
(str:'INLINE' ;special:false;keyword:m_none),
|
||||||
|
(str:'OBJECT' ;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:'RECORD' ;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:'STORED' ;special:false;keyword:m_none),
|
||||||
|
(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:'DISPOSE' ;special:false;keyword:m_all),
|
||||||
|
(str:'DYNAMIC' ;special:false;keyword:m_none),
|
||||||
|
(str:'EXPORTS' ;special:false;keyword:m_all),
|
||||||
|
(str:'FINALLY' ;special:false;keyword:m_class),
|
||||||
|
(str:'FORWARD' ;special:false;keyword:m_none),
|
||||||
|
(str:'IOCHECK' ;special:false;keyword:m_none),
|
||||||
|
(str:'LIBRARY' ;special:false;keyword:m_all),
|
||||||
|
(str:'MESSAGE' ;special:false;keyword:m_none),
|
||||||
|
(str:'PRIVATE' ;special:false;keyword:m_none),
|
||||||
|
(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:'ABSOLUTE' ;special:false;keyword:m_none),
|
||||||
|
(str:'ABSTRACT' ;special:false;keyword:m_none),
|
||||||
|
(str:'CONTINUE' ;special:false;keyword:m_none),
|
||||||
|
(str:'EXTERNAL' ;special:false;keyword:m_none),
|
||||||
|
(str:'FUNCTION' ;special:false;keyword:m_all),
|
||||||
|
(str:'OPERATOR' ;special:false;keyword:m_fpc),
|
||||||
|
(str:'OVERRIDE' ;special:false;keyword:m_none),
|
||||||
|
(str:'POPSTACK' ;special:false;keyword:m_none),
|
||||||
|
(str:'PROPERTY' ;special:false;keyword:m_class),
|
||||||
|
(str:'REGISTER' ;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:'INTERFACE' ;special:false;keyword:m_all),
|
||||||
|
(str:'INTERRUPT' ;special:false;keyword:m_none),
|
||||||
|
(str:'NODEFAULT' ;special:false;keyword:m_none),
|
||||||
|
(str:'OTHERWISE' ;special:false;keyword:m_all),
|
||||||
|
(str:'PROCEDURE' ;special:false;keyword:m_all),
|
||||||
|
(str:'PROTECTED' ;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:'INTERNPROC' ;special:false;keyword:m_none),
|
||||||
|
(str:'OPENSTRING' ;special:false;keyword:m_none),
|
||||||
|
(str:'CONSTRUCTOR' ;special:false;keyword:m_all),
|
||||||
|
(str:'INTERNCONST' ;special:false;keyword:m_none),
|
||||||
|
(str:'SHORTSTRING' ;special:false;keyword:m_none),
|
||||||
|
(str:'FINALIZATION' ;special:false;keyword:m_initfinal),
|
||||||
|
(str:'SAVEREGISTERS' ;special:false;keyword:m_none),
|
||||||
|
(str:'IMPLEMENTATION';special:false;keyword:m_all),
|
||||||
|
(str:'INITIALIZATION';special:false;keyword:m_initfinal),
|
||||||
|
(str:'RESOURCESTRING';special:false;keyword:m_class)
|
||||||
|
);
|
||||||
|
|
||||||
var tokeninfo:ptokenarray;
|
var
|
||||||
|
tokeninfo:ptokenarray;
|
||||||
tokenidx:ptokenidx;
|
tokenidx:ptokenidx;
|
||||||
|
|
||||||
procedure inittokens;
|
procedure inittokens;
|
||||||
procedure donetokens;
|
procedure donetokens;
|
||||||
|
procedure create_tokenidx;
|
||||||
{$ifndef TP}
|
|
||||||
{$define IncludeTokens}
|
|
||||||
|
|
||||||
{$i tokendat.pas}
|
|
||||||
|
|
||||||
{$endif not TP}
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses globals;
|
uses
|
||||||
|
globals;
|
||||||
|
|
||||||
{$ifndef TP}
|
procedure create_tokenidx;
|
||||||
{$undef IncludeTokens}
|
{ create an index with the first and last token for every possible token
|
||||||
{$define IncludeCreateTokenIndex}
|
length, so a search only will be done in that small part }
|
||||||
{$i tokendat.pas}
|
var
|
||||||
{$endif not TP}
|
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;
|
procedure inittokens;
|
||||||
|
|
||||||
{$ifdef TP}
|
{$ifdef TP}
|
||||||
var
|
var
|
||||||
f:file;
|
f:file;
|
||||||
header:string;
|
header:string;
|
||||||
a:longint;
|
a:longint;
|
||||||
{$endif TP}
|
{$endif TP}
|
||||||
|
|
||||||
begin
|
begin
|
||||||
{$ifdef TP}
|
{$ifdef TP}
|
||||||
assign(f,exepath+'tokens.dat');
|
assign(f,exepath+'tokens.dat');
|
||||||
@ -286,8 +464,8 @@ begin
|
|||||||
{$endif not TP}
|
{$endif not TP}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure donetokens;
|
|
||||||
|
|
||||||
|
procedure donetokens;
|
||||||
begin
|
begin
|
||||||
{$ifdef TP}
|
{$ifdef TP}
|
||||||
dispose(tokeninfo);
|
dispose(tokeninfo);
|
||||||
@ -300,7 +478,11 @@ end;
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.13 1999-09-03 08:37:34 pierre
|
Revision 1.14 1999-09-08 16:02:04 peter
|
||||||
|
* tokendat compiles for tp
|
||||||
|
* tokens.dat supplied by default
|
||||||
|
|
||||||
|
Revision 1.13 1999/09/03 08:37:34 pierre
|
||||||
* tokens.dat only used for TP, and also removed from
|
* tokens.dat only used for TP, and also removed from
|
||||||
compiler dependencies
|
compiler dependencies
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user