blob: 965afc35b1479407b2b1b4dc190dbf46eaef9446 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: bc - An arbitrary precision calculator language
3" Maintainer: Vladimir Scholtz <vlado@gjh.sk>
Bram Moolenaarc8734422012-06-01 22:38:45 +02004" Last change: 2012 Jun 01
5" (Dominique Pelle added @Spell)
Bram Moolenaar071d4272004-06-13 20:20:40 +00006" 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
Bram Moolenaarc8734422012-06-01 22:38:45 +020035 syn match bcString "\"[^"]*\"" contains=@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +000036
37" Number
38syn match bcNumber "[0-9]\+"
39
40" Comment
Bram Moolenaarc8734422012-06-01 22:38:45 +020041syn match bcComment "\#.*" contains=@Spell
42syn region bcComment start="/\*" end="\*/" contains=@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +000043
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