blob: 3b3506d319e0f21146dc8399960dfcdf8758ba37 [file] [log] [blame]
Ben Murdoch097c5b22016-05-18 11:27:45 +01001/*
2 Copyright (c) 2011 Google Inc. All rights reserved.
3 Use of this source code is governed by a BSD-style license that can be
4 found in the LICENSE file.
5
6 gyp.xclangspec
7 GYP language specification for Xcode 3
8
9 There is not much documentation available regarding the format
10 of .xclangspec files. As a starting point, see for instance the
11 outdated documentation at:
12 http://maxao.free.fr/xcode-plugin-interface/specifications.html
13 and the files in:
14 /Developer/Library/PrivateFrameworks/XcodeEdit.framework/Versions/A/Resources/
15
16 Place this file in directory:
17 ~/Library/Application Support/Developer/Shared/Xcode/Specifications/
18*/
19
20(
21
22 {
23 Identifier = "xcode.lang.gyp.keyword";
24 Syntax = {
25 Words = (
26 "and",
27 "or",
28 "<!",
29 "<",
30 );
31 Type = "xcode.syntax.keyword";
32 };
33 },
34
35 {
36 Identifier = "xcode.lang.gyp.target.declarator";
37 Syntax = {
38 Words = (
39 "'target_name'",
40 );
41 Type = "xcode.syntax.identifier.type";
42 };
43 },
44
45 {
46 Identifier = "xcode.lang.gyp.string.singlequote";
47 Syntax = {
48 IncludeRules = (
49 "xcode.lang.string",
50 "xcode.lang.gyp.keyword",
51 "xcode.lang.number",
52 );
53 Start = "'";
54 End = "'";
55 };
56 },
57
58 {
59 Identifier = "xcode.lang.gyp.comma";
60 Syntax = {
61 Words = ( ",", );
62
63 };
64 },
65
66 {
67 Identifier = "xcode.lang.gyp";
68 Description = "GYP Coloring";
69 BasedOn = "xcode.lang.simpleColoring";
70 IncludeInMenu = YES;
71 Name = "GYP";
72 Syntax = {
73 Tokenizer = "xcode.lang.gyp.lexer.toplevel";
74 IncludeRules = (
75 "xcode.lang.gyp.dictionary",
76 );
77 Type = "xcode.syntax.plain";
78 };
79 },
80
81 // The following rule returns tokens to the other rules
82 {
83 Identifier = "xcode.lang.gyp.lexer";
84 Syntax = {
85 IncludeRules = (
86 "xcode.lang.gyp.comment",
87 "xcode.lang.string",
88 'xcode.lang.gyp.targetname.declarator',
89 "xcode.lang.gyp.string.singlequote",
90 "xcode.lang.number",
91 "xcode.lang.gyp.comma",
92 );
93 };
94 },
95
96 {
97 Identifier = "xcode.lang.gyp.lexer.toplevel";
98 Syntax = {
99 IncludeRules = (
100 "xcode.lang.gyp.comment",
101 );
102 };
103 },
104
105 {
106 Identifier = "xcode.lang.gyp.assignment";
107 Syntax = {
108 Tokenizer = "xcode.lang.gyp.lexer";
109 Rules = (
110 "xcode.lang.gyp.assignment.lhs",
111 ":",
112 "xcode.lang.gyp.assignment.rhs",
113 );
114 };
115
116 },
117
118 {
119 Identifier = "xcode.lang.gyp.target.declaration";
120 Syntax = {
121 Tokenizer = "xcode.lang.gyp.lexer";
122 Rules = (
123 "xcode.lang.gyp.target.declarator",
124 ":",
125 "xcode.lang.gyp.target.name",
126 );
127 };
128 },
129
130 {
131 Identifier = "xcode.lang.gyp.target.name";
132 Syntax = {
133 Tokenizer = "xcode.lang.gyp.lexer";
134 Rules = (
135 "xcode.lang.gyp.string.singlequote",
136 );
137 Type = "xcode.syntax.definition.function";
138 };
139 },
140
141 {
142 Identifier = "xcode.lang.gyp.assignment.lhs";
143 Syntax = {
144 Tokenizer = "xcode.lang.gyp.lexer";
145 Rules = (
146 "xcode.lang.gyp.string.singlequote",
147 );
148 Type = "xcode.syntax.identifier.type";
149 };
150 },
151
152 {
153 Identifier = "xcode.lang.gyp.assignment.rhs";
154 Syntax = {
155 Tokenizer = "xcode.lang.gyp.lexer";
156 Rules = (
157 "xcode.lang.gyp.string.singlequote?",
158 "xcode.lang.gyp.array?",
159 "xcode.lang.gyp.dictionary?",
160 "xcode.lang.number?",
161 );
162 };
163 },
164
165 {
166 Identifier = "xcode.lang.gyp.dictionary";
167 Syntax = {
168 Tokenizer = "xcode.lang.gyp.lexer";
169 Start = "{";
170 End = "}";
171 Foldable = YES;
172 Recursive = YES;
173 IncludeRules = (
174 "xcode.lang.gyp.target.declaration",
175 "xcode.lang.gyp.assignment",
176 );
177 };
178 },
179
180 {
181 Identifier = "xcode.lang.gyp.array";
182 Syntax = {
183 Tokenizer = "xcode.lang.gyp.lexer";
184 Start = "[";
185 End = "]";
186 Foldable = YES;
187 Recursive = YES;
188 IncludeRules = (
189 "xcode.lang.gyp.array",
190 "xcode.lang.gyp.dictionary",
191 "xcode.lang.gyp.string.singlequote",
192 );
193 };
194 },
195
196 {
197 Identifier = "xcode.lang.gyp.todo.mark";
198 Syntax = {
199 StartChars = "T";
200 Match = (
201 "^\(TODO\(.*\):[ \t]+.*\)$", // include "TODO: " in the markers list
202 );
203 // This is the order of captures. All of the match strings above need the same order.
204 CaptureTypes = (
205 "xcode.syntax.mark"
206 );
207 Type = "xcode.syntax.comment";
208 };
209 },
210
211 {
212 Identifier = "xcode.lang.gyp.comment";
213 BasedOn = "xcode.lang.comment"; // for text macros
214 Syntax = {
215 Start = "#";
216 End = "\n";
217 IncludeRules = (
218 "xcode.lang.url",
219 "xcode.lang.url.mail",
220 "xcode.lang.comment.mark",
221 "xcode.lang.gyp.todo.mark",
222 );
223 Type = "xcode.syntax.comment";
224 };
225 },
226)