-
Notifications
You must be signed in to change notification settings - Fork 1
/
MAPListing.sublime-syntax
154 lines (110 loc) · 2.8 KB
/
MAPListing.sublime-syntax
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
%YAML 1.2
---
# Generic GNU MAP Sublime Text 3 syntax
# By Dean Camera, dean [at] fourwalledcubicle [dot] com
file_extensions:
- map
scope: source.maplisting
variables:
# Hex digit, case-insensitive
hex_digit: '[0-9a-fA-F]'
hex_constant: '\b0x{{hex_digit}}+\b'
contexts:
#
# Main Section
#
main:
- match: '^Archive member included.*$'
scope: keyword.gasmap
push: archive_section
- match: '^Allocating common symbols.*$'
scope: keyword.gasmap
push: common_symbols_section
- match: '^Discarded input sections.*$'
scope: keyword.gasmap
push: discarded_input_section
- match: '^Memory Configuration.*$'
scope: keyword.gasmap
push: memory_configuration_section
- match: '^Linker script and memory map.*$'
scope: keyword.gasmap
push: memory_map_section
- match: '^Cross Reference Table.*$'
scope: keyword.gasmap
push: cross_reference_section
#
# Archive Section
#
archive_section:
- meta_scope: archive.section.gasmap
- include: main
- match: '^'
push: archive_section_filepath
archive_section_filepath:
- meta_scope: string.gasmap
- match: '\((?!.*\()'
push: archive_section_symbolname
- match: '$'
pop: true
archive_section_symbolname:
- meta_scope: entity.name.gasmap
- match: '\)'
pop: true
#
# Common Symbols Section
#
common_symbols_section:
- meta_scope: common-symbols.section.gasmap
- include: main
- match: '{{hex_constant}}'
scope: constant.numeric.gasmap
#
# Memory Configuration Section
#
memory_configuration_section:
- meta_scope: memory_configuration.section.gasmap
- include: main
- include: common_symbols_section
#
# Discarded Input Section
#
discarded_input_section:
- meta_scope: discarded-input.section.gasmap
- include: main
- include: memory_map_section
#
# Memory Map Section
#
memory_map_section:
- meta_scope: memory-map.section.gasmap
- include: main
- match: 'Address of section.*'
scope: comment.gasmap
- match: '^ *(SORT|LOAD|OUTPUT|START GROUP|END GROUP)'
scope: keyword
push: symbol_entry_details
- match: '^ *(?!{{hex_constant}})'
push: symbol_entry
symbol_entry:
- meta_scope: entity.name.gasmap
- match: '\('
push: symbol_entry_group_details
- match: ' '
push: symbol_entry_details
- match: '$'
pop: true
symbol_entry_group_details:
- match: '\)'
pop: true
symbol_entry_details:
- meta_scope: string.gasmap
- match: '{{hex_constant}}'
scope: constant.numeric.gasmap
- match: '$'
pop: true
#
# Cross Reference Section
#
cross_reference_section:
- meta_scope: discarded-input.section.gasmap
- include: main