-
Notifications
You must be signed in to change notification settings - Fork 1
/
kexx.kld
104 lines (103 loc) · 2.45 KB
/
kexx.kld
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
* KEXX.KLD - KEDIT Language Definition for KEXX macros and KML
* files (Kedit Macro Library), mostly identical to the KeditW32
* built-in REXX.KLD (Version 1.1 - May 2007).
:case
ignore
:option
rexx
:number
rexx
:identifier
* skip KEXX legacy non-standard @#$
*[a-zA-Z!?_@#$] [a-zA-Z0-9.!?_@#$]
[a-zA-Z!?_] [a-zA-Z0-9.!?_]
:string
single
double
:comment
paired /* */ nest
line * firstnonblank
* The KML "header" is a colon followed by the macro name, e.g.,
* :: defines macro : for key :. A ::* would define a useless
* macro :*, this is used for KML comments. Unlike * and /* */
* comments ::* comments are not stored in the Kedit macrospace.
line ::* column 1
:header
line : column 1
:label
* KEXX labels use column 1:
delimiter : column 1
*delimiter : any
:match
( )
do,select end when,otherwise
:keyword
* No REXX address, push, queue
*address type 5
arg type 7
by type 2
call type 5
digits type 2
do type 5
drop type 1
else type 1
end type 1
engineering type 2
exit type 1
expose type 2
for type 2
forever type 2
form type 2
fuzz type 2
if type 1
interpret type 1
iterate type 1
leave type 1
linein type 2
name type 2
nop type 1
numeric type 5
off type 2
on type 2
options type 1
otherwise type 1
parse type 5
procedure type 5
pull type 7
* No REXX address, push, queue
*push type 1
*queue type 1
return type 1
say type 1
scientific type 2
select type 1
signal type 5
source type 2
to type 2
then type 1
trace type 5
until type 2
upper type 2
value type 2
var type 2
version type 2
when type 1
while type 2
with type 2
* KEXX conditions:
error type 2
failure type 2
halt type 2
*lostdigits type 2
*notready type 2
novalue type 2
syntax type 2
:postcompare
*See 'ecolor': 9 blue (like keywords), 8 black, 6 dark cyan (strings), 1 red.
*The sort order is significant, anything already handled above does not work,
*e.g., most strings, identifiers, keywords, and comments are already colored.
*red for backtick + deprecated
class [`~^@#$] alternate 1
*red controls and non-ASCII
class [~!-~] alternate 1
*KEXX rejects U+00AC logical NOT