UNPKG

@21epub/epub-thirdparty

Version:
165 lines (163 loc) 5.76 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ define('vs/basic-languages/lexon/lexon',["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.language = exports.conf = void 0; exports.conf = { comments: { lineComment: 'COMMENT' // blockComment: ['COMMENT', '.'], }, brackets: [['(', ')']], autoClosingPairs: [ { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' }, { open: '"', close: '"' }, { open: ':', close: '.' } ], surroundingPairs: [ { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' }, { open: '`', close: '`' }, { open: '"', close: '"' }, { open: "'", close: "'" }, { open: ':', close: '.' } ], folding: { markers: { start: new RegExp('^\\s*(::\\s*|COMMENT\\s+)#region'), end: new RegExp('^\\s*(::\\s*|COMMENT\\s+)#endregion') } } }; exports.language = { // Set defaultToken to invalid to see what you do not tokenize yet // defaultToken: 'invalid', tokenPostfix: '.lexon', ignoreCase: true, keywords: [ 'lexon', 'lex', 'clause', 'terms', 'contracts', 'may', 'pay', 'pays', 'appoints', 'into', 'to' ], typeKeywords: ['amount', 'person', 'key', 'time', 'date', 'asset', 'text'], operators: [ 'less', 'greater', 'equal', 'le', 'gt', 'or', 'and', 'add', 'added', 'subtract', 'subtracted', 'multiply', 'multiplied', 'times', 'divide', 'divided', 'is', 'be', 'certified' ], // we include these common regular expressions symbols: /[=><!~?:&|+\-*\/\^%]+/, // The main tokenizer for our languages tokenizer: { root: [ // comment [/^(\s*)(comment:?(?:\s.*|))$/, ['', 'comment']], // special identifier cases [ /"/, { token: 'identifier.quote', bracket: '@open', next: '@quoted_identifier' } ], [ 'LEX$', { token: 'keyword', bracket: '@open', next: '@identifier_until_period' } ], ['LEXON', { token: 'keyword', bracket: '@open', next: '@semver' }], [ ':', { token: 'delimiter', bracket: '@open', next: '@identifier_until_period' } ], // identifiers and keywords [ /[a-z_$][\w$]*/, { cases: { '@operators': 'operator', '@typeKeywords': 'keyword.type', '@keywords': 'keyword', '@default': 'identifier' } } ], // whitespace { include: '@whitespace' }, // delimiters and operators [/[{}()\[\]]/, '@brackets'], [/[<>](?!@symbols)/, '@brackets'], [/@symbols/, 'delimiter'], // numbers [/\d*\.\d*\.\d*/, 'number.semver'], [/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'], [/0[xX][0-9a-fA-F]+/, 'number.hex'], [/\d+/, 'number'], // delimiter: after number because of .\d floats [/[;,.]/, 'delimiter'] ], quoted_identifier: [ [/[^\\"]+/, 'identifier'], [/"/, { token: 'identifier.quote', bracket: '@close', next: '@pop' }] ], space_identifier_until_period: [ [':', 'delimiter'], [' ', { token: 'white', next: '@identifier_rest' }] ], identifier_until_period: [ { include: '@whitespace' }, [':', { token: 'delimiter', next: '@identifier_rest' }], [/[^\\.]+/, 'identifier'], [/\./, { token: 'delimiter', bracket: '@close', next: '@pop' }] ], identifier_rest: [ [/[^\\.]+/, 'identifier'], [/\./, { token: 'delimiter', bracket: '@close', next: '@pop' }] ], semver: [ { include: '@whitespace' }, [':', 'delimiter'], [/\d*\.\d*\.\d*/, { token: 'number.semver', bracket: '@close', next: '@pop' }] ], whitespace: [[/[ \t\r\n]+/, 'white']] } }; });