/*!-----------------------------------------------------------------------------
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * monaco-languages version: 1.0.4(d2db3faa76b741bf4ee822c403fc355c913bc46d)
 * Released under the MIT license
 * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md
 *-----------------------------------------------------------------------------*/
define("vs/basic-languages/swift/swift", ["require", "exports"], function (e, o) { "use strict"; Object.defineProperty(o, "__esModule", { value: !0 }), o.conf = { comments: { lineComment: "//", blockComment: ["/*", "*/"] }, brackets: [["{", "}"], ["[", "]"], ["(", ")"]], autoClosingPairs: [{ open: "{", close: "}" }, { open: "[", close: "]" }, { open: "(", close: ")" }, { open: '"', close: '"' }, { open: "'", close: "'" }, { open: "`", close: "`" }], surroundingPairs: [{ open: "{", close: "}" }, { open: "[", close: "]" }, { open: "(", close: ")" }, { open: '"', close: '"' }, { open: "'", close: "'" }, { open: "`", close: "`" }] }, o.language = { defaultToken: "", tokenPostfix: ".swift", identifier: /[a-zA-Z_][\w$]*/, attributes: ["@autoclosure", "@noescape", "@noreturn", "@NSApplicationMain", "@NSCopying", "@NSManaged", "@objc", "@UIApplicationMain", "@noreturn", "@availability", "@IBAction", "@IBDesignable", "@IBInspectable", "@IBOutlet"], accessmodifiers: ["public", "private", "internal"], keywords: ["__COLUMN__", "__FILE__", "__FUNCTION__", "__LINE__", "as", "as!", "as?", "associativity", "break", "case", "catch", "class", "continue", "convenience", "default", "deinit", "didSet", "do", "dynamic", "dynamicType", "else", "enum", "extension", "fallthrough", "final", "for", "func", "get", "guard", "if", "import", "in", "infix", "init", "inout", "internal", "is", "lazy", "left", "let", "mutating", "nil", "none", "nonmutating", "operator", "optional", "override", "postfix", "precedence", "prefix", "private", "protocol", "Protocol", "public", "repeat", "required", "return", "right", "self", "Self", "set", "static", "struct", "subscript", "super", "switch", "throw", "throws", "try", "try!", "Type", "typealias", "unowned", "var", "weak", "where", "while", "willSet", "FALSE", "TRUE"], symbols: /[=(){}\[\].,:;@#\_&\-<>`?!+*\\\/]/, operatorstart: /[\/=\-+!*%<>&|^~?\u00A1-\u00A7\u00A9\u00AB\u00AC\u00AE\u00B0-\u00B1\u00B6\u00BB\u00BF\u00D7\u00F7\u2016-\u2017\u2020-\u2027\u2030-\u203E\u2041-\u2053\u2055-\u205E\u2190-\u23FF\u2500-\u2775\u2794-\u2BFF\u2E00-\u2E7F\u3001-\u3003\u3008-\u3030]/, operatorend: /[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE00-\uFE0F\uFE20-\uFE2F\uE0100-\uE01EF]/, operators: /(@operatorstart)((@operatorstart)|(@operatorend))*/, escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/, tokenizer: { root: [{ include: "@comment" }, { include: "@attribute" }, { include: "@literal" }, { include: "@keyword" }, { include: "@invokedmethod" }, { include: "@symbol" }], symbol: [[/[{}()\[\]]/, "@brackets"], [/[<>](?!@symbols)/, "@brackets"], [/[.]/, "delimiter"], [/@operators/, "operator"], [/@symbols/, "operator"]], comment: [[/\/\/\/.*$/, "comment.doc"], [/\/\*\*/, "comment.doc", "@commentdocbody"], [/\/\/.*$/, "comment"], [/\/\*/, "comment", "@commentbody"]], commentdocbody: [[/\/\*/, "comment", "@commentbody"], [/\*\//, "comment.doc", "@pop"], [/\:[a-zA-Z]+\:/, "comment.doc.param"], [/./, "comment.doc"]], commentbody: [[/\/\*/, "comment", "@commentbody"], [/\*\//, "comment", "@pop"], [/./, "comment"]], attribute: [[/\@@identifier/, { cases: { "@attributes": "keyword.control", "@default": "" } }]], literal: [[/"/, { token: "string.quote", next: "@stringlit" }], [/0[b]([01]_?)+/, "number.binary"], [/0[o]([0-7]_?)+/, "number.octal"], [/0[x]([0-9a-fA-F]_?)+([pP][\-+](\d_?)+)?/, "number.hex"], [/(\d_?)*\.(\d_?)+([eE][\-+]?(\d_?)+)?/, "number.float"], [/(\d_?)+/, "number"]], stringlit: [[/\\\(/, { token: "operator", next: "@interpolatedexpression" }], [/@escapes/, "string"], [/\\./, "string.escape.invalid"], [/"/, { token: "string.quote", next: "@pop" }], [/./, "string"]], interpolatedexpression: [[/\(/, { token: "operator", next: "@interpolatedexpression" }], [/\)/, { token: "operator", next: "@pop" }], { include: "@literal" }, { include: "@keyword" }, { include: "@symbol" }], keyword: [[/`/, { token: "operator", next: "@escapedkeyword" }], [/@identifier/, { cases: { "@keywords": "keyword", "[A-Z][a-zA-Z0-9$]*": "type.identifier", "@default": "identifier" } }]], escapedkeyword: [[/`/, { token: "operator", next: "@pop" }], [/./, "identifier"]], invokedmethod: [[/([.])(@identifier)/, { cases: { $2: ["delimeter", "type.identifier"], "@default": "" } }]] } } });