On 29/04/2011 09:25, Marco van de Voort wrote:
In our previous episode, Joerg Schuelke said:
No, since modifiers can be in any order, it could be a lot more than
two tokens.
I think if the compiler reeds the<cdecl> token he needs a lookup of
only one token to decide: is used as a<modifier> or a
<identifier> token.
No, since if the next token is "deprecated" he has the same devilish
tradeoff.
Not that I am advertising to change it, but the next token wouldn't be
deprecated ever (that would be a syntax error (afaik), there has to be a
";" first).
Leaving out comment and compiler directives, the next token can be: ,;:=
// ";" not an idetifier
var a: procedure; cdecl;
// ,:= identifier
var a: procedure; cdecl, b: byte;
var a: procedure; cdecl: byte;
type: a=procedure; cdecl=byte;
// ' not an identifier
var a: integer; deprecated 'please do not use';
There are already 2 word tokens like
strict private
So cdecl and all the others could work as 2 "word" tokens too. cdecl
simply is a prefix to the next token, then if a "," or ":" is read, an
"cdecl" identifier is inserted and the ", or ":" handled; if a ";" is
read the cdecl is handled as part of the procedure before.
Martin
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel