| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 | /*	Copyright (c) 2011 Google Inc. All rights reserved.	Use of this source code is governed by a BSD-style license that can be	found in the LICENSE file.		gyp.xclangspec	GYP language specification for Xcode 3	There is not much documentation available regarding the format	of .xclangspec files. As a starting point, see for instance the	outdated documentation at:	http://maxao.free.fr/xcode-plugin-interface/specifications.html	and the files in:	/Developer/Library/PrivateFrameworks/XcodeEdit.framework/Versions/A/Resources/	Place this file in directory:	~/Library/Application Support/Developer/Shared/Xcode/Specifications/*/(    {        Identifier = "xcode.lang.gyp.keyword";        Syntax = {            Words = (                "and",                "or",                "<!",                "<",             );            Type = "xcode.syntax.keyword";        };    },    {        Identifier = "xcode.lang.gyp.target.declarator";        Syntax = {        	Words = (        		"'target_name'",        	);            Type = "xcode.syntax.identifier.type";        };    },	{		Identifier = "xcode.lang.gyp.string.singlequote";		Syntax = {			IncludeRules = (				"xcode.lang.string",				"xcode.lang.gyp.keyword",				"xcode.lang.number",			);			Start = "'";			End = "'";		};	},		{		Identifier = "xcode.lang.gyp.comma";		Syntax = {			Words = ( ",", );					};	},	{		Identifier = "xcode.lang.gyp";		Description = "GYP Coloring";		BasedOn = "xcode.lang.simpleColoring";		IncludeInMenu = YES;		Name = "GYP";		Syntax = {			Tokenizer = "xcode.lang.gyp.lexer.toplevel";			IncludeRules = (				"xcode.lang.gyp.dictionary",			);			Type = "xcode.syntax.plain";		};	},	// The following rule returns tokens to the other rules	{		Identifier = "xcode.lang.gyp.lexer";		Syntax = {			IncludeRules = (				"xcode.lang.gyp.comment",				"xcode.lang.string",				'xcode.lang.gyp.targetname.declarator',				"xcode.lang.gyp.string.singlequote",				"xcode.lang.number",				"xcode.lang.gyp.comma",			);		};	},	{		Identifier = "xcode.lang.gyp.lexer.toplevel";		Syntax = {			IncludeRules = (				"xcode.lang.gyp.comment",			);		};	},	{        Identifier = "xcode.lang.gyp.assignment";        Syntax = {            Tokenizer = "xcode.lang.gyp.lexer";            Rules = (            	"xcode.lang.gyp.assignment.lhs",            	":",                "xcode.lang.gyp.assignment.rhs",            );        };           },        {        Identifier = "xcode.lang.gyp.target.declaration";        Syntax = {            Tokenizer = "xcode.lang.gyp.lexer";            Rules = (                "xcode.lang.gyp.target.declarator",                ":",                "xcode.lang.gyp.target.name",            );        };   },      {        Identifier = "xcode.lang.gyp.target.name";        Syntax = {            Tokenizer = "xcode.lang.gyp.lexer";            Rules = (                "xcode.lang.gyp.string.singlequote",            );        	Type = "xcode.syntax.definition.function";        };    },    	{        Identifier = "xcode.lang.gyp.assignment.lhs";        Syntax = {            Tokenizer = "xcode.lang.gyp.lexer";            Rules = (            	"xcode.lang.gyp.string.singlequote",            );         	Type = "xcode.syntax.identifier.type";        };    },        {        Identifier = "xcode.lang.gyp.assignment.rhs";        Syntax = {        	Tokenizer = "xcode.lang.gyp.lexer";            Rules = (            	"xcode.lang.gyp.string.singlequote?",                "xcode.lang.gyp.array?",				"xcode.lang.gyp.dictionary?",				"xcode.lang.number?",            );        };    },	{		Identifier = "xcode.lang.gyp.dictionary";		Syntax = {			Tokenizer = "xcode.lang.gyp.lexer";			Start = "{";			End = "}";			Foldable = YES;			Recursive = YES;			IncludeRules = (				"xcode.lang.gyp.target.declaration",				"xcode.lang.gyp.assignment",			);		};	},	{		Identifier = "xcode.lang.gyp.array";		Syntax = {			Tokenizer = "xcode.lang.gyp.lexer";			Start = "[";			End = "]";			Foldable = YES;			Recursive = YES;			IncludeRules = (				"xcode.lang.gyp.array",				"xcode.lang.gyp.dictionary",				"xcode.lang.gyp.string.singlequote",			);		};	},    {        Identifier = "xcode.lang.gyp.todo.mark";        Syntax = {            StartChars = "T";            Match = (                "^\(TODO\(.*\):[ \t]+.*\)$",       // include "TODO: " in the markers list            );            // This is the order of captures. All of the match strings above need the same order.            CaptureTypes = (                "xcode.syntax.mark"            );            Type = "xcode.syntax.comment";        };    },	{		Identifier = "xcode.lang.gyp.comment";		BasedOn = "xcode.lang.comment"; // for text macros		Syntax = {			Start = "#";			End = "\n";			IncludeRules = (				"xcode.lang.url",				"xcode.lang.url.mail",				"xcode.lang.comment.mark",				"xcode.lang.gyp.todo.mark",			);			Type = "xcode.syntax.comment";		};	},)
 |