475 lines
12 KiB
JavaScript
475 lines
12 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/php/php.ts
|
||
|
var conf = {
|
||
|
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
|
||
|
comments: {
|
||
|
lineComment: "//",
|
||
|
blockComment: ["/*", "*/"]
|
||
|
},
|
||
|
brackets: [
|
||
|
["{", "}"],
|
||
|
["[", "]"],
|
||
|
["(", ")"]
|
||
|
],
|
||
|
autoClosingPairs: [
|
||
|
{ open: "{", close: "}", notIn: ["string"] },
|
||
|
{ open: "[", close: "]", notIn: ["string"] },
|
||
|
{ open: "(", close: ")", notIn: ["string"] },
|
||
|
{ open: '"', close: '"', notIn: ["string"] },
|
||
|
{ open: "'", close: "'", notIn: ["string", "comment"] }
|
||
|
],
|
||
|
folding: {
|
||
|
markers: {
|
||
|
start: new RegExp("^\\s*(#|//)region\\b"),
|
||
|
end: new RegExp("^\\s*(#|//)endregion\\b")
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
var language = {
|
||
|
defaultToken: "",
|
||
|
tokenPostfix: "",
|
||
|
tokenizer: {
|
||
|
root: [
|
||
|
[/<\?((php)|=)?/, { token: "@rematch", switchTo: "@phpInSimpleState.root" }],
|
||
|
[/<!DOCTYPE/, "metatag.html", "@doctype"],
|
||
|
[/<!--/, "comment.html", "@comment"],
|
||
|
[/(<)(\w+)(\/>)/, ["delimiter.html", "tag.html", "delimiter.html"]],
|
||
|
[/(<)(script)/, ["delimiter.html", { token: "tag.html", next: "@script" }]],
|
||
|
[/(<)(style)/, ["delimiter.html", { token: "tag.html", next: "@style" }]],
|
||
|
[/(<)([:\w]+)/, ["delimiter.html", { token: "tag.html", next: "@otherTag" }]],
|
||
|
[/(<\/)(\w+)/, ["delimiter.html", { token: "tag.html", next: "@otherTag" }]],
|
||
|
[/</, "delimiter.html"],
|
||
|
[/[^<]+/]
|
||
|
],
|
||
|
doctype: [
|
||
|
[/<\?((php)|=)?/, { token: "@rematch", switchTo: "@phpInSimpleState.comment" }],
|
||
|
[/[^>]+/, "metatag.content.html"],
|
||
|
[/>/, "metatag.html", "@pop"]
|
||
|
],
|
||
|
comment: [
|
||
|
[/<\?((php)|=)?/, { token: "@rematch", switchTo: "@phpInSimpleState.comment" }],
|
||
|
[/-->/, "comment.html", "@pop"],
|
||
|
[/[^-]+/, "comment.content.html"],
|
||
|
[/./, "comment.content.html"]
|
||
|
],
|
||
|
otherTag: [
|
||
|
[/<\?((php)|=)?/, { token: "@rematch", switchTo: "@phpInSimpleState.otherTag" }],
|
||
|
[/\/?>/, "delimiter.html", "@pop"],
|
||
|
[/"([^"]*)"/, "attribute.value"],
|
||
|
[/'([^']*)'/, "attribute.value"],
|
||
|
[/[\w\-]+/, "attribute.name"],
|
||
|
[/=/, "delimiter"],
|
||
|
[/[ \t\r\n]+/]
|
||
|
],
|
||
|
script: [
|
||
|
[/<\?((php)|=)?/, { token: "@rematch", switchTo: "@phpInSimpleState.script" }],
|
||
|
[/type/, "attribute.name", "@scriptAfterType"],
|
||
|
[/"([^"]*)"/, "attribute.value"],
|
||
|
[/'([^']*)'/, "attribute.value"],
|
||
|
[/[\w\-]+/, "attribute.name"],
|
||
|
[/=/, "delimiter"],
|
||
|
[
|
||
|
/>/,
|
||
|
{
|
||
|
token: "delimiter.html",
|
||
|
next: "@scriptEmbedded.text/javascript",
|
||
|
nextEmbedded: "text/javascript"
|
||
|
}
|
||
|
],
|
||
|
[/[ \t\r\n]+/],
|
||
|
[
|
||
|
/(<\/)(script\s*)(>)/,
|
||
|
["delimiter.html", "tag.html", { token: "delimiter.html", next: "@pop" }]
|
||
|
]
|
||
|
],
|
||
|
scriptAfterType: [
|
||
|
[
|
||
|
/<\?((php)|=)?/,
|
||
|
{
|
||
|
token: "@rematch",
|
||
|
switchTo: "@phpInSimpleState.scriptAfterType"
|
||
|
}
|
||
|
],
|
||
|
[/=/, "delimiter", "@scriptAfterTypeEquals"],
|
||
|
[
|
||
|
/>/,
|
||
|
{
|
||
|
token: "delimiter.html",
|
||
|
next: "@scriptEmbedded.text/javascript",
|
||
|
nextEmbedded: "text/javascript"
|
||
|
}
|
||
|
],
|
||
|
[/[ \t\r\n]+/],
|
||
|
[/<\/script\s*>/, { token: "@rematch", next: "@pop" }]
|
||
|
],
|
||
|
scriptAfterTypeEquals: [
|
||
|
[
|
||
|
/<\?((php)|=)?/,
|
||
|
{
|
||
|
token: "@rematch",
|
||
|
switchTo: "@phpInSimpleState.scriptAfterTypeEquals"
|
||
|
}
|
||
|
],
|
||
|
[
|
||
|
/"([^"]*)"/,
|
||
|
{
|
||
|
token: "attribute.value",
|
||
|
switchTo: "@scriptWithCustomType.$1"
|
||
|
}
|
||
|
],
|
||
|
[
|
||
|
/'([^']*)'/,
|
||
|
{
|
||
|
token: "attribute.value",
|
||
|
switchTo: "@scriptWithCustomType.$1"
|
||
|
}
|
||
|
],
|
||
|
[
|
||
|
/>/,
|
||
|
{
|
||
|
token: "delimiter.html",
|
||
|
next: "@scriptEmbedded.text/javascript",
|
||
|
nextEmbedded: "text/javascript"
|
||
|
}
|
||
|
],
|
||
|
[/[ \t\r\n]+/],
|
||
|
[/<\/script\s*>/, { token: "@rematch", next: "@pop" }]
|
||
|
],
|
||
|
scriptWithCustomType: [
|
||
|
[
|
||
|
/<\?((php)|=)?/,
|
||
|
{
|
||
|
token: "@rematch",
|
||
|
switchTo: "@phpInSimpleState.scriptWithCustomType.$S2"
|
||
|
}
|
||
|
],
|
||
|
[
|
||
|
/>/,
|
||
|
{
|
||
|
token: "delimiter.html",
|
||
|
next: "@scriptEmbedded.$S2",
|
||
|
nextEmbedded: "$S2"
|
||
|
}
|
||
|
],
|
||
|
[/"([^"]*)"/, "attribute.value"],
|
||
|
[/'([^']*)'/, "attribute.value"],
|
||
|
[/[\w\-]+/, "attribute.name"],
|
||
|
[/=/, "delimiter"],
|
||
|
[/[ \t\r\n]+/],
|
||
|
[/<\/script\s*>/, { token: "@rematch", next: "@pop" }]
|
||
|
],
|
||
|
scriptEmbedded: [
|
||
|
[
|
||
|
/<\?((php)|=)?/,
|
||
|
{
|
||
|
token: "@rematch",
|
||
|
switchTo: "@phpInEmbeddedState.scriptEmbedded.$S2",
|
||
|
nextEmbedded: "@pop"
|
||
|
}
|
||
|
],
|
||
|
[/<\/script/, { token: "@rematch", next: "@pop", nextEmbedded: "@pop" }]
|
||
|
],
|
||
|
style: [
|
||
|
[/<\?((php)|=)?/, { token: "@rematch", switchTo: "@phpInSimpleState.style" }],
|
||
|
[/type/, "attribute.name", "@styleAfterType"],
|
||
|
[/"([^"]*)"/, "attribute.value"],
|
||
|
[/'([^']*)'/, "attribute.value"],
|
||
|
[/[\w\-]+/, "attribute.name"],
|
||
|
[/=/, "delimiter"],
|
||
|
[
|
||
|
/>/,
|
||
|
{
|
||
|
token: "delimiter.html",
|
||
|
next: "@styleEmbedded.text/css",
|
||
|
nextEmbedded: "text/css"
|
||
|
}
|
||
|
],
|
||
|
[/[ \t\r\n]+/],
|
||
|
[
|
||
|
/(<\/)(style\s*)(>)/,
|
||
|
["delimiter.html", "tag.html", { token: "delimiter.html", next: "@pop" }]
|
||
|
]
|
||
|
],
|
||
|
styleAfterType: [
|
||
|
[
|
||
|
/<\?((php)|=)?/,
|
||
|
{
|
||
|
token: "@rematch",
|
||
|
switchTo: "@phpInSimpleState.styleAfterType"
|
||
|
}
|
||
|
],
|
||
|
[/=/, "delimiter", "@styleAfterTypeEquals"],
|
||
|
[
|
||
|
/>/,
|
||
|
{
|
||
|
token: "delimiter.html",
|
||
|
next: "@styleEmbedded.text/css",
|
||
|
nextEmbedded: "text/css"
|
||
|
}
|
||
|
],
|
||
|
[/[ \t\r\n]+/],
|
||
|
[/<\/style\s*>/, { token: "@rematch", next: "@pop" }]
|
||
|
],
|
||
|
styleAfterTypeEquals: [
|
||
|
[
|
||
|
/<\?((php)|=)?/,
|
||
|
{
|
||
|
token: "@rematch",
|
||
|
switchTo: "@phpInSimpleState.styleAfterTypeEquals"
|
||
|
}
|
||
|
],
|
||
|
[
|
||
|
/"([^"]*)"/,
|
||
|
{
|
||
|
token: "attribute.value",
|
||
|
switchTo: "@styleWithCustomType.$1"
|
||
|
}
|
||
|
],
|
||
|
[
|
||
|
/'([^']*)'/,
|
||
|
{
|
||
|
token: "attribute.value",
|
||
|
switchTo: "@styleWithCustomType.$1"
|
||
|
}
|
||
|
],
|
||
|
[
|
||
|
/>/,
|
||
|
{
|
||
|
token: "delimiter.html",
|
||
|
next: "@styleEmbedded.text/css",
|
||
|
nextEmbedded: "text/css"
|
||
|
}
|
||
|
],
|
||
|
[/[ \t\r\n]+/],
|
||
|
[/<\/style\s*>/, { token: "@rematch", next: "@pop" }]
|
||
|
],
|
||
|
styleWithCustomType: [
|
||
|
[
|
||
|
/<\?((php)|=)?/,
|
||
|
{
|
||
|
token: "@rematch",
|
||
|
switchTo: "@phpInSimpleState.styleWithCustomType.$S2"
|
||
|
}
|
||
|
],
|
||
|
[
|
||
|
/>/,
|
||
|
{
|
||
|
token: "delimiter.html",
|
||
|
next: "@styleEmbedded.$S2",
|
||
|
nextEmbedded: "$S2"
|
||
|
}
|
||
|
],
|
||
|
[/"([^"]*)"/, "attribute.value"],
|
||
|
[/'([^']*)'/, "attribute.value"],
|
||
|
[/[\w\-]+/, "attribute.name"],
|
||
|
[/=/, "delimiter"],
|
||
|
[/[ \t\r\n]+/],
|
||
|
[/<\/style\s*>/, { token: "@rematch", next: "@pop" }]
|
||
|
],
|
||
|
styleEmbedded: [
|
||
|
[
|
||
|
/<\?((php)|=)?/,
|
||
|
{
|
||
|
token: "@rematch",
|
||
|
switchTo: "@phpInEmbeddedState.styleEmbedded.$S2",
|
||
|
nextEmbedded: "@pop"
|
||
|
}
|
||
|
],
|
||
|
[/<\/style/, { token: "@rematch", next: "@pop", nextEmbedded: "@pop" }]
|
||
|
],
|
||
|
phpInSimpleState: [
|
||
|
[/<\?((php)|=)?/, "metatag.php"],
|
||
|
[/\?>/, { token: "metatag.php", switchTo: "@$S2.$S3" }],
|
||
|
{ include: "phpRoot" }
|
||
|
],
|
||
|
phpInEmbeddedState: [
|
||
|
[/<\?((php)|=)?/, "metatag.php"],
|
||
|
[
|
||
|
/\?>/,
|
||
|
{
|
||
|
token: "metatag.php",
|
||
|
switchTo: "@$S2.$S3",
|
||
|
nextEmbedded: "$S3"
|
||
|
}
|
||
|
],
|
||
|
{ include: "phpRoot" }
|
||
|
],
|
||
|
phpRoot: [
|
||
|
[
|
||
|
/[a-zA-Z_]\w*/,
|
||
|
{
|
||
|
cases: {
|
||
|
"@phpKeywords": { token: "keyword.php" },
|
||
|
"@phpCompileTimeConstants": { token: "constant.php" },
|
||
|
"@default": "identifier.php"
|
||
|
}
|
||
|
}
|
||
|
],
|
||
|
[
|
||
|
/[$a-zA-Z_]\w*/,
|
||
|
{
|
||
|
cases: {
|
||
|
"@phpPreDefinedVariables": {
|
||
|
token: "variable.predefined.php"
|
||
|
},
|
||
|
"@default": "variable.php"
|
||
|
}
|
||
|
}
|
||
|
],
|
||
|
[/[{}]/, "delimiter.bracket.php"],
|
||
|
[/[\[\]]/, "delimiter.array.php"],
|
||
|
[/[()]/, "delimiter.parenthesis.php"],
|
||
|
[/[ \t\r\n]+/],
|
||
|
[/(#|\/\/)$/, "comment.php"],
|
||
|
[/(#|\/\/)/, "comment.php", "@phpLineComment"],
|
||
|
[/\/\*/, "comment.php", "@phpComment"],
|
||
|
[/"/, "string.php", "@phpDoubleQuoteString"],
|
||
|
[/'/, "string.php", "@phpSingleQuoteString"],
|
||
|
[/[\+\-\*\%\&\|\^\~\!\=\<\>\/\?\;\:\.\,\@]/, "delimiter.php"],
|
||
|
[/\d*\d+[eE]([\-+]?\d+)?/, "number.float.php"],
|
||
|
[/\d*\.\d+([eE][\-+]?\d+)?/, "number.float.php"],
|
||
|
[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/, "number.hex.php"],
|
||
|
[/0[0-7']*[0-7]/, "number.octal.php"],
|
||
|
[/0[bB][0-1']*[0-1]/, "number.binary.php"],
|
||
|
[/\d[\d']*/, "number.php"],
|
||
|
[/\d/, "number.php"]
|
||
|
],
|
||
|
phpComment: [
|
||
|
[/\*\//, "comment.php", "@pop"],
|
||
|
[/[^*]+/, "comment.php"],
|
||
|
[/./, "comment.php"]
|
||
|
],
|
||
|
phpLineComment: [
|
||
|
[/\?>/, { token: "@rematch", next: "@pop" }],
|
||
|
[/.$/, "comment.php", "@pop"],
|
||
|
[/[^?]+$/, "comment.php", "@pop"],
|
||
|
[/[^?]+/, "comment.php"],
|
||
|
[/./, "comment.php"]
|
||
|
],
|
||
|
phpDoubleQuoteString: [
|
||
|
[/[^\\"]+/, "string.php"],
|
||
|
[/@escapes/, "string.escape.php"],
|
||
|
[/\\./, "string.escape.invalid.php"],
|
||
|
[/"/, "string.php", "@pop"]
|
||
|
],
|
||
|
phpSingleQuoteString: [
|
||
|
[/[^\\']+/, "string.php"],
|
||
|
[/@escapes/, "string.escape.php"],
|
||
|
[/\\./, "string.escape.invalid.php"],
|
||
|
[/'/, "string.php", "@pop"]
|
||
|
]
|
||
|
},
|
||
|
phpKeywords: [
|
||
|
"abstract",
|
||
|
"and",
|
||
|
"array",
|
||
|
"as",
|
||
|
"break",
|
||
|
"callable",
|
||
|
"case",
|
||
|
"catch",
|
||
|
"cfunction",
|
||
|
"class",
|
||
|
"clone",
|
||
|
"const",
|
||
|
"continue",
|
||
|
"declare",
|
||
|
"default",
|
||
|
"do",
|
||
|
"else",
|
||
|
"elseif",
|
||
|
"enddeclare",
|
||
|
"endfor",
|
||
|
"endforeach",
|
||
|
"endif",
|
||
|
"endswitch",
|
||
|
"endwhile",
|
||
|
"extends",
|
||
|
"false",
|
||
|
"final",
|
||
|
"for",
|
||
|
"foreach",
|
||
|
"function",
|
||
|
"global",
|
||
|
"goto",
|
||
|
"if",
|
||
|
"implements",
|
||
|
"interface",
|
||
|
"instanceof",
|
||
|
"insteadof",
|
||
|
"namespace",
|
||
|
"new",
|
||
|
"null",
|
||
|
"object",
|
||
|
"old_function",
|
||
|
"or",
|
||
|
"private",
|
||
|
"protected",
|
||
|
"public",
|
||
|
"resource",
|
||
|
"static",
|
||
|
"switch",
|
||
|
"throw",
|
||
|
"trait",
|
||
|
"try",
|
||
|
"true",
|
||
|
"use",
|
||
|
"var",
|
||
|
"while",
|
||
|
"xor",
|
||
|
"die",
|
||
|
"echo",
|
||
|
"empty",
|
||
|
"exit",
|
||
|
"eval",
|
||
|
"include",
|
||
|
"include_once",
|
||
|
"isset",
|
||
|
"list",
|
||
|
"require",
|
||
|
"require_once",
|
||
|
"return",
|
||
|
"print",
|
||
|
"unset",
|
||
|
"yield",
|
||
|
"__construct"
|
||
|
],
|
||
|
phpCompileTimeConstants: [
|
||
|
"__CLASS__",
|
||
|
"__DIR__",
|
||
|
"__FILE__",
|
||
|
"__LINE__",
|
||
|
"__NAMESPACE__",
|
||
|
"__METHOD__",
|
||
|
"__FUNCTION__",
|
||
|
"__TRAIT__"
|
||
|
],
|
||
|
phpPreDefinedVariables: [
|
||
|
"$GLOBALS",
|
||
|
"$_SERVER",
|
||
|
"$_GET",
|
||
|
"$_POST",
|
||
|
"$_FILES",
|
||
|
"$_REQUEST",
|
||
|
"$_SESSION",
|
||
|
"$_ENV",
|
||
|
"$_COOKIE",
|
||
|
"$php_errormsg",
|
||
|
"$HTTP_RAW_POST_DATA",
|
||
|
"$http_response_header",
|
||
|
"$argc",
|
||
|
"$argv"
|
||
|
],
|
||
|
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/
|
||
|
};
|
||
|
export {
|
||
|
conf,
|
||
|
language
|
||
|
};
|