neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

haste.vim (4994B)


      1 " Vim syntax file
      2 " Language:	HASTE - a language for VLSI IC programming
      3 " Maintainer:	M. Tranchero - maurizio.tranchero?gmail.com
      4 " Credits:	some parts have been taken from vhdl, verilog, and C syntax
      5 "		files
      6 " Version:	0.9
      7 " Last Change:	0.9 improvement of haste numbers detection
      8 " Change:	0.8 error matching for wrong hierarchical connections 
      9 " Change:	0.7 added more rules to highlight pre-processor directives
     10 
     11 " HASTE
     12 if exists("b:current_syntax")
     13    finish
     14 endif
     15 " quit when a syntax file was already loaded
     16 if exists("b:current_syntax")
     17  finish
     18 endif
     19 
     20 " case is significant
     21 syn case match
     22 
     23 " HASTE keywords
     24 syn keyword hasteStatement act alias arb array begin bitvec 
     25 syn keyword hasteStatement bitwidth boolvec broad case
     26 syn keyword hasteStatement cast chan const dataprobe do edge
     27 syn keyword hasteStatement else end export false ff fi file
     28 syn keyword hasteStatement fit for forever func if import
     29 syn keyword hasteStatement inprobe is les main narb narrow
     30 syn keyword hasteStatement negedge od of or outprobe pas
     31 syn keyword hasteStatement posedge probe proc ram ramreg
     32 syn keyword hasteStatement repeat rom romreg sample sel si
     33 syn keyword hasteStatement sign sizeof skip stop then true
     34 syn keyword hasteStatement type until var wait wire
     35 syn keyword hasteFutureExt Z ffe partial 
     36 syn keyword hasteVerilog   buf reg while 
     37 
     38 " Special match for "if", "or", and "else" since "else if"
     39 " and other "else+if" combination shouldn't be highlighted.
     40 " The right keyword is "or" 
     41 syn match   hasteStatement	"\<\(if\|then\|else\|fi\)\>"
     42 syn match   hasteNone		"\<else\s\+if\>$"
     43 syn match   hasteNone		"\<else\s\+if\>\s"
     44 syn match   hasteNone		"\<elseif\>\s"
     45 syn match   hasteNone		"\<elsif\>\s"
     46 syn match   hasteStatement	"\<\(case\|is\|si\)\>"
     47 syn match   hasteStatement	"\<\(repeat\|until\)\>"
     48 syn match   hasteStatement	"\<\(forever\|do\|od\)\>"
     49 syn match   hasteStatement	"\<\(for\|do\|od\)\>"
     50 syn match   hasteStatement	"\<\(do\|or\|od\)\>"
     51 syn match   hasteStatement	"\<\(sel\|les\)\>"
     52 syn match   hasteError		"\<\d\+[_a-zA-Z]\+\>"
     53 syn match   hasteError		"\(\([[:alnum:]]\+\s*(\s\+\|)\s*,\)\)\s*\([[:alnum:]]\+\s*(\)"
     54 
     55 " Predifined Haste types
     56 syn keyword hasteType bool
     57 
     58 " Values for standard Haste types
     59 " syn match hasteVector "\'[0L1HXWZU\-\?]\'"
     60 
     61 syn match  hasteVector "0b\"[01_]\+\""
     62 syn match  hasteVector "0x\"[0-9a-f_]\+\""
     63 syn match  hasteCharacter "'.'"
     64 " syn region hasteString start=+"+  end=+"+
     65 syn match  hasteIncluded	display contained "<[^>]*>"
     66 syn match  hasteIncluded	display contained "<[^"]*>"
     67 syn region hasteInclude	start="^\s*#include\>\s*" end="$" contains=hasteIncluded,hasteString
     68 
     69 " integer numbers
     70 syn match hasteNumber "\d\+\^[[:alnum:]]*[-+]\{0,1\}[[:alnum:]]*"
     71 syn match hasteNumber "-\=\<\d\+\(\^[+\-]\=\d\+\)\>"
     72 syn match hasteNumber "-\=\<\d\+\>"
     73 " syn match hasteNumber "0*2#[01_]\+#\(\^[+\-]\=\d\+\)\="
     74 " syn match hasteNumber "0*16#[0-9a-f_]\+#\(\^[+\-]\=\d\+\)\="
     75 " operators
     76 syn keyword hasteSeparators	& , . \| 
     77 syn keyword hasteExecution	\|\| ; @
     78 syn keyword hasteOperator	:= ? ! :
     79 syn keyword hasteTypeConstr	"[" << >> .. "]" ~
     80 syn keyword hasteExprOp		< <= >= > = # <> + - * == ##
     81 syn keyword hasteMisc		( ) 0x 0b
     82 "
     83 syn match   hasteSeparators	"[&:\|,.]"
     84 syn match   hasteOperator	":="
     85 syn match   hasteOperator	":"
     86 syn match   hasteOperator	"?"
     87 syn match   hasteOperator	"!"
     88 syn match   hasteExecution	"||"
     89 syn match   hasteExecution	";"
     90 syn match   hasteExecution	"@"
     91 syn match   hasteType		"\[\["
     92 syn match   hasteType		"\]\]"
     93 syn match   hasteType		"<<"
     94 syn match   hasteType		">>"
     95 syn match   hasteExprOp		"<"
     96 syn match   hasteExprOp		"<="
     97 syn match   hasteExprOp		">="
     98 syn match   hasteExprOp		">"
     99 syn match   hasteExprOp		"<>"
    100 syn match   hasteExprOp		"="
    101 syn match   hasteExprOp		"=="
    102 syn match   hasteExprOp		"##"
    103 " syn match   hasteExprOp		"#"
    104 syn match   hasteExprOp		"*"
    105 syn match   hasteExprOp		"+"
    106 
    107 syn region  hasteComment start="/\*" end="\*/" contains=@Spell
    108 syn region  hasteComment start="{" end="}" contains=@Spell
    109 syn match   hasteComment "//.*" contains=@Spell
    110 
    111 " Define the default highlighting.
    112 " Only when an item doesn't have highlighting yet
    113 hi def link hasteSpecial	Special
    114 hi def link hasteStatement	Statement
    115 hi def link hasteCharacter	String
    116 hi def link hasteString		String
    117 hi def link hasteVector		String
    118 hi def link hasteBoolean	String
    119 hi def link hasteComment	Comment
    120 hi def link hasteNumber		String
    121 hi def link hasteTime		String
    122 hi def link hasteType		Type
    123 hi def link hasteGlobal		Error
    124 hi def link hasteError		Error
    125 hi def link hasteAttribute	Type
    126 "
    127 hi def link hasteSeparators	Special
    128 hi def link hasteExecution	Special
    129 hi def link hasteTypeConstr	Special
    130 hi def link hasteOperator	Type
    131 hi def link hasteExprOp		Type
    132 hi def link hasteMisc		String
    133 hi def link hasteFutureExt 	Error
    134 hi def link hasteVerilog	Error
    135 hi def link hasteDefine		Macro
    136 hi def link hasteInclude	Include
    137 " hi def link hastePreProc	Preproc
    138 " hi def link hastePreProcVar	Special
    139 
    140 let b:current_syntax = "haste"
    141 
    142 " vim: ts=8