text: /*---------------------------------------------------------------------------------------------
   *  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']
              ]
          }
      };
  });
  
  