xref: /vim-8.2.3635/runtime/syntax/b.vim (revision 89bcfda6)
1" Vim syntax file
2" Language:	B (A Formal Method with refinement and mathematical proof)
3" Maintainer:	Mathieu Clabaut <[email protected]>
4" Contributor:  Csaba Hoch
5" LastChange:	8 Dec 2007
6
7
8" quit when a syntax file was already loaded
9if exists("b:current_syntax")
10   finish
11endif
12
13
14" A bunch of useful B keywords
15syn keyword bStatement	        MACHINE MODEL SEES OPERATIONS INCLUDES DEFINITIONS CONSTRAINTS CONSTANTS VARIABLES CONCRETE_CONSTANTS CONCRETE_VARIABLES ABSTRACT_CONSTANTS ABSTRACT_VARIABLES HIDDEN_CONSTANTS HIDDEN_VARIABLES ASSERT ASSERTIONS  EXTENDS IMPLEMENTATION REFINEMENT IMPORTS USES INITIALISATION INVARIANT PROMOTES PROPERTIES REFINES SETS VALUES VARIANT VISIBLE_CONSTANTS VISIBLE_VARIABLES THEORY XLS THEOREMS LOCAL_OPERATIONS
16syn keyword bLabel		CASE IN EITHER OR CHOICE DO OF
17syn keyword bConditional	IF ELSE SELECT ELSIF THEN WHEN
18syn keyword bRepeat		WHILE FOR
19syn keyword bOps		bool card conc closure closure1 dom first fnc front not or id inter iseq iseq1 iterate last max min mod perm pred prj1 prj2 ran rel rev seq seq1 size skip succ tail union
20syn keyword bKeywords		LET VAR BE IN BEGIN END  POW POW1 FIN FIN1  PRE  SIGMA STRING UNION IS ANY WHERE
21
22syn keyword bBoolean	TRUE FALSE bfalse btrue
23syn keyword bConstant	PI MAXINT MININT User_Pass PatchProver PatchProverH0 PatchProverB0 FLAT ARI DED SUB RES
24syn keyword bGuard binhyp band bnot bguard bsearch bflat bfresh bguardi bget bgethyp barith bgetresult bresult bgoal bmatch bmodr bnewv  bnum btest bpattern bprintf bwritef bsubfrm  bvrb blvar bcall bappend bclose
25
26syn keyword bLogic	or not
27syn match bLogic	"\(!\|#\|%\|&\|+->>\|+->\|-->>\|->>\|-->\|->\|/:\|/<:\|/<<:\|/=\|/\\\|/|\\\|::\|:\|;:\|<+\|<->\|<--\|<-\|<:\|<<:\|<<|\|<=>\|<|\|==\|=>\|>+>>\|>->\|>+>\|||\||->\)"
28syn match bNothing      /:=/
29
30syn keyword cTodo contained	TODO FIXME XXX
31
32" String and Character constants
33" Highlight special characters (those which have a backslash) differently
34syn match bSpecial contained	"\\[0-7][0-7][0-7]\=\|\\."
35syn region bString		start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=bSpecial
36syn match bCharacter		"'[^\\]'"
37syn match bSpecialCharacter	"'\\.'"
38syn match bSpecialCharacter	"'\\[0-7][0-7]'"
39syn match bSpecialCharacter	"'\\[0-7][0-7][0-7]'"
40
41"catch errors caused by wrong parenthesis
42syn region bParen		transparent start='(' end=')' contains=ALLBUT,bParenError,bIncluded,bSpecial,bTodo,bUserLabel,bBitField
43syn match bParenError		")"
44syn match bInParen contained	"[{}]"
45
46"integer number, or floating point number without a dot and with "f".
47syn case ignore
48syn match bNumber		"\<[0-9]\+\>"
49"syn match bIdentifier	"\<[a-z_][a-z0-9_]*\>"
50syn case match
51
52  syn region bComment		start="/\*" end="\*/" contains=bTodo
53  syn match bComment		"//.*" contains=bTodo
54syntax match bCommentError	"\*/"
55
56syn keyword bType		INT INTEGER BOOL NAT NATURAL NAT1 NATURAL1
57
58syn region bPreCondit	start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=bComment,bString,bCharacter,bNumber,bCommentError
59syn region bIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
60syn match bIncluded contained "<[^>]*>"
61syn match bInclude		"^\s*#\s*include\>\s*["<]" contains=bIncluded
62
63syn region bDefine		start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,bPreCondit,bIncluded,bInclude,bDefine,bInParen
64syn region bPreProc		start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,bPreCondit,bIncluded,bInclude,bDefine,bInParen
65
66syn sync ccomment bComment minlines=10
67
68" Define the default highlighting.
69" Only when an item doesn't have highlighting yet
70
71command -nargs=+ HiLink hi def link <args>
72
73" The default methods for highlighting.  Can be overridden later
74HiLink bLabel	Label
75HiLink bUserLabel	Label
76HiLink bConditional	Conditional
77HiLink bRepeat	Repeat
78HiLink bLogic	Special
79HiLink bCharacter	Character
80HiLink bSpecialCharacter bSpecial
81HiLink bNumber	Number
82HiLink bFloat	Float
83HiLink bOctalError	bError
84HiLink bParenError	bError
85" HiLink bInParen	bError
86HiLink bCommentError	bError
87HiLink bBoolean	Identifier
88HiLink bConstant	Identifier
89HiLink bGuard	Identifier
90HiLink bOperator	Operator
91HiLink bKeywords	Operator
92HiLink bOps		Identifier
93HiLink bStructure	Structure
94HiLink bStorageClass	StorageClass
95HiLink bInclude	Include
96HiLink bPreProc	PreProc
97HiLink bDefine	Macro
98HiLink bIncluded	bString
99HiLink bError	Error
100HiLink bStatement	Statement
101HiLink bPreCondit	PreCondit
102HiLink bType		Type
103HiLink bCommentError	bError
104HiLink bCommentString bString
105HiLink bComment2String bString
106HiLink bCommentSkip	bComment
107HiLink bString	String
108HiLink bComment	Comment
109HiLink bSpecial	SpecialChar
110HiLink bTodo		Todo
111"hi link bIdentifier	Identifier
112delcommand HiLink
113
114let b:current_syntax = "b"
115
116" vim: ts=8
117