/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*-----------------------------------------------------------------------------*/
var conf = {
	comments: { lineComment: "//" },
	brackets: [
		["{", "}"],
		["[", "]"],
		["(", ")"]
	],
	autoClosingPairs: [
		{
			open: "{",
			close: "}"
		},
		{
			open: "[",
			close: "]"
		},
		{
			open: "(",
			close: ")"
		},
		{
			open: "\"",
			close: "\"",
			notIn: ["string", "comment"]
		}
	],
	surroundingPairs: [
		{
			open: "{",
			close: "}"
		},
		{
			open: "[",
			close: "]"
		},
		{
			open: "(",
			close: ")"
		},
		{
			open: "\"",
			close: "\""
		}
	]
}, language = {
	keywords: /* @__PURE__ */ "namespace.open.import.export.as.operation.function.body.adjoint.newtype.struct.controlled.if.elif.else.repeat.until.fixup.for.in.while.return.fail.within.apply.Adjoint.Controlled.Adj.Ctl.is.self.auto.distribute.invert.intrinsic.let.set.w/.new.not.and.or.use.borrow.using.borrowing.mutable.internal".split("."),
	typeKeywords: [
		"Unit",
		"Int",
		"BigInt",
		"Double",
		"Bool",
		"String",
		"Qubit",
		"Result",
		"Pauli",
		"Range"
	],
	invalidKeywords: /* @__PURE__ */ "abstract.base.bool.break.byte.case.catch.char.checked.class.const.continue.decimal.default.delegate.do.double.enum.event.explicit.extern.finally.fixed.float.foreach.goto.implicit.int.interface.lock.long.null.object.operator.out.override.params.private.protected.public.readonly.ref.sbyte.sealed.short.sizeof.stackalloc.static.string.switch.this.throw.try.typeof.unit.ulong.unchecked.unsafe.ushort.virtual.void.volatile".split("."),
	constants: [
		"true",
		"false",
		"PauliI",
		"PauliX",
		"PauliY",
		"PauliZ",
		"One",
		"Zero"
	],
	builtin: /* @__PURE__ */ "X.Y.Z.H.HY.S.T.SWAP.CNOT.CCNOT.MultiX.R.RFrac.Rx.Ry.Rz.R1.R1Frac.Exp.ExpFrac.Measure.M.MultiM.Message.Length.Assert.AssertProb.AssertEqual".split("."),
	operators: /* @__PURE__ */ "and=,<-,->,*,*=,@,!,^,^=,:,::,.,..,==,...,=,=>,>,>=,<,<=,-,-=,!=,or=,%,%=,|,+,+=,?,/,/=,&&&,&&&=,^^^,^^^=,>>>,>>>=,<<<,<<<=,|||,|||=,~~~,_,w/,w/=".split(","),
	namespaceFollows: ["namespace", "open"],
	importsFollows: ["import"],
	symbols: /[=><!~?:&|+\-*\/\^%@._]+/,
	escapes: /\\[\s\S]/,
	tokenizer: {
		root: [
			[/[a-zA-Z_$][\w$]*/, { cases: {
				"@namespaceFollows": {
					token: "keyword.$0",
					next: "@namespace"
				},
				"@importsFollows": {
					token: "keyword.$0",
					next: "@imports"
				},
				"@typeKeywords": "type",
				"@keywords": "keyword",
				"@constants": "constant",
				"@builtin": "keyword",
				"@invalidKeywords": "invalid",
				"@default": "identifier"
			} }],
			{ include: "@whitespace" },
			[/[{}()\[\]]/, "@brackets"],
			[/@symbols/, { cases: {
				"@operators": "operator",
				"@default": ""
			} }],
			[/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"],
			[/\d+/, "number"],
			[/[;,.]/, "delimiter"],
			[/"/, {
				token: "string.quote",
				bracket: "@open",
				next: "@string"
			}]
		],
		string: [
			[/[^\\"]+/, "string"],
			[/@escapes/, "string.escape"],
			[/"/, {
				token: "string.quote",
				bracket: "@close",
				next: "@pop"
			}]
		],
		namespace: [
			{ include: "@whitespace" },
			[/[A-Za-z]\w*/, "namespace"],
			[/[\.]/, "delimiter"],
			[
				"",
				"",
				"@pop"
			]
		],
		imports: [
			{ include: "@whitespace" },
			[/[A-Za-z]\w*(?=\.)/, "namespace"],
			[/[A-Za-z]\w*/, "identifier"],
			[/\*/, "wildcard"],
			[/[\.,]/, "delimiter"],
			[
				"",
				"",
				"@pop"
			]
		],
		whitespace: [[/[ \t\r\n]+/, "white"], [/(\/\/).*/, "comment"]]
	}
};
export { conf, language };
