summaryrefslogtreecommitdiffstats
path: root/misc/syntax/b.syntax
blob: 7cd91a0a8f45a8294def8b78913407abc9554a12 (plain)
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
# B language keywords
# by Gyorgy Rotter
#
# For the proper syntax highlight the order of the keywords are
# important. This is why the related keywords are not listed in a block.
# To create semantic relationship between the keywords I used groups.
# Some keywords are in a group (the name of the group is
# indicated in a commented line above the keyword definition)
#
# With the one-liner for example we could replace
# the color of the keywords which are the members of the
# "Sequences" group from "yellow" to "red"...
#
#  echo Sequences yellow red | xargs -l bash -c 'sed -z "s/\(# $0\n[^\n]*\)$1/\1$2/g" b.syntax'
#         ^         ^     ^
#         |         |     |
#         |         |     -- new_color
#         |         -- actual_color
#         -- groupname
#
#
# Usable groups:
#   Relations, Sequences, Logical, Arithmetic, Sets, Substitutions
#
# Usable colors:
#   described in the Syntax file
#

context default
    keyword whole ABSTRACT_CONSTANTS yellow
    keyword whole ABSTRACT_VARIABLES yellow
    keyword whole CONCRETE_CONSTANTS yellow
    keyword whole CONCRETE_VARIABLES yellow
    keyword whole LOCAL_OPERATIONS yellow
    keyword whole IMPLEMENTATION yellow
    keyword whole INITIALISATION yellow
    keyword whole CONSTRAINTS yellow
    keyword whole DEFINITIONS yellow
    keyword whole ASSERTIONS yellow
    keyword whole OPERATIONS yellow
    keyword whole PROPERTIES yellow
    keyword whole REFINEMENT yellow
    keyword whole CONSTANTS yellow
    keyword whole INVARIANT yellow
    keyword whole sequences yellow
    keyword whole VARIABLES yellow
    keyword whole Cardinal yellow

    # Relations
    keyword whole closure1 white

    keyword whole INCLUDES yellow

    # Arithmetic
    keyword whole NATURAL1 yellow

    keyword whole PROMOTES yellow
    keyword whole Boolean yellow
    keyword whole EXTENDS yellow
    keyword whole IMPORTS yellow

    # Arithmetic
    keyword whole INTEGER yellow

    keyword whole iterate yellow
    keyword whole MACHINE yellow

    # Arithmetic
    keyword whole NATURAL yellow

    keyword whole postfix yellow
    keyword whole REFINES yellow
    keyword whole subtree yellow
    keyword whole VARIANT yellow
    keyword whole ASSERT yellow
    keyword whole CHOICE yellow

    # Relations
    keyword whole closure white

    keyword whole EITHER yellow
    keyword whole father yellow
    keyword whole MAXINT yellow
    keyword whole MININT yellow
    keyword whole mirror yellow
    keyword whole modulo yellow
    keyword whole prefix yellow
    keyword whole SELECT yellow
    keyword whole STRING yellow
    keyword whole struct yellow
    keyword whole VALUES yellow
    keyword whole arity yellow
    keyword whole BEGIN yellow
    keyword whole btree yellow
    keyword whole const yellow
    keyword whole ELSIF yellow
    keyword whole FALSE yellow
    keyword whole first yellow
    keyword whole front yellow
    keyword whole infix yellow

    # Sets
    keyword whole INTER yellow

    keyword whole inter yellow
    keyword whole iseq1 yellow
    keyword whole right yellow

    # Arithmetic
    keyword whole SIGMA yellow

    keyword whole sizet yellow

    # Sets
    keyword whole UNION yellow

    keyword whole union yellow
    keyword whole WHERE yellow
    keyword whole WHILE yellow
    keyword whole bool yellow
    keyword whole BOOL yellow
    keyword whole card yellow
    keyword whole CASE yellow
    keyword whole conc yellow
    keyword whole ELSE yellow

    # Sets
    keyword whole FIN1 yellow

    keyword whole iseq yellow
    keyword whole last yellow
    keyword whole left yellow
    keyword whole NAT1 yellow

    # Sets
    keyword whole POW1 yellow

    keyword whole perm yellow
    keyword whole pred yellow
    keyword whole prj1 yellow
    keyword whole prj2 yellow
    keyword whole rank yellow
    keyword whole SEES yellow
    keyword whole seq1 yellow
    keyword whole SETS yellow
    keyword whole size yellow
    keyword whole skip yellow
    keyword whole sons yellow
    keyword whole succ yellow
    keyword whole tail yellow
    keyword whole THEN yellow
    keyword whole tree yellow
    keyword whole TRUE yellow
    keyword whole USES yellow
    keyword whole WHEN yellow
    keyword whole ANY yellow
    keyword whole bin yellow
    keyword whole dom yellow
    keyword whole END yellow

    # Sets
    keyword whole FIN yellow

    keyword whole fnc yellow
    keyword whole INT yellow
    keyword whole LET yellow
    keyword whole max yellow
    keyword whole min yellow
    keyword whole mod yellow
    keyword whole NAT yellow

    # Logical
    keyword whole not cyan

    # Sets
    keyword whole POW yellow

    keyword whole PRE yellow
    keyword whole ran yellow
    keyword whole rec yellow
    keyword whole rel yellow
    keyword whole rev yellow
    keyword whole seq yellow
    keyword whole Set yellow
    keyword whole son yellow
    keyword whole top yellow
    keyword whole VAR yellow
    keyword whole BE yellow
    keyword whole DO yellow
    keyword whole id yellow
    keyword whole IF yellow
    keyword whole IN yellow
    keyword whole OF yellow
    keyword whole OR yellow

    # Logical
    keyword whole or cyan

    # Arithmetic
    keyword whole PI yellow

