182 lines
4.5 KiB
JavaScript
Executable File
182 lines
4.5 KiB
JavaScript
Executable File
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
'use strict';
|
|
export var conf = {
|
|
comments: {
|
|
lineComment: '//',
|
|
blockComment: ['/*', '*/'],
|
|
},
|
|
brackets: [
|
|
['{', '}'],
|
|
['[', ']'],
|
|
['(', ')']
|
|
],
|
|
autoClosingPairs: [
|
|
{ open: '{', close: '}' },
|
|
{ open: '[', close: ']' },
|
|
{ open: '(', close: ')' },
|
|
{ open: '"', close: '"' },
|
|
{ open: '\'', close: '\'' },
|
|
],
|
|
surroundingPairs: [
|
|
{ open: '{', close: '}' },
|
|
{ open: '[', close: ']' },
|
|
{ open: '(', close: ')' },
|
|
{ open: '"', close: '"' },
|
|
{ open: '\'', close: '\'' },
|
|
]
|
|
};
|
|
export var language = {
|
|
defaultToken: '',
|
|
tokenPostfix: '.objective-c',
|
|
keywords: [
|
|
'#import',
|
|
'#include',
|
|
'#define',
|
|
'#else',
|
|
'#endif',
|
|
'#if',
|
|
'#ifdef',
|
|
'#ifndef',
|
|
'#ident',
|
|
'#undef',
|
|
'@class',
|
|
'@defs',
|
|
'@dynamic',
|
|
'@encode',
|
|
'@end',
|
|
'@implementation',
|
|
'@interface',
|
|
'@package',
|
|
'@private',
|
|
'@protected',
|
|
'@property',
|
|
'@protocol',
|
|
'@public',
|
|
'@selector',
|
|
'@synthesize',
|
|
'__declspec',
|
|
'assign',
|
|
'auto',
|
|
'BOOL',
|
|
'break',
|
|
'bycopy',
|
|
'byref',
|
|
'case',
|
|
'char',
|
|
'Class',
|
|
'const',
|
|
'copy',
|
|
'continue',
|
|
'default',
|
|
'do',
|
|
'double',
|
|
'else',
|
|
'enum',
|
|
'extern',
|
|
'FALSE',
|
|
'false',
|
|
'float',
|
|
'for',
|
|
'goto',
|
|
'if',
|
|
'in',
|
|
'int',
|
|
'id',
|
|
'inout',
|
|
'IMP',
|
|
'long',
|
|
'nil',
|
|
'nonatomic',
|
|
'NULL',
|
|
'oneway',
|
|
'out',
|
|
'private',
|
|
'public',
|
|
'protected',
|
|
'readwrite',
|
|
'readonly',
|
|
'register',
|
|
'return',
|
|
'SEL',
|
|
'self',
|
|
'short',
|
|
'signed',
|
|
'sizeof',
|
|
'static',
|
|
'struct',
|
|
'super',
|
|
'switch',
|
|
'typedef',
|
|
'TRUE',
|
|
'true',
|
|
'union',
|
|
'unsigned',
|
|
'volatile',
|
|
'void',
|
|
'while',
|
|
],
|
|
decpart: /\d(_?\d)*/,
|
|
decimal: /0|@decpart/,
|
|
tokenizer: {
|
|
root: [
|
|
{ include: '@comments' },
|
|
{ include: '@whitespace' },
|
|
{ include: '@numbers' },
|
|
{ include: '@strings' },
|
|
[/[,:;]/, 'delimiter'],
|
|
[/[{}\[\]()<>]/, '@brackets'],
|
|
[/[a-zA-Z@#]\w*/, {
|
|
cases: {
|
|
'@keywords': 'keyword',
|
|
'@default': 'identifier'
|
|
}
|
|
}],
|
|
[/[<>=\\+\\-\\*\\/\\^\\|\\~,]|and\\b|or\\b|not\\b]/, 'operator'],
|
|
],
|
|
whitespace: [
|
|
[/\s+/, 'white'],
|
|
],
|
|
comments: [
|
|
['\\/\\*', 'comment', '@comment'],
|
|
['\\/\\/+.*', 'comment'],
|
|
],
|
|
comment: [
|
|
['\\*\\/', 'comment', '@pop'],
|
|
['.', 'comment',],
|
|
],
|
|
numbers: [
|
|
[/0[xX][0-9a-fA-F]*(_?[0-9a-fA-F])*/, 'number.hex'],
|
|
[/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)[fF]*/, {
|
|
cases: {
|
|
'(\\d)*': 'number',
|
|
'$0': 'number.float'
|
|
}
|
|
}]
|
|
],
|
|
// Recognize strings, including those broken across lines with \ (but not without)
|
|
strings: [
|
|
[/'$/, 'string.escape', '@popall'],
|
|
[/'/, 'string.escape', '@stringBody'],
|
|
[/"$/, 'string.escape', '@popall'],
|
|
[/"/, 'string.escape', '@dblStringBody']
|
|
],
|
|
stringBody: [
|
|
[/[^\\']+$/, 'string', '@popall'],
|
|
[/[^\\']+/, 'string'],
|
|
[/\\./, 'string'],
|
|
[/'/, 'string.escape', '@popall'],
|
|
[/\\$/, 'string']
|
|
],
|
|
dblStringBody: [
|
|
[/[^\\"]+$/, 'string', '@popall'],
|
|
[/[^\\"]+/, 'string'],
|
|
[/\\./, 'string'],
|
|
[/"/, 'string.escape', '@popall'],
|
|
[/\\$/, 'string']
|
|
]
|
|
}
|
|
};
|