mirror of
				https://github.com/vim/vim.git
				synced 2025-10-26 09:14:23 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			379 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			379 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:	NQC - Not Quite C, for LEGO mindstorms
 | |
| "		NQC homepage: http://www.enteract.com/~dbaum/nqc/
 | |
| " Maintainer:	Stefan Scherer <stefan@enotes.de>
 | |
| " Last Change:	2001 May 10
 | |
| " URL:		http://www.enotes.de/twiki/pub/Home/LegoMindstorms/nqc.vim
 | |
| " Filenames:	.nqc
 | |
| 
 | |
| " For version 5.x: Clear all syntax items
 | |
| " For version 6.x: Quit when a syntax file was already loaded
 | |
| if version < 600
 | |
|   syntax clear
 | |
| elseif exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| " Statements
 | |
| syn keyword	nqcStatement	break return continue start stop abs sign
 | |
| syn keyword     nqcStatement	sub task
 | |
| syn keyword     nqcLabel	case default
 | |
| syn keyword	nqcConditional	if else switch
 | |
| syn keyword	nqcRepeat	while for do until repeat
 | |
| 
 | |
| " Scout and RCX2
 | |
| syn keyword	nqcEvents	acquire catch monitor
 | |
| 
 | |
| " types and classes
 | |
| syn keyword	nqcType		int true false void
 | |
| syn keyword	nqcStorageClass	asm const inline
 | |
| 
 | |
| 
 | |
| 
 | |
| " Sensors --------------------------------------------
 | |
| " Input Sensors
 | |
| syn keyword     nqcConstant	SENSOR_1 SENSOR_2 SENSOR_3
 | |
| 
 | |
| " Types for SetSensorType()
 | |
| syn keyword     nqcConstant	SENSOR_TYPE_TOUCH SENSOR_TYPE_TEMPERATURE
 | |
| syn keyword     nqcConstant	SENSOR_TYPE_LIGHT SENSOR_TYPE_ROTATION
 | |
| syn keyword     nqcConstant	SENSOR_LIGHT SENSOR_TOUCH
 | |
| 
 | |
| " Modes for SetSensorMode()
 | |
| syn keyword     nqcConstant	SENSOR_MODE_RAW SENSOR_MODE_BOOL
 | |
| syn keyword     nqcConstant	SENSOR_MODE_EDGE SENSOR_MODE_PULSE
 | |
| syn keyword     nqcConstant	SENSOR_MODE_PERCENT SENSOR_MODE_CELSIUS
 | |
| syn keyword     nqcConstant	SENSOR_MODE_FAHRENHEIT SENSOR_MODE_ROTATION
 | |
| 
 | |
| " Sensor configurations for SetSensor()
 | |
| syn keyword     nqcConstant	SENSOR_TOUCH SENSOR_LIGHT SENSOR_ROTATION
 | |
| syn keyword     nqcConstant	SENSOR_CELSIUS SENSOR_FAHRENHEIT SENSOR_PULSE
 | |
| syn keyword     nqcConstant	SENSOR_EDGE
 | |
| 
 | |
| " Functions - All
 | |
| syn keyword	nqcFunction	ClearSensor
 | |
| syn keyword	nqcFunction	SensorValue SensorType
 | |
| 
 | |
| " Functions - RCX
 | |
| syn keyword	nqcFunction	SetSensor SetSensorType
 | |
| syn keyword	nqcFunction	SensorValueBool
 | |
| 
 | |
| " Functions - RCX, CyberMaster
 | |
| syn keyword	nqcFunction	SetSensorMode SensorMode
 | |
| 
 | |
| " Functions - RCX, Scout
 | |
| syn keyword	nqcFunction	SensorValueRaw
 | |
| 
 | |
| " Functions - Scout
 | |
| syn keyword	nqcFunction	SetSensorLowerLimit SetSensorUpperLimit
 | |
| syn keyword	nqcFunction	SetSensorHysteresis CalibrateSensor
 | |
| 
 | |
| 
 | |
| " Outputs --------------------------------------------
 | |
| " Outputs for On(), Off(), etc.
 | |
| syn keyword     nqcConstant	OUT_A OUT_B OUT_C
 | |
| 
 | |
| " Modes for SetOutput()
 | |
| syn keyword     nqcConstant	OUT_ON OUT_OFF OUT_FLOAT
 | |
| 
 | |
| " Directions for SetDirection()
 | |