# prevents - keyword from interfering with comment
    keyword /\* green
    keyword \*/ green
    keyword // green


    keyword <-- yellow
    keyword := yellow


    # Relations
    keyword \+->> white

    # Relations
    keyword -->> white

    # Sets
    keyword /<<: yellow

    # Sequences
    keyword /|\\ magenta

    # Relations
    keyword >->> white

    # Relations
    keyword >\+> white

    # Arithmetic
    keyword \*\* yellow

    # Relations
    keyword \+-> white

    # Sequences
    keyword \\|/ magenta

    # Relations
    keyword --> white

    # Sets
    keyword /<: yellow

    # Sets
    keyword /\\ yellow

    # Relations
    keyword <-> white

    # Sets
    keyword <<: yellow

    # Relations
    keyword <<| white

    # Logical
    keyword <=> cyan

    # Relations
    keyword <\+ white

    # Relations
    keyword >-> white

    # Sets
    keyword \\/ yellow

    # Relations
    keyword |-> white

    # Relations
    keyword |>> white

    keyword != yellow

    # Sequences
    keyword -> magenta

    # Sets
    keyword /: yellow

    # Logical
    keyword /= cyan

    # Substitutions
    keyword :: yellow

    # Sequences
    keyword <- magenta

    # Sets
    keyword <: yellow

    # Arithmetic
    keyword <= yellow

    # Relations
    keyword <| white

    keyword == yellow

    # Logical
    keyword => cyan

    # Relations
    keyword >< white

    # Arithmetic
    keyword >= yellow

    # Arithmetic
    keyword \* yellow

    # Arithmetic
    keyword \+ yellow

    # Sets
    keyword {} yellow

    # Relations
    keyword |> white

    # Logical
    keyword ! cyan

    # Logical
    keyword # cyan

    # Relations
    keyword % white

    # Logical
    keyword & cyan

    keyword ( yellow
    keyword ) yellow
    keyword , yellow

    # Arithmetic
    keyword - yellow

    # Arithmetic
    keyword / yellow

    # Sets
    keyword : yellow

    keyword ; yellow

    # Arithmetic
    keyword < yellow

    # Logical
    keyword = cyan

    # Arithmetic
    keyword > yellow

    keyword ? yellow
    keyword [ yellow
    keyword ] yellow

    # Sequences
    keyword ^ magenta

    keyword { yellow
    keyword } yellow

    keyword | yellow

    # Relations
    keyword ~ white


context exclusive /\* \*/ green
    spellcheck

context exclusive // \n green
    spellcheck

context " "    brightgreen