123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366 |
- " 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
- " quit when a syntax file was already loaded
- if 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.
- " Only when an item doesn't have highlighting yet
- " The default methods for highlighting. Can be overridden later
- hi def link nqcLabel Label
- hi def link nqcConditional Conditional
- hi def link nqcRepeat Repeat
- hi def link nqcCharacter Character
- hi def link nqcNumber Number
- hi def link nqcFloat Float
- hi def link nqcFunction Function
- hi def link nqcParenError nqcError
- hi def link nqcErrInParen nqcError
- hi def link nqcErrInBracket nqcError
- hi def link nqcCommentL nqcComment
- hi def link nqcCommentStart nqcComment
- hi def link nqcCommentError nqcError
- hi def link nqcCommentStartError nqcError
- hi def link nqcSpaceError nqcError
- hi def link nqcStorageClass StorageClass
- hi def link nqcInclude Include
- hi def link nqcPreProc PreProc
- hi def link nqcDefine Macro
- hi def link nqcIncluded String
- hi def link nqcError Error
- hi def link nqcStatement Statement
- hi def link nqcEvents Statement
- hi def link nqcPreCondit PreCondit
- hi def link nqcType Type
- hi def link nqcConstant Constant
- hi def link nqcCommentSkip nqcComment
- hi def link nqcComment Comment
- hi def link nqcTodo Todo
- hi def link nqcCppSkip nqcCppOut
- hi def link nqcCppOut2 nqcCppOut
- hi def link nqcCppOut Comment
- let b:current_syntax = "nqc"
- " vim: ts=8
|