| syn keyword     nqcConstant	OUT_FWD OUT_REV OUT_TOGGLE
 | |
| 
 | |
| " Output power for SetPower()
 | |
| syn keyword     nqcConstant	OUT_LOW OUT_HALF OUT_FULL
 | |
| 
 | |
| " Functions - All
 | |
| syn keyword	nqcFunction	SetOutput SetDirection SetPower OutputStatus
 | |
| syn keyword	nqcFunction	On Off Float Fwd Rev Toggle
 | |
| syn keyword	nqcFunction	OnFwd OnRev OnFor
 | |
| 
 | |
| " Functions - RXC2, Scout
 | |
| syn keyword	nqcFunction	SetGlobalOutput SetGlobalDirection SetMaxPower
 | |
| syn keyword	nqcFunction	GlobalOutputStatus
 | |
| 
 | |
| 
 | |
| " Sound ----------------------------------------------
 | |
| " Sounds for PlaySound()
 | |
| syn keyword     nqcConstant	SOUND_CLICK SOUND_DOUBLE_BEEP SOUND_DOWN
 | |
| syn keyword     nqcConstant	SOUND_UP SOUND_LOW_BEEP SOUND_FAST_UP
 | |
| 
 | |
| " Functions - All
 | |
| syn keyword	nqcFunction	PlaySound PlayTone
 | |
| 
 | |
| " Functions - RCX2, Scout
 | |
| syn keyword	nqcFunction	MuteSound UnmuteSound ClearSound
 | |
| syn keyword	nqcFunction	SelectSounds
 | |
| 
 | |
| 
 | |
| " LCD ------------------------------------------------
 | |
| " Modes for SelectDisplay()
 | |
| syn keyword     nqcConstant	DISPLAY_WATCH DISPLAY_SENSOR_1 DISPLAY_SENSOR_2
 | |
| syn keyword     nqcConstant	DISPLAY_SENSOR_3 DISPLAY_OUT_A DISPLAY_OUT_B
 | |
| syn keyword     nqcConstant	DISPLAY_OUT_C
 | |
| " RCX2
 | |
| syn keyword     nqcConstant	DISPLAY_USER
 | |
| 
 | |
| " Functions - RCX
 | |
| syn keyword	nqcFunction	SelectDisplay
 | |
| " Functions - RCX2
 | |
| syn keyword	nqcFunction	SetUserDisplay
 | |
| 
 | |
| 
 | |
| " Communication --------------------------------------
 | |
| " Messages - RCX, Scout ------------------------------
 | |
| " Tx power level for SetTxPower()
 | |
| syn keyword     nqcConstant	TX_POWER_LO TX_POWER_HI
 | |
| 
 | |
| " Functions - RCX, Scout
 | |
| syn keyword	nqcFunction	Message ClearMessage SendMessage SetTxPower
 | |
| 
 | |
| " Serial - RCX2 --------------------------------------
 | |
| " for SetSerialComm()
 | |
| syn keyword     nqcConstant	SERIAL_COMM_DEFAULT SERIAL_COMM_4800
 | |
| syn keyword     nqcConstant	SERIAL_COMM_DUTY25 SERIAL_COMM_76KHZ
 | |
| 
 | |
| " for SetSerialPacket()
 | |
| syn keyword     nqcConstant	SERIAL_PACKET_DEFAULT SERIAL_PACKET_PREAMBLE
 | |
| syn keyword     nqcConstant	SERIAL_PACKET_NEGATED SERIAL_PACKET_CHECKSUM
 | |
| syn keyword     nqcConstant	SERIAL_PACKET_RCX
 | |
| 
 | |
| " Functions - RCX2
 | |
| syn keyword	nqcFunction	SetSerialComm SetSerialPacket SetSerialData
 | |
| syn keyword	nqcFunction	SerialData SendSerial
 | |
| 
 | |
| " VLL - Scout ----------------------------------------
 | |
| " Functions - Scout
 | |
| syn keyword	nqcFunction	SendVLL
 | |
| 
 | |
| 
 | |
| " Timers ---------------------------------------------
 | |
| " Functions - All
 | |
| syn keyword	nqcFunction	ClearTimer Timer
 | |
| 
 | |
| " Functions - RCX2
 | |
| syn keyword	nqcFunction	SetTimer FastTimer
 | |
| 
 | |
| 
 | |
| " Counters -------------------------------------------
 | |
| " Functions - RCX2, Scout
 | |
