147 lines
5.0 KiB
VimL
147 lines
5.0 KiB
VimL
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1
|
||
|
|
||
|
" 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
|
||
|
|
||
|
endif
|