vera.vim (19552B)
1 " Vim syntax file 2 " Language: Vera 3 " Maintainer: Dave Eggum (opine at bluebottle dOt com) 4 " Last Change: 2005 Dec 19 5 6 " NOTE: extra white space at the end of the line will be highlighted if you 7 " add this line to your colorscheme: 8 9 " highlight SpaceError guibg=#204050 10 11 " (change the value for guibg to any color you like) 12 13 " quit when a syntax file was already loaded 14 if exists("b:current_syntax") 15 finish 16 endif 17 18 " A bunch of useful Vera keywords 19 syn keyword veraStatement break return continue fork join terminate 20 syn keyword veraStatement breakpoint proceed 21 22 syn keyword veraLabel bad_state bad_trans bind constraint coverage_group 23 syn keyword veraLabel class CLOCK default function interface m_bad_state 24 syn keyword veraLabel m_bad_trans m_state m_trans program randseq state 25 syn keyword veraLabel task trans 26 27 syn keyword veraConditional if else case casex casez randcase 28 syn keyword veraRepeat repeat while for do foreach 29 syn keyword veraModifier after all any around assoc_size async 30 syn keyword veraModifier before big_endian bit_normal bit_reverse export 31 syn keyword veraModifier extends extern little_endian local hdl_node hdl_task 32 syn keyword veraModifier negedge none packed protected posedge public rules 33 syn keyword veraModifier shadow soft static super this typedef unpacked var 34 syn keyword veraModifier vca virtual virtuals wildcard with 35 36 syn keyword veraType reg string enum event bit 37 syn keyword veraType rand randc integer port prod 38 39 syn keyword veraDeprecated call_func call_task close_conn get_bind get_bind_id 40 syn keyword veraDeprecated get_conn_err mailbox_receive mailbox_send make_client 41 syn keyword veraDeprecated make_server simwave_plot up_connections 42 43 " predefined tasks and functions 44 syn keyword veraTask alloc assoc_index cast_assign cm_coverage 45 syn keyword veraTask cm_get_coverage cm_get_limit delay error error_mode 46 syn keyword veraTask exit fclose feof ferror fflush flag fopen fprintf 47 syn keyword veraTask freadb freadh freadstr get_cycle get_env get_memsize 48 syn keyword veraTask get_plus_arg getstate get_systime get_time get_time_unit 49 syn keyword veraTask initstate lock_file mailbox_get mailbox_put os_command 50 syn keyword veraTask printf prodget prodset psprintf query query_str query_x 51 syn keyword veraTask rand48 random region_enter region_exit rewind 52 syn keyword veraTask semaphore_get semaphore_put setstate signal_connect 53 syn keyword veraTask sprintf srandom sscanf stop suspend_thread sync 54 syn keyword veraTask timeout trace trigger unit_delay unlock_file urand48 55 syn keyword veraTask urandom urandom_range vera_bit_reverse vera_crc 56 syn keyword veraTask vera_pack vera_pack_big_endian vera_plot 57 syn keyword veraTask vera_report_profile vera_unpack vera_unpack_big_endian 58 syn keyword veraTask vsv_call_func vsv_call_task vsv_get_conn_err 59 syn keyword veraTask vsv_make_client vsv_make_server vsv_up_connections 60 syn keyword veraTask vsv_wait_for_done vsv_wait_for_input wait_child wait_var 61 62 syn cluster veraOperGroup contains=veraOperator,veraOperParen,veraNumber,veraString,veraOperOk,veraType 63 " syn match veraOperator "++\|--\|&\|\~&\||\|\~|\|^\|\~^\|\~\|><" 64 " syn match veraOperator "*\|/\|%\|+\|-\|<<\|>>\|<\|<=\|>\|>=\|!in" 65 " syn match veraOperator "=?=\|!?=\|==\|!=\|===\|!==\|&\~\|^\~\||\~" 66 " syn match veraOperator "&&\|||\|=\|+=\|-=\|*=\|/=\|%=\|<<=\|>>=\|&=" 67 " syn match veraOperator "|=\|^=\|\~&=\|\~|=\|\~^=" 68 69 syn match veraOperator "[&|\~><!*@+/=,.\^\-]" 70 syn keyword veraOperator or in dist not 71 72 " open vera class methods 73 syn keyword veraMethods atobin atohex atoi atooct backref bittostr capacity 74 syn keyword veraMethods compare Configure constraint_mode delete DisableTrigger 75 syn keyword veraMethods DoAction empty EnableCount EnableTrigger Event find 76 syn keyword veraMethods find_index first first_index GetAssert get_at_least 77 syn keyword veraMethods get_auto_bin getc GetCount get_coverage_goal get_cov_weight 78 syn keyword veraMethods get_cross_bin_max GetFirstAssert GetName GetNextAssert 79 syn keyword veraMethods get_status get_status_msg hide hash icompare insert 80 syn keyword veraMethods inst_get_at_least inst_get_auto_bin_max inst_get_collect 81 syn keyword veraMethods inst_get_coverage_goal inst_get_cov_weight inst_getcross_bin_max 82 syn keyword veraMethods inst_query inst_set_at_least inst_set_auto_bin_max 83 syn keyword veraMethods inst_set_bin_activiation inst_set_collect inst_set_coverage_goal 84 syn keyword veraMethods inst_set_cov_weight inst_set_cross_bin_max itoa last last_index 85 syn keyword veraMethods len load match max max_index min min_index new object_compare 86 syn keyword veraMethods object_compare object_copy object_print pack pick_index 87 syn keyword veraMethods pop_back pop_front post_boundary postmatch post_pack post_pack 88 syn keyword veraMethods post_randomize post_randomize post_unpack post_unpack 89 syn keyword veraMethods pre_boundary prematch pre_pack pre_pack pre_randomize 90 syn keyword veraMethods pre-randomize pre_unpack push_back push_front putc query 91 syn keyword veraMethods query_str rand_mode randomize reserve reverse rsort search 92 syn keyword veraMethods set_at_least set_auto_bin_max set_bin_activiation 93 syn keyword veraMethods set_coverage_goal set_cov_weight set_cross_bin_max set_name 94 syn keyword veraMethods size sort substr sum thismatch tolower toupper unique_index 95 syn keyword veraMethods unpack Wait 96 97 " interface keywords 98 syn keyword veraInterface ASYNC CLOCK gnr gr0 gr1 grx grz NHOLD nr NR0 NR1 99 syn keyword veraInterface NRZ NRZ NSAMPLE PHOLD PR0 PR1 PRX PRZ r0 r1 rx snr 100 syn keyword veraInterface sr0 sr1 srx srz depth inout input output 101 syn match veraInterface "\$\w\+" 102 103 104 syn keyword veraTodo contained TODO FIXME XXX FINISH 105 106 " veraCommentGroup allows adding matches for special things in comments 107 syn cluster veraCommentGroup contains=veraTodo 108 109 " String and Character constants 110 " Highlight special characters (those which have a backslash) differently 111 syn match veraSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" 112 syn match veraFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpnm]\|\[\^\=.[^]]*\]\)" contained 113 syn match veraFormat display "%%" contained 114 syn region veraString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=veraSpecial,veraFormat,@Spell 115 syn region veraConcat contained transparent oneline start='{' end='}' 116 117 " veraCppString: same as veraString, but ends at end of line 118 syn region veraCppString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=veraSpecial,veraFormat,@Spell 119 120 syn match veraCharacter "'[^\\]'" 121 syn match veraCharacter "L'[^']*'" contains=veraSpecial 122 syn match veraSpecialError "'\\[^'\"?\\abefnrtv]'" 123 syn match veraSpecialCharacter "'\\['\"?\\abefnrtv]'" 124 syn match veraSpecialCharacter display "'\\\o\{1,3}'" 125 syn match veraSpecialCharacter display "'\\x\x\{1,2}'" 126 syn match veraSpecialCharacter display "L'\\x\x\+'" 127 128 " highlight trailing white space 129 syn match veraSpaceError display excludenl "\s\+$" 130 syn match veraSpaceError display " \+\t"me=e-1 131 132 "catch errors caused by wrong parenthesis and brackets 133 syn cluster veraParenGroup contains=veraParenError,veraIncluded,veraSpecial,veraCommentSkip,veraCommentString,veraComment2String,@veraCommentGroup,veraCommentStartError,veraUserCont,veraUserLabel,veraBitField,veraCommentSkip,veraOctalZero,veraCppOut,veraCppOut2,veraCppSkip,veraFormat,veraNumber,veraFloat,veraOctal,veraOctalError,veraNumbersCom 134 135 syn region veraParen transparent start='(' end=')' contains=ALLBUT,@veraParenGroup,veraCppParen,veraErrInBracket,veraCppBracket,veraCppString,@Spell 136 " veraCppParen: same as veraParen but ends at end-of-line; used in veraDefine 137 syn region veraCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@veraParenGroup,veraErrInBracket,veraParen,veraBracket,veraString,@Spell 138 syn match veraParenError display "[\])]" 139 " syn match veraErrInParen display contained "[\]{}]" 140 syn match veraErrInParen display contained "[\]]" 141 syn region veraBracket transparent start='\[' end=']' contains=ALLBUT,@veraParenGroup,veraErrInParen,veraCppParen,veraCppBracket,veraCppString,@Spell 142 143 " veraCppBracket: same as veraParen but ends at end-of-line; used in veraDefine 144 syn region veraCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@veraParenGroup,veraErrInParen,veraParen,veraBracket,veraString,@Spell 145 syn match veraErrInBracket display contained "[);{}]" 146 147 "integer number, or floating point number without a dot and with "f". 148 syn case ignore 149 syn match veraNumbers display transparent "\<\d\|\.\d" contains=veraNumber,veraFloat,veraOctalError,veraOctal 150 " Same, but without octal error (for comments) 151 syn match veraNumbersCom display contained transparent "\<\d\|\.\d" contains=veraNumber,veraFloat,veraOctal 152 " syn match veraNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" 153 " "hex number 154 " syn match veraNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" 155 " syn match veraNumber "\(\<[0-9]\+\|\)'[bdoh][0-9a-fxzA-FXZ_]\+\>" 156 syn match veraNumber "\<\(\<[0-9]\+\)\?\('[bdoh]\)\?[0-9a-fxz_]\+\>" 157 " syn match veraNumber "\<[+-]\=[0-9]\+\>" 158 " Flag the first zero of an octal number as something special 159 syn match veraOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=veraOctalZero 160 syn match veraOctalZero display contained "\<0" 161 syn match veraFloat display contained "\d\+f" 162 "floating point number, with dot, optional exponent 163 syn match veraFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" 164 "floating point number, starting with a dot, optional exponent 165 syn match veraFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" 166 "floating point number, without dot, with exponent 167 syn match veraFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" 168 "hexadecimal floating point number, optional leading digits, with dot, with exponent 169 syn match veraFloat display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>" 170 "hexadecimal floating point number, with leading digits, optional dot, with exponent 171 syn match veraFloat display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>" 172 173 " flag an octal number with wrong digits 174 syn match veraOctalError display contained "0\o*[89]\d*" 175 syn case match 176 177 let vera_comment_strings = 1 178 179 if exists("vera_comment_strings") 180 " A comment can contain veraString, veraCharacter and veraNumber. 181 " But a "*/" inside a veraString in a veraComment DOES end the comment! So we 182 " need to use a special type of veraString: veraCommentString, which also ends on 183 " "*/", and sees a "*" at the start of the line as comment again. 184 " Unfortunately this doesn't work very well for // type of comments :-( 185 syntax match veraCommentSkip contained "^\s*\*\($\|\s\+\)" 186 syntax region veraCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=veraSpecial,veraCommentSkip 187 syntax region veraComment2String contained start=+\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=veraSpecial 188 syntax region veraCommentL start="//" skip="\\$" end="$" keepend contains=@veraCommentGroup,veraComment2String,veraCharacter,veraNumbersCom,veraSpaceError,@Spell 189 if exists("vera_no_comment_fold") 190 syntax region veraComment matchgroup=veraCommentStart start="/\*" end="\*/" contains=@veraCommentGroup,veraCommentStartError,veraCommentString,veraCharacter,veraNumbersCom,veraSpaceError,@Spell 191 else 192 syntax region veraComment matchgroup=veraCommentStart start="/\*" end="\*/" contains=@veraCommentGroup,veraCommentStartError,veraCommentString,veraCharacter,veraNumbersCom,veraSpaceError,@Spell fold 193 endif 194 else 195 syn region veraCommentL start="//" skip="\\$" end="$" keepend contains=@veraCommentGroup,veraSpaceError,@Spell 196 if exists("vera_no_comment_fold") 197 syn region veraComment matchgroup=veraCommentStart start="/\*" end="\*/" contains=@veraCommentGroup,veraCommentStartError,veraSpaceError,@Spell 198 else 199 syn region veraComment matchgroup=veraCommentStart start="/\*" end="\*/" contains=@veraCommentGroup,veraCommentStartError,veraSpaceError,@Spell fold 200 endif 201 endif 202 " keep a // comment separately, it terminates a preproc. conditional 203 syntax match veraCommentError display "\*/" 204 syntax match veraCommentStartError display "/\*"me=e-1 contained 205 206 syntax region veraBlock start="{" end="}" transparent fold 207 208 " open vera pre-defined constants 209 syn keyword veraConstant ALL ANY BAD_STATE BAD_TRANS CALL CHECK CHGEDGE 210 syn keyword veraConstant CLEAR COPY_NO_WAIT COPY_WAIT CROSS CROSS_TRANS 211 syn keyword veraConstant DEBUG DELETE EC_ARRAYX EC_CODE_END EC_CONFLICT 212 syn keyword veraConstant EC_EVNTIMOUT EC_EXPECT EC_FULLEXPECT EC_MBXTMOUT 213 syn keyword veraConstant EC_NEXPECT EC_RETURN EC_RGNTMOUT EC_SCONFLICT 214 syn keyword veraConstant EC_SEMTMOUT EC_SEXPECT EC_SFULLEXPECT EC_SNEXTPECT 215 syn keyword veraConstant EC_USERSET EQ EVENT FAIL FIRST FORK GE GOAL GT 216 syn keyword veraConstant HAND_SHAKE HI HIGH HNUM LE LIC_EXIT LIC_PRERR 217 syn keyword veraConstant LIC_PRWARN LIC_WAIT LO LOAD LOW LT MAILBOX MAX_COM 218 syn keyword veraConstant NAME NE NEGEDGE NEXT NO_OVERLAP NO_OVERLAP_STATE 219 syn keyword veraConstant NO_OVERLAP_TRANS NO_VARS NO_WAIT NUM NUM_BIN 220 syn keyword veraConstant NUM_DET null OFF OK OK_LAST ON ONE_BLAST ONE_SHOT ORDER 221 syn keyword veraConstant PAST_IT PERCENT POSEDGE PROGRAM RAWIN REGION REPORT 222 syn keyword veraConstant SAMPLE SAVE SEMAPHORE SET SILENT STATE stderr 223 syn keyword veraConstant stdin stdout STR STR_ERR_OUT_OF_RANGE 224 syn keyword veraConstant STR_ERR_REGEXP_SYNTAX SUM TRANS VERBOSE void WAIT 225 syn keyword veraConstant __LINE__ __FILE__ __DATE__ __TIME__ __VERA__ 226 syn keyword veraConstant __VERSION__ __VERA_VERSION__ __VERA_MINOR__ 227 syn keyword veraConstant __VERA_PATCH__ __VERA_VMC__ __VERA_VMC_MINOR__ 228 229 syn match veraUserConstant "\<[A-Z][A-Z0-9_]\+\>" 230 231 syn match veraClass "\zs\w\+\ze::" 232 syn match veraClass "\zs\w\+\ze\s\+\w\+\s*[=;,)\[]" contains=veraConstant,veraUserConstant 233 syn match veraClass "\zs\w\+\ze\s\+\w\+\s*$" contains=veraConstant,veraUserConstant 234 syn match veraUserMethod "\zs\w\+\ze\s*(" contains=veraConstant,veraUserConstant 235 syn match veraObject "\zs\w\+\ze\.\w" 236 syn match veraObject "\zs\w\+\ze\.\$\w" 237 238 " Accept ` for # (Verilog) 239 syn region veraPreCondit start="^\s*\(`\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=veraComment,veraCppString,veraCharacter,veraCppParen,veraParenError,veraNumbers,veraCommentError,veraSpaceError 240 syn match veraPreCondit display "^\s*\(`\|#\)\s*\(else\|endif\)\>" 241 if !exists("vera_no_if0") 242 syn region veraCppOut start="^\s*\(`\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=veraCppOut2 243 syn region veraCppOut2 contained start="0" end="^\s*\(`\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=veraSpaceError,veraCppSkip 244 syn region veraCppSkip contained start="^\s*\(`\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(`\|#\)\s*endif\>" contains=veraSpaceError,veraCppSkip 245 endif 246 syn region veraIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ 247 syn match veraIncluded display contained "<[^>]*>" 248 syn match veraInclude display "^\s*\(`\|#\)\s*include\>\s*["<]" contains=veraIncluded 249 "syn match veraLineSkip "\\$" 250 syn cluster veraPreProcGroup contains=veraPreCondit,veraIncluded,veraInclude,veraDefine,veraErrInParen,veraErrInBracket,veraUserLabel,veraSpecial,veraOctalZero,veraCppOut,veraCppOut2,veraCppSkip,veraFormat,veraNumber,veraFloat,veraOctal,veraOctalError,veraNumbersCom,veraString,veraCommentSkip,veraCommentString,veraComment2String,@veraCommentGroup,veraCommentStartError,veraParen,veraBracket,veraMulti 251 syn region veraDefine start="^\s*\(`\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@veraPreProcGroup,@Spell 252 syn region veraPreProc start="^\s*\(`\|#\)\s*\(pragma\>\|line\>\|warning\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@veraPreProcGroup,@Spell 253 254 " Highlight User Labels 255 syn cluster veraMultiGroup contains=veraIncluded,veraSpecial,veraCommentSkip,veraCommentString,veraComment2String,@veraCommentGroup,veraCommentStartError,veraUserCont,veraUserLabel,veraBitField,veraOctalZero,veraCppOut,veraCppOut2,veraCppSkip,veraFormat,veraNumber,veraFloat,veraOctal,veraOctalError,veraNumbersCom,veraCppParen,veraCppBracket,veraCppString 256 syn region veraMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@veraMultiGroup,@Spell 257 " syn region veraMulti transparent start='?' skip='::' end=':' contains=ALL 258 " The above causes veraCppOut2 to catch on: 259 " i = (isTrue) ? 0 : 1; 260 " which ends up commenting the rest of the file 261 262 " Avoid matching foo::bar() by requiring that the next char is not ':' 263 syn cluster veraLabelGroup contains=veraUserLabel 264 syn match veraUserCont display "^\s*\I\i*\s*:$" contains=@veraLabelGroup 265 syn match veraUserCont display ";\s*\I\i*\s*:$" contains=@veraLabelGroup 266 syn match veraUserCont display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@veraLabelGroup 267 syn match veraUserCont display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@veraLabelGroup 268 269 syn match veraUserLabel display "\I\i*" contained 270 271 " Avoid recognizing most bitfields as labels 272 syn match veraBitField display "^\s*\I\i*\s*:\s*[1-9]"me=e-1 273 syn match veraBitField display ";\s*\I\i*\s*:\s*[1-9]"me=e-1 274 275 if exists("vera_minlines") 276 let b:vera_minlines = vera_minlines 277 else 278 if !exists("vera_no_if0") 279 let b:vera_minlines = 50 " #if 0 constructs can be long 280 else 281 let b:vera_minlines = 15 " mostly for () constructs 282 endif 283 endif 284 exec "syn sync ccomment veraComment minlines=" . b:vera_minlines 285 286 " Define the default highlighting. 287 " Only when an item doesn't have highlighting yet 288 289 hi def link veraClass Identifier 290 hi def link veraObject Identifier 291 hi def link veraUserMethod Function 292 hi def link veraTask Keyword 293 hi def link veraModifier Tag 294 hi def link veraDeprecated veraError 295 hi def link veraMethods Statement 296 " hi def link veraInterface Label 297 hi def link veraInterface Function 298 299 hi def link veraFormat veraSpecial 300 hi def link veraCppString veraString 301 hi def link veraCommentL veraComment 302 hi def link veraCommentStart veraComment 303 hi def link veraLabel Label 304 hi def link veraUserLabel Label 305 hi def link veraConditional Conditional 306 hi def link veraRepeat Repeat 307 hi def link veraCharacter Character 308 hi def link veraSpecialCharacter veraSpecial 309 hi def link veraNumber Number 310 hi def link veraOctal Number 311 hi def link veraOctalZero PreProc " link this to Error if you want 312 hi def link veraFloat Float 313 hi def link veraOctalError veraError 314 hi def link veraParenError veraError 315 hi def link veraErrInParen veraError 316 hi def link veraErrInBracket veraError 317 hi def link veraCommentError veraError 318 hi def link veraCommentStartError veraError 319 hi def link veraSpaceError SpaceError 320 hi def link veraSpecialError veraError 321 hi def link veraOperator Operator 322 hi def link veraStructure Structure 323 hi def link veraInclude Include 324 hi def link veraPreProc PreProc 325 hi def link veraDefine Macro 326 hi def link veraIncluded veraString 327 hi def link veraError Error 328 hi def link veraStatement Statement 329 hi def link veraPreCondit PreCondit 330 hi def link veraType Type 331 " hi def link veraConstant Constant 332 hi def link veraConstant Keyword 333 hi def link veraUserConstant Constant 334 hi def link veraCommentString veraString 335 hi def link veraComment2String veraString 336 hi def link veraCommentSkip veraComment 337 hi def link veraString String 338 hi def link veraComment Comment 339 hi def link veraSpecial SpecialChar 340 hi def link veraTodo Todo 341 hi def link veraCppSkip veraCppOut 342 hi def link veraCppOut2 veraCppOut 343 hi def link veraCppOut Comment 344 345 346 let b:current_syntax = "vera" 347 348 " vim: ts=8