xref: /vim-8.2.3635/runtime/syntax/bc.vim (revision cb03397a)
1" Vim syntax file
2" Language:	bc - An arbitrary precision calculator language
3" Maintainer:	Vladimir Scholtz <[email protected]>
4" Last change:	2012 Jun 01
5" 		(Dominique Pelle added @Spell)
6" Available on:	www.gjh.sk/~vlado/bc.vim
7
8" For version 5.x: Clear all syntax items
9" For version 6.x: Quit when a syntax file was already loaded
10if version < 600
11  syntax clear
12elseif exists("b:current_syntax")
13  finish
14endif
15
16syn case ignore
17
18" Keywords
19syn keyword bcKeyword if else while for break continue return limits halt quit
20syn keyword bcKeyword define
21syn keyword bcKeyword length read sqrt print
22
23" Variable
24syn keyword bcType auto
25
26" Constant
27syn keyword bcConstant scale ibase obase last
28syn keyword bcConstant BC_BASE_MAX BC_DIM_MAX BC_SCALE_MAX BC_STRING_MAX
29syn keyword bcConstant BC_ENV_ARGS BC_LINE_LENGTH
30
31" Any other stuff
32syn match bcIdentifier		"[a-z_][a-z0-9_]*"
33
34" String
35 syn match bcString		"\"[^"]*\"" contains=@Spell
36
37" Number
38syn match bcNumber		"[0-9]\+"
39
40" Comment
41syn match bcComment		"\#.*" contains=@Spell
42syn region bcComment		start="/\*" end="\*/" contains=@Spell
43
44" Parent ()
45syn cluster bcAll contains=bcList,bcIdentifier,bcNumber,bcKeyword,bcType,bcConstant,bcString,bcParentError
46syn region bcList		matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=@bcAll
47syn region bcList		matchgroup=Delimiter start="\[" skip="|.\{-}|" matchgroup=Delimiter end="\]" contains=@bcAll
48syn match bcParenError			"]"
49syn match bcParenError			")"
50
51
52
53syn case match
54
55" Define the default highlighting.
56" For version 5.7 and earlier: only when not done already
57" For version 5.8 and later: only when an item doesn't have highlighting yet
58if version >= 508 || !exists("did_bc_syntax_inits")
59  if version < 508
60    let did_bc_syntax_inits = 1
61    command -nargs=+ HiLink hi link <args>
62  else
63    command -nargs=+ HiLink hi def link <args>
64  endif
65
66  HiLink bcKeyword		Statement
67  HiLink bcType		Type
68  HiLink bcConstant		Constant
69  HiLink bcNumber		Number
70  HiLink bcComment		Comment
71  HiLink bcString		String
72  HiLink bcSpecialChar		SpecialChar
73  HiLink bcParenError		Error
74
75  delcommand HiLink
76endif
77
78let b:current_syntax = "bc"
79" vim: ts=8
80