Sync from the branch.
[MacVim/KaoriYa.git] / runtime / syntax / haste.vim
blobcf943f10856ea18149fe0bd4ae6da957dc8a3be2
1 " Vim syntax file
2 " Language:     HASTE
3 " Maintainer:   M. Tranchero - maurizio.tranchero?gmail.com
4 " Credits:      some parts have been taken from vhdl, verilog, and C syntax
5 "               files
6 " version: 0.5
8 " HASTE
9 if exists("b:current_syntax")
10     finish
11 endif
12 " For version 5.x: Clear all syntax items
13 " For version 6.x: Quit when a syntax file was already loaded
14 if version < 600
15   syntax clear
16 elseif exists("b:current_syntax")
17   finish
18 endif
20 " case is significant
21 syn case match
23 " HASTE keywords
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
76 " floating numbers
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\+\)\="
81 " integer numbers
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\+\)\="
86 " operators
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"
150 " vim: ts=8