2 " Language: bc - An arbitrary precision calculator language
3 " Maintainer: Vladimir Scholtz <vlado@gjh.sk>
4 " Last change: 2012 Jun 01
5 " (Dominique Pelle added @Spell)
6 " Available on: www.gjh.sk/~vlado/bc.vim
8 " For version 5.x: Clear all syntax items
9 " For version 6.x: Quit when a syntax file was already loaded
12 elseif exists("b:current_syntax")
19 syn keyword bcKeyword if else while for break continue return limits halt quit
20 syn keyword bcKeyword define
21 syn keyword bcKeyword length read sqrt print
24 syn keyword bcType auto
27 syn keyword bcConstant scale ibase obase last
28 syn keyword bcConstant BC_BASE_MAX BC_DIM_MAX BC_SCALE_MAX BC_STRING_MAX
29 syn keyword bcConstant BC_ENV_ARGS BC_LINE_LENGTH
32 syn match bcIdentifier "[a-z_][a-z0-9_]*"
35 syn match bcString "\"[^"]*\"" contains=@Spell
38 syn match bcNumber "[0-9]\+"
41 syn match bcComment "\#.*" contains=@Spell
42 syn region bcComment start="/\*" end="\*/" contains=@Spell
45 syn cluster bcAll contains=bcList,bcIdentifier,bcNumber,bcKeyword,bcType,bcConstant,bcString,bcParentError
46 syn region bcList matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=@bcAll
47 syn region bcList matchgroup=Delimiter start="\[" skip="|.\{-}|" matchgroup=Delimiter end="\]" contains=@bcAll
48 syn match bcParenError "]"
49 syn match bcParenError ")"
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
58 if version >= 508 || !exists("did_bc_syntax_inits")
60 let did_bc_syntax_inits = 1
61 command -nargs=+ HiLink hi link <args>
63 command -nargs=+ HiLink hi def link <args>
66 HiLink bcKeyword Statement
68 HiLink bcConstant Constant
69 HiLink bcNumber Number
70 HiLink bcComment Comment
71 HiLink bcString String
72 HiLink bcSpecialChar SpecialChar
73 HiLink bcParenError Error
78 let b:current_syntax = "bc"