| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | " Vim syntax file | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | " Language:	HASTE - a language for VLSI IC programming | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | " Maintainer:	M. Tranchero - maurizio.tranchero?gmail.com | 
					
						
							|  |  |  | " Credits:	some parts have been taken from vhdl, verilog, and C syntax | 
					
						
							|  |  |  | "		files | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | " 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 | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " HASTE | 
					
						
							|  |  |  | if exists("b:current_syntax") | 
					
						
							|  |  |  |     finish | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | " quit when a syntax file was already loaded | 
					
						
							|  |  |  | if exists("b:current_syntax") | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  |   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]\+\>" | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | syn match   hasteError		"\(\([[:alnum:]]\+\s*(\s\+\|)\s*,\)\)\s*\([[:alnum:]]\+\s*(\)" | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " 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 "'.'" | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | " syn region hasteString start=+"+  end=+"+ | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | syn match  hasteIncluded	display contained "<[^>]*>" | 
					
						
							|  |  |  | syn match  hasteIncluded	display contained "<[^"]*>" | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | syn region hasteInclude	start="^\s*#include\>\s*" end="$" contains=hasteIncluded,hasteString | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " integer numbers | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | syn match hasteNumber "\d\+\^[[:alnum:]]*[-+]\{0,1\}[[:alnum:]]*" | 
					
						
							|  |  |  | syn match hasteNumber "-\=\<\d\+\(\^[+\-]\=\d\+\)\>" | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | syn match hasteNumber "-\=\<\d\+\>" | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | " syn match hasteNumber "0*2#[01_]\+#\(\^[+\-]\=\d\+\)\=" | 
					
						
							|  |  |  | " syn match hasteNumber "0*16#[0-9a-f_]\+#\(\^[+\-]\=\d\+\)\=" | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | " operators | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | syn keyword hasteSeparators	& , . \|  | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | syn keyword hasteExecution	\|\| ; @ | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | syn keyword hasteOperator	:= ? ! : | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | syn keyword hasteTypeConstr	"[" << >> .. "]" ~ | 
					
						
							|  |  |  | syn keyword hasteExprOp		< <= >= > = # <> + - * == ## | 
					
						
							|  |  |  | syn keyword hasteMisc		( ) 0x 0b | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | syn match   hasteSeparators	"[&:\|,.]" | 
					
						
							|  |  |  | syn match   hasteOperator	":=" | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | syn match   hasteOperator	":" | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | 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		"##" | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | " syn match   hasteExprOp		"#" | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | " hi def link hastePreProc	Preproc | 
					
						
							|  |  |  | " hi def link hastePreProcVar	Special | 
					
						
							| 
									
										
										
										
											2008-06-24 22:14:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | let b:current_syntax = "haste" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " vim: ts=8 |