diff runtime/syntax/haste.vim @ 1623:53938adac247

updated for version 7.2a
author vimboss
date Tue, 24 Jun 2008 22:14:38 +0000
parents
children 0b796e045c42
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/haste.vim
@@ -0,0 +1,150 @@
+" Vim syntax file
+" Language:	HASTE
+" Maintainer:	M. Tranchero - maurizio.tranchero?gmail.com
+" Credits:	some parts have been taken from vhdl, verilog, and C syntax
+"		files
+" version: 0.5
+
+" HASTE
+if exists("b:current_syntax")
+    finish
+endif
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif 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]\+\>"
+
+" 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=+"+
+" C pre-processor directives
+"syn region hasteIncluded	display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match  hasteIncluded	display contained "<[^>]*>"
+syn match  hasteIncluded	display contained "<[^"]*>"
+syn match  hasteInclude		display "^\s*#include\>\s*["<]" contains=hasteIncluded
+syn region hasteDefine	start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@hastePreProcGroup,@Spell
+syn region hasteDefine	start="^\s*\(%:\|#\)\s*\(ifndef\|ifdef\|endif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=@Spell
+syn region hastePreCondit	start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=hasteComment,hasteCppString,hasteCharacter,hasteCppParen,hasteParenError,hasteNumbers,hasteCommentError,hasteSpaceError
+syn region hastePreProc	start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@hastePreProcGroup,@Spell
+syn cluster hastePreProcGroup	contains=hasteIncluded,hasteInclude,hasteDefine
+syn region hasteCppSkip	contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=hasteSpaceError,hasteCppSkip
+
+" floating numbers
+syn match hasteNumber "-\=\<\d\+\.\d\+\(E[+\-]\=\d\+\)\>"
+syn match hasteNumber "-\=\<\d\+\.\d\+\>"
+syn match hasteNumber "0*2#[01_]\+\.[01_]\+#\(E[+\-]\=\d\+\)\="
+syn match hasteNumber "0*16#[0-9a-f_]\+\.[0-9a-f_]\+#\(E[+\-]\=\d\+\)\="
+" integer numbers
+syn match hasteNumber "-\=\<\d\+\(E[+\-]\=\d\+\)\>"
+syn match hasteNumber "-\=\<\d\+\>"
+syn match hasteNumber "0*2#[01_]\+#\(E[+\-]\=\d\+\)\="
+syn match hasteNumber "0*16#[0-9a-f_]\+#\(E[+\-]\=\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   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
+
+let b:current_syntax = "haste"
+
+" vim: ts=8