creating defines using keyword names

This forum is meant for questions and discussions about the X# language and tools
Post Reply
Karl-Heinz
Posts: 774
Joined: Wed May 17, 2017 8:50 am

creating defines using keyword names

Post 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
FFF
Posts: 1521
Joined: Fri Sep 25, 2015 4:52 pm
Location: Germany

creating defines using keyword names

Post 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
Regards
Karl
(on Win8.1/64, Xide32 2.19, X#2.19.0.2.)
User avatar
robert
Posts: 4225
Joined: Fri Aug 21, 2015 10:57 am
Location: Netherlands

creating defines using keyword names

Post by robert »

Karl-Heinz

Positional Keywords...

Robert
XSharp Development Team
The Netherlands
robert@xsharp.eu
User avatar
Chris
Posts: 4562
Joined: Thu Oct 08, 2015 7:48 am
Location: Greece

creating defines using keyword names

Post 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
Chris Pyrgas

XSharp Development Team test
chris(at)xsharp.eu
Karl-Heinz
Posts: 774
Joined: Wed May 17, 2017 8:50 am

creating defines using keyword names

Post 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
Post Reply