mirror of
https://github.com/neovim/neovim.git
synced 2024-12-29 14:41:06 -07: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
|