xref: /vim-8.2.3635/runtime/syntax/asm.vim (revision 00a927d6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	GNU Assembler
3555cdc2fSBram Moolenaar" Maintainer:	Erik Wognsen <[email protected]>
4555cdc2fSBram Moolenaar"		Previous maintainer:
5555cdc2fSBram Moolenaar"		Kevin Dahlhausen <[email protected]>
6*00a927d6SBram Moolenaar" Last Change:	2010 Apr 18
7*00a927d6SBram Moolenaar
8*00a927d6SBram Moolenaar" Thanks to Ori Avtalion for feedback on the comment markers!
9071d4279SBram Moolenaar
10071d4279SBram Moolenaar" For version 5.x: Clear all syntax items
11555cdc2fSBram Moolenaar" For version 6.0 and later: Quit when a syntax file was already loaded
12071d4279SBram Moolenaarif version < 600
13071d4279SBram Moolenaar  syntax clear
14071d4279SBram Moolenaarelseif exists("b:current_syntax")
15071d4279SBram Moolenaar  finish
16071d4279SBram Moolenaarendif
17071d4279SBram Moolenaar
18071d4279SBram Moolenaarsyn case ignore
19071d4279SBram Moolenaar
20071d4279SBram Moolenaar" storage types
21071d4279SBram Moolenaarsyn match asmType "\.long"
22071d4279SBram Moolenaarsyn match asmType "\.ascii"
23071d4279SBram Moolenaarsyn match asmType "\.asciz"
24071d4279SBram Moolenaarsyn match asmType "\.byte"
25071d4279SBram Moolenaarsyn match asmType "\.double"
26071d4279SBram Moolenaarsyn match asmType "\.float"
27071d4279SBram Moolenaarsyn match asmType "\.hword"
28071d4279SBram Moolenaarsyn match asmType "\.int"
29071d4279SBram Moolenaarsyn match asmType "\.octa"
30071d4279SBram Moolenaarsyn match asmType "\.quad"
31071d4279SBram Moolenaarsyn match asmType "\.short"
32071d4279SBram Moolenaarsyn match asmType "\.single"
33071d4279SBram Moolenaarsyn match asmType "\.space"
34071d4279SBram Moolenaarsyn match asmType "\.string"
35071d4279SBram Moolenaarsyn match asmType "\.word"
36071d4279SBram Moolenaar
37071d4279SBram Moolenaarsyn match asmLabel		"[a-z_][a-z0-9_]*:"he=e-1
38071d4279SBram Moolenaarsyn match asmIdentifier		"[a-z_][a-z0-9_]*"
39071d4279SBram Moolenaar
40071d4279SBram Moolenaar" Various #'s as defined by GAS ref manual sec 3.6.2.1
41071d4279SBram Moolenaar" Technically, the first decNumber def is actually octal,
42071d4279SBram Moolenaar" since the value of 0-7 octal is the same as 0-7 decimal,
43071d4279SBram Moolenaar" I prefer to map it as decimal:
44071d4279SBram Moolenaarsyn match decNumber		"0\+[1-7]\=[\t\n$,; ]"
45071d4279SBram Moolenaarsyn match decNumber		"[1-9]\d*"
46071d4279SBram Moolenaarsyn match octNumber		"0[0-7][0-7]\+"
47071d4279SBram Moolenaarsyn match hexNumber		"0[xX][0-9a-fA-F]\+"
48071d4279SBram Moolenaarsyn match binNumber		"0[bB][0-1]*"
49071d4279SBram Moolenaar
50*00a927d6SBram Moolenaarsyn keyword asmTodo		contained TODO
51*00a927d6SBram Moolenaar
52*00a927d6SBram Moolenaar" GAS supports various comment markers as described here:
53*00a927d6SBram Moolenaar" http://sourceware.org/binutils/docs-2.19/as/Comments.html
54*00a927d6SBram Moolenaar" I have commented out the ARM comment marker "@" by default as I think more
55*00a927d6SBram Moolenaar" people are using "@" with the .type directive. See
56*00a927d6SBram Moolenaar" http://sourceware.org/binutils/docs-2.19/as/Type.html
57*00a927d6SBram Moolenaarsyn region asmComment		start="/\*" end="\*/" contains=asmTodo
58*00a927d6SBram Moolenaarsyn match asmComment		"[#;!|].*" contains=asmTodo
59*00a927d6SBram Moolenaar" syn match asmComment		"@.*" contains=asmTodo
60071d4279SBram Moolenaar
61071d4279SBram Moolenaarsyn match asmInclude		"\.include"
62071d4279SBram Moolenaarsyn match asmCond		"\.if"
63071d4279SBram Moolenaarsyn match asmCond		"\.else"
64071d4279SBram Moolenaarsyn match asmCond		"\.endif"
65071d4279SBram Moolenaarsyn match asmMacro		"\.macro"
66071d4279SBram Moolenaarsyn match asmMacro		"\.endm"
67071d4279SBram Moolenaar
68071d4279SBram Moolenaarsyn match asmDirective		"\.[a-z][a-z]\+"
69071d4279SBram Moolenaar
70071d4279SBram Moolenaar
71071d4279SBram Moolenaarsyn case match
72071d4279SBram Moolenaar
73071d4279SBram Moolenaar" Define the default highlighting.
74071d4279SBram Moolenaar" For version 5.7 and earlier: only when not done already
75071d4279SBram Moolenaar" For version 5.8 and later: only when an item doesn't have highlighting yet
76071d4279SBram Moolenaarif version >= 508 || !exists("did_asm_syntax_inits")
77071d4279SBram Moolenaar  if version < 508
78071d4279SBram Moolenaar    let did_asm_syntax_inits = 1
79071d4279SBram Moolenaar    command -nargs=+ HiLink hi link <args>
80071d4279SBram Moolenaar  else
81071d4279SBram Moolenaar    command -nargs=+ HiLink hi def link <args>
82071d4279SBram Moolenaar  endif
83071d4279SBram Moolenaar
84071d4279SBram Moolenaar  " The default methods for highlighting.  Can be overridden later
85071d4279SBram Moolenaar  HiLink asmSection	Special
86071d4279SBram Moolenaar  HiLink asmLabel	Label
87071d4279SBram Moolenaar  HiLink asmComment	Comment
88*00a927d6SBram Moolenaar  HiLink asmTodo	Todo
89071d4279SBram Moolenaar  HiLink asmDirective	Statement
90071d4279SBram Moolenaar
91071d4279SBram Moolenaar  HiLink asmInclude	Include
92071d4279SBram Moolenaar  HiLink asmCond	PreCondit
93071d4279SBram Moolenaar  HiLink asmMacro	Macro
94071d4279SBram Moolenaar
95071d4279SBram Moolenaar  HiLink hexNumber	Number
96071d4279SBram Moolenaar  HiLink decNumber	Number
97071d4279SBram Moolenaar  HiLink octNumber	Number
98071d4279SBram Moolenaar  HiLink binNumber	Number
99071d4279SBram Moolenaar
100071d4279SBram Moolenaar  HiLink asmIdentifier Identifier
101071d4279SBram Moolenaar  HiLink asmType	Type
102071d4279SBram Moolenaar
103071d4279SBram Moolenaar  delcommand HiLink
104071d4279SBram Moolenaarendif
105071d4279SBram Moolenaar
106071d4279SBram Moolenaarlet b:current_syntax = "asm"
107071d4279SBram Moolenaar
108071d4279SBram Moolenaar" vim: ts=8
109