xsharp.eu • creating defines using keyword names
Page 1 of 1

creating defines using keyword names

Posted: Fri Oct 26, 2018 1:00 pm
by Karl-Heinz
i´m wondering why such defines are allowed ?

DEFINE ASSIGN := 11 AS INT
DEFINE FOR := 12 AS INT
DEFINE NEXT := "aa" AS STRING
DEFINE METHOD := 23 AS INT
DEFINE LOOP := 24 AS INT
DEFINE SEQUENCE := 25 AS INT
DEFINE FOREACH := 26 AS INT
DEFINE __ARGLIST := 34 AS INT
DEFINE DEFINE := 36 AS INT
DEFINE INT := 38 AS INT
DEFINE STRING := 40 AS INT
// DEFINE SELF := 41 AS INT // ok, error XS9002: Parser: mismatched input 'SELF'
// DEFINE SUPER := 42 AS INT // ok, error XS9002: Parser: mismatched input 'SUPER'


If i use fully qualified names, i can even access such defines

? speed.exe.Functions.METHOD
? speed.exe.Functions.SEQUENCE
? speed.exe.Functions.__ARGLIST
? speed.exe.Functions.DEFINE
? speed.exe.Functions.INT
? speed.exe.Functions.String
? speed.exe.Functions.next + "bb"


regards
Karl-Heinz

creating defines using keyword names

Posted: Fri Oct 26, 2018 2:24 pm
by FFF
IIRC, because the compiler knows positional keywords, i.e., is smart. If it is smart to write such defines is another question <g,d&r>

Karl

creating defines using keyword names

Posted: Fri Oct 26, 2018 2:37 pm
by robert
Karl-Heinz

Positional Keywords...

Robert

creating defines using keyword names

Posted: Fri Oct 26, 2018 3:40 pm
by Chris
...and you can use them also almost normally in your code, by prefixing them with @@, in the places where the parser does not allow them:

? @@METHOD

and you can also use this to define a define named "self":

DEFINE @@SELF := 41 AS INT

creating defines using keyword names

Posted: Fri Oct 26, 2018 4:53 pm
by Karl-Heinz
Oki doki,

because of an unwanted delete action I compiled in VO :

DEFINE for := 2

which results in a "bad global name". Tried immediately the same with x#, of course :-)

>
> DEFINE @@SELF := 41 AS INT
>

very nice ;-)


regards
Karl-Heinz