Mercurial > hg > RemoteEditor > vim7
comparison runtime/syntax/nqc.vim @ 0:76efa0be13f1
Initial revision
author | atsuki |
---|---|
date | Sat, 10 Nov 2007 15:07:22 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:76efa0be13f1 |
---|---|
1 " Vim syntax file | |
2 " Language: NQC - Not Quite C, for LEGO mindstorms | |
3 " NQC homepage: http://www.enteract.com/~dbaum/nqc/ | |
4 " Maintainer: Stefan Scherer <stefan@enotes.de> | |
5 " Last Change: 2001 May 10 | |
6 " URL: http://www.enotes.de/twiki/pub/Home/LegoMindstorms/nqc.vim | |
7 " Filenames: .nqc | |
8 | |
9 " For version 5.x: Clear all syntax items | |
10 " For version 6.x: Quit when a syntax file was already loaded | |
11 if version < 600 | |
12 syntax clear | |
13 elseif exists("b:current_syntax") | |
14 finish | |
15 endif | |
16 | |
17 " Statements | |
18 syn keyword nqcStatement break return continue start stop abs sign | |
19 syn keyword nqcStatement sub task | |
20 syn keyword nqcLabel case default | |
21 syn keyword nqcConditional if else switch | |
22 syn keyword nqcRepeat while for do until repeat | |
23 | |
24 " Scout and RCX2 | |
25 syn keyword nqcEvents acquire catch monitor | |
26 | |
27 " types and classes | |
28 syn keyword nqcType int true false void | |
29 syn keyword nqcStorageClass asm const inline | |
30 | |
31 | |
32 | |
33 " Sensors -------------------------------------------- | |
34 " Input Sensors | |
35 syn keyword nqcConstant SENSOR_1 SENSOR_2 SENSOR_3 | |
36 | |
37 " Types for SetSensorType() | |
38 syn keyword nqcConstant SENSOR_TYPE_TOUCH SENSOR_TYPE_TEMPERATURE | |
39 syn keyword nqcConstant SENSOR_TYPE_LIGHT SENSOR_TYPE_ROTATION | |
40 syn keyword nqcConstant SENSOR_LIGHT SENSOR_TOUCH | |
41 | |
42 " Modes for SetSensorMode() | |
43 syn keyword nqcConstant SENSOR_MODE_RAW SENSOR_MODE_BOOL | |
44 syn keyword nqcConstant SENSOR_MODE_EDGE SENSOR_MODE_PULSE | |
45 syn keyword nqcConstant SENSOR_MODE_PERCENT SENSOR_MODE_CELSIUS | |
46 syn keyword nqcConstant SENSOR_MODE_FAHRENHEIT SENSOR_MODE_ROTATION | |
47 | |
48 " Sensor configurations for SetSensor() | |
49 syn keyword nqcConstant SENSOR_TOUCH SENSOR_LIGHT SENSOR_ROTATION | |
50 syn keyword nqcConstant SENSOR_CELSIUS SENSOR_FAHRENHEIT SENSOR_PULSE | |
51 syn keyword nqcConstant SENSOR_EDGE | |
52 | |
53 " Functions - All | |
54 syn keyword nqcFunction ClearSensor | |
55 syn keyword nqcFunction SensorValue SensorType | |
56 | |
57 " Functions - RCX | |
58 syn keyword nqcFunction SetSensor SetSensorType | |
59 syn keyword nqcFunction SensorValueBool | |
60 | |
61 " Functions - RCX, CyberMaster | |
62 syn keyword nqcFunction SetSensorMode SensorMode | |
63 | |
64 " Functions - RCX, Scout | |
65 syn keyword nqcFunction SensorValueRaw | |
66 | |
67 " Functions - Scout | |
68 syn keyword nqcFunction SetSensorLowerLimit SetSensorUpperLimit | |
69 syn keyword nqcFunction SetSensorHysteresis CalibrateSensor | |
70 | |
71 | |
72 " Outputs -------------------------------------------- | |
73 " Outputs for On(), Off(), etc. | |
74 syn keyword nqcConstant OUT_A OUT_B OUT_C | |
75 | |
76 " Modes for SetOutput() | |
77 syn keyword nqcConstant OUT_ON OUT_OFF OUT_FLOAT | |
78 | |
79 " Directions for SetDirection() | |
80 syn keyword nqcConstant OUT_FWD OUT_REV OUT_TOGGLE | |
81 | |
82 " Output power for SetPower() | |
83 syn keyword nqcConstant OUT_LOW OUT_HALF OUT_FULL | |
84 | |
85 " Functions - All | |
86 syn keyword nqcFunction SetOutput SetDirection SetPower OutputStatus | |
87 syn keyword nqcFunction On Off Float Fwd Rev Toggle | |
88 syn keyword nqcFunction OnFwd OnRev OnFor | |
89 | |
90 " Functions - RXC2, Scout | |
91 syn keyword nqcFunction SetGlobalOutput SetGlobalDirection SetMaxPower | |
92 syn keyword nqcFunction GlobalOutputStatus | |
93 | |
94 | |
95 " Sound ---------------------------------------------- | |
96 " Sounds for PlaySound() | |
97 syn keyword nqcConstant SOUND_CLICK SOUND_DOUBLE_BEEP SOUND_DOWN | |
98 syn keyword nqcConstant SOUND_UP SOUND_LOW_BEEP SOUND_FAST_UP | |
99 | |
100 " Functions - All | |
101 syn keyword nqcFunction PlaySound PlayTone | |
102 | |
103 " Functions - RCX2, Scout | |
104 syn keyword nqcFunction MuteSound UnmuteSound ClearSound | |
105 syn keyword nqcFunction SelectSounds | |
106 | |
107 | |
108 " LCD ------------------------------------------------ | |
109 " Modes for SelectDisplay() | |
110 syn keyword nqcConstant DISPLAY_WATCH DISPLAY_SENSOR_1 DISPLAY_SENSOR_2 | |
111 syn keyword nqcConstant DISPLAY_SENSOR_3 DISPLAY_OUT_A DISPLAY_OUT_B | |
112 syn keyword nqcConstant DISPLAY_OUT_C | |
113 " RCX2 | |
114 syn keyword nqcConstant DISPLAY_USER | |
115 | |
116 " Functions - RCX | |
117 syn keyword nqcFunction SelectDisplay | |
118 " Functions - RCX2 | |
119 syn keyword nqcFunction SetUserDisplay | |
120 | |
121 | |
122 " Communication -------------------------------------- | |
123 " Messages - RCX, Scout ------------------------------ | |
124 " Tx power level for SetTxPower() | |
125 syn keyword nqcConstant TX_POWER_LO TX_POWER_HI | |
126 | |
127 " Functions - RCX, Scout | |
128 syn keyword nqcFunction Message ClearMessage SendMessage SetTxPower | |
129 | |
130 " Serial - RCX2 -------------------------------------- | |
131 " for SetSerialComm() | |
132 syn keyword nqcConstant SERIAL_COMM_DEFAULT SERIAL_COMM_4800 | |
133 syn keyword nqcConstant SERIAL_COMM_DUTY25 SERIAL_COMM_76KHZ | |
134 | |
135 " for SetSerialPacket() | |
136 syn keyword nqcConstant SERIAL_PACKET_DEFAULT SERIAL_PACKET_PREAMBLE | |
137 syn keyword nqcConstant SERIAL_PACKET_NEGATED SERIAL_PACKET_CHECKSUM | |
138 syn keyword nqcConstant SERIAL_PACKET_RCX | |
139 | |
140 " Functions - RCX2 | |
141 syn keyword nqcFunction SetSerialComm SetSerialPacket SetSerialData | |
142 syn keyword nqcFunction SerialData SendSerial | |
143 | |
144 " VLL - Scout ---------------------------------------- | |
145 " Functions - Scout | |
146 syn keyword nqcFunction SendVLL | |
147 | |
148 | |
149 " Timers --------------------------------------------- | |
150 " Functions - All | |
151 syn keyword nqcFunction ClearTimer Timer | |
152 | |
153 " Functions - RCX2 | |
154 syn keyword nqcFunction SetTimer FastTimer | |
155 | |
156 | |
157 " Counters ------------------------------------------- | |
158 " Functions - RCX2, Scout | |
159 syn keyword nqcFunction ClearCounter IncCounter DecCounter Counter | |
160 | |
161 | |
162 " Access Control ------------------------------------- | |
163 syn keyword nqcConstant ACQUIRE_OUT_A ACQUIRE_OUT_B ACQUIRE_OUT_C | |
164 syn keyword nqcConstant ACQUIRE_SOUND | |
165 " RCX2 only | |
166 syn keyword nqcConstant ACQUIRE_USER_1 ACQUIRE_USER_2 ACQUIRE_USER_3 | |
167 syn keyword nqcConstant ACQUIRE_USER_4 | |
168 | |
169 " Functions - RCX2, Scout | |
170 syn keyword nqcFunction SetPriority | |
171 | |
172 | |
173 " Events --------------------------------------------- | |
174 " RCX2 Events | |
175 syn keyword nqcConstant EVENT_TYPE_PRESSED EVENT_TYPE_RELEASED | |
176 syn keyword nqcConstant EVENT_TYPE_PULSE EVENT_TYPE_EDGE | |
177 syn keyword nqcConstant EVENT_TYPE_FAST_CHANGE EVENT_TYPE_LOW | |
178 syn keyword nqcConstant EVENT_TYPE_NORMAL EVENT_TYPE_HIGH | |
179 syn keyword nqcConstant EVENT_TYPE_CLICK EVENT_TYPE_DOUBLECLICK | |
180 syn keyword nqcConstant EVENT_TYPE_MESSAGE | |
181 | |
182 " Scout Events | |
183 syn keyword nqcConstant EVENT_1_PRESSED EVENT_1_RELEASED | |
184 syn keyword nqcConstant EVENT_2_PRESSED EVENT_2_RELEASED | |
185 syn keyword nqcConstant EVENT_LIGHT_HIGH EVENT_LIGHT_NORMAL | |
186 syn keyword nqcConstant EVENT_LIGHT_LOW EVENT_LIGHT_CLICK | |
187 syn keyword nqcConstant EVENT_LIGHT_DOUBLECLICK EVENT_COUNTER_0 | |
188 syn keyword nqcConstant EVENT_COUNTER_1 EVENT_TIMER_0 EVENT_TIMER_1 | |
189 syn keyword nqcConstant EVENT_TIMER_2 EVENT_MESSAGE | |
190 | |
191 " Functions - RCX2, Scout | |
192 syn keyword nqcFunction ActiveEvents Event | |
193 | |
194 " Functions - RCX2 | |
195 syn keyword nqcFunction CurrentEvents | |
196 syn keyword nqcFunction SetEvent ClearEvent ClearAllEvents EventState | |
197 syn keyword nqcFunction CalibrateEvent SetUpperLimit UpperLimit | |
198 syn keyword nqcFunction SetLowerLimit LowerLimit SetHysteresis | |
199 syn keyword nqcFunction Hysteresis | |
200 syn keyword nqcFunction SetClickTime ClickTime SetClickCounter | |
201 syn keyword nqcFunction ClickCounter | |
202 | |
203 " Functions - Scout | |
204 syn keyword nqcFunction SetSensorClickTime SetCounterLimit | |
205 syn keyword nqcFunction SetTimerLimit | |
206 | |
207 | |
208 " Data Logging --------------------------------------- | |
209 " Functions - RCX | |
210 syn keyword nqcFunction CreateDatalog AddToDatalog | |
211 syn keyword nqcFunction UploadDatalog | |
212 | |
213 | |
214 " General Features ----------------------------------- | |
215 " Functions - All | |
216 syn keyword nqcFunction Wait StopAllTasks Random | |
217 syn keyword nqcFunction SetSleepTime SleepNow | |
218 | |
219 " Functions - RCX | |
220 syn keyword nqcFunction Program Watch SetWatch | |
221 | |
222 " Functions - RCX2 | |
223 syn keyword nqcFunction SetRandomSeed SelectProgram | |
224 syn keyword nqcFunction BatteryLevel FirmwareVersion | |
225 | |
226 " Functions - Scout | |
227 " Parameters for SetLight() | |
228 syn keyword nqcConstant LIGHT_ON LIGHT_OFF | |
229 syn keyword nqcFunction SetScoutRules ScoutRules SetScoutMode | |
230 syn keyword nqcFunction SetEventFeedback EventFeedback SetLight | |
231 | |
232 " additional CyberMaster defines | |
233 syn keyword nqcConstant OUT_L OUT_R OUT_X | |
234 syn keyword nqcConstant SENSOR_L SENSOR_M SENSOR_R | |
235 " Functions - CyberMaster | |
236 syn keyword nqcFunction Drive OnWait OnWaitDifferent | |
237 syn keyword nqcFunction ClearTachoCounter TachoCount TachoSpeed | |
238 syn keyword nqcFunction ExternalMotorRunning AGC | |
239 | |
240 | |
241 | |
242 " nqcCommentGroup allows adding matches for special things in comments | |
243 syn keyword nqcTodo contained TODO FIXME XXX | |
244 syn cluster nqcCommentGroup contains=nqcTodo | |
245 | |
246 "when wanted, highlight trailing white space | |
247 if exists("nqc_space_errors") | |
248 if !exists("nqc_no_trail_space_error") | |
249 syn match nqcSpaceError display excludenl "\s\+$" | |
250 endif | |
251 if !exists("nqc_no_tab_space_error") | |
252 syn match nqcSpaceError display " \+\t"me=e-1 | |
253 endif | |
254 endif | |
255 | |
256 "catch errors caused by wrong parenthesis and brackets | |
257 syn cluster nqcParenGroup contains=nqcParenError,nqcIncluded,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcCommentSkip,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers | |
258 if exists("nqc_no_bracket_error") | |
259 syn region nqcParen transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen | |
260 " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine | |
261 syn region nqcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcParen | |
262 syn match nqcParenError display ")" | |
263 syn match nqcErrInParen display contained "[{}]" | |
264 else | |
265 syn region nqcParen transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen,nqcErrInBracket,nqcCppBracket | |
266 " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine | |
267 syn region nqcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInBracket,nqcParen,nqcBracket | |
268 syn match nqcParenError display "[\])]" | |
269 syn match nqcErrInParen display contained "[\]{}]" | |
270 syn region nqcBracket transparent start='\[' end=']' contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcCppParen,nqcCppBracket | |
271 " nqcCppBracket: same as nqcParen but ends at end-of-line; used in nqcDefine | |
272 syn region nqcCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcParen,nqcBracket | |
273 syn match nqcErrInBracket display contained "[);{}]" | |
274 endif | |
275 | |
276 "integer number, or floating point number without a dot and with "f". | |
277 syn case ignore | |
278 syn match nqcNumbers display transparent "\<\d\|\.\d" contains=nqcNumber,nqcFloat | |
279 " Same, but without octal error (for comments) | |
280 syn match nqcNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" | |
281 "hex number | |
282 syn match nqcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" | |
283 " Flag the first zero of an octal number as something special | |
284 syn match nqcFloat display contained "\d\+f" | |
285 "floating point number, with dot, optional exponent | |
286 syn match nqcFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" | |
287 "floating point number, starting with a dot, optional exponent | |
288 syn match nqcFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" | |
289 "floating point number, without dot, with exponent | |
290 syn match nqcFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" | |
291 " flag an octal number with wrong digits | |
292 syn case match | |
293 | |
294 syn region nqcCommentL start="//" skip="\\$" end="$" keepend contains=@nqcCommentGroup,nqcSpaceError | |
295 syn region nqcComment matchgroup=nqcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@nqcCommentGroup,nqcCommentStartError,nqcSpaceError | |
296 | |
297 " keep a // comment separately, it terminates a preproc. conditional | |
298 syntax match nqcCommentError display "\*/" | |
299 syntax match nqcCommentStartError display "/\*" contained | |
300 | |
301 | |
302 | |
303 | |
304 | |
305 syn region nqcPreCondit start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=nqcComment,nqcCharacter,nqcCppParen,nqcParenError,nqcNumbers,nqcCommentError,nqcSpaceError | |
306 syn match nqcPreCondit display "^\s*#\s*\(else\|endif\)\>" | |
307 if !exists("nqc_no_if0") | |
308 syn region nqcCppOut start="^\s*#\s*if\s\+0\>" end=".\|$" contains=nqcCppOut2 | |
309 syn region nqcCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=nqcSpaceError,nqcCppSkip | |
310 syn region nqcCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=nqcSpaceError,nqcCppSkip | |
311 endif | |
312 syn region nqcIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ | |
313 syn match nqcInclude display "^\s*#\s*include\>\s*["]" contains=nqcIncluded | |
314 "syn match nqcLineSkip "\\$" | |
315 syn cluster nqcPreProcGroup contains=nqcPreCondit,nqcIncluded,nqcInclude,nqcDefine,nqcErrInParen,nqcErrInBracket,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcParen,nqcBracket | |
316 syn region nqcDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" contains=ALLBUT,@nqcPreProcGroup | |
317 syn region nqcPreProc start="^\s*#\s*\(pragma\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@nqcPreProcGroup | |
318 | |
319 if !exists("nqc_minlines") | |
320 if !exists("nqc_no_if0") | |
321 let nqc_minlines = 50 " #if 0 constructs can be long | |
322 else | |
323 let nqc_minlines = 15 " mostly for () constructs | |
324 endif | |
325 endif | |
326 exec "syn sync ccomment nqcComment minlines=" . nqc_minlines | |
327 | |
328 " Define the default highlighting. | |
329 " For version 5.7 and earlier: only when not done already | |
330 " For version 5.8 and later: only when an item doesn't have highlighting yet | |
331 if version >= 508 || !exists("did_nqc_syn_inits") | |
332 if version < 508 | |
333 let did_nqc_syn_inits = 1 | |
334 command -nargs=+ HiLink hi link <args> | |
335 else | |
336 command -nargs=+ HiLink hi def link <args> | |
337 endif | |
338 | |
339 " The default methods for highlighting. Can be overridden later | |
340 HiLink nqcLabel Label | |
341 HiLink nqcConditional Conditional | |
342 HiLink nqcRepeat Repeat | |
343 HiLink nqcCharacter Character | |
344 HiLink nqcNumber Number | |
345 HiLink nqcFloat Float | |
346 HiLink nqcFunction Function | |
347 HiLink nqcParenError nqcError | |
348 HiLink nqcErrInParen nqcError | |
349 HiLink nqcErrInBracket nqcError | |
350 HiLink nqcCommentL nqcComment | |
351 HiLink nqcCommentStart nqcComment | |
352 HiLink nqcCommentError nqcError | |
353 HiLink nqcCommentStartError nqcError | |
354 HiLink nqcSpaceError nqcError | |
355 HiLink nqcStorageClass StorageClass | |
356 HiLink nqcInclude Include | |
357 HiLink nqcPreProc PreProc | |
358 HiLink nqcDefine Macro | |
359 HiLink nqcIncluded String | |
360 HiLink nqcError Error | |
361 HiLink nqcStatement Statement | |
362 HiLink nqcEvents Statement | |
363 HiLink nqcPreCondit PreCondit | |
364 HiLink nqcType Type | |
365 HiLink nqcConstant Constant | |
366 HiLink nqcCommentSkip nqcComment | |
367 HiLink nqcComment Comment | |
368 HiLink nqcTodo Todo | |
369 HiLink nqcCppSkip nqcCppOut | |
370 HiLink nqcCppOut2 nqcCppOut | |
371 HiLink nqcCppOut Comment | |
372 | |
373 delcommand HiLink | |
374 endif | |
375 | |
376 let b:current_syntax = "nqc" | |
377 | |
378 " vim: ts=8 |