1864207deSBram Moolenaar" Vim syntax file 2c236c16dSBram Moolenaar" Language: HASTE - a language for VLSI IC programming 3864207deSBram Moolenaar" Maintainer: M. Tranchero - maurizio.tranchero?gmail.com 4864207deSBram Moolenaar" Credits: some parts have been taken from vhdl, verilog, and C syntax 5864207deSBram Moolenaar" files 6c236c16dSBram Moolenaar" Version: 0.9 7c236c16dSBram Moolenaar" Last Change: 0.9 improvement of haste numbers detection 8c236c16dSBram Moolenaar" Change: 0.8 error matching for wrong hierarchical connections 9c236c16dSBram Moolenaar" Change: 0.7 added more rules to highlight pre-processor directives 10864207deSBram Moolenaar 11864207deSBram Moolenaar" HASTE 12864207deSBram Moolenaarif exists("b:current_syntax") 13864207deSBram Moolenaar finish 14864207deSBram Moolenaarendif 15*89bcfda6SBram Moolenaar" quit when a syntax file was already loaded 16*89bcfda6SBram Moolenaarif exists("b:current_syntax") 17864207deSBram Moolenaar finish 18864207deSBram Moolenaarendif 19864207deSBram Moolenaar 20864207deSBram Moolenaar" case is significant 21864207deSBram Moolenaarsyn case match 22864207deSBram Moolenaar 23864207deSBram Moolenaar" HASTE keywords 24864207deSBram Moolenaarsyn keyword hasteStatement act alias arb array begin bitvec 25864207deSBram Moolenaarsyn keyword hasteStatement bitwidth boolvec broad case 26864207deSBram Moolenaarsyn keyword hasteStatement cast chan const dataprobe do edge 27864207deSBram Moolenaarsyn keyword hasteStatement else end export false ff fi file 28864207deSBram Moolenaarsyn keyword hasteStatement fit for forever func if import 29864207deSBram Moolenaarsyn keyword hasteStatement inprobe is les main narb narrow 30864207deSBram Moolenaarsyn keyword hasteStatement negedge od of or outprobe pas 31864207deSBram Moolenaarsyn keyword hasteStatement posedge probe proc ram ramreg 32864207deSBram Moolenaarsyn keyword hasteStatement repeat rom romreg sample sel si 33864207deSBram Moolenaarsyn keyword hasteStatement sign sizeof skip stop then true 34864207deSBram Moolenaarsyn keyword hasteStatement type until var wait wire 35864207deSBram Moolenaarsyn keyword hasteFutureExt Z ffe partial 36864207deSBram Moolenaarsyn keyword hasteVerilog buf reg while 37864207deSBram Moolenaar 38864207deSBram Moolenaar" Special match for "if", "or", and "else" since "else if" 39864207deSBram Moolenaar" and other "else+if" combination shouldn't be highlighted. 40864207deSBram Moolenaar" The right keyword is "or" 41864207deSBram Moolenaarsyn match hasteStatement "\<\(if\|then\|else\|fi\)\>" 42864207deSBram Moolenaarsyn match hasteNone "\<else\s\+if\>$" 43864207deSBram Moolenaarsyn match hasteNone "\<else\s\+if\>\s" 44864207deSBram Moolenaarsyn match hasteNone "\<elseif\>\s" 45864207deSBram Moolenaarsyn match hasteNone "\<elsif\>\s" 46864207deSBram Moolenaarsyn match hasteStatement "\<\(case\|is\|si\)\>" 47864207deSBram Moolenaarsyn match hasteStatement "\<\(repeat\|until\)\>" 48864207deSBram Moolenaarsyn match hasteStatement "\<\(forever\|do\|od\)\>" 49864207deSBram Moolenaarsyn match hasteStatement "\<\(for\|do\|od\)\>" 50864207deSBram Moolenaarsyn match hasteStatement "\<\(do\|or\|od\)\>" 51864207deSBram Moolenaarsyn match hasteStatement "\<\(sel\|les\)\>" 52864207deSBram Moolenaarsyn match hasteError "\<\d\+[_a-zA-Z]\+\>" 53c236c16dSBram Moolenaarsyn match hasteError "\(\([[:alnum:]]\+\s*(\s\+\|)\s*,\)\)\s*\([[:alnum:]]\+\s*(\)" 54864207deSBram Moolenaar 55864207deSBram Moolenaar" Predifined Haste types 56864207deSBram Moolenaarsyn keyword hasteType bool 57864207deSBram Moolenaar 58864207deSBram Moolenaar" Values for standard Haste types 59864207deSBram Moolenaar" syn match hasteVector "\'[0L1HXWZU\-\?]\'" 60864207deSBram Moolenaar 61864207deSBram Moolenaarsyn match hasteVector "0b\"[01_]\+\"" 62864207deSBram Moolenaarsyn match hasteVector "0x\"[0-9a-f_]\+\"" 63864207deSBram Moolenaarsyn match hasteCharacter "'.'" 64c236c16dSBram Moolenaar" syn region hasteString start=+"+ end=+"+ 65864207deSBram Moolenaarsyn match hasteIncluded display contained "<[^>]*>" 66864207deSBram Moolenaarsyn match hasteIncluded display contained "<[^"]*>" 67c236c16dSBram Moolenaarsyn region hasteInclude start="^\s*#include\>\s*" end="$" contains=hasteIncluded,hasteString 68864207deSBram Moolenaar 69864207deSBram Moolenaar" integer numbers 70c236c16dSBram Moolenaarsyn match hasteNumber "\d\+\^[[:alnum:]]*[-+]\{0,1\}[[:alnum:]]*" 71c236c16dSBram Moolenaarsyn match hasteNumber "-\=\<\d\+\(\^[+\-]\=\d\+\)\>" 72864207deSBram Moolenaarsyn match hasteNumber "-\=\<\d\+\>" 73c236c16dSBram Moolenaar" syn match hasteNumber "0*2#[01_]\+#\(\^[+\-]\=\d\+\)\=" 74c236c16dSBram Moolenaar" syn match hasteNumber "0*16#[0-9a-f_]\+#\(\^[+\-]\=\d\+\)\=" 75864207deSBram Moolenaar" operators 76c236c16dSBram Moolenaarsyn keyword hasteSeparators & , . \| 77864207deSBram Moolenaarsyn keyword hasteExecution \|\| ; @ 78c236c16dSBram Moolenaarsyn keyword hasteOperator := ? ! : 79864207deSBram Moolenaarsyn keyword hasteTypeConstr "[" << >> .. "]" ~ 80864207deSBram Moolenaarsyn keyword hasteExprOp < <= >= > = # <> + - * == ## 81864207deSBram Moolenaarsyn keyword hasteMisc ( ) 0x 0b 82864207deSBram Moolenaar" 83864207deSBram Moolenaarsyn match hasteSeparators "[&:\|,.]" 84864207deSBram Moolenaarsyn match hasteOperator ":=" 85c236c16dSBram Moolenaarsyn match hasteOperator ":" 86864207deSBram Moolenaarsyn match hasteOperator "?" 87864207deSBram Moolenaarsyn match hasteOperator "!" 88864207deSBram Moolenaarsyn match hasteExecution "||" 89864207deSBram Moolenaarsyn match hasteExecution ";" 90864207deSBram Moolenaarsyn match hasteExecution "@" 91864207deSBram Moolenaarsyn match hasteType "\[\[" 92864207deSBram Moolenaarsyn match hasteType "\]\]" 93864207deSBram Moolenaarsyn match hasteType "<<" 94864207deSBram Moolenaarsyn match hasteType ">>" 95864207deSBram Moolenaarsyn match hasteExprOp "<" 96864207deSBram Moolenaarsyn match hasteExprOp "<=" 97864207deSBram Moolenaarsyn match hasteExprOp ">=" 98864207deSBram Moolenaarsyn match hasteExprOp ">" 99864207deSBram Moolenaarsyn match hasteExprOp "<>" 100864207deSBram Moolenaarsyn match hasteExprOp "=" 101864207deSBram Moolenaarsyn match hasteExprOp "==" 102864207deSBram Moolenaarsyn match hasteExprOp "##" 103c236c16dSBram Moolenaar" syn match hasteExprOp "#" 104864207deSBram Moolenaarsyn match hasteExprOp "*" 105864207deSBram Moolenaarsyn match hasteExprOp "+" 106864207deSBram Moolenaar 107864207deSBram Moolenaarsyn region hasteComment start="/\*" end="\*/" contains=@Spell 108864207deSBram Moolenaarsyn region hasteComment start="{" end="}" contains=@Spell 109864207deSBram Moolenaarsyn match hasteComment "//.*" contains=@Spell 110864207deSBram Moolenaar 111864207deSBram Moolenaar" Define the default highlighting. 112864207deSBram Moolenaar" Only when an item doesn't have highlighting yet 113864207deSBram Moolenaarhi def link hasteSpecial Special 114864207deSBram Moolenaarhi def link hasteStatement Statement 115864207deSBram Moolenaarhi def link hasteCharacter String 116864207deSBram Moolenaarhi def link hasteString String 117864207deSBram Moolenaarhi def link hasteVector String 118864207deSBram Moolenaarhi def link hasteBoolean String 119864207deSBram Moolenaarhi def link hasteComment Comment 120864207deSBram Moolenaarhi def link hasteNumber String 121864207deSBram Moolenaarhi def link hasteTime String 122864207deSBram Moolenaarhi def link hasteType Type 123864207deSBram Moolenaarhi def link hasteGlobal Error 124864207deSBram Moolenaarhi def link hasteError Error 125864207deSBram Moolenaarhi def link hasteAttribute Type 126c236c16dSBram Moolenaar" 127864207deSBram Moolenaarhi def link hasteSeparators Special 128864207deSBram Moolenaarhi def link hasteExecution Special 129864207deSBram Moolenaarhi def link hasteTypeConstr Special 130864207deSBram Moolenaarhi def link hasteOperator Type 131864207deSBram Moolenaarhi def link hasteExprOp Type 132864207deSBram Moolenaarhi def link hasteMisc String 133864207deSBram Moolenaarhi def link hasteFutureExt Error 134864207deSBram Moolenaarhi def link hasteVerilog Error 135864207deSBram Moolenaarhi def link hasteDefine Macro 136864207deSBram Moolenaarhi def link hasteInclude Include 137c236c16dSBram Moolenaar" hi def link hastePreProc Preproc 138c236c16dSBram Moolenaar" hi def link hastePreProcVar Special 139864207deSBram Moolenaar 140864207deSBram Moolenaarlet b:current_syntax = "haste" 141864207deSBram Moolenaar 142864207deSBram Moolenaar" vim: ts=8 143