| syn keyword	nqcFunction	ClearCounter IncCounter DecCounter Counter
 | |
| 
 | |
| 
 | |
| " Access Control -------------------------------------
 | |
| syn keyword     nqcConstant	ACQUIRE_OUT_A ACQUIRE_OUT_B ACQUIRE_OUT_C
 | |
| syn keyword     nqcConstant	ACQUIRE_SOUND
 | |
| " RCX2 only
 | |
| syn keyword     nqcConstant	ACQUIRE_USER_1 ACQUIRE_USER_2 ACQUIRE_USER_3
 | |
| syn keyword     nqcConstant	ACQUIRE_USER_4
 | |
| 
 | |
| " Functions - RCX2, Scout
 | |
| syn keyword	nqcFunction	SetPriority
 | |
| 
 | |
| 
 | |
| " Events ---------------------------------------------
 | |
| " RCX2 Events
 | |
| syn keyword     nqcConstant	EVENT_TYPE_PRESSED EVENT_TYPE_RELEASED
 | |
| syn keyword     nqcConstant	EVENT_TYPE_PULSE EVENT_TYPE_EDGE
 | |
| syn keyword     nqcConstant	EVENT_TYPE_FAST_CHANGE EVENT_TYPE_LOW
 | |
| syn keyword     nqcConstant	EVENT_TYPE_NORMAL EVENT_TYPE_HIGH
 | |
| syn keyword     nqcConstant	EVENT_TYPE_CLICK EVENT_TYPE_DOUBLECLICK
 | |
| syn keyword     nqcConstant	EVENT_TYPE_MESSAGE
 | |
| 
 | |
| " Scout Events
 | |
| syn keyword     nqcConstant	EVENT_1_PRESSED EVENT_1_RELEASED
 | |
| syn keyword     nqcConstant	EVENT_2_PRESSED EVENT_2_RELEASED
 | |
| syn keyword     nqcConstant	EVENT_LIGHT_HIGH EVENT_LIGHT_NORMAL
 | |
| syn keyword     nqcConstant	EVENT_LIGHT_LOW EVENT_LIGHT_CLICK
 | |
| syn keyword     nqcConstant	EVENT_LIGHT_DOUBLECLICK EVENT_COUNTER_0
 | |
| syn keyword     nqcConstant	EVENT_COUNTER_1 EVENT_TIMER_0 EVENT_TIMER_1
 | |
| syn keyword     nqcConstant	EVENT_TIMER_2 EVENT_MESSAGE
 | |
| 
 | |
| " Functions - RCX2, Scout
 | |
| syn keyword	nqcFunction	ActiveEvents Event
 | |
| 
 | |
| " Functions - RCX2
 | |
| syn keyword	nqcFunction	CurrentEvents
 | |
| syn keyword	nqcFunction	SetEvent ClearEvent ClearAllEvents EventState
 | |
| syn keyword	nqcFunction	CalibrateEvent SetUpperLimit UpperLimit
 | |
| syn keyword	nqcFunction	SetLowerLimit LowerLimit SetHysteresis
 | |
| syn keyword	nqcFunction	Hysteresis
 | |
| syn keyword	nqcFunction	SetClickTime ClickTime SetClickCounter
 | |
| syn keyword	nqcFunction	ClickCounter
 | |
| 
 | |
| " Functions - Scout
 | |
| syn keyword	nqcFunction	SetSensorClickTime SetCounterLimit
 | |
| syn keyword	nqcFunction	SetTimerLimit
 | |
| 
 | |
| 
 | |
| " Data Logging ---------------------------------------
 | |
| " Functions - RCX
 | |
| syn keyword	nqcFunction	CreateDatalog AddToDatalog
 | |
| syn keyword	nqcFunction	UploadDatalog
 | |
| 
 | |
| 
 | |
| " General Features -----------------------------------
 | |
| " Functions - All
 | |
| syn keyword	nqcFunction	Wait StopAllTasks Random
 | |
| syn keyword	nqcFunction	SetSleepTime SleepNow
 | |
| 
 | |
| " Functions - RCX
 | |
| syn keyword	nqcFunction	Program Watch SetWatch
 | |
| 
 | |
| " Functions - RCX2
 | |
| syn keyword	nqcFunction	SetRandomSeed SelectProgram
 | |
| syn keyword	nqcFunction	BatteryLevel FirmwareVersion
 | |
| 
 | |
| " Functions - Scout
 | |
