diff options
Diffstat (limited to 'runtime/syntax/haste.vim')
-rw-r--r-- | runtime/syntax/haste.vim | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/runtime/syntax/haste.vim b/runtime/syntax/haste.vim new file mode 100644 index 0000000..79e9f5e --- /dev/null +++ b/runtime/syntax/haste.vim @@ -0,0 +1,142 @@ +" Vim syntax file +" Language: HASTE - a language for VLSI IC programming +" Maintainer: M. Tranchero - maurizio.tranchero?gmail.com +" Credits: some parts have been taken from vhdl, verilog, and C syntax +" files +" Version: 0.9 +" Last Change: 0.9 improvement of haste numbers detection +" Change: 0.8 error matching for wrong hierarchical connections +" Change: 0.7 added more rules to highlight pre-processor directives + +" HASTE +if exists("b:current_syntax") + finish +endif +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" case is significant +syn case match + +" HASTE keywords +syn keyword hasteStatement act alias arb array begin bitvec +syn keyword hasteStatement bitwidth boolvec broad case +syn keyword hasteStatement cast chan const dataprobe do edge +syn keyword hasteStatement else end export false ff fi file +syn keyword hasteStatement fit for forever func if import +syn keyword hasteStatement inprobe is les main narb narrow +syn keyword hasteStatement negedge od of or outprobe pas +syn keyword hasteStatement posedge probe proc ram ramreg +syn keyword hasteStatement repeat rom romreg sample sel si +syn keyword hasteStatement sign sizeof skip stop then true +syn keyword hasteStatement type until var wait wire +syn keyword hasteFutureExt Z ffe partial +syn keyword hasteVerilog buf reg while + +" Special match for "if", "or", and "else" since "else if" +" and other "else+if" combination shouldn't be highlighted. +" The right keyword is "or" +syn match hasteStatement "\<\(if\|then\|else\|fi\)\>" +syn match hasteNone "\<else\s\+if\>$" +syn match hasteNone "\<else\s\+if\>\s" +syn match hasteNone "\<elseif\>\s" +syn match hasteNone "\<elsif\>\s" +syn match hasteStatement "\<\(case\|is\|si\)\>" +syn match hasteStatement "\<\(repeat\|until\)\>" +syn match hasteStatement "\<\(forever\|do\|od\)\>" +syn match hasteStatement "\<\(for\|do\|od\)\>" +syn match hasteStatement "\<\(do\|or\|od\)\>" +syn match hasteStatement "\<\(sel\|les\)\>" +syn match hasteError "\<\d\+[_a-zA-Z]\+\>" +syn match hasteError "\(\([[:alnum:]]\+\s*(\s\+\|)\s*,\)\)\s*\([[:alnum:]]\+\s*(\)" + +" Predifined Haste types +syn keyword hasteType bool + +" Values for standard Haste types +" syn match hasteVector "\'[0L1HXWZU\-\?]\'" + +syn match hasteVector "0b\"[01_]\+\"" +syn match hasteVector "0x\"[0-9a-f_]\+\"" +syn match hasteCharacter "'.'" +" syn region hasteString start=+"+ end=+"+ +syn match hasteIncluded display contained "<[^>]*>" +syn match hasteIncluded display contained "<[^"]*>" +syn region hasteInclude start="^\s*#include\>\s*" end="$" contains=hasteIncluded,hasteString + +" integer numbers +syn match hasteNumber "\d\+\^[[:alnum:]]*[-+]\{0,1\}[[:alnum:]]*" +syn match hasteNumber "-\=\<\d\+\(\^[+\-]\=\d\+\)\>" +syn match hasteNumber "-\=\<\d\+\>" +" syn match hasteNumber "0*2#[01_]\+#\(\^[+\-]\=\d\+\)\=" +" syn match hasteNumber "0*16#[0-9a-f_]\+#\(\^[+\-]\=\d\+\)\=" +" operators +syn keyword hasteSeparators & , . \| +syn keyword hasteExecution \|\| ; @ +syn keyword hasteOperator := ? ! : +syn keyword hasteTypeConstr "[" << >> .. "]" ~ +syn keyword hasteExprOp < <= >= > = # <> + - * == ## +syn keyword hasteMisc ( ) 0x 0b +" +syn match hasteSeparators "[&:\|,.]" +syn match hasteOperator ":=" +syn match hasteOperator ":" +syn match hasteOperator "?" +syn match hasteOperator "!" +syn match hasteExecution "||" +syn match hasteExecution ";" +syn match hasteExecution "@" +syn match hasteType "\[\[" +syn match hasteType "\]\]" +syn match hasteType "<<" +syn match hasteType ">>" +syn match hasteExprOp "<" +syn match hasteExprOp "<=" +syn match hasteExprOp ">=" +syn match hasteExprOp ">" +syn match hasteExprOp "<>" +syn match hasteExprOp "=" +syn match hasteExprOp "==" +syn match hasteExprOp "##" +" syn match hasteExprOp "#" +syn match hasteExprOp "*" +syn match hasteExprOp "+" + +syn region hasteComment start="/\*" end="\*/" contains=@Spell +syn region hasteComment start="{" end="}" contains=@Spell +syn match hasteComment "//.*" contains=@Spell + +" Define the default highlighting. +" Only when an item doesn't have highlighting yet +hi def link hasteSpecial Special +hi def link hasteStatement Statement +hi def link hasteCharacter String +hi def link hasteString String +hi def link hasteVector String +hi def link hasteBoolean String +hi def link hasteComment Comment +hi def link hasteNumber String +hi def link hasteTime String +hi def link hasteType Type +hi def link hasteGlobal Error +hi def link hasteError Error +hi def link hasteAttribute Type +" +hi def link hasteSeparators Special +hi def link hasteExecution Special +hi def link hasteTypeConstr Special +hi def link hasteOperator Type +hi def link hasteExprOp Type +hi def link hasteMisc String +hi def link hasteFutureExt Error +hi def link hasteVerilog Error +hi def link hasteDefine Macro +hi def link hasteInclude Include +" hi def link hastePreProc Preproc +" hi def link hastePreProcVar Special + +let b:current_syntax = "haste" + +" vim: ts=8 |