]> luflow.net public git repositories - flow-web.git/blob - static/highlight/es/languages/basic.js
Initial commit.
[flow-web.git] / static / highlight / es / languages / basic.js
1 /*! `basic` grammar compiled for Highlight.js 11.11.1 */
2 var hljsGrammar = (function () {
3 'use strict';
4
5 /*
6 Language: BASIC
7 Author: Raphaël Assénat <raph@raphnet.net>
8 Description: Based on the BASIC reference from the Tandy 1000 guide
9 Website: https://en.wikipedia.org/wiki/Tandy_1000
10 Category: system
11 */
12
13 /** @type LanguageFn */
14 function basic(hljs) {
15 const KEYWORDS = [
16 "ABS",
17 "ASC",
18 "AND",
19 "ATN",
20 "AUTO|0",
21 "BEEP",
22 "BLOAD|10",
23 "BSAVE|10",
24 "CALL",
25 "CALLS",
26 "CDBL",
27 "CHAIN",
28 "CHDIR",
29 "CHR$|10",
30 "CINT",
31 "CIRCLE",
32 "CLEAR",
33 "CLOSE",
34 "CLS",
35 "COLOR",
36 "COM",
37 "COMMON",
38 "CONT",
39 "COS",
40 "CSNG",
41 "CSRLIN",
42 "CVD",
43 "CVI",
44 "CVS",
45 "DATA",
46 "DATE$",
47 "DEFDBL",
48 "DEFINT",
49 "DEFSNG",
50 "DEFSTR",
51 "DEF|0",
52 "SEG",
53 "USR",
54 "DELETE",
55 "DIM",
56 "DRAW",
57 "EDIT",
58 "END",
59 "ENVIRON",
60 "ENVIRON$",
61 "EOF",
62 "EQV",
63 "ERASE",
64 "ERDEV",
65 "ERDEV$",
66 "ERL",
67 "ERR",
68 "ERROR",
69 "EXP",
70 "FIELD",
71 "FILES",
72 "FIX",
73 "FOR|0",
74 "FRE",
75 "GET",
76 "GOSUB|10",
77 "GOTO",
78 "HEX$",
79 "IF",
80 "THEN",
81 "ELSE|0",
82 "INKEY$",
83 "INP",
84 "INPUT",
85 "INPUT#",
86 "INPUT$",
87 "INSTR",
88 "IMP",
89 "INT",
90 "IOCTL",
91 "IOCTL$",
92 "KEY",
93 "ON",
94 "OFF",
95 "LIST",
96 "KILL",
97 "LEFT$",
98 "LEN",
99 "LET",
100 "LINE",
101 "LLIST",
102 "LOAD",
103 "LOC",
104 "LOCATE",
105 "LOF",
106 "LOG",
107 "LPRINT",
108 "USING",
109 "LSET",
110 "MERGE",
111 "MID$",
112 "MKDIR",
113 "MKD$",
114 "MKI$",
115 "MKS$",
116 "MOD",
117 "NAME",
118 "NEW",
119 "NEXT",
120 "NOISE",
121 "NOT",
122 "OCT$",
123 "ON",
124 "OR",
125 "PEN",
126 "PLAY",
127 "STRIG",
128 "OPEN",
129 "OPTION",
130 "BASE",
131 "OUT",
132 "PAINT",
133 "PALETTE",
134 "PCOPY",
135 "PEEK",
136 "PMAP",
137 "POINT",
138 "POKE",
139 "POS",
140 "PRINT",
141 "PRINT]",
142 "PSET",
143 "PRESET",
144 "PUT",
145 "RANDOMIZE",
146 "READ",
147 "REM",
148 "RENUM",
149 "RESET|0",
150 "RESTORE",
151 "RESUME",
152 "RETURN|0",
153 "RIGHT$",
154 "RMDIR",
155 "RND",
156 "RSET",
157 "RUN",
158 "SAVE",
159 "SCREEN",
160 "SGN",
161 "SHELL",
162 "SIN",
163 "SOUND",
164 "SPACE$",
165 "SPC",
166 "SQR",
167 "STEP",
168 "STICK",
169 "STOP",
170 "STR$",
171 "STRING$",
172 "SWAP",
173 "SYSTEM",
174 "TAB",
175 "TAN",
176 "TIME$",
177 "TIMER",
178 "TROFF",
179 "TRON",
180 "TO",
181 "USR",
182 "VAL",
183 "VARPTR",
184 "VARPTR$",
185 "VIEW",
186 "WAIT",
187 "WHILE",
188 "WEND",
189 "WIDTH",
190 "WINDOW",
191 "WRITE",
192 "XOR"
193 ];
194
195 return {
196 name: 'BASIC',
197 case_insensitive: true,
198 illegal: '^\.',
199 // Support explicitly typed variables that end with $%! or #.
200 keywords: {
201 $pattern: '[a-zA-Z][a-zA-Z0-9_$%!#]*',
202 keyword: KEYWORDS
203 },
204 contains: [
205 {
206 // Match strings that start with " and end with " or a line break
207 scope: 'string',
208 begin: /"/,
209 end: /"|$/,
210 contains: [ hljs.BACKSLASH_ESCAPE ]
211 },
212 hljs.COMMENT('REM', '$', { relevance: 10 }),
213 hljs.COMMENT('\'', '$', { relevance: 0 }),
214 {
215 // Match line numbers
216 className: 'symbol',
217 begin: '^[0-9]+ ',
218 relevance: 10
219 },
220 {
221 // Match typed numeric constants (1000, 12.34!, 1.2e5, 1.5#, 1.2D2)
222 className: 'number',
223 begin: '\\b\\d+(\\.\\d+)?([edED]\\d+)?[#\!]?',
224 relevance: 0
225 },
226 {
227 // Match hexadecimal numbers (&Hxxxx)
228 className: 'number',
229 begin: '(&[hH][0-9a-fA-F]{1,4})'
230 },
231 {
232 // Match octal numbers (&Oxxxxxx)
233 className: 'number',
234 begin: '(&[oO][0-7]{1,6})'
235 }
236 ]
237 };
238 }
239
240 return basic;
241
242 })();
243 ;
244 export default hljsGrammar;