| " Parameters for SetLight()
 | |
| syn keyword     nqcConstant	LIGHT_ON LIGHT_OFF
 | |
| syn keyword	nqcFunction	SetScoutRules ScoutRules SetScoutMode
 | |
| syn keyword	nqcFunction	SetEventFeedback EventFeedback SetLight
 | |
| 
 | |
| " additional CyberMaster defines
 | |
| syn keyword     nqcConstant	OUT_L OUT_R OUT_X
 | |
| syn keyword     nqcConstant	SENSOR_L SENSOR_M SENSOR_R
 | |
| " Functions - CyberMaster
 | |
| syn keyword	nqcFunction	Drive OnWait OnWaitDifferent
 | |
| syn keyword	nqcFunction	ClearTachoCounter TachoCount TachoSpeed
 | |
| syn keyword	nqcFunction	ExternalMotorRunning AGC
 | |
| 
 | |
| 
 | |
| 
 | |
| " nqcCommentGroup allows adding matches for special things in comments
 | |
| syn keyword	nqcTodo		contained TODO FIXME XXX
 | |
| syn cluster	nqcCommentGroup	contains=nqcTodo
 | |
| 
 | |
| "when wanted, highlight trailing white space
 | |
| if exists("nqc_space_errors")
 | |
|   if !exists("nqc_no_trail_space_error")
 | |
|     syn match	nqcSpaceError	display excludenl "\s\+$"
 | |
|   endif
 | |
|   if !exists("nqc_no_tab_space_error")
 | |
|     syn match	nqcSpaceError	display " \+\t"me=e-1
 | |
|   endif
 | |
| endif
 | |
| 
 | |
| "catch errors caused by wrong parenthesis and brackets
 | |
| syn cluster	nqcParenGroup	contains=nqcParenError,nqcIncluded,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcCommentSkip,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers
 | |
| if exists("nqc_no_bracket_error")
 | |
|   syn region	nqcParen	transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen
 | |
|   " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine
 | |
|   syn region	nqcCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcParen
 | |
|   syn match	nqcParenError	display ")"
 | |
|   syn match	nqcErrInParen	display contained "[{}]"
 | |
| else
 | |
|   syn region	nqcParen		transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen,nqcErrInBracket,nqcCppBracket
 | |
|   " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine
 | |
|   syn region	nqcCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInBracket,nqcParen,nqcBracket
 | |
|   syn match	nqcParenError	display "[\])]"
 | |
|   syn match	nqcErrInParen	display contained "[\]{}]"
 | |
|   syn region	nqcBracket	transparent start='\[' end=']' contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcCppParen,nqcCppBracket
 | |
|   " nqcCppBracket: same as nqcParen but ends at end-of-line; used in nqcDefine
 | |
|   syn region	nqcCppBracket	transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcParen,nqcBracket
 | |
|   syn match	nqcErrInBracket	display contained "[);{}]"
 | |
| endif
 | |
| 
 | |
| "integer number, or floating point number without a dot and with "f".
 | |
| syn case ignore
 | |
| syn match	nqcNumbers	display transparent "\<\d\|\.\d" contains=nqcNumber,nqcFloat
 | |
| " Same, but without octal error (for comments)
 | |
| syn match	nqcNumber	display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
 | |
| "hex number
 | |
| syn match	nqcNumber	display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
 | |
| " Flag the first zero of an octal number as something special
 | |
| syn match	nqcFloat	display contained "\d\+f"
 | |
| "floating point number, with dot, optional exponent
 | |
| syn match	nqcFloat	display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
 | |
| "floating point number, starting with a dot, optional exponent
 | |
| syn match	nqcFloat	display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
 | |
| "floating point number, without dot, with exponent
 | |
| syn match	nqcFloat	display contained "\d\+e[-+]\=\d\+[fl]\=\>"
 | |
| " flag an octal number with wrong digits
 | |
| syn case match
 | |
| 
 | |
| syn region	nqcCommentL	start="//" skip="\\$" end="$" keepend contains=@nqcCommentGroup,nqcSpaceError
 | |
| syn region	nqcComment	matchgroup=nqcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@nqcCommentGroup,nqcCommentStartError,nqcSpaceError
 | |
| 
 | |
| " keep a // comment separately, it terminates a preproc. conditional
 | |
| syntax match	nqcCommentError	display "\*/"
 | |
