forked from giom/ultraviolet
-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
d.syntax
142 lines (142 loc) · 5.75 KB
/
d.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
---
name: D
fileTypes:
- d
firstLineMatch: ^#!.*\bdmd\b.
scopeName: source.d
repository:
string_escaped_char:
patterns:
- name: constant.character.escape.c
match: \\(\\|[abefnprtv'"?]|[0-3]\d{,2}|[4-7]\d?|x[a-zA-Z0-9]+)
- name: invalid.illegal.unknown-escape.c
match: \\.
string_placeholder:
patterns:
- name: constant.other.placeholder.c
match: "(?x)%\n\
\t\t\t\t\t\t(\\d+\\$)? # field (argument #)\n\
\t\t\t\t\t\t[#0\\- +']* # flags\n\
\t\t\t\t\t\t[,;:_]? # separator character (AltiVec)\n\
\t\t\t\t\t\t((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width\n\
\t\t\t\t\t\t(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision\n\
\t\t\t\t\t\t(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\n\
\t\t\t\t\t\t[diouxXDOUeEfFgGaACcSspn%] # conversion type\n\
\t\t\t\t\t"
- name: invalid.illegal.placeholder.c
match: "%"
comment_nested_block_content:
captures:
"0":
name: punctuation.definition.comment.d
begin: /\+
end: \+/
patterns:
- include: "#comment_nested_block_content"
uuid: F02BBA11-F58F-4E85-8698-FC74E339D6C3
foldingStartMarker: (?x)/\*\*(?!\*)|^(?![^{]*?//|[^{]*?/\*(?!.*?\*/.*?\{)).*?\{\s*($|//|/\*(?!.*?\*/.*\S))
patterns:
- name: keyword.other.external.d
match: \b(import|package|module|extern)\b
- name: keyword.control.conditional.d
match: \b(if|else|switch|iftype)\b
- name: keyword.control.branch.d
match: \b(goto|break|continue)\b
- name: keyword.control.repeat.d
match: \b(while|for|do|foreach)\b
- name: keyword.control.repeat.d
match: \b(while|for|do|foreach)\b
- name: constant.language.boolean.d
match: \b(true|false)\b
- name: constant.language.d
match: \b(__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|null)\b
- name: storage.type.typedef.d
match: \b(alias|typedef)\b
- name: storage.type.structure.d
match: \b(template|interface|class|enum|struct|union)\b
- name: keyword.operator.d
match: \b(new|delete|typeof|typeid|cast|align|is|this|super)\b
- name: keyword.operator.overload.d
match: \b(opNeg|opCom|opPostInc|opPostDec|opCast|opAdd|opSub|opSub_r|opMul|opDiv|opDiv_r|opMod|opMod_r|opAnd|opOr|opXor|opShl|opShl_r|opShr|opShr_r|opUShr|opUShr_r|opCat|opCat_r|opEquals|opEquals|opCmp|opCmp|opCmp|opCmp|opAddAssign|opSubAssign|opMulAssign|opDivAssign|opModAssign|opAndAssign|opOrAssign|opXorAssign|opShlAssign|opShrAssign|opUShrAssign|opCatAssign|opIndex|opIndexAssign|opCall|opSlice|opSliceAssign|opPos|opAdd_r|opMul_r|opAnd_r|opOr_r|opXor_r)\b
- name: storage.type.d
match: \b(ushort|int|uint|long|ulong|float|void|byte|ubyte|double|bit|char|wchar|ucent|cent|short|bool|dchar|real|ireal|ifloat|idouble|creal|cfloat|cdouble)\b
- name: keyword.other.debug.d
match: \b(deprecated|unittest)\b
- name: keyword.control.exception.d
match: \b(throw|try|catch|finally)\b
- name: storage.modifier.d
match: \b(public|protected|private|export)\b
- name: keyword.control.statement.d
match: \b(version|debug|return|with|invariant|body|scope|in|out|inout|asm|mixin|function|delegate)\b
- name: storage.modifier.d
match: \b(auto|static|override|final|const|abstract|volatile|synchronized)\b
- name: keyword.control.pragma.d
match: \b(pragma)\b
- captures:
"1":
name: punctuation.section.embedded.mips
begin: asm[\n]*\s*({)
end: (})
patterns:
- include: source.mips
comment: |-
This rule is broken and never gets called anyhow since asm
is matched above this. If fixed the scopes here should be
redone as well. -msheets
- name: comment.block.nested.d
captures:
"0":
name: punctuation.definition.comment.d
begin: /\+
end: \+/
patterns:
- include: "#comment_nested_block_content"
- name: comment.block.d
captures:
"0":
name: punctuation.definition.comment.d
begin: /\*
end: \*/
- name: comment.line.double-slash.d
begin: (//)
beginCaptures:
"1":
name: punctuation.definition.comment.d
end: $\n?
patterns:
- name: punctuation.separator.continuation.d
match: (?>\\\s*\n)
- name: constant.numeric.c
match: \b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\b
- name: string.quoted.double.c
endCaptures:
"0":
name: punctuation.definition.string.end.d
begin: "\""
beginCaptures:
"0":
name: punctuation.definition.string.begin.d
end: "\""
patterns:
- include: "#string_escaped_char"
- include: "#string_placeholder"
- name: string.quoted.single.c
endCaptures:
"0":
name: punctuation.definition.string.end.d
begin: "'"
beginCaptures:
"0":
name: punctuation.definition.string.begin.d
end: "'"
patterns:
- include: "#string_escaped_char"
- name: support.type.sys-types.c
match: \b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\b
- name: support.type.pthread.c
match: \b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\b
- name: support.type.stdint.c
match: \b(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t)\b
foldingStopMarker: (?<!\*)\*\*/|^\s*\}
keyEquivalent: ^~D
comment: D language