xref: /vim-8.2.3635/runtime/syntax/haste.vim (revision 89bcfda6)
1864207deSBram Moolenaar" Vim syntax file
2c236c16dSBram Moolenaar" Language:	HASTE - a language for VLSI IC programming
3864207deSBram Moolenaar" Maintainer:	M. Tranchero - maurizio.tranchero?gmail.com
4864207deSBram Moolenaar" Credits:	some parts have been taken from vhdl, verilog, and C syntax
5864207deSBram Moolenaar"		files
6c236c16dSBram Moolenaar" Version:	0.9
7c236c16dSBram Moolenaar" Last Change:	0.9 improvement of haste numbers detection
8c236c16dSBram Moolenaar" Change:	0.8 error matching for wrong hierarchical connections
9c236c16dSBram Moolenaar" Change:	0.7 added more rules to highlight pre-processor directives
10864207deSBram Moolenaar
11864207deSBram Moolenaar" HASTE
12864207deSBram Moolenaarif exists("b:current_syntax")
13864207deSBram Moolenaar    finish
14864207deSBram Moolenaarendif
15*89bcfda6SBram Moolenaar" quit when a syntax file was already loaded
16*89bcfda6SBram Moolenaarif exists("b:current_syntax")
17864207deSBram Moolenaar  finish
18864207deSBram Moolenaarendif
19864207deSBram Moolenaar
20864207deSBram Moolenaar" case is significant
21864207deSBram Moolenaarsyn case match
22864207deSBram Moolenaar
23864207deSBram Moolenaar" HASTE keywords
24864207deSBram Moolenaarsyn keyword hasteStatement act alias arb array begin bitvec
25864207deSBram Moolenaarsyn keyword hasteStatement bitwidth boolvec broad case
26864207deSBram Moolenaarsyn keyword hasteStatement cast chan const dataprobe do edge
27864207deSBram Moolenaarsyn keyword hasteStatement else end export false ff fi file
28864207deSBram Moolenaarsyn keyword hasteStatement fit for forever func if import
29864207deSBram Moolenaarsyn keyword hasteStatement inprobe is les main narb narrow
30864207deSBram Moolenaarsyn keyword hasteStatement negedge od of or outprobe pas
31864207deSBram Moolenaarsyn keyword hasteStatement posedge probe proc ram ramreg
32864207deSBram Moolenaarsyn keyword hasteStatement repeat rom romreg sample sel si
33864207deSBram Moolenaarsyn keyword hasteStatement sign sizeof skip stop then true
34864207deSBram Moolenaarsyn keyword hasteStatement type until var wait wire
35864207deSBram Moolenaarsyn keyword hasteFutureExt Z ffe partial
36864207deSBram Moolenaarsyn keyword hasteVerilog   buf reg while
37864207deSBram Moolenaar
38864207deSBram Moolenaar" Special match for "if", "or", and "else" since "else if"
39864207deSBram Moolenaar" and other "else+if" combination shouldn't be highlighted.
40864207deSBram Moolenaar" The right keyword is "or"
41864207deSBram Moolenaarsyn match   hasteStatement	"\<\(if\|then\|else\|fi\)\>"
42864207deSBram Moolenaarsyn match   hasteNone		"\<else\s\+if\>$"
43864207deSBram Moolenaarsyn match   hasteNone		"\<else\s\+if\>\s"
44864207deSBram Moolenaarsyn match   hasteNone		"\<elseif\>\s"
45864207deSBram Moolenaarsyn match   hasteNone		"\<elsif\>\s"
46864207deSBram Moolenaarsyn match   hasteStatement	"\<\(case\|is\|si\)\>"
47864207deSBram Moolenaarsyn match   hasteStatement	"\<\(repeat\|until\)\>"
48864207deSBram Moolenaarsyn match   hasteStatement	"\<\(forever\|do\|od\)\>"
49864207deSBram Moolenaarsyn match   hasteStatement	"\<\(for\|do\|od\)\>"
50864207deSBram Moolenaarsyn match   hasteStatement	"\<\(do\|or\|od\)\>"
51864207deSBram Moolenaarsyn match   hasteStatement	"\<\(sel\|les\)\>"
52864207deSBram Moolenaarsyn match   hasteError		"\<\d\+[_a-zA-Z]\+\>"
53c236c16dSBram Moolenaarsyn match   hasteError		"\(\([[:alnum:]]\+\s*(\s\+\|)\s*,\)\)\s*\([[:alnum:]]\+\s*(\)"
54864207deSBram Moolenaar
55864207deSBram Moolenaar" Predifined Haste types
56864207deSBram Moolenaarsyn keyword hasteType bool
57864207deSBram Moolenaar
58864207deSBram Moolenaar" Values for standard Haste types
59864207deSBram Moolenaar" syn match hasteVector "\'[0L1HXWZU\-\?]\'"
60864207deSBram Moolenaar
61864207deSBram Moolenaarsyn match  hasteVector "0b\"[01_]\+\""
62864207deSBram Moolenaarsyn match  hasteVector "0x\"[0-9a-f_]\+\""
63864207deSBram Moolenaarsyn match  hasteCharacter "'.'"
64c236c16dSBram Moolenaar" syn region hasteString start=+"+  end=+"+
65864207deSBram Moolenaarsyn match  hasteIncluded	display contained "<[^>]*>"
66864207deSBram Moolenaarsyn match  hasteIncluded	display contained "<[^"]*>"
67c236c16dSBram Moolenaarsyn region hasteInclude	start="^\s*#include\>\s*" end="$" contains=hasteIncluded,hasteString
68864207deSBram Moolenaar
69864207deSBram Moolenaar" integer numbers
70c236c16dSBram Moolenaarsyn match hasteNumber "\d\+\^[[:alnum:]]*[-+]\{0,1\}[[:alnum:]]*"
71c236c16dSBram Moolenaarsyn match hasteNumber "-\=\<\d\+\(\^[+\-]\=\d\+\)\>"
72864207deSBram Moolenaarsyn match hasteNumber "-\=\<\d\+\>"
73c236c16dSBram Moolenaar" syn match hasteNumber "0*2#[01_]\+#\(\^[+\-]\=\d\+\)\="
74c236c16dSBram Moolenaar" syn match hasteNumber "0*16#[0-9a-f_]\+#\(\^[+\-]\=\d\+\)\="
75864207deSBram Moolenaar" operators
76c236c16dSBram Moolenaarsyn keyword hasteSeparators	& , . \|
77864207deSBram Moolenaarsyn keyword hasteExecution	\|\| ; @
78c236c16dSBram Moolenaarsyn keyword hasteOperator	:= ? ! :
79864207deSBram Moolenaarsyn keyword hasteTypeConstr	"[" << >> .. "]" ~
80864207deSBram Moolenaarsyn keyword hasteExprOp		< <= >= > = # <> + - * == ##
81864207deSBram Moolenaarsyn keyword hasteMisc		( ) 0x 0b
82864207deSBram Moolenaar"
83864207deSBram Moolenaarsyn match   hasteSeparators	"[&:\|,.]"
84864207deSBram Moolenaarsyn match   hasteOperator	":="
85c236c16dSBram Moolenaarsyn match   hasteOperator	":"
86864207deSBram Moolenaarsyn match   hasteOperator	"?"
87864207deSBram Moolenaarsyn match   hasteOperator	"!"
88864207deSBram Moolenaarsyn match   hasteExecution	"||"
89864207deSBram Moolenaarsyn match   hasteExecution	";"
90864207deSBram Moolenaarsyn match   hasteExecution	"@"
91864207deSBram Moolenaarsyn match   hasteType		"\[\["
92864207deSBram Moolenaarsyn match   hasteType		"\]\]"
93864207deSBram Moolenaarsyn match   hasteType		"<<"
94864207deSBram Moolenaarsyn match   hasteType		">>"
95864207deSBram Moolenaarsyn match   hasteExprOp		"<"
96864207deSBram Moolenaarsyn match   hasteExprOp		"<="
97864207deSBram Moolenaarsyn match   hasteExprOp		">="
98864207deSBram Moolenaarsyn match   hasteExprOp		">"
99864207deSBram Moolenaarsyn match   hasteExprOp		"<>"
100864207deSBram Moolenaarsyn match   hasteExprOp		"="
101864207deSBram Moolenaarsyn match   hasteExprOp		"=="
102864207deSBram Moolenaarsyn match   hasteExprOp		"##"
103c236c16dSBram Moolenaar" syn match   hasteExprOp		"#"
104864207deSBram Moolenaarsyn match   hasteExprOp		"*"
105864207deSBram Moolenaarsyn match   hasteExprOp		"+"
106864207deSBram Moolenaar
107864207deSBram Moolenaarsyn region  hasteComment start="/\*" end="\*/" contains=@Spell
108864207deSBram Moolenaarsyn region  hasteComment start="{" end="}" contains=@Spell
109864207deSBram Moolenaarsyn match   hasteComment "//.*" contains=@Spell
110864207deSBram Moolenaar
111864207deSBram Moolenaar" Define the default highlighting.
112864207deSBram Moolenaar" Only when an item doesn't have highlighting yet
113864207deSBram Moolenaarhi def link hasteSpecial	Special
114864207deSBram Moolenaarhi def link hasteStatement	Statement
115864207deSBram Moolenaarhi def link hasteCharacter	String
116864207deSBram Moolenaarhi def link hasteString		String
117864207deSBram Moolenaarhi def link hasteVector		String
118864207deSBram Moolenaarhi def link hasteBoolean	String
119864207deSBram Moolenaarhi def link hasteComment	Comment
120864207deSBram Moolenaarhi def link hasteNumber		String
121864207deSBram Moolenaarhi def link hasteTime		String
122864207deSBram Moolenaarhi def link hasteType		Type
123864207deSBram Moolenaarhi def link hasteGlobal		Error
124864207deSBram Moolenaarhi def link hasteError		Error
125864207deSBram Moolenaarhi def link hasteAttribute	Type
126c236c16dSBram Moolenaar"
127864207deSBram Moolenaarhi def link hasteSeparators	Special
128864207deSBram Moolenaarhi def link hasteExecution	Special
129864207deSBram Moolenaarhi def link hasteTypeConstr	Special
130864207deSBram Moolenaarhi def link hasteOperator	Type
131864207deSBram Moolenaarhi def link hasteExprOp		Type
132864207deSBram Moolenaarhi def link hasteMisc		String
133864207deSBram Moolenaarhi def link hasteFutureExt 	Error
134864207deSBram Moolenaarhi def link hasteVerilog	Error
135864207deSBram Moolenaarhi def link hasteDefine		Macro
136864207deSBram Moolenaarhi def link hasteInclude	Include
137c236c16dSBram Moolenaar" hi def link hastePreProc	Preproc
138c236c16dSBram Moolenaar" hi def link hastePreProcVar	Special
139864207deSBram Moolenaar
140864207deSBram Moolenaarlet b:current_syntax = "haste"
141864207deSBram Moolenaar
142864207deSBram Moolenaar" vim: ts=8
143