blob: 8088600fdff5a28a9a8fdc378c657ecdfef9ff68 [file] [log] [blame]
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +00001" Vim syntax file
Misha Brukmand8acf7c2003-06-03 00:56:09 +00002" Language: llvm
3" Maintainer: The LLVM team, http://llvm.cs.uiuc.edu/
4" Updated: 2003-06-02
Nick Hildenbrandt37e690a2002-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 Lattner8988f922004-03-12 05:55:07 +000023syn keyword llvmStatement phi call cast to select shl shr vaarg vanext
Chris Lattner5a02a3e2004-10-16 18:24:35 +000024syn keyword llvmStatement ret br switch invoke unwind unreachable
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000025syn keyword llvmStatement malloc alloca free load store getelementptr
26
Misha Brukman40b4f6e2004-04-28 19:36:08 +000027syn keyword llvmStatement begin end true false zeroinitializer
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000028syn keyword llvmStatement declare global constant const
Chris Lattner1d647ae2003-04-16 20:25:57 +000029syn keyword llvmStatement internal uninitialized external implementation
Chris Lattner9865db12003-10-10 04:56:26 +000030syn keyword llvmStatement linkonce weak appending
Chris Lattner5a02a3e2004-10-16 18:24:35 +000031syn keyword llvmStatement undef null to except target endian pointersize deplibs
Chris Lattnerff610c42003-09-08 18:08:11 +000032syn keyword llvmStatement big little volatile
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000033
34"syn match llvmFunction /%[a-zA-Z\$._\-][a-zA-Z\$._\-0-9]*/
Misha Brukmand8acf7c2003-06-03 00:56:09 +000035syn match llvmNumber /\<\d\+\>/
36syn match llvmNumber /\<\d\+\.\d*\>/
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000037
Misha Brukmand8acf7c2003-06-03 00:56:09 +000038syn match llvmComment /;.*$/
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000039syn region llvmString start=/"/ skip=/\\"/ end=/"/
Misha Brukmand8acf7c2003-06-03 00:56:09 +000040syn match llvmLabel /[\-a-zA-Z\$._0-9]*:/
Nick Hildenbrandt37e690a2002-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"