Unnamed repository; edit this file 'description' to name the repository.
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
; Keywords
[
  "DIM"
  "IF"
  "THEN"
  "ELSE"
  "END IF"
  "WHILE"
  "WEND"
  "FOR"
  "TO"
  "STEP"
  "NEXT"
  "DO"
  "LOOP"
  "UNTIL"
  "SUB"
  "END SUB"
  "FUNCTION"
  "END FUNCTION"
  "RETURN"
  "PRINT"
  "INPUT"
  "SLEEP"
  "AS"
] @keyword

; Logical operators
[
  "AND"
  "OR"
  "NOT"
  "MOD"
] @keyword.operator

; Types
[
  "INTEGER"
  "LONG"
  "SINGLE"
  "DOUBLE"
  "STRING"
  "BYTE"
] @type

(type_identifier) @type

; Function and sub declarations
(sub_declaration
  name: (identifier) @function)
(function_declaration
  name: (identifier) @function)

; Function calls
(call_expression
  function: (identifier) @function.call)

; Built-in functions
((identifier) @function.builtin
  (#match? @function.builtin "^(?i)(ABS|SIN|COS|TAN|SQR|LEN|VAL|ASC|CHR|LEFT|RIGHT|MID|STR|INT|RND|INSTR|UCASE|LCASE|LTRIM|RTRIM|SPACE|TIME|DATE|TIMER)$"))

; Literals
(number_literal) @constant.numeric
(string_literal) @string

; Comments
(comment) @comment

; Operators
[
  "="
  "+"
  "-"
  "*"
  "/"
  "^"
  "<>"
  "<"
  ">"
  "<="
  ">="
] @operator

; Punctuation
[
  "("
  ")"
] @punctuation.bracket

[
  ","
  ";"
] @punctuation.delimiter

; Variables
(identifier) @variable