blob: d853e75208f25b4e2e51221fdb19f78641d6a030 [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>
Bram Moolenaar446cb832008-06-24 21:56:24 +00004" Credits: Luca Necchi <luca.necchi@polito.it>, Nikos Andrikos <nick.andrik@gmail.com>
Bram Moolenaar437df8f2006-04-27 21:47:44 +00005" First Release: Tue May 17 23:49:39 CEST 2005
Bram Moolenaar446cb832008-06-24 21:56:24 +00006" Last Change: Tue May 6 13:29:56 CEST 2008
7" Version: 0.8
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
Bram Moolenaar446cb832008-06-24 21:56:24 +000031syn keyword esterelExpressions mod pre
Bram Moolenaar437df8f2006-04-27 21:47:44 +000032syn 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
Bram Moolenaar446cb832008-06-24 21:56:24 +000046syn keyword esterelType integer float bolean
Bram Moolenaar35c54e52005-05-20 21:25:31 +000047" Esterel Comment
Bram Moolenaar446cb832008-06-24 21:56:24 +000048syn match esterelComment "%.*$"
Bram Moolenaar35c54e52005-05-20 21:25:31 +000049" Operators and special characters
Bram Moolenaar446cb832008-06-24 21:56:24 +000050syn match esterelSpecial ":"
51syn match esterelSpecial "<="
52syn match esterelSpecial ">="
53syn match esterelSpecial "+"
54syn match esterelSpecial "-"
55syn match esterelSpecial "="
56syn match esterelSpecial ";"
57syn match esterelSpecial "/"
58syn match esterelSpecial "?"
59syn match esterelOperator "\["
60syn match esterelOperator "\]"
61syn match esterelOperator ":="
62syn match esterelOperator "||"
63syn match esterelStatement "\<\(if\|else\)\>"
64syn match esterelNone "\<else\s\+if\>$"
65syn match esterelNone "\<else\s\+if\>\s"
Bram Moolenaar35c54e52005-05-20 21:25:31 +000066
67" Class Linking
68if version >= 508 || !exists("did_esterel_syntax_inits")
69 if version < 508
70 let did_esterel_syntax_inits = 1
71 command -nargs=+ HiLink hi link <args>
72 else
73 command -nargs=+ HiLink hi def link <args>
74 endif
75
Bram Moolenaar437df8f2006-04-27 21:47:44 +000076 HiLink esterelStatement Statement
77 HiLink esterelType Type
78 HiLink esterelComment Comment
79 HiLink esterelBoolean Number
80 HiLink esterelExpressions Number
81 HiLink esterelIO String
82 HiLink esterelOperator Type
83 HiLink esterelSysCall Type
84 HiLink esterelFunctions Type
85 HiLink esterelSpecial Special
Bram Moolenaar35c54e52005-05-20 21:25:31 +000086
87 delcommand HiLink
88endif
89
90let b:current_syntax = "esterel"