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
-
- Posts: 774
- Joined: Wed May 17, 2017 8:50 am
- Location: Germany
creating defines using keyword names
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
Karl
Regards
Karl
(on Win8.1/64, Xide32 2.20, X#2.20.0.3)
Karl
(on Win8.1/64, Xide32 2.20, X#2.20.0.3)
creating defines using keyword names
Karl-Heinz
Positional Keywords...
Robert
Positional Keywords...
Robert
XSharp Development Team
The Netherlands
robert@xsharp.eu
The Netherlands
robert@xsharp.eu
creating defines using keyword names
...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
? @@METHOD
and you can also use this to define a define named "self":
DEFINE @@SELF := 41 AS INT
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu
-
- Posts: 774
- Joined: Wed May 17, 2017 8:50 am
- Location: Germany
creating defines using keyword names
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
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