xref: /vim-8.2.3635/runtime/syntax/nqc.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	NQC - Not Quite C, for LEGO mindstorms
3071d4279SBram Moolenaar"		NQC homepage: http://www.enteract.com/~dbaum/nqc/
4071d4279SBram Moolenaar" Maintainer:	Stefan Scherer <[email protected]>
5071d4279SBram Moolenaar" Last Change:	2001 May 10
6071d4279SBram Moolenaar" URL:		http://www.enotes.de/twiki/pub/Home/LegoMindstorms/nqc.vim
7071d4279SBram Moolenaar" Filenames:	.nqc
8071d4279SBram Moolenaar
989bcfda6SBram Moolenaar" quit when a syntax file was already loaded
1089bcfda6SBram Moolenaarif exists("b:current_syntax")
11071d4279SBram Moolenaar  finish
12071d4279SBram Moolenaarendif
13071d4279SBram Moolenaar
14071d4279SBram Moolenaar" Statements
15071d4279SBram Moolenaarsyn keyword	nqcStatement	break return continue start stop abs sign
16071d4279SBram Moolenaarsyn keyword     nqcStatement	sub task
17071d4279SBram Moolenaarsyn keyword     nqcLabel	case default
18071d4279SBram Moolenaarsyn keyword	nqcConditional	if else switch
19071d4279SBram Moolenaarsyn keyword	nqcRepeat	while for do until repeat
20071d4279SBram Moolenaar
21071d4279SBram Moolenaar" Scout and RCX2
22071d4279SBram Moolenaarsyn keyword	nqcEvents	acquire catch monitor
23071d4279SBram Moolenaar
24071d4279SBram Moolenaar" types and classes
25071d4279SBram Moolenaarsyn keyword	nqcType		int true false void
26071d4279SBram Moolenaarsyn keyword	nqcStorageClass	asm const inline
27071d4279SBram Moolenaar
28071d4279SBram Moolenaar
29071d4279SBram Moolenaar
30071d4279SBram Moolenaar" Sensors --------------------------------------------
31071d4279SBram Moolenaar" Input Sensors
32071d4279SBram Moolenaarsyn keyword     nqcConstant	SENSOR_1 SENSOR_2 SENSOR_3
33071d4279SBram Moolenaar
34071d4279SBram Moolenaar" Types for SetSensorType()
35071d4279SBram Moolenaarsyn keyword     nqcConstant	SENSOR_TYPE_TOUCH SENSOR_TYPE_TEMPERATURE
36071d4279SBram Moolenaarsyn keyword     nqcConstant	SENSOR_TYPE_LIGHT SENSOR_TYPE_ROTATION
37071d4279SBram Moolenaarsyn keyword     nqcConstant	SENSOR_LIGHT SENSOR_TOUCH
38071d4279SBram Moolenaar
39071d4279SBram Moolenaar" Modes for SetSensorMode()
40071d4279SBram Moolenaarsyn keyword     nqcConstant	SENSOR_MODE_RAW SENSOR_MODE_BOOL
41071d4279SBram Moolenaarsyn keyword     nqcConstant	SENSOR_MODE_EDGE SENSOR_MODE_PULSE
42071d4279SBram Moolenaarsyn keyword     nqcConstant	SENSOR_MODE_PERCENT SENSOR_MODE_CELSIUS
43071d4279SBram Moolenaarsyn keyword     nqcConstant	SENSOR_MODE_FAHRENHEIT SENSOR_MODE_ROTATION
44071d4279SBram Moolenaar
45071d4279SBram Moolenaar" Sensor configurations for SetSensor()
46071d4279SBram Moolenaarsyn keyword     nqcConstant	SENSOR_TOUCH SENSOR_LIGHT SENSOR_ROTATION
47071d4279SBram Moolenaarsyn keyword     nqcConstant	SENSOR_CELSIUS SENSOR_FAHRENHEIT SENSOR_PULSE
48071d4279SBram Moolenaarsyn keyword     nqcConstant	SENSOR_EDGE
49071d4279SBram Moolenaar
50071d4279SBram Moolenaar" Functions - All
51071d4279SBram Moolenaarsyn keyword	nqcFunction	ClearSensor
52071d4279SBram Moolenaarsyn keyword	nqcFunction	SensorValue SensorType
53071d4279SBram Moolenaar
54071d4279SBram Moolenaar" Functions - RCX
55071d4279SBram Moolenaarsyn keyword	nqcFunction	SetSensor SetSensorType
56071d4279SBram Moolenaarsyn keyword	nqcFunction	SensorValueBool
57071d4279SBram Moolenaar
58071d4279SBram Moolenaar" Functions - RCX, CyberMaster
59071d4279SBram Moolenaarsyn keyword	nqcFunction	SetSensorMode SensorMode
60071d4279SBram Moolenaar
61071d4279SBram Moolenaar" Functions - RCX, Scout
62071d4279SBram Moolenaarsyn keyword	nqcFunction	SensorValueRaw
63071d4279SBram Moolenaar
64071d4279SBram Moolenaar" Functions - Scout
65071d4279SBram Moolenaarsyn keyword	nqcFunction	SetSensorLowerLimit SetSensorUpperLimit
66071d4279SBram Moolenaarsyn keyword	nqcFunction	SetSensorHysteresis CalibrateSensor
67071d4279SBram Moolenaar
68071d4279SBram Moolenaar
69071d4279SBram Moolenaar" Outputs --------------------------------------------
70071d4279SBram Moolenaar" Outputs for On(), Off(), etc.
71071d4279SBram Moolenaarsyn keyword     nqcConstant	OUT_A OUT_B OUT_C
72071d4279SBram Moolenaar
73071d4279SBram Moolenaar" Modes for SetOutput()
74071d4279SBram Moolenaarsyn keyword     nqcConstant	OUT_ON OUT_OFF OUT_FLOAT
75071d4279SBram Moolenaar
76071d4279SBram Moolenaar" Directions for SetDirection()
77071d4279SBram Moolenaarsyn keyword     nqcConstant	OUT_FWD OUT_REV OUT_TOGGLE
78071d4279SBram Moolenaar
79071d4279SBram Moolenaar" Output power for SetPower()
80071d4279SBram Moolenaarsyn keyword     nqcConstant	OUT_LOW OUT_HALF OUT_FULL
81071d4279SBram Moolenaar
82071d4279SBram Moolenaar" Functions - All
83071d4279SBram Moolenaarsyn keyword	nqcFunction	SetOutput SetDirection SetPower OutputStatus
84071d4279SBram Moolenaarsyn keyword	nqcFunction	On Off Float Fwd Rev Toggle
85071d4279SBram Moolenaarsyn keyword	nqcFunction	OnFwd OnRev OnFor
86071d4279SBram Moolenaar
87071d4279SBram Moolenaar" Functions - RXC2, Scout
88071d4279SBram Moolenaarsyn keyword	nqcFunction	SetGlobalOutput SetGlobalDirection SetMaxPower
89071d4279SBram Moolenaarsyn keyword	nqcFunction	GlobalOutputStatus
90071d4279SBram Moolenaar
91071d4279SBram Moolenaar
92071d4279SBram Moolenaar" Sound ----------------------------------------------
93071d4279SBram Moolenaar" Sounds for PlaySound()
94071d4279SBram Moolenaarsyn keyword     nqcConstant	SOUND_CLICK SOUND_DOUBLE_BEEP SOUND_DOWN
95071d4279SBram Moolenaarsyn keyword     nqcConstant	SOUND_UP SOUND_LOW_BEEP SOUND_FAST_UP
96071d4279SBram Moolenaar
97071d4279SBram Moolenaar" Functions - All
98071d4279SBram Moolenaarsyn keyword	nqcFunction	PlaySound PlayTone
99071d4279SBram Moolenaar
100071d4279SBram Moolenaar" Functions - RCX2, Scout
101071d4279SBram Moolenaarsyn keyword	nqcFunction	MuteSound UnmuteSound ClearSound
102071d4279SBram Moolenaarsyn keyword	nqcFunction	SelectSounds
103071d4279SBram Moolenaar
104071d4279SBram Moolenaar
105071d4279SBram Moolenaar" LCD ------------------------------------------------
106071d4279SBram Moolenaar" Modes for SelectDisplay()
107071d4279SBram Moolenaarsyn keyword     nqcConstant	DISPLAY_WATCH DISPLAY_SENSOR_1 DISPLAY_SENSOR_2
108071d4279SBram Moolenaarsyn keyword     nqcConstant	DISPLAY_SENSOR_3 DISPLAY_OUT_A DISPLAY_OUT_B
109071d4279SBram Moolenaarsyn keyword     nqcConstant	DISPLAY_OUT_C
110071d4279SBram Moolenaar" RCX2
111071d4279SBram Moolenaarsyn keyword     nqcConstant	DISPLAY_USER
112071d4279SBram Moolenaar
113071d4279SBram Moolenaar" Functions - RCX
114071d4279SBram Moolenaarsyn keyword	nqcFunction	SelectDisplay
115071d4279SBram Moolenaar" Functions - RCX2
116071d4279SBram Moolenaarsyn keyword	nqcFunction	SetUserDisplay
117071d4279SBram Moolenaar
118071d4279SBram Moolenaar
119071d4279SBram Moolenaar" Communication --------------------------------------
120071d4279SBram Moolenaar" Messages - RCX, Scout ------------------------------
121071d4279SBram Moolenaar" Tx power level for SetTxPower()
122071d4279SBram Moolenaarsyn keyword     nqcConstant	TX_POWER_LO TX_POWER_HI
123071d4279SBram Moolenaar
124071d4279SBram Moolenaar" Functions - RCX, Scout
125071d4279SBram Moolenaarsyn keyword	nqcFunction	Message ClearMessage SendMessage SetTxPower
126071d4279SBram Moolenaar
127071d4279SBram Moolenaar" Serial - RCX2 --------------------------------------
128071d4279SBram Moolenaar" for SetSerialComm()
129071d4279SBram Moolenaarsyn keyword     nqcConstant	SERIAL_COMM_DEFAULT SERIAL_COMM_4800
130071d4279SBram Moolenaarsyn keyword     nqcConstant	SERIAL_COMM_DUTY25 SERIAL_COMM_76KHZ
131071d4279SBram Moolenaar
132071d4279SBram Moolenaar" for SetSerialPacket()
133071d4279SBram Moolenaarsyn keyword     nqcConstant	SERIAL_PACKET_DEFAULT SERIAL_PACKET_PREAMBLE
134071d4279SBram Moolenaarsyn keyword     nqcConstant	SERIAL_PACKET_NEGATED SERIAL_PACKET_CHECKSUM
135071d4279SBram Moolenaarsyn keyword     nqcConstant	SERIAL_PACKET_RCX
136071d4279SBram Moolenaar
137071d4279SBram Moolenaar" Functions - RCX2
138071d4279SBram Moolenaarsyn keyword	nqcFunction	SetSerialComm SetSerialPacket SetSerialData
139071d4279SBram Moolenaarsyn keyword	nqcFunction	SerialData SendSerial
140071d4279SBram Moolenaar
141071d4279SBram Moolenaar" VLL - Scout ----------------------------------------
142071d4279SBram Moolenaar" Functions - Scout
143071d4279SBram Moolenaarsyn keyword	nqcFunction	SendVLL
144071d4279SBram Moolenaar
145071d4279SBram Moolenaar
146071d4279SBram Moolenaar" Timers ---------------------------------------------
147071d4279SBram Moolenaar" Functions - All
148071d4279SBram Moolenaarsyn keyword	nqcFunction	ClearTimer Timer
149071d4279SBram Moolenaar
150071d4279SBram Moolenaar" Functions - RCX2
151071d4279SBram Moolenaarsyn keyword	nqcFunction	SetTimer FastTimer
152071d4279SBram Moolenaar
153071d4279SBram Moolenaar
154071d4279SBram Moolenaar" Counters -------------------------------------------
155071d4279SBram Moolenaar" Functions - RCX2, Scout
156071d4279SBram Moolenaarsyn keyword	nqcFunction	ClearCounter IncCounter DecCounter Counter
157071d4279SBram Moolenaar
158071d4279SBram Moolenaar
159071d4279SBram Moolenaar" Access Control -------------------------------------
160071d4279SBram Moolenaarsyn keyword     nqcConstant	ACQUIRE_OUT_A ACQUIRE_OUT_B ACQUIRE_OUT_C
161071d4279SBram Moolenaarsyn keyword     nqcConstant	ACQUIRE_SOUND
162071d4279SBram Moolenaar" RCX2 only
163071d4279SBram Moolenaarsyn keyword     nqcConstant	ACQUIRE_USER_1 ACQUIRE_USER_2 ACQUIRE_USER_3
164071d4279SBram Moolenaarsyn keyword     nqcConstant	ACQUIRE_USER_4
165071d4279SBram Moolenaar
166071d4279SBram Moolenaar" Functions - RCX2, Scout
167071d4279SBram Moolenaarsyn keyword	nqcFunction	SetPriority
168071d4279SBram Moolenaar
169071d4279SBram Moolenaar
170071d4279SBram Moolenaar" Events ---------------------------------------------
171071d4279SBram Moolenaar" RCX2 Events
172071d4279SBram Moolenaarsyn keyword     nqcConstant	EVENT_TYPE_PRESSED EVENT_TYPE_RELEASED
173071d4279SBram Moolenaarsyn keyword     nqcConstant	EVENT_TYPE_PULSE EVENT_TYPE_EDGE
174071d4279SBram Moolenaarsyn keyword     nqcConstant	EVENT_TYPE_FAST_CHANGE EVENT_TYPE_LOW
175071d4279SBram Moolenaarsyn keyword     nqcConstant	EVENT_TYPE_NORMAL EVENT_TYPE_HIGH
176071d4279SBram Moolenaarsyn keyword     nqcConstant	EVENT_TYPE_CLICK EVENT_TYPE_DOUBLECLICK
177071d4279SBram Moolenaarsyn keyword     nqcConstant	EVENT_TYPE_MESSAGE
178071d4279SBram Moolenaar
179071d4279SBram Moolenaar" Scout Events
180071d4279SBram Moolenaarsyn keyword     nqcConstant	EVENT_1_PRESSED EVENT_1_RELEASED
181071d4279SBram Moolenaarsyn keyword     nqcConstant	EVENT_2_PRESSED EVENT_2_RELEASED
182071d4279SBram Moolenaarsyn keyword     nqcConstant	EVENT_LIGHT_HIGH EVENT_LIGHT_NORMAL
183071d4279SBram Moolenaarsyn keyword     nqcConstant	EVENT_LIGHT_LOW EVENT_LIGHT_CLICK
184071d4279SBram Moolenaarsyn keyword     nqcConstant	EVENT_LIGHT_DOUBLECLICK EVENT_COUNTER_0
185071d4279SBram Moolenaarsyn keyword     nqcConstant	EVENT_COUNTER_1 EVENT_TIMER_0 EVENT_TIMER_1
186071d4279SBram Moolenaarsyn keyword     nqcConstant	EVENT_TIMER_2 EVENT_MESSAGE
187071d4279SBram Moolenaar
188071d4279SBram Moolenaar" Functions - RCX2, Scout
189071d4279SBram Moolenaarsyn keyword	nqcFunction	ActiveEvents Event
190071d4279SBram Moolenaar
191071d4279SBram Moolenaar" Functions - RCX2
192071d4279SBram Moolenaarsyn keyword	nqcFunction	CurrentEvents
193071d4279SBram Moolenaarsyn keyword	nqcFunction	SetEvent ClearEvent ClearAllEvents EventState
194071d4279SBram Moolenaarsyn keyword	nqcFunction	CalibrateEvent SetUpperLimit UpperLimit
195071d4279SBram Moolenaarsyn keyword	nqcFunction	SetLowerLimit LowerLimit SetHysteresis
196071d4279SBram Moolenaarsyn keyword	nqcFunction	Hysteresis
197071d4279SBram Moolenaarsyn keyword	nqcFunction	SetClickTime ClickTime SetClickCounter
198071d4279SBram Moolenaarsyn keyword	nqcFunction	ClickCounter
199071d4279SBram Moolenaar
200071d4279SBram Moolenaar" Functions - Scout
201071d4279SBram Moolenaarsyn keyword	nqcFunction	SetSensorClickTime SetCounterLimit
202071d4279SBram Moolenaarsyn keyword	nqcFunction	SetTimerLimit
203071d4279SBram Moolenaar
204071d4279SBram Moolenaar
205071d4279SBram Moolenaar" Data Logging ---------------------------------------
206071d4279SBram Moolenaar" Functions - RCX
207071d4279SBram Moolenaarsyn keyword	nqcFunction	CreateDatalog AddToDatalog
208071d4279SBram Moolenaarsyn keyword	nqcFunction	UploadDatalog
209071d4279SBram Moolenaar
210071d4279SBram Moolenaar
211071d4279SBram Moolenaar" General Features -----------------------------------
212071d4279SBram Moolenaar" Functions - All
213071d4279SBram Moolenaarsyn keyword	nqcFunction	Wait StopAllTasks Random
214071d4279SBram Moolenaarsyn keyword	nqcFunction	SetSleepTime SleepNow
215071d4279SBram Moolenaar
216071d4279SBram Moolenaar" Functions - RCX
217071d4279SBram Moolenaarsyn keyword	nqcFunction	Program Watch SetWatch
218071d4279SBram Moolenaar
219071d4279SBram Moolenaar" Functions - RCX2
220071d4279SBram Moolenaarsyn keyword	nqcFunction	SetRandomSeed SelectProgram
221071d4279SBram Moolenaarsyn keyword	nqcFunction	BatteryLevel FirmwareVersion
222071d4279SBram Moolenaar
223071d4279SBram Moolenaar" Functions - Scout
224071d4279SBram Moolenaar" Parameters for SetLight()
225071d4279SBram Moolenaarsyn keyword     nqcConstant	LIGHT_ON LIGHT_OFF
226071d4279SBram Moolenaarsyn keyword	nqcFunction	SetScoutRules ScoutRules SetScoutMode
227071d4279SBram Moolenaarsyn keyword	nqcFunction	SetEventFeedback EventFeedback SetLight
228071d4279SBram Moolenaar
229071d4279SBram Moolenaar" additional CyberMaster defines
230071d4279SBram Moolenaarsyn keyword     nqcConstant	OUT_L OUT_R OUT_X
231071d4279SBram Moolenaarsyn keyword     nqcConstant	SENSOR_L SENSOR_M SENSOR_R
232071d4279SBram Moolenaar" Functions - CyberMaster
233071d4279SBram Moolenaarsyn keyword	nqcFunction	Drive OnWait OnWaitDifferent
234071d4279SBram Moolenaarsyn keyword	nqcFunction	ClearTachoCounter TachoCount TachoSpeed
235071d4279SBram Moolenaarsyn keyword	nqcFunction	ExternalMotorRunning AGC
236071d4279SBram Moolenaar
237071d4279SBram Moolenaar
238071d4279SBram Moolenaar
239071d4279SBram Moolenaar" nqcCommentGroup allows adding matches for special things in comments
240071d4279SBram Moolenaarsyn keyword	nqcTodo		contained TODO FIXME XXX
241071d4279SBram Moolenaarsyn cluster	nqcCommentGroup	contains=nqcTodo
242071d4279SBram Moolenaar
243071d4279SBram Moolenaar"when wanted, highlight trailing white space
244071d4279SBram Moolenaarif exists("nqc_space_errors")
245071d4279SBram Moolenaar  if !exists("nqc_no_trail_space_error")
246071d4279SBram Moolenaar    syn match	nqcSpaceError	display excludenl "\s\+$"
247071d4279SBram Moolenaar  endif
248071d4279SBram Moolenaar  if !exists("nqc_no_tab_space_error")
249071d4279SBram Moolenaar    syn match	nqcSpaceError	display " \+\t"me=e-1
250071d4279SBram Moolenaar  endif
251071d4279SBram Moolenaarendif
252071d4279SBram Moolenaar
253071d4279SBram Moolenaar"catch errors caused by wrong parenthesis and brackets
254071d4279SBram Moolenaarsyn cluster	nqcParenGroup	contains=nqcParenError,nqcIncluded,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcCommentSkip,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers
255071d4279SBram Moolenaarif exists("nqc_no_bracket_error")
256071d4279SBram Moolenaar  syn region	nqcParen	transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen
257071d4279SBram Moolenaar  " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine
258071d4279SBram Moolenaar  syn region	nqcCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcParen
259071d4279SBram Moolenaar  syn match	nqcParenError	display ")"
260071d4279SBram Moolenaar  syn match	nqcErrInParen	display contained "[{}]"
261071d4279SBram Moolenaarelse
262071d4279SBram Moolenaar  syn region	nqcParen		transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen,nqcErrInBracket,nqcCppBracket
263071d4279SBram Moolenaar  " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine
264071d4279SBram Moolenaar  syn region	nqcCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInBracket,nqcParen,nqcBracket
265071d4279SBram Moolenaar  syn match	nqcParenError	display "[\])]"
266071d4279SBram Moolenaar  syn match	nqcErrInParen	display contained "[\]{}]"
267071d4279SBram Moolenaar  syn region	nqcBracket	transparent start='\[' end=']' contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcCppParen,nqcCppBracket
268071d4279SBram Moolenaar  " nqcCppBracket: same as nqcParen but ends at end-of-line; used in nqcDefine
269071d4279SBram Moolenaar  syn region	nqcCppBracket	transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcParen,nqcBracket
270071d4279SBram Moolenaar  syn match	nqcErrInBracket	display contained "[);{}]"
271071d4279SBram Moolenaarendif
272071d4279SBram Moolenaar
273071d4279SBram Moolenaar"integer number, or floating point number without a dot and with "f".
274071d4279SBram Moolenaarsyn case ignore
275071d4279SBram Moolenaarsyn match	nqcNumbers	display transparent "\<\d\|\.\d" contains=nqcNumber,nqcFloat
276071d4279SBram Moolenaar" Same, but without octal error (for comments)
277071d4279SBram Moolenaarsyn match	nqcNumber	display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
278071d4279SBram Moolenaar"hex number
279071d4279SBram Moolenaarsyn match	nqcNumber	display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
280071d4279SBram Moolenaar" Flag the first zero of an octal number as something special
281071d4279SBram Moolenaarsyn match	nqcFloat	display contained "\d\+f"
282071d4279SBram Moolenaar"floating point number, with dot, optional exponent
283071d4279SBram Moolenaarsyn match	nqcFloat	display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
284071d4279SBram Moolenaar"floating point number, starting with a dot, optional exponent
285071d4279SBram Moolenaarsyn match	nqcFloat	display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
286071d4279SBram Moolenaar"floating point number, without dot, with exponent
287071d4279SBram Moolenaarsyn match	nqcFloat	display contained "\d\+e[-+]\=\d\+[fl]\=\>"
288071d4279SBram Moolenaar" flag an octal number with wrong digits
289071d4279SBram Moolenaarsyn case match
290071d4279SBram Moolenaar
291071d4279SBram Moolenaarsyn region	nqcCommentL	start="//" skip="\\$" end="$" keepend contains=@nqcCommentGroup,nqcSpaceError
292071d4279SBram Moolenaarsyn region	nqcComment	matchgroup=nqcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@nqcCommentGroup,nqcCommentStartError,nqcSpaceError
293071d4279SBram Moolenaar
294071d4279SBram Moolenaar" keep a // comment separately, it terminates a preproc. conditional
295071d4279SBram Moolenaarsyntax match	nqcCommentError	display "\*/"
296071d4279SBram Moolenaarsyntax match	nqcCommentStartError display "/\*" contained
297071d4279SBram Moolenaar
298071d4279SBram Moolenaar
299071d4279SBram Moolenaar
300071d4279SBram Moolenaar
301071d4279SBram Moolenaar
302071d4279SBram Moolenaarsyn region	nqcPreCondit	start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=nqcComment,nqcCharacter,nqcCppParen,nqcParenError,nqcNumbers,nqcCommentError,nqcSpaceError
303071d4279SBram Moolenaarsyn match	nqcPreCondit	display "^\s*#\s*\(else\|endif\)\>"
304071d4279SBram Moolenaarif !exists("nqc_no_if0")
305071d4279SBram Moolenaar  syn region	nqcCppOut		start="^\s*#\s*if\s\+0\>" end=".\|$" contains=nqcCppOut2
306071d4279SBram Moolenaar  syn region	nqcCppOut2	contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=nqcSpaceError,nqcCppSkip
307071d4279SBram Moolenaar  syn region	nqcCppSkip	contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=nqcSpaceError,nqcCppSkip
308071d4279SBram Moolenaarendif
309071d4279SBram Moolenaarsyn region	nqcIncluded	display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
310071d4279SBram Moolenaarsyn match	nqcInclude	display "^\s*#\s*include\>\s*["]" contains=nqcIncluded
311071d4279SBram Moolenaar"syn match nqcLineSkip	"\\$"
312071d4279SBram Moolenaarsyn cluster	nqcPreProcGroup	contains=nqcPreCondit,nqcIncluded,nqcInclude,nqcDefine,nqcErrInParen,nqcErrInBracket,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcParen,nqcBracket
313071d4279SBram Moolenaarsyn region	nqcDefine	start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" contains=ALLBUT,@nqcPreProcGroup
314071d4279SBram Moolenaarsyn region	nqcPreProc	start="^\s*#\s*\(pragma\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@nqcPreProcGroup
315071d4279SBram Moolenaar
316071d4279SBram Moolenaarif !exists("nqc_minlines")
317071d4279SBram Moolenaar  if !exists("nqc_no_if0")
318071d4279SBram Moolenaar    let nqc_minlines = 50	    " #if 0 constructs can be long
319071d4279SBram Moolenaar  else
320071d4279SBram Moolenaar    let nqc_minlines = 15	    " mostly for () constructs
321071d4279SBram Moolenaar  endif
322071d4279SBram Moolenaarendif
323071d4279SBram Moolenaarexec "syn sync ccomment nqcComment minlines=" . nqc_minlines
324071d4279SBram Moolenaar
325071d4279SBram Moolenaar" Define the default highlighting.
32689bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
327071d4279SBram Moolenaar
328071d4279SBram Moolenaar" The default methods for highlighting.  Can be overridden later
329*f37506f6SBram Moolenaarhi def link nqcLabel		Label
330*f37506f6SBram Moolenaarhi def link nqcConditional		Conditional
331*f37506f6SBram Moolenaarhi def link nqcRepeat		Repeat
332*f37506f6SBram Moolenaarhi def link nqcCharacter		Character
333*f37506f6SBram Moolenaarhi def link nqcNumber		Number
334*f37506f6SBram Moolenaarhi def link nqcFloat		Float
335*f37506f6SBram Moolenaarhi def link nqcFunction		Function
336*f37506f6SBram Moolenaarhi def link nqcParenError		nqcError
337*f37506f6SBram Moolenaarhi def link nqcErrInParen		nqcError
338*f37506f6SBram Moolenaarhi def link nqcErrInBracket	nqcError
339*f37506f6SBram Moolenaarhi def link nqcCommentL		nqcComment
340*f37506f6SBram Moolenaarhi def link nqcCommentStart	nqcComment
341*f37506f6SBram Moolenaarhi def link nqcCommentError	nqcError
342*f37506f6SBram Moolenaarhi def link nqcCommentStartError	nqcError
343*f37506f6SBram Moolenaarhi def link nqcSpaceError		nqcError
344*f37506f6SBram Moolenaarhi def link nqcStorageClass	StorageClass
345*f37506f6SBram Moolenaarhi def link nqcInclude		Include
346*f37506f6SBram Moolenaarhi def link nqcPreProc		PreProc
347*f37506f6SBram Moolenaarhi def link nqcDefine		Macro
348*f37506f6SBram Moolenaarhi def link nqcIncluded		String
349*f37506f6SBram Moolenaarhi def link nqcError		Error
350*f37506f6SBram Moolenaarhi def link nqcStatement		Statement
351*f37506f6SBram Moolenaarhi def link nqcEvents		Statement
352*f37506f6SBram Moolenaarhi def link nqcPreCondit		PreCondit
353*f37506f6SBram Moolenaarhi def link nqcType		Type
354*f37506f6SBram Moolenaarhi def link nqcConstant		Constant
355*f37506f6SBram Moolenaarhi def link nqcCommentSkip		nqcComment
356*f37506f6SBram Moolenaarhi def link nqcComment		Comment
357*f37506f6SBram Moolenaarhi def link nqcTodo		Todo
358*f37506f6SBram Moolenaarhi def link nqcCppSkip		nqcCppOut
359*f37506f6SBram Moolenaarhi def link nqcCppOut2		nqcCppOut
360*f37506f6SBram Moolenaarhi def link nqcCppOut		Comment
361071d4279SBram Moolenaar
362071d4279SBram Moolenaar
363071d4279SBram Moolenaarlet b:current_syntax = "nqc"
364071d4279SBram Moolenaar
365071d4279SBram Moolenaar" vim: ts=8
366