| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- /*---------------------------------------------------------------------------------------------
- * 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/m3/m3',["require", "exports"], function (require, exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.language = exports.conf = void 0;
- exports.conf = {
- comments: {
- blockComment: ['(*', '*)']
- },
- brackets: [
- ['{', '}'],
- ['[', ']'],
- ['(', ')']
- ],
- autoClosingPairs: [
- { open: '[', close: ']' },
- { open: '{', close: '}' },
- { open: '(', close: ')' },
- { open: '(*', close: '*)' },
- { open: '<*', close: '*>' },
- { open: "'", close: "'", notIn: ['string', 'comment'] },
- { open: '"', close: '"', notIn: ['string', 'comment'] }
- ]
- };
- exports.language = {
- defaultToken: '',
- tokenPostfix: '.m3',
- brackets: [
- { token: 'delimiter.curly', open: '{', close: '}' },
- { token: 'delimiter.parenthesis', open: '(', close: ')' },
- { token: 'delimiter.square', open: '[', close: ']' }
- ],
- keywords: [
- 'AND',
- 'ANY',
- 'ARRAY',
- 'AS',
- 'BEGIN',
- 'BITS',
- 'BRANDED',
- 'BY',
- 'CASE',
- 'CONST',
- 'DIV',
- 'DO',
- 'ELSE',
- 'ELSIF',
- 'END',
- 'EVAL',
- 'EXCEPT',
- 'EXCEPTION',
- 'EXIT',
- 'EXPORTS',
- 'FINALLY',
- 'FOR',
- 'FROM',
- 'GENERIC',
- 'IF',
- 'IMPORT',
- 'IN',
- 'INTERFACE',
- 'LOCK',
- 'LOOP',
- 'METHODS',
- 'MOD',
- 'MODULE',
- 'NOT',
- 'OBJECT',
- 'OF',
- 'OR',
- 'OVERRIDES',
- 'PROCEDURE',
- 'RAISE',
- 'RAISES',
- 'READONLY',
- 'RECORD',
- 'REF',
- 'REPEAT',
- 'RETURN',
- 'REVEAL',
- 'SET',
- 'THEN',
- 'TO',
- 'TRY',
- 'TYPE',
- 'TYPECASE',
- 'UNSAFE',
- 'UNTIL',
- 'UNTRACED',
- 'VALUE',
- 'VAR',
- 'WHILE',
- 'WITH'
- ],
- reservedConstNames: [
- 'ABS',
- 'ADR',
- 'ADRSIZE',
- 'BITSIZE',
- 'BYTESIZE',
- 'CEILING',
- 'DEC',
- 'DISPOSE',
- 'FALSE',
- 'FIRST',
- 'FLOAT',
- 'FLOOR',
- 'INC',
- 'ISTYPE',
- 'LAST',
- 'LOOPHOLE',
- 'MAX',
- 'MIN',
- 'NARROW',
- 'NEW',
- 'NIL',
- 'NUMBER',
- 'ORD',
- 'ROUND',
- 'SUBARRAY',
- 'TRUE',
- 'TRUNC',
- 'TYPECODE',
- 'VAL'
- ],
- reservedTypeNames: [
- 'ADDRESS',
- 'ANY',
- 'BOOLEAN',
- 'CARDINAL',
- 'CHAR',
- 'EXTENDED',
- 'INTEGER',
- 'LONGCARD',
- 'LONGINT',
- 'LONGREAL',
- 'MUTEX',
- 'NULL',
- 'REAL',
- 'REFANY',
- 'ROOT',
- 'TEXT'
- ],
- operators: ['+', '-', '*', '/', '&', '^', '.'],
- relations: ['=', '#', '<', '<=', '>', '>=', '<:', ':'],
- delimiters: ['|', '..', '=>', ',', ';', ':='],
- symbols: /[>=<#.,:;+\-*/&^]+/,
- escapes: /\\(?:[\\fnrt"']|[0-7]{3})/,
- tokenizer: {
- root: [
- // Identifiers and keywords
- [/_\w*/, 'invalid'],
- [
- /[a-zA-Z][a-zA-Z0-9_]*/,
- {
- cases: {
- '@keywords': { token: 'keyword.$0' },
- '@reservedConstNames': { token: 'constant.reserved.$0' },
- '@reservedTypeNames': { token: 'type.reserved.$0' },
- '@default': 'identifier'
- }
- }
- ],
- // Whitespace
- { include: '@whitespace' },
- [/[{}()\[\]]/, '@brackets'],
- // Integer- and real literals
- [/[0-9]+\.[0-9]+(?:[DdEeXx][\+\-]?[0-9]+)?/, 'number.float'],
- [/[0-9]+(?:\_[0-9a-fA-F]+)?L?/, 'number'],
- // Operators, relations, and delimiters
- [
- /@symbols/,
- {
- cases: {
- '@operators': 'operators',
- '@relations': 'operators',
- '@delimiters': 'delimiter',
- '@default': 'invalid'
- }
- }
- ],
- // Character literals
- [/'[^\\']'/, 'string.char'],
- [/(')(@escapes)(')/, ['string.char', 'string.escape', 'string.char']],
- [/'/, 'invalid'],
- // Text literals
- [/"([^"\\]|\\.)*$/, 'invalid'],
- [/"/, 'string.text', '@text']
- ],
- text: [
- [/[^\\"]+/, 'string.text'],
- [/@escapes/, 'string.escape'],
- [/\\./, 'invalid'],
- [/"/, 'string.text', '@pop']
- ],
- comment: [
- [/\(\*/, 'comment', '@push'],
- [/\*\)/, 'comment', '@pop'],
- [/./, 'comment']
- ],
- pragma: [
- [/<\*/, 'keyword.pragma', '@push'],
- [/\*>/, 'keyword.pragma', '@pop'],
- [/./, 'keyword.pragma']
- ],
- whitespace: [
- [/[ \t\r\n]+/, 'white'],
- [/\(\*/, 'comment', '@comment'],
- [/<\*/, 'keyword.pragma', '@pragma']
- ]
- }
- };
- });
|