blob: 712a9a59a739c8dba7ecca556e3c278c54ba7238 [file] [log] [blame]
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +00001" Vim syntax file
Misha Brukman5981d782003-06-03 00:56:09 +00002" Language: llvm
Reid Spencer9dce2b32006-03-14 05:54:52 +00003" Maintainer: The LLVM team, http://llvm.org/
Misha Brukman5981d782003-06-03 00:56:09 +00004" Updated: 2003-06-02
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +00005
6if version < 600
7 syntax clear
8elseif exists("b:current_syntax")
9 finish
10endif
11
12syn case match
13
14syn keyword llvmType void bool sbyte ubyte
15syn keyword llvmType short ushort int uint
16syn keyword llvmType long ulong float double
17syn keyword llvmType type label opaque
18
19syn keyword llvmStatement add sub mul div rem
20syn keyword llvmStatement and or xor
21syn keyword llvmStatement setne seteq setlt setgt setle setge
22
Chris Lattner653488d2005-05-06 06:07:34 +000023syn keyword llvmStatement phi tail call cast to select shl shr vaarg vanext
Chris Lattner4c554c52004-10-16 18:24:35 +000024syn keyword llvmStatement ret br switch invoke unwind unreachable
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000025syn keyword llvmStatement malloc alloca free load store getelementptr
26
Misha Brukman6cdff922004-04-28 19:36:08 +000027syn keyword llvmStatement begin end true false zeroinitializer
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000028syn keyword llvmStatement declare global constant const
Chris Lattner828b2782003-04-16 20:25:57 +000029syn keyword llvmStatement internal uninitialized external implementation
Chris Lattner2498d672003-10-10 04:56:26 +000030syn keyword llvmStatement linkonce weak appending
Chris Lattner4c554c52004-10-16 18:24:35 +000031syn keyword llvmStatement undef null to except target endian pointersize deplibs
Chris Lattneraf26d3e2005-05-13 20:40:52 +000032syn keyword llvmStatement big little volatile fastcc coldcc cc
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000033
34"syn match llvmFunction /%[a-zA-Z\$._\-][a-zA-Z\$._\-0-9]*/
Misha Brukman5981d782003-06-03 00:56:09 +000035syn match llvmNumber /\<\d\+\>/
36syn match llvmNumber /\<\d\+\.\d*\>/
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000037
Misha Brukman5981d782003-06-03 00:56:09 +000038syn match llvmComment /;.*$/
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000039syn region llvmString start=/"/ skip=/\\"/ end=/"/
Misha Brukman5981d782003-06-03 00:56:09 +000040syn match llvmLabel /[\-a-zA-Z\$._0-9]*:/
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000041
42
43if version >= 508 || !exists("did_c_syn_inits")
44 if version < 508
45 let did_c_syn_inits = 1
46 command -nargs=+ HiLink hi link <args>
47 else
48 command -nargs=+ HiLink hi def link <args>
49 endif
50
51 HiLink llvmType Type
52 HiLink llvmStatement Statement
53 HiLink llvmNumber Number
54 HiLink llvmComment Comment
55 HiLink llvmString String
56 HiLink llvmLabel Label
57
58 delcommand HiLink
59endif
60
61let b:current_syntax = "llvm"