319 lines
7.2 KiB
JavaScript
319 lines
7.2 KiB
JavaScript
/*!-----------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Version: 0.36.1(6c56744c3419458f0dd48864520b759d1a3a1ca8)
|
|
* Released under the MIT license
|
|
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
|
|
*-----------------------------------------------------------------------------*/
|
|
|
|
// src/basic-languages/swift/swift.ts
|
|
var 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: "`" }
|
|
]
|
|
};
|
|
var language = {
|
|
defaultToken: "",
|
|
tokenPostfix: ".swift",
|
|
identifier: /[a-zA-Z_][\w$]*/,
|
|
attributes: [
|
|
"@GKInspectable",
|
|
"@IBAction",
|
|
"@IBDesignable",
|
|
"@IBInspectable",
|
|
"@IBOutlet",
|
|
"@IBSegueAction",
|
|
"@NSApplicationMain",
|
|
"@NSCopying",
|
|
"@NSManaged",
|
|
"@Sendable",
|
|
"@UIApplicationMain",
|
|
"@autoclosure",
|
|
"@actorIndependent",
|
|
"@asyncHandler",
|
|
"@available",
|
|
"@convention",
|
|
"@derivative",
|
|
"@differentiable",
|
|
"@discardableResult",
|
|
"@dynamicCallable",
|
|
"@dynamicMemberLookup",
|
|
"@escaping",
|
|
"@frozen",
|
|
"@globalActor",
|
|
"@inlinable",
|
|
"@inline",
|
|
"@main",
|
|
"@noDerivative",
|
|
"@nonobjc",
|
|
"@noreturn",
|
|
"@objc",
|
|
"@objcMembers",
|
|
"@preconcurrency",
|
|
"@propertyWrapper",
|
|
"@requires_stored_property_inits",
|
|
"@resultBuilder",
|
|
"@testable",
|
|
"@unchecked",
|
|
"@unknown",
|
|
"@usableFromInline",
|
|
"@warn_unqualified_access"
|
|
],
|
|
accessmodifiers: ["open", "public", "internal", "fileprivate", "private"],
|
|
keywords: [
|
|
"#available",
|
|
"#colorLiteral",
|
|
"#column",
|
|
"#dsohandle",
|
|
"#else",
|
|
"#elseif",
|
|
"#endif",
|
|
"#error",
|
|
"#file",
|
|
"#fileID",
|
|
"#fileLiteral",
|
|
"#filePath",
|
|
"#function",
|
|
"#if",
|
|
"#imageLiteral",
|
|
"#keyPath",
|
|
"#line",
|
|
"#selector",
|
|
"#sourceLocation",
|
|
"#warning",
|
|
"Any",
|
|
"Protocol",
|
|
"Self",
|
|
"Type",
|
|
"actor",
|
|
"as",
|
|
"assignment",
|
|
"associatedtype",
|
|
"associativity",
|
|
"async",
|
|
"await",
|
|
"break",
|
|
"case",
|
|
"catch",
|
|
"class",
|
|
"continue",
|
|
"convenience",
|
|
"default",
|
|
"defer",
|
|
"deinit",
|
|
"didSet",
|
|
"do",
|
|
"dynamic",
|
|
"dynamicType",
|
|
"else",
|
|
"enum",
|
|
"extension",
|
|
"fallthrough",
|
|
"false",
|
|
"fileprivate",
|
|
"final",
|
|
"for",
|
|
"func",
|
|
"get",
|
|
"guard",
|
|
"higherThan",
|
|
"if",
|
|
"import",
|
|
"in",
|
|
"indirect",
|
|
"infix",
|
|
"init",
|
|
"inout",
|
|
"internal",
|
|
"is",
|
|
"isolated",
|
|
"lazy",
|
|
"left",
|
|
"let",
|
|
"lowerThan",
|
|
"mutating",
|
|
"nil",
|
|
"none",
|
|
"nonisolated",
|
|
"nonmutating",
|
|
"open",
|
|
"operator",
|
|
"optional",
|
|
"override",
|
|
"postfix",
|
|
"precedence",
|
|
"precedencegroup",
|
|
"prefix",
|
|
"private",
|
|
"protocol",
|
|
"public",
|
|
"repeat",
|
|
"required",
|
|
"rethrows",
|
|
"return",
|
|
"right",
|
|
"safe",
|
|
"self",
|
|
"set",
|
|
"some",
|
|
"static",
|
|
"struct",
|
|
"subscript",
|
|
"super",
|
|
"switch",
|
|
"throw",
|
|
"throws",
|
|
"true",
|
|
"try",
|
|
"typealias",
|
|
"unowned",
|
|
"unsafe",
|
|
"var",
|
|
"weak",
|
|
"where",
|
|
"while",
|
|
"willSet",
|
|
"__consuming",
|
|
"__owned"
|
|
],
|
|
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: "@whitespace" },
|
|
{ include: "@comment" },
|
|
{ include: "@attribute" },
|
|
{ include: "@literal" },
|
|
{ include: "@keyword" },
|
|
{ include: "@invokedmethod" },
|
|
{ include: "@symbol" }
|
|
],
|
|
whitespace: [
|
|
[/\s+/, "white"],
|
|
[/"""/, "string.quote", "@endDblDocString"]
|
|
],
|
|
endDblDocString: [
|
|
[/[^"]+/, "string"],
|
|
[/\\"/, "string"],
|
|
[/"""/, "string.quote", "@popall"],
|
|
[/"/, "string"]
|
|
],
|
|
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": ""
|
|
}
|
|
}
|
|
]
|
|
]
|
|
}
|
|
};
|
|
export {
|
|
conf,
|
|
language
|
|
};
|
|
/*!---------------------------------------------------------------------------------------------
|
|
* Copyright (C) David Owens II, owensd.io. All rights reserved.
|
|
*--------------------------------------------------------------------------------------------*/
|