3 " Maintainer: M. Tranchero - maurizio.tranchero?gmail.com
4 " Credits: some parts have been taken from vhdl, verilog, and C syntax
9 if exists("b:current_syntax")
12 " For version 5.x: Clear all syntax items
13 " For version 6.x: Quit when a syntax file was already loaded
16 elseif exists("b:current_syntax")
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
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]\+\>"
54 " Predifined Haste types
55 syn keyword hasteType bool
57 " Values for standard Haste types
58 " syn match hasteVector "\'[0L1HXWZU\-\?]\'"
60 syn match hasteVector "0b\"[01_]\+\""
61 syn match hasteVector "0x\"[0-9a-f_]\+\""
62 syn match hasteCharacter "'.'"
63 syn region hasteString start=+"+ end=+"+
64 " C pre-processor directives
65 "syn region hasteIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
66 syn match hasteIncluded display contained "<[^>]*>"
67 syn match hasteIncluded display contained "<[^"]*>"
68 syn match hasteInclude display "^\s*#include\>\s*["<]" contains=hasteIncluded
69 syn region hasteDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@hastePreProcGroup,@Spell
70 syn region hasteDefine start="^\s*\(%:\|#\)\s*\(ifndef\|ifdef\|endif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=@Spell
71 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
72 syn region hastePreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@hastePreProcGroup,@Spell
73 syn cluster hastePreProcGroup contains=hasteIncluded,hasteInclude,hasteDefine
74 syn region hasteCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=hasteSpaceError,hasteCppSkip
77 syn match hasteNumber "-\=\<\d\+\.\d\+\(E[+\-]\=\d\+\)\>"
78 syn match hasteNumber "-\=\<\d\+\.\d\+\>"
79 syn match hasteNumber "0*2#[01_]\+\.[01_]\+#\(E[+\-]\=\d\+\)\="
80 syn match hasteNumber "0*16#[0-9a-f_]\+\.[0-9a-f_]\+#\(E[+\-]\=\d\+\)\="
82 syn match hasteNumber "-\=\<\d\+\(E[+\-]\=\d\+\)\>"
83 syn match hasteNumber "-\=\<\d\+\>"
84 syn match hasteNumber "0*2#[01_]\+#\(E[+\-]\=\d\+\)\="
85 syn match hasteNumber "0*16#[0-9a-f_]\+#\(E[+\-]\=\d\+\)\="
87 syn keyword hasteSeparators & , . \| :
88 syn keyword hasteExecution \|\| ; @
89 syn keyword hasteOperator := ? !
90 syn keyword hasteTypeConstr "[" << >> .. "]" ~
91 syn keyword hasteExprOp < <= >= > = # <> + - * == ##
92 syn keyword hasteMisc ( ) 0x 0b
94 syn match hasteSeparators "[&:\|,.]"
95 syn match hasteOperator ":="
96 syn match hasteOperator "?"
97 syn match hasteOperator "!"
98 syn match hasteExecution "||"
99 syn match hasteExecution ";"
100 syn match hasteExecution "@"
101 syn match hasteType "\[\["
102 syn match hasteType "\]\]"
103 syn match hasteType "<<"
104 syn match hasteType ">>"
105 syn match hasteExprOp "<"
106 syn match hasteExprOp "<="
107 syn match hasteExprOp ">="
108 syn match hasteExprOp ">"
109 syn match hasteExprOp "<>"
110 syn match hasteExprOp "="
111 syn match hasteExprOp "=="
112 syn match hasteExprOp "##"
113 syn match hasteExprOp "#"
114 syn match hasteExprOp "*"
115 syn match hasteExprOp "+"
117 syn region hasteComment start="/\*" end="\*/" contains=@Spell
118 syn region hasteComment start="{" end="}" contains=@Spell
119 syn match hasteComment "//.*" contains=@Spell
121 " Define the default highlighting.
122 " Only when an item doesn't have highlighting yet
123 hi def link hasteSpecial Special
124 hi def link hasteStatement Statement
125 hi def link hasteCharacter String
126 hi def link hasteString String
127 hi def link hasteVector String
128 hi def link hasteBoolean String
129 hi def link hasteComment Comment
130 hi def link hasteNumber String
131 hi def link hasteTime String
132 hi def link hasteType Type
133 hi def link hasteGlobal Error
134 hi def link hasteError Error
135 hi def link hasteAttribute Type
136 hi def link hasteSeparators Special
137 hi def link hasteExecution Special
138 hi def link hasteTypeConstr Special
139 hi def link hasteOperator Type
140 hi def link hasteExprOp Type
141 hi def link hasteMisc String
142 hi def link hasteFutureExt Error
143 hi def link hasteVerilog Error
144 hi def link hasteDefine Macro
145 hi def link hasteInclude Include
146 hi def link hastePreProc PreProc
148 let b:current_syntax = "haste"