blob: cc3c4d7305f9c2b4b3aa4ec45a157f75067f9e48 [file] [log] [blame]
Bram Moolenaar35c54e52005-05-20 21:25:31 +00001" Vim syntax file
Bram Moolenaar437df8f2006-04-27 21:47:44 +00002" Language: ESTEREL
3" Maintainer: Maurizio Tranchero <maurizio.tranchero@polito.it> - <maurizio.tranchero@gmail.com>
4" Credits: Luca Necchi <luca.necchi@polito.it>
5" First Release: Tue May 17 23:49:39 CEST 2005
6" Last Change: Sat Apr 22 14:56:41 CEST 2006
7" Version: 0.5
Bram Moolenaar35c54e52005-05-20 21:25:31 +00008
9" For version 5.x: Clear all syntax items
10" For version 6.x: Quit when a syntax file was already loaded
11if version < 600
12 syntax clear
13elseif exists("b:current_syntax")
14 finish
15endif
16
17" case is significant
18syn case ignore
19" Esterel Regions
Bram Moolenaar437df8f2006-04-27 21:47:44 +000020syn region esterelModule start=/module/ end=/end module/ contains=ALLBUT,esterelModule
21syn region esterelLoop start=/loop/ end=/end loop/ contains=ALLBUT,esterelModule
22syn region esterelAbort start=/abort/ end=/when/ contains=ALLBUT,esterelModule
23syn region esterelAbort start=/weak abort/ end=/when/ contains=ALLBUT,esterelModule
24syn region esterelEvery start=/every/ end=/end every/ contains=ALLBUT,esterelModule
25syn region esterelIf start=/if/ end=/end if/ contains=ALLBUT,esterelModule
26syn region esterelConcurrent transparent start=/\[/ end=/\]/ contains=ALLBUT,esterelModule
27syn region esterelIfThen start=/if/ end=/then/ oneline
Bram Moolenaar35c54e52005-05-20 21:25:31 +000028" Esterel Keywords
Bram Moolenaar437df8f2006-04-27 21:47:44 +000029syn keyword esterelIO input output inputoutput constant
30syn keyword esterelBoolean and or not xor xnor nor nand
31syn keyword esterelExpressions mod
32syn keyword esterelStatement nothing halt
33syn keyword esterelStatement module signal sensor end
Bram Moolenaar35c54e52005-05-20 21:25:31 +000034syn keyword esterelStatement every do loop abort weak
35syn keyword esterelStatement emit present await
Bram Moolenaar437df8f2006-04-27 21:47:44 +000036syn keyword esterelStatement pause when immediate
37syn keyword esterelStatement if then else case
38syn keyword esterelStatement var in run suspend
39syn keyword esterelStatement repeat times combine with
40syn keyword esterelStatement assert sustain
41" check what it is the following
42syn keyword esterelStatement relation
43syn keyword esterelFunctions function procedure task
44syn keyword esterelSysCall call trap exit exec
Bram Moolenaar35c54e52005-05-20 21:25:31 +000045" Esterel Types
46syn keyword esterelType integer float bolean
47" Esterel Comment
48syn match esterelComment "%.*$"
49" Operators and special characters
50syn match esterelSpecial ":"
Bram Moolenaar437df8f2006-04-27 21:47:44 +000051syn match esterelSpecial "<="
52syn match esterelSpecial ">="
Bram Moolenaar35c54e52005-05-20 21:25:31 +000053syn match esterelSpecial ";"
54syn match esterelOperator "\["
55syn match esterelOperator "\]"
56syn match esterelOperator ":="
57syn match esterelStatement "\<\(if\|else\)\>"
58syn match esterelNone "\<else\s\+if\>$"
59syn match esterelNone "\<else\s\+if\>\s"
60
61" Class Linking
62if version >= 508 || !exists("did_esterel_syntax_inits")
63 if version < 508
64 let did_esterel_syntax_inits = 1
65 command -nargs=+ HiLink hi link <args>
66 else
67 command -nargs=+ HiLink hi def link <args>
68 endif
69
Bram Moolenaar437df8f2006-04-27 21:47:44 +000070 HiLink esterelStatement Statement
71 HiLink esterelType Type
72 HiLink esterelComment Comment
73 HiLink esterelBoolean Number
74 HiLink esterelExpressions Number
75 HiLink esterelIO String
76 HiLink esterelOperator Type
77 HiLink esterelSysCall Type
78 HiLink esterelFunctions Type
79 HiLink esterelSpecial Special
Bram Moolenaar35c54e52005-05-20 21:25:31 +000080
81 delcommand HiLink
82endif
83
84let b:current_syntax = "esterel"