| syntax match	nqcCommentStartError display "/\*" contained
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| syn region	nqcPreCondit	start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=nqcComment,nqcCharacter,nqcCppParen,nqcParenError,nqcNumbers,nqcCommentError,nqcSpaceError
 | |
| syn match	nqcPreCondit	display "^\s*#\s*\(else\|endif\)\>"
 | |
| if !exists("nqc_no_if0")
 | |
|   syn region	nqcCppOut		start="^\s*#\s*if\s\+0\>" end=".\|$" contains=nqcCppOut2
 | |
|   syn region	nqcCppOut2	contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=nqcSpaceError,nqcCppSkip
 | |
|   syn region	nqcCppSkip	contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=nqcSpaceError,nqcCppSkip
 | |
| endif
 | |
| syn region	nqcIncluded	display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
 | |
| syn match	nqcInclude	display "^\s*#\s*include\>\s*["]" contains=nqcIncluded
 | |
| "syn match nqcLineSkip	"\\$"
 | |
| syn cluster	nqcPreProcGroup	contains=nqcPreCondit,nqcIncluded,nqcInclude,nqcDefine,nqcErrInParen,nqcErrInBracket,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcParen,nqcBracket
 | |
| syn region	nqcDefine	start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" contains=ALLBUT,@nqcPreProcGroup
 | |
| syn region	nqcPreProc	start="^\s*#\s*\(pragma\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@nqcPreProcGroup
 | |
| 
 | |
| if !exists("nqc_minlines")
 | |
|   if !exists("nqc_no_if0")
 | |
|     let nqc_minlines = 50	    " #if 0 constructs can be long
 | |
|   else
 | |
|     let nqc_minlines = 15	    " mostly for () constructs
 | |
|   endif
 | |
| endif
 | |
| exec "syn sync ccomment nqcComment minlines=" . nqc_minlines
 | |
| 
 | |
| " Define the default highlighting.
 | |
| " For version 5.7 and earlier: only when not done already
 | |
| " For version 5.8 and later: only when an item doesn't have highlighting yet
 | |
| if version >= 508 || !exists("did_nqc_syn_inits")
 | |
|   if version < 508
 | |
|     let did_nqc_syn_inits = 1
 | |
|     command -nargs=+ HiLink hi link <args>
 | |
|   else
 | |
|     command -nargs=+ HiLink hi def link <args>
 | |
|   endif
 | |
| 
 | |
|   " The default methods for highlighting.  Can be overridden later
 | |
|   HiLink nqcLabel		Label
 | |
|   HiLink nqcConditional		Conditional
 | |
|   HiLink nqcRepeat		Repeat
 | |
|   HiLink nqcCharacter		Character
 | |
|   HiLink nqcNumber		Number
 | |
|   HiLink nqcFloat		Float
 | |
|   HiLink nqcFunction		Function
 | |
|   HiLink nqcParenError		nqcError
 | |
|   HiLink nqcErrInParen		nqcError
 | |
|   HiLink nqcErrInBracket	nqcError
 | |
|   HiLink nqcCommentL		nqcComment
 | |
|   HiLink nqcCommentStart	nqcComment
 | |
|   HiLink nqcCommentError	nqcError
 | |
|   HiLink nqcCommentStartError	nqcError
 | |
|   HiLink nqcSpaceError		nqcError
 | |
|   HiLink nqcStorageClass	StorageClass
 | |
|   HiLink nqcInclude		Include
 | |
|   HiLink nqcPreProc		PreProc
 | |
|   HiLink nqcDefine		Macro
 | |
|   HiLink nqcIncluded		String
 | |
|   HiLink nqcError		Error
 | |
|   HiLink nqcStatement		Statement
 | |
|   HiLink nqcEvents		Statement
 | |
|   HiLink nqcPreCondit		PreCondit
 | |
|   HiLink nqcType		Type
 | |
|   HiLink nqcConstant		Constant
 | |
|   HiLink nqcCommentSkip		nqcComment
 | |
|   HiLink nqcComment		Comment
 | |
|   HiLink nqcTodo		Todo
 | |
|   HiLink nqcCppSkip		nqcCppOut
 | |
|   HiLink nqcCppOut2		nqcCppOut
 | |
|   HiLink nqcCppOut		Comment
 | |
| 
 | |
|   delcommand HiLink
 | |
| endif
 | |
| 
 | |
| let b:current_syntax = "nqc"
 | |
| 
 | |
| " vim: ts=8
 |