28517
|
1 " Vim syntax file
|
|
2 " Language: Kuka Robot Language
|
|
3 " Maintainer: Patrick Meiser-Knosowski <knosowski@graeffrobotics.de>
|
|
4 " Version: 3.0.0
|
|
5 " Last Change: 18. Apr 2022
|
|
6 " Credits: Thanks for contributions to this to Michael Jagusch
|
|
7 " Thanks for beta testing to Thomas Baginski
|
|
8 "
|
|
9 " Note to self:
|
|
10 " for testing perfomance
|
|
11 " open a 1000 lines file.
|
|
12 " :syntime on
|
|
13 " G
|
|
14 " hold down CTRL-U until reaching top
|
|
15 " :syntime report
|
|
16
|
|
17 " Init {{{
|
|
18 if exists("b:current_syntax")
|
|
19 finish
|
|
20 endif
|
|
21
|
|
22 let s:keepcpo = &cpo
|
|
23 set cpo&vim
|
|
24
|
|
25 " if colorscheme is tortus(less)? krlGroupName defaults to 1
|
|
26 if get(g:, 'colors_name', " ") =~ '\<tortus'
|
|
27 \&& !exists("g:krlGroupName")
|
|
28 let g:krlGroupName=1
|
|
29 endif
|
|
30 " krlGroupName defaults to 0 if it's not initialized yet or 0
|
|
31 if !get(g:, "krlGroupName", 0)
|
|
32 let g:krlGroupName = 0
|
|
33 endif
|
|
34
|
|
35 " krl does ignore case
|
|
36 syn case ignore
|
|
37 " take #, $ and & into keyword (syntax only)
|
|
38 syn iskeyword @,48-57,_,192-255,#,$,&
|
|
39 " spell checking
|
|
40 syn spell notoplevel
|
|
41 " }}} init
|
|
42
|
|
43 " Comment and Folding {{{
|
|
44
|
|
45 " Special Comment
|
|
46
|
|
47 " TODO Comment
|
|
48 syn keyword krlTodo contained TODO FIXME XXX
|
|
49 highlight default link krlTodo Todo
|
|
50
|
|
51 " Debug Comment
|
|
52 syn keyword krlDebug contained DEBUG
|
|
53 highlight default link krlDebug Debug
|
|
54
|
|
55 " Comment
|
|
56 " none move fold comment until second ;
|
|
57 syn match krlFoldComment /\c\v^\s*;\s*%(end)?fold>[^;]*/ containedin=krlFold contains=krlSingleQuoteString,krlInteger,krlFloat,krlMovement,krlDelimiter,krlBoolean
|
|
58 highlight default link krlFoldComment Comment
|
|
59
|
|
60 " move fold comment until second ;
|
|
61 syn match krlMoveFoldComment /\c\v^\s*;\s*fold>[^;]*<s?%(ptp|lin|circ|spl)(_rel)?>[^;]*/ containedin=krlFold contains=krlInteger,krlFloat,krlMovement,krlDelimiter
|
|
62 highlight default link krlMoveFoldComment Comment
|
|
63
|
|
64 " things to highlight in a fold line
|
|
65 syn keyword krlFoldHighlights CONT IN SYN OUT containedin=krlFoldComment
|
|
66 syn match krlFoldHighlights /\c\v<(M|F|E|A|t|i|bin|binin|UP|SPSMAKRO)\d+>/ containedin=krlFoldComment
|
|
67 if g:krlGroupName
|
|
68 highlight default link krlFoldHighlights Sysvars
|
|
69 else
|
|
70 " default color for Fold Highlights
|
|
71 endif
|
|
72 syn keyword krlVkrcFoldConstants EIN AUS containedin=krlFoldComment
|
|
73 highlight default link krlVkrcFoldConstants Boolean
|
|
74
|
|
75 " Comment without Fold, also includes endfold lines and fold line part after second ;
|
|
76 syn match krlComment /\c\v;\s*%(<%(end)?fold>)@!.*$/ containedin=krlFold contains=krlTodo,krlDebug,@Spell
|
|
77 " Commented out Fold line: "; ;FOLD PTP..."
|
|
78 syn match krlComment /\c\v^\s*;\s*;.*$/ contains=krlTodo,krlDebug
|
|
79 highlight default link krlComment Comment
|
|
80
|
|
81 if has("conceal") && get(g:, 'krlConcealFoldTail', 1)
|
|
82 syn match krlConcealFoldTail /\c\v(^\s*;\s*fold[^;]*)@250<=;%(--|\s*<fold>|\s*<endfold>)@!.*$/ transparent containedin=krlComment conceal cchar=*
|
|
83 endif
|
|
84 " }}} Comment and Folding
|
|
85
|
|
86 " Header {{{
|
|
87 syn match krlHeader /&\a\w*/
|
|
88 highlight default link krlHeader PreProc
|
|
89 " }}} Header
|
|
90
|
|
91 " Operator {{{
|
|
92 " Boolean operator
|
|
93 syn keyword krlBoolOperator and or exor not b_and b_or b_exor b_not
|
|
94 highlight default link krlBoolOperator Operator
|
|
95 " Arithmetic operator
|
|
96 syn match krlArithOperator /[+-]/ containedin=krlFloat
|
|
97 syn match krlArithOperator /[*/]/
|
|
98 highlight default link krlArithOperator Operator
|
|
99 " Compare operator
|
|
100 syn match krlCompOperator /[<>=]/
|
|
101 highlight default link krlCompOperator Operator
|
|
102 " Geometric operator
|
|
103 " Do not move the : operator
|
|
104 " Must be present befor krlParamdef
|
|
105 syn match krlGeomOperator /[:]/
|
|
106 " syn match krlGeomOperator /[:]/ containedin=krlLabel,krlParamdef
|
|
107 highlight default link krlGeomOperator Operator
|
|
108 " }}} Operator
|
|
109
|
|
110 " Type, StorageClass and Typedef {{{
|
|
111 " Simple data types
|
|
112 syn keyword krlType bool char real int containedin=krlAnyType
|
|
113 " External program and function
|
|
114 syn keyword krlType ext extfct extfctp extp containedin=krlAnyType
|
|
115 " Communication
|
|
116 syn keyword krlType signal channel containedin=krlAnyType
|
|
117 highlight default link krlType Type
|
|
118 " StorageClass
|
|
119 syn keyword krlStorageClass decl global const struc enum
|
|
120 highlight default link krlStorageClass StorageClass
|
|
121 " .dat file public
|
|
122 syn keyword krlDatStorageClass public
|
|
123 highlight default link krlDatStorageClass StorageClass
|
|
124 " Parameter StorageClass
|
|
125 " Do not move the :in/:out
|
|
126 " Must be present after krlGeomOperator
|
|
127 syn match krlParamdef /[:]\s*in\>/
|
|
128 syn match krlParamdef /[:]\s*out\>/
|
|
129 highlight default link krlParamdef StorageClass
|
|
130 " Not a typedef but I like to have those highlighted
|
|
131 " different then types, structures or strorage classes
|
|
132 syn keyword krlTypedef DEF DEFFCT ENDFCT DEFDAT ENDDAT
|
|
133 syn match krlTypedef /^\s*END\>/
|
|
134 highlight default link krlTypedef Typedef
|
|
135 " }}} Type, StorageClass and Typedef
|
|
136
|
|
137 " Delimiter {{{
|
|
138 syn match krlDelimiter /[\[\](),\\]/
|
|
139 highlight default link krlDelimiter Delimiter
|
|
140 " }}} Delimiter
|
|
141
|
|
142 " Constant values {{{
|
|
143 " Boolean
|
|
144 syn keyword krlBoolean true false containedin=krlStructVal
|
|
145 highlight default link krlBoolean Boolean
|
|
146 " Binary integer
|
|
147 syn match krlBinaryInt /'b[01]\+'/ containedin=krlStructVal
|
|
148 highlight default link krlBinaryInt Number
|
|
149 " Hexadecimal integer
|
|
150 syn match krlHexInt /'h[0-9a-fA-F]\+'/ containedin=krlStructVal
|
|
151 highlight default link krlHexInt Number
|
|
152 " Integer
|
|
153 syn match krlInteger /\W\@1<=[+-]\?\d\+/ containedin=krlStructVal,krlFloat contains=krlArithOperator
|
|
154 highlight default link krlInteger Number
|
|
155 " Float
|
|
156 syn match krlFloat /\v\W@1<=[+-]?\d+\.?\d*%(\s*[eE][+-]?\d+)?/ containedin=krlStructVal
|
|
157 highlight default link krlFloat Float
|
|
158 " String
|
|
159 syn region krlString start=/"/ end=/"/ oneline containedin=krlStructVal contains=@Spell
|
|
160 highlight default link krlString String
|
|
161 syn match krlSpecialChar /[|]/ containedin=krlString
|
|
162 highlight default link krlSpecialChar SpecialChar
|
|
163 " String within a fold line
|
|
164 syn region krlSingleQuoteString start=/'/ end=/'/ oneline contained contains=@Spell
|
|
165 highlight default link krlSingleQuoteString String
|
|
166 " Enum
|
|
167 syn match krlEnumVal /#\s*\a\w*/ containedin=krlStructVal
|
|
168 highlight default link krlEnumVal Constant
|
|
169 " }}} Constant values
|
|
170
|
|
171 " Predefined Structure and Enum {{{
|
|
172 " Predefined structures and enums found in
|
|
173 " /r1/mada/$*.dat, /r1/steu/$*.dat and
|
|
174 " /r1/system/$config.dat as well as
|
|
175 " basisTech, gripperTech and spotTech
|
|
176 "
|
|
177 " Predefined data types found in krc1
|
|
178 syn keyword krlStructure servopara keymove powermodul trace techangle tech techfct techcps techfctctrl axis_inc axis_cal date display_var pro_ip con bus
|
|
179 syn keyword krlEnum ident_state sig_state move_state async_state emt_mode boxmode msg_prm_typ msg_typ cmd_stat asys trace_state trace_mode direction techsys techgeoref techclass techmode hpu_key_val pro_state eax transsys mode_move cosys device rotsys emstop cause_t
|
|
180 "
|
|
181 " Predefined data types found in kss functions
|
|
182 syn keyword krlEnum ediagstate rdc_fs_state ret_c_psync_e var_type cancel_psync_e sys_vars
|
|
183 syn keyword krlStructure siginf rw_rdc_file rw_mam_file diagpar_t error_t stopmess case_sense_t msgbuf_t e3pos e3axis diagopt_t
|
|
184 "
|
|
185 " Predefined structures for movement
|
|
186 syn keyword krlStructure frame e6pos pos e6axis axis
|
|
187 syn keyword krlStructure fdat ldat pdat
|
|
188 syn keyword krlStructure load inertia
|
|
189 "
|
|
190 " Predefined structures for shapes
|
|
191 syn keyword krlStructure axbox cylinder box
|
|
192 "
|
|
193 " Predefined structures and enums found in /r1/mada/$machine.dat
|
|
194 syn keyword krlStructure cp fra acc_car jerk_struc dhart spin trpspin ex_kin et_ax maxtool
|
|
195 syn keyword krlEnum individual_mames supply_voltage kinclass main_axis wrist_axis sw_onoff
|
|
196 "
|
|
197 " Predefined structures and enums found in /r1/mada/$robcor.dat
|
|
198 " syn keyword krlStructure
|
|
199 syn keyword krlEnum adap_acc model_type control_parameter eko_mode
|
|
200 "
|
|
201 " Predefined structures and enums found in /steu/mada/$custom.dat
|
|
202 syn keyword krlStructure pro_io_t ser ext_mod_t coop_krc ws_config bin_type coop_update_t ldc_reaction
|
|
203 syn keyword krlEnum axis_of_coordinates spline_para_variant target_status cp_vel_type cp_statmon
|
|
204 "
|
|
205 " Predefined structures and enums found in /steu/mada/$machine.dat
|
|
206 syn keyword krlStructure emstop_path boxstatesafein boxstatesafeout
|
|
207 syn keyword krlEnum digincode
|
|
208 "
|
|
209 " Predefined structures and enums found in /steu/mada/$option.dat
|
|
210 syn keyword krlStructure msg_t
|
|
211 " syn keyword krlEnum
|
|
212 "
|
|
213 " Predefined structures and enums found in /r1/system/$config.dat
|
|
214 " BasisTech
|
|
215 syn keyword krlStructure dig_out_type ctrl_in_t ctrl_out_t fct_out_t fct_in_t odat basis_sugg_t out_sugg_t md_state machine_def_t machine_tool_t machine_frame_t trigger_para constvel_para condstop_para adat tm_sugg_t tqm_tqdat_t sps_prog_type
|
|
216 syn keyword krlEnum bas_command out_modetype ipo_m_t apo_mode_t funct_type p00_command timer_actiontype
|
|
217 "
|
|
218 " GripperTech
|
|
219 syn keyword krlStructure grp_typ grp_types grp_sugg_t
|
|
220 syn keyword krlEnum on_off_typ apo_typ
|
|
221 "
|
|
222 " SpotTech
|
|
223 syn keyword krlStructure spot_type spot_sugg_t
|
|
224 syn keyword krlEnum s_command s_pair_slct command_retr
|
|
225 "
|
|
226 " VW
|
|
227 syn keyword krlStructure vw_mpara_typ zangentyp zangenbedingung ibszangentyp last_ibs_typ verr_typ verrcheck_t t_fb_state kollisionsdaten state_t modus_t
|
|
228 syn keyword krlEnum synctype dir_typ subtype ari_typ bool_typ vw_command ibgn_command vw_user_cmd move_types adv_t_type bas_type ibs_mode_typ vw_user_cmd pro_mode mode_op
|
|
229 "
|
|
230 " ProgCoop
|
|
231 syn keyword krlStructure ydat
|
|
232 " syn keyword krlEnum
|
|
233 "
|
|
234 " bas.src
|
|
235 syn keyword krlStructure cont
|
|
236 syn keyword krlEnum esys ipo_mode circ_mode circ_type ori_type var_state
|
|
237 "
|
|
238 " MsgLib.src
|
|
239 syn keyword krlStructure KrlMsg_T KrlMsgParType_T KrlMsgPar_T KrlMsgOpt_T KrlMsgDlgSK_T
|
|
240 syn keyword krlEnum EKrlMsgType
|
|
241 "
|
|
242 highlight default link krlStructure Structure
|
|
243 highlight default link krlEnum Structure
|
|
244 " }}} Predefined Structure and Enum
|
|
245
|
|
246 " System variable {{{
|
|
247 syn match krlSysvars /\<\$\a[a-zA-Z0-9_.]*/
|
|
248 if g:krlGroupName
|
|
249 highlight default link krlSysvars Sysvars
|
|
250 else
|
|
251 " default color for Sysvars
|
|
252 endif
|
|
253 " }}} System variable
|
|
254
|
|
255 " Statements, keywords et al {{{
|
|
256 " continue
|
|
257 syn keyword krlContinue continue
|
|
258 if g:krlGroupName
|
|
259 highlight default link krlContinue Continue
|
|
260 else
|
|
261 highlight default link krlContinue Statement
|
|
262 endif
|
|
263 " interrupt
|
|
264 syn match krlStatement /\v\c%(<global>\s+)?<INTERRUPT>%(\s+<decl>)?/ contains=krlStorageClass
|
|
265 " keywords
|
|
266 syn keyword krlStatement wait on off enable disable stop trigger with when distance onstart delay do prio import is minimum maximum confirm on_error_proceed
|
|
267 syn match krlStatement /\v\c%(<wait\s+)@7<=<sec>/
|
|
268 syn match krlStatement /\v\c%(<when\s+)@7<=<path>/
|
|
269 highlight default link krlStatement Statement
|
|
270 " Conditional
|
|
271 syn keyword krlConditional if then else endif switch case default endswitch skip endskip
|
|
272 highlight default link krlConditional Conditional
|
|
273 " Repeat
|
|
274 syn keyword krlRepeat for to step endfor while endwhile repeat until loop endloop exit
|
|
275 highlight default link krlRepeat Repeat
|
|
276 " Label
|
|
277 syn keyword krlLabel goto
|
|
278 syn match krlLabel /^\s*\w\+:\ze\s*\%(;.*\)\?$/
|
|
279 highlight default link krlLabel Label
|
|
280 " Keyword
|
|
281 syn keyword krlKeyword anin anout digin
|
|
282 highlight default link krlKeyword Keyword
|
|
283 " Exception
|
|
284 syn keyword krlException return resume halt
|
|
285 highlight default link krlException Exception
|
|
286 " }}} Statements, keywords et al
|
|
287
|
|
288 " special keywords for movement commands {{{
|
|
289 syn keyword krlMovement PTP PTP_REL LIN LIN_REL CIRC CIRC_REL SPL SPL_REL SPTP SPTP_REL SLIN SLIN_REL SCIRC SCIRC_REL
|
|
290 syn keyword krlMovement ASYPTP ASYCONT ASYSTOP ASYCANCEL MOVE_EMI
|
|
291 syn match krlMovement /\v\c^\s*<BRAKE(\s+F)?>/
|
|
292 if g:krlGroupName
|
|
293 highlight default link krlMovement Movement
|
|
294 else
|
|
295 highlight default link krlMovement Special
|
|
296 endif
|
|
297 " movement modifiers
|
|
298 syn match krlMoveBlockInst /\c\v^\s*TIME_BLOCK\s+(START|PART|END)/
|
|
299 syn match krlMoveBlockInst /\c\v^\s*CONST_VEL\s+(START|END)/
|
|
300 syn keyword krlMoveBlockInst ptp_spline spline endspline
|
|
301 highlight default link krlMoveBlockInst Statement
|
|
302 syn keyword krlMoveMod ca c_ptp c_dis c_vel c_ori c_spl
|
|
303 if g:krlGroupName
|
|
304 highlight default link krlMoveMod Movement
|
|
305 else
|
|
306 highlight default link krlMoveMod Special
|
|
307 endif
|
|
308 " }}} special keywords for movement commands
|
|
309
|
|
310 " Structure value {{{
|
|
311 " avoid coloring structure component names
|
|
312 syn match krlNames /\.[a-zA-Z_][.a-zA-Z0-9_$]*/
|
|
313 syn match krlNames contained /[a-zA-Z_][.a-zA-Z0-9_$]*/
|
|
314 " highlight default link krlNames None
|
|
315 " Structure value
|
|
316 syn region krlStructVal start=/{/ end=/}/ oneline containedin=krlStructVal contains=krlNames
|
|
317 highlight default link krlStructVal Delimiter
|
|
318 " }}} Structure value
|
|
319
|
|
320 " BuildInFunction {{{
|
|
321 syn keyword krlBuildInFunction contained Pulse
|
|
322 syn keyword krlBuildInFunction contained m_comment
|
|
323 syn keyword krlBuildInFunction contained is_key_pressed
|
|
324 syn keyword krlBuildInFunction contained set_opt_filter
|
|
325 syn keyword krlBuildInFunction contained timer_limit
|
|
326 syn keyword krlBuildInFunction contained tool_adj
|
|
327 syn keyword krlBuildInFunction contained FRand
|
|
328 syn keyword krlBuildInFunction contained ExecFunc eb_test EB EK EO LK mbx_rec
|
|
329 " safe robot
|
|
330 syn keyword krlbuildinfunction contained get_AxesMask get_BrakeTest_Time
|
|
331 " math
|
|
332 syn keyword krlBuildInFunction contained Abs Sin Cos Acos Tan Atan Atan2 Sqrt
|
|
333 syn keyword krlBuildInFunction contained Forward Inverse inv_pos
|
|
334 " cFoo sFoo
|
|
335 syn keyword krlBuildInFunction contained cClose cOpen cRead cWrite sRead sWrite
|
|
336 " string
|
|
337 syn keyword krlBuildInFunction contained StrToBool StrToInt StrToReal StrToString StrToFrame StrToPos StrToE3Pos StrToE6Pos StrToAxis StrToE3Axis StrToE6Axis
|
|
338 syn keyword krlBuildInFunction contained StrAdd StrClear StrCopy StrComp StrFind StrLen StrDeclLen StrToBool StrToInt StrToReal StrToString
|
|
339 " diag
|
|
340 syn keyword krlBuildInFunction contained diag_start diag_stop get_DiagState
|
|
341 " rdc mam pid
|
|
342 syn keyword krlBuildInFunction contained CheckPidOnRdc check_mam_on_rdc get_rdc_fs_state
|
|
343 syn keyword krlBuildInFunction contained set_mam_on_hd copy_mam_hd_to_rdc copy_mam_rdc_to_hd
|
|
344 syn keyword krlBuildInFunction contained PidToHd PidToRdc
|
|
345 syn keyword krlBuildInFunction contained cal_to_rdc rdc_file_to_hd
|
|
346 syn keyword krlBuildInFunction contained delete_pid_on_rdc delete_rdc_content
|
|
347 syn keyword krlBuildInFunction contained create_rdc_archive restore_rdc_archive
|
|
348 " ioctl
|
|
349 syn keyword krlBuildInFunction contained IOCtl cIOCtl
|
|
350 syn keyword krlBuildInFunction contained WSpaceGive WSpaceTake
|
|
351 " sync
|
|
352 syn keyword krlBuildInFunction contained Sync SyncCmd CancelProgSync
|
|
353 " remote
|
|
354 syn keyword krlBuildInFunction contained RemoteCmd RemoteRead
|
|
355 " msg/dlg
|
|
356 syn keyword krlBuildInFunction contained IsMessageSet clear_KrlMsg get_MsgBuffer exists_KrlDlg exists_KrlMsg set_KrlDlg set_KrlDlgAnswer set_KrlMsg
|
|
357 " robvers
|
|
358 syn keyword krlBuildInFunction contained maximize_UsedxRobvers set_UsedxRobvers
|
|
359 " md_foo
|
|
360 syn keyword krlBuildInFunction contained md_Cmd md_GetState md_SetState md_Asgn
|
|
361 " emi
|
|
362 syn keyword krlBuildInFunction contained emi_ActPos emi_EndPos emi_StartPos emi_RecState emi_RecName
|
|
363 " var
|
|
364 syn keyword krlBuildInFunction contained cast_from cast_to
|
|
365 syn keyword krlBuildInFunction contained GetVarsize GetCycDef get_sig_inf get_decl_place VarType VarState
|
|
366 " sys
|
|
367 syn keyword krlBuildInFunction contained GetSysState get_system_data set_system_data set_system_data_delayed
|
|
368 " err
|
|
369 syn keyword krlBuildInFunction contained err_clear err_raise
|
|
370 " motion
|
|
371 syn keyword krlBuildInFunction contained delete_backward_buffer rob_stop rob_stop_release set_brake_delay suppress_repositioning VectorMoveOn VectorMoveOff
|
|
372 " torque
|
|
373 syn keyword krlBuildInFunction contained set_torque_limits reset_torque_limits
|
|
374 " krc1
|
|
375 syn keyword krlBuildInFunction contained cLcopy cCurpos cNew cClear cRelease cKey
|
|
376 if g:krlGroupName
|
|
377 highlight default link krlBuildInFunction BuildInFunction
|
|
378 else
|
|
379 highlight default link krlBuildInFunction Function
|
|
380 endif
|
|
381 " }}} BuildInFunction
|
|
382
|
|
383 " Function {{{
|
|
384 syn match krlFunction /[a-zA-Z_]\w* *(/me=e-1 contains=krlBuildInFunction
|
|
385 highlight default link krlFunction Function
|
|
386 " }}} Function
|
|
387
|
|
388 " Error {{{
|
|
389 if get(g:, 'krlShowError', 1)
|
|
390 " some more or less common typos
|
|
391 "
|
|
392 " vars or funcs >24 chars are not possible in krl. a234567890123456789012345
|
|
393 syn match krlError0 /\w\{25,}/ containedin=krlFunction,krlNames,krlLabel,krlAnyType,krlEnumVal,krlSysvars
|
|
394 "
|
|
395 " should be interrupt (on|off) \w+
|
|
396 syn match krlError1 /\vinterrupt[ \t(]+[_$a-zA-Z0-9]+[_$a-zA-Z0-9.\[\]()+\-*/]*[ \t)]+o%(n|ff)>/
|
|
397 "
|
|
398 " for bla==5 to 7...
|
|
399 " ||
|
|
400 syn match krlError3 /\v%(^\s*for%(\(|\s)+[_$a-zA-Z]+[_$a-zA-Z0-9.\[\]()+\-*/ ]*\s*)@<=[:=]\=/
|
|
401 "
|
|
402 " TODO optimize performance
|
|
403 " wait for a=b
|
|
404 " |
|
|
405 syn match krlError4 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;<>=])@<=\=[^=]/
|
|
406 "
|
|
407 " wait for a><b
|
|
408 " ||
|
|
409 syn match krlError5 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+)@<=\>\s*\</
|
|
410 "
|
|
411 " if (a==5) (b==6) ...
|
|
412 " |||
|
|
413 syn match krlError6 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;])@<=\)\s*\(/
|
|
414 "
|
|
415 " TODO optimize performance
|
|
416 " a == b + 1
|
|
417 " a := b + 1
|
|
418 " ||
|
|
419 syn match krlError7 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;])@1<!%(^\s*[_$a-zA-Z]+[_$a-zA-Z0-9.\[\],+\-*/]*\s*)@<=[:=]\=/
|
|
420 syn match krlError7 /\v\c%(^\s*%(decl\s+)%(global\s+)?%(const\s+)?\w+\s+\w+\s*)@<=[:=]\=/
|
|
421 syn match krlError7 /\v\c%(^\s*%(decl\s+)?%(global\s+)?%(const\s+)?%(bool\s+|int\s+|real\s+|char\s+)\w+\s*)@<=[:=]\=/
|
|
422 "
|
|
423 " this one is tricky. Make sure this does not match trigger instructions; OK, next try, now search for false positives
|
|
424 " TODO optimize performance
|
|
425 " a = b and c or (int1=int2)
|
|
426 " |
|
|
427 syn match krlError8 /\v(^\s*[_$a-zA-Z]+[_$a-zA-Z0-9.\[\]()+\-*/]*\s*\=[^;]*[^;<>=])@<=\=\ze[^=]/
|
|
428 "
|
|
429 " <(distance|delay|prio)> :=
|
|
430 " <(distance|delay|prio)> ==
|
|
431 " ||
|
|
432 syn match krlError9 /\v(^[^;]*<(distance|delay|prio|minimum|maximum)\s*)@<=[:=]\=/
|
|
433 "
|
|
434 " 'for', 'while' or 'repeat' followed by 'do'
|
|
435 syn match krlError10 /\c\v^\s*(until|while|for)>[^;]*<do>/
|
|
436 "
|
|
437 highlight default link krlError0 Error
|
|
438 highlight default link krlError1 Error
|
|
439 highlight default link krlError2 Error
|
|
440 highlight default link krlError3 Error
|
|
441 highlight default link krlError4 Error
|
|
442 highlight default link krlError5 Error
|
|
443 highlight default link krlError6 Error
|
|
444 highlight default link krlError7 Error
|
|
445 highlight default link krlError8 Error
|
|
446 highlight default link krlError9 Error
|
|
447 highlight default link krlError10 Error
|
|
448 endif
|
|
449 " }}} Error
|
|
450
|
|
451 " Finish {{{
|
|
452 let &cpo = s:keepcpo
|
|
453 unlet s:keepcpo
|
|
454
|
|
455 let b:current_syntax = "krl"
|
|
456 " }}} Finish
|
|
457
|
|
458 " vim:sw=2 sts=2 et fdm=marker
|