<?xml version="1.0" encoding="UTF-8"?> <!-- This file is part of GtkSourceView Author: Scott Martin <scott@coffeeblack.org> Copyright (C) 2004 Scott Martin <scott@coffeeblack.org> Copyright (C) 2005 Stef Walter (formerly Nate Nielsen) <stef@memberwebs.com> Copyright (C) 2005-2007 Marco Barisione <barisione@gmail.com> Copyright (C) 2005-2007 Emanuele Aina Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com> GtkSourceView is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. GtkSourceView is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see <http://www.gnu.org/licenses/>. --> <language id="js" name="JavaScript" version="2.0" _section="Script"> <metadata> <property name="mimetypes">application/javascript;application/x-javascript;text/x-javascript;text/javascript;text/x-js</property> <property name="globs">*.js</property> <property name="line-comment-start">//</property> <property name="block-comment-start">/*</property> <property name="block-comment-end">*/</property> </metadata> <styles> <!-- General --> <style id="comment" name="Comment" map-to="def:comment"/> <style id="doc-comment" name="Documentation comment" map-to="def:doc-comment"/> <style id="error" name="Error" map-to="def:error"/> <style id="keyword" name="Keyword" map-to="def:keyword"/> <style id="reserved-word" name="Reserved word" map-to="def:reserved"/> <style id="directive" name="Directive" map-to="def:preprocessor"/> <!-- Literals --> <style id="null-value" name="Null value" map-to="def:special-constant"/> <style id="boolean" name="Boolean value" map-to="def:boolean"/> <style id="decimal" name="Decimal number" map-to="def:decimal"/> <style id="base-n-integer" name="Base-n integer" map-to="def:base-n-integer"/> <style id="binary-integer" name="Binary integer" map-to="js:base-n-integer"/> <style id="octal-integer" name="Octal integer" map-to="js:base-n-integer"/> <style id="hex-integer" name="Hexadecimal integer" map-to="js:base-n-integer"/> <style id="escape" name="Escaped character" map-to="def:special-char"/> <style id="string" name="String" map-to="def:string"/> <style id="included-file" name="Included file" map-to="js:string"/> <style id="regex" name="Regular expression" map-to="def:string"/> <style id="regex-class" name="RE character class" map-to="def:special-char"/> <style id="regex-group" name="RE group name" map-to="def:identifier"/> <style id="regex-flag" name="RE flag" map-to="def:special-constant"/> <style id="template-literal" name="Template literal" map-to="js:string"/> <style id="template-placeholder" name="Template placeholder" map-to="def:preprocessor"/> <!-- Built-in values --> <style id="built-in-value" name="Built-in value" map-to="def:special-constant"/> <style id="built-in-function" name="Built-in function" map-to="def:builtin"/> <style id="built-in-constructor" name="Built-in constructor" map-to="def:type"/> <style id="built-in-object" name="Built-in object" map-to="def:builtin"/> <style id="built-in-property" name="Built-in property" map-to="def:statement"/> <style id="built-in-method" name="Built-in method" map-to="js:built-in-function"/> <!-- The following are for debugging use --> <!-- General --> <style id="identifier" name="Identifier"/> <style id="rest-syntax" name="Rest syntax"/> <style id="spread-syntax" name="Spread syntax"/> <style id="array-destructuring" name="Array destructuring"/> <style id="object-destructuring" name="Object destructuring"/> <!-- Literals --> <style id="array-literal" name="Array literal"/> <style id="object-literal" name="Object literal"/> <!-- Functions and classes --> <style id="function-expression" name="Function expression"/> <style id="class-expression" name="Class expression"/> <!-- Expressions --> <style id="grouping" name="Grouping"/> <style id="grouping-operator" name="Grouping operator"/> <style id="increment-decrement-operator" name="Increment decrement operator"/> <style id="unary-operator" name="Unary operator"/> <style id="binary-operator" name="Binary operator"/> <style id="comma-operator" name="Comma operator"/> <style id="ternary-operator" name="Ternary operator"/> <style id="expression" name="Expression"/> <!-- Statements --> <style id="block-statement" name="Block statement"/> <style id="break-statement" name="Break statement"/> <style id="continue-statement" name="Continue statement"/> <style id="debugger-statement" name="Debugger statement"/> <style id="expression-statement" name="Expression statement"/> <style id="for-statement" name="For statement"/> <style id="if-statement" name="If statement"/> <style id="else-statement" name="Else statement"/> <style id="label-statement" name="Label statement"/> <style id="return-statement" name="Return statement"/> <style id="switch-statement" name="Switch statement"/> <style id="throw-statement" name="Throw statement"/> <style id="try-catch-statement" name="Try catch statement"/> <style id="variable-declaration" name="Variable declaration"/> <style id="while-statement" name="While statement"/> <style id="with-statement" name="With statement"/> <!-- Modules --> <style id="export-import-declaration" name="Export import declaration"/> </styles> <!-- from identifier-char --> <keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class> <definitions> <!-- "Tags" (e.g. <Script>) or section numbers (e.g. 13.2 Block) inside comments refer to relevant productions or sections from the ECMAScript Language Specification, respectively. Current draft: https://tc39.es/ecma262/ Supported level: ES2020 Supported ES2021 proposals: * (none yet) Features from Annex B of the spec are not highlighted to discourage their use, except: * Legacy octal number literals: Highlighted as errors to reduce accidental usage * Legacy octal escape sequences: Highlighted as normal escapes as they are inside strings; the string and error styles may conflict with each other Not supported yet: * SharedArrayBuffer and Atomics (ES2017): Browser support is minimal / disabled to mitigate speculative side-channel attacks (Meltdown / Spectre) * RegExp lookbehind assertions (ES2018): Lookahead assertions are not highlighted either Also supported: * ECMAScript Internationalization API Current draft: https://tc39.es/ecma402/ Supported level: 2018 * WebAssembly JavaScript Interface Editor's draft: https://webassembly.github.io/spec/js-api/ Supported level: Candidate Recommendation, 18 July 2019 * WebAssembly Web API Editor's draft: https://webassembly.github.io/spec/web-api/ Supported level: Candidate Recommendation, 18 July 2019 Naming convention for contexts: * Prefixes: * "_" (underscore): "Private" to one or more "public" contexts (can still be overriden by child languages) * "ordered-": Wrapper for another context so that it can only match in a referenced position (has once-only="true") * "last-": An "ordered-" wrapper with end-parent="true", which will end the parent under all circumstances * "choice-": One option in a group where only one can be selected (has end-parent="true") * Suffixes: * Plural: Can match multiple times * Singular: Has once-only="true" * "-end-parent": Has end-parent="true" * "-no-extend-parent": Has extend-parent="false" * "-content": Holds children of container contexts End-parent contexts are container contexts to avoid the end-parent bug: https://gitlab.gnome.org/GNOME/gtksourceview/issues/14 --> <!-- # General --> <!-- <UnicodeEscapeSequence> --> <define-regex id="unicode-escape" extended="true"> (?: \\u (?: [0-9a-fA-F]{4} | \{ [0-9a-fA-F]{1,} \} ) ) </define-regex> <!-- /unicode-escape --> <!-- <IdentifierStart> --> <define-regex id="identifier-start" extended="true"> (?: \%{def:unicode-id-start} | [$_] | \%{unicode-escape} ) </define-regex> <!-- /identifier-start --> <!-- for lookbehinds U+200C Zero-width non-joiner <ZWNJ> U+200D Zero-width joiner <ZWJ> --> <define-regex id="identifier-char" extended="true"> (?: \%{def:unicode-id-continue} | [$\x{200C}\x{200D}] ) </define-regex> <!-- /identifier-char --> <!-- <IdentifierPart> --> <define-regex id="identifier-part" extended="true"> (?: \%{identifier-char} | \%{unicode-escape} ) </define-regex> <!-- /identifier-part --> <!-- <IdentifierName> --> <define-regex id="identifier" extended="true"> (?: \%{identifier-start} \%{identifier-part}* ) </define-regex> <!-- /identifier--> <!-- <WhiteSpace> --> <!-- does not include characters from <LineTerminator>, to only allow space separators when we want match a "whitespace" character U+0009 Character tabulation <TAB> U+000B Line tabulation <VT> U+000C Form feed <FF> U+0020 Space <SP> U+00A0 No-break space <NBSP> U+FEFF Zero width no-break space <ZWNBSP> Zs Space_Separator category <USP> --> <define-regex id="whitespace" extended="true"> [\t\x{000B}\f \x{00A0}\x{FEFF}\p{Zs}] </define-regex> <!-- /whitespace --> <!-- includes characters from <LineTerminator>, to ignore line terminators when we want to match a "not whitespace" character U+000A Line feed <LF> U+000D Carriage return <CR> U+2028 Line separator <LS> U+2029 Paragraph separator <PS> --> <define-regex id="not-whitespace" extended="true"> [^\t\x{000B}\f \x{00A0}\x{FEFF}\p{Zs}\n\r\x{2028}\x{2029}] </define-regex> <!-- /not-whitespace --> <define-regex id="before-next-token" extended="true"> (?= \%{not-whitespace} ) </define-regex> <!-- /before-next-token --> <define-regex id="statement-end" extended="true"> (?: ; | \%{before-next-token} ) </define-regex> <!-- /statement-end --> <define-regex id="statement-end-or-end-of-line" extended="true"> (?: \%{statement-end} | $ ) </define-regex> <!-- /statement-end-or-end-of-line --> <!-- wherever this is used, the highlighting will be more brittle, because comments can span multiple lines --> <define-regex id="optional-whitespace-or-comments" extended="true"> (?> (?: \%{whitespace}+ | /\*.*?\*/ )* ) </define-regex> <!-- /optional-whitespace-or-comments --> <define-regex id="generator-modifier">\*</define-regex> <!-- "unknown id" errors can occur when using a regex defined in one component file in another component file https://gitlab.gnome.org/GNOME/gtksourceview/issues/67 so we move the definitions of these regexes here --> <define-regex id="import-function-keyword-suffix" extended="true"> (?: \%{optional-whitespace-or-comments} \( ) </define-regex> <!-- /import-function-keyword-suffix --> <define-regex id="new-target-object-keyword-suffix" extended="true"> (?: \%{optional-whitespace-or-comments} \. \%{optional-whitespace-or-comments} target \%] ) </define-regex> <!-- /new-target-object-keyword-suffix --> <!-- async function (ES2017) no line terminator allowed between "async" and "function" --> <define-regex id="function-expression-keyword" extended="true"> (?: (?: \%[ async \%] \%{optional-whitespace-or-comments} )? \%[ function \%] ) </define-regex> <!-- /function-expression-keyword --> <define-regex id="class-expression-keyword" extended="true"> (?: \%[ class \%] ) </define-regex> <!-- /class-expression-keyword --> <!-- ## Embedded lang hooks a placeholder context where an embedding language (e.g. html) can <replace> --> <context id="embedded-lang-hooks"/> <!-- ## Comments --> <context id="_comment-content" class-disabled="no-spell-check"> <include> <context ref="embedded-lang-hooks"/> <context ref="def:in-comment"/> </include> </context> <!-- /_comment-content --> <!-- line continuations are not allowed inside single-line comments --> <context id="_single-line-comments" style-ref="comment" end-at-line-end="true" class-disabled="no-spell-check" class="comment"> <start>//</start> <include> <context ref="_comment-content"/> </include> </context> <!-- /_single-line-comments --> <context id="_multiline-comments" style-ref="comment" class-disabled="no-spell-check" class="comment"> <start>/\*</start> <end>\*/</end> <include> <context ref="_comment-content"/> </include> </context> <!-- /_multiline-comments --> <context id="_single-line-comments-no-extend-parent" style-ref="comment" end-at-line-end="true" class-disabled="no-spell-check" class="comment" extend-parent="false"> <start>//</start> <include> <context ref="_comment-content"/> </include> </context> <!-- /_single-line-comments-no-extend-parent --> <context id="_multiline-comments-no-extend-parent" style-ref="comment" class-disabled="no-spell-check" class="comment" extend-parent="false"> <start>/\*</start> <end>\*/</end> <include> <context ref="_comment-content"/> </include> </context> <!-- /_multiline-comments-no-extend-parent --> <context id="_jsdoc-embedded-lang-hooks"> <include> <context ref="embedded-lang-hooks"/> <context end-parent="true"> <start>(?=\*/)</start> <end>\%{def:always-match}</end> </context> <context ref="jsdoc:embedded-lang-hooks" original="true"/> </include> </context> <!-- /_jsdoc-embedded-lang-hooks --> <replace id="jsdoc:embedded-lang-hooks" ref="_jsdoc-embedded-lang-hooks"/> <context id="_doc-comment-content"> <include> <context ref="_comment-content"/> <context ref="jsdoc:jsdoc"/> </include> </context> <!-- /_doc-comment-content --> <context id="_doc-comments" style-ref="doc-comment" class-disabled="no-spell-check" class="comment"> <start>/\*\*(?![\*/])</start> <end>\*/</end> <include> <context ref="_doc-comment-content"/> </include> </context> <!-- /_doc-comments --> <context id="_doc-comments-no-extend-parent" style-ref="doc-comment" class-disabled="no-spell-check" class="comment" extend-parent="false"> <start>/\*\*(?![\*/])</start> <end>\*/</end> <include> <context ref="_doc-comment-content"/> </include> </context> <!-- /_doc-comments-no-extend-parent --> <context id="comments"> <include> <context ref="_single-line-comments"/> <context ref="_doc-comments"/> <context ref="_multiline-comments"/> <context ref="def:c-like-close-comment-outside-comment" style-ref="error"/> </include> </context> <!-- /comments --> <!-- for statements that cannot contain line terminators --> <context id="comments-no-extend-parent"> <include> <context ref="_single-line-comments-no-extend-parent"/> <context ref="_doc-comments-no-extend-parent"/> <context ref="_multiline-comments-no-extend-parent"/> <context ref="def:c-like-close-comment-outside-comment" style-ref="error"/> </include> </context> <!-- /comments-no-extend-parent --> <!-- ## Identifiers --> <!-- <ReservedWord> --> <context id="_reserved-words"> <include> <!-- <Keyword> --> <context id="_keywords" style-ref="reserved-word"> <keyword>await</keyword> <!-- ES2017 --> <keyword>break</keyword> <keyword>case</keyword> <keyword>catch</keyword> <keyword>class</keyword> <keyword>const</keyword> <keyword>continue</keyword> <keyword>debugger</keyword> <keyword>default</keyword> <keyword>delete</keyword> <keyword>do</keyword> <keyword>else</keyword> <keyword>export</keyword> <keyword>extends</keyword> <keyword>finally</keyword> <keyword>for</keyword> <keyword>function</keyword> <keyword>if</keyword> <keyword>import</keyword> <keyword>instanceof</keyword> <keyword>in</keyword> <keyword>new</keyword> <keyword>return</keyword> <keyword>super</keyword> <keyword>switch</keyword> <keyword>this</keyword> <keyword>throw</keyword> <keyword>try</keyword> <keyword>typeof</keyword> <keyword>var</keyword> <keyword>void</keyword> <keyword>while</keyword> <keyword>with</keyword> <keyword>yield</keyword> <!-- allowed as a variable name in non-strict mode --> </context> <!-- /_keywords --> <!-- "treated as reserved words through static semantic restrictions" https://tc39.github.io/ecma262/#sec-keywords --> <context id="_strict-mode-keywords" style-ref="reserved-word"> <keyword>let</keyword> <keyword>static</keyword> </context> <!-- /_strict-mode-keywords --> <!-- <FutureReservedWord> --> <context id="_future-reserved-words" style-ref="reserved-word"> <keyword>enum</keyword> </context> <!-- /_future-reserved-words --> <!-- usage in strict mode "restricted using static semantic restrictions" https://tc39.github.io/ecma262/#sec-future-reserved-words --> <context id="_strict-mode-future-reserved-words" style-ref="reserved-word"> <keyword>implements</keyword> <keyword>interface</keyword> <keyword>package</keyword> <keyword>private</keyword> <keyword>protected</keyword> <keyword>public</keyword> </context> <!-- /_strict-mode-future-reserved-words --> <context ref="js-lit:null-value" style-ref="reserved-word"/> <context ref="js-lit:boolean" style-ref="reserved-word"/> </include> </context> <!-- /_reserved-words --> <context id="_identifier-names" style-ref="identifier"> <match>\%{identifier}</match> </context> <!-- /_identifier-names --> <context id="_identifier-name-content"> <include> <context ref="_identifier-names"/> </include> </context> <!-- /_identifier-name-content --> <context id="identifier-name" once-only="true"> <start>(?=\%{identifier-start})</start> <end>\%{def:always-match}</end> <include> <!-- no embedded-lang-hooks here --> <!-- no comments here --> <!-- do not extend the context by matching comments or embedded-lang-hooks, which may lead to multiple identifiers --> <context ref="_identifier-name-content"/> </include> </context> <!-- /choice-identifier-name --> <context id="choice-identifier-name" end-parent="true"> <start>(?=\%{identifier-start})</start> <end>\%{def:always-match}</end> <include> <!-- no embedded-lang-hooks here --> <!-- no comments here --> <!-- do not extend the context by matching comments or embedded-lang-hooks, which may lead to multiple identifiers --> <context ref="_identifier-name-content"/> </include> </context> <!-- /choice-identifier-name --> <context id="_identifier-content"> <include> <context ref="_reserved-words"/> <context ref="_identifier-names"/> </include> </context> <!-- /_identifier-content --> <context id="identifier" once-only="true"> <start>(?=\%{identifier-start})</start> <end>\%{def:always-match}</end> <include> <!-- no embedded-lang-hooks here --> <!-- no comments here --> <!-- do not extend the context by matching comments or embedded-lang-hooks, which may lead to multiple identifiers --> <context ref="_identifier-content"/> </include> </context> <!-- /identifier --> <context id="choice-identifier" end-parent="true"> <start>(?=\%{identifier-start})</start> <end>\%{def:always-match}</end> <include> <!-- no embedded-lang-hooks here --> <!-- no comments here --> <!-- do not extend the context by matching comments or embedded-lang-hooks, which may lead to multiple identifiers --> <context ref="_identifier-content"/> </include> </context> <!-- /choice-identifier --> <context id="ordered-identifier" once-only="true"> <start>\%{before-next-token}</start> <end>\%{before-next-token}</end> <include> <context ref="identifier"/> </include> </context> <!-- /ordered-identifier --> <!-- ## Default value assignment --> <!-- <Initializer> --> <context id="_default-value-assignment" once-only="true"> <start>=</start> <end>\%{before-next-token}</end> <include> <context ref="embedded-lang-hooks"/> <context ref="comments"/> <context id="_default-value-assignment-content"> <include> <context ref="js-expr:expression-without-comma"/> </include> </context> <!-- /_default-value-assignment-content --> </include> </context> <!-- /_default-value-assignment --> <context id="ordered-default-value-assignment" once-only="true"> <start>\%{before-next-token}</start> <end>\%{before-next-token}</end> <include> <context ref="_default-value-assignment"/> </include> </context> <!-- /ordered-default-value-assignment --> <!-- ## Misc syntax --> <context id="_keyword-dot" style-ref="keyword" once-only="true"> <match>\.</match> </context> <!-- /_keyword-dot --> <context id="ordered-keyword-dot" once-only="true"> <start>\%{before-next-token}</start> <end>\%{before-next-token}</end> <include> <context ref="_keyword-dot"/> </include> </context> <!-- /ordered-keyword-dot --> <context id="_rest-syntax" style-ref="rest-syntax" once-only="true"> <match>\.\.\.</match> </context> <!-- /_rest-syntax --> <context id="ordered-rest-syntax" once-only="true"> <start>\%{before-next-token}</start> <end>\%{before-next-token}</end> <include> <context ref="_rest-syntax"/> </include> </context> <!-- /ordered-rest-syntax --> <context id="_spread-syntax" style-ref="spread-syntax" once-only="true"> <match>\.\.\.</match> </context> <!-- /_spread-syntax --> <context id="ordered-spread-syntax" once-only="true"> <start>\%{before-next-token}</start> <end>\%{before-next-token}</end> <include> <context ref="_spread-syntax"/> </include> </context> <!-- /ordered-spread-syntax --> <context id="generator-modifier" once-only="true"> <match>\%{generator-modifier}</match> </context> <!-- /generator-modifier --> <context id="ordered-generator-modifier" once-only="true"> <start>\%{before-next-token}</start> <end>\%{before-next-token}</end> <include> <context ref="generator-modifier"/> </include> </context> <!-- /ordered-generator-modifier --> <!-- # Assignment target --> <!-- ## Array destructuring [ a, b, ...rest ] = [ 1, 2, 3, 4 ] [ a = 1, b = 2, c = 3 ] = [ 11, 12 ] --> <context id="_array-destructuring-element-content"> <include> <context ref="ordered-rest-syntax"/> <context ref="ordered-assignment-target"/> <context ref="ordered-default-value-assignment"/> </include> </context> <!-- /_array-destructuring-element-content --> <!-- <ArrayBindingPattern> --> <context id="_choice-array-destructuring" style-ref="array-destructuring" end-parent="true"> <start>\[</start> <end>]</end> <include> <context ref="embedded-lang-hooks"/> <context ref="comments"/> <context id="_array-destructuring-content"> <include> <context id="_array-destructuring-first-element" once-only="true"> <start>\%{before-next-token}</start> <end>\%{before-next-token}</end> <include> <context ref="embedded-lang-hooks"/> <context ref="comments"/> <context ref="_array-destructuring-element-content"/> </include> </context> <!-- /_array-destructuring-first-element --> <context id="_array-destructuring-elements"> <start>,</start> <end>\%{before-next-token}</end> <include> <context ref="embedded-lang-hooks"/> <context ref="comments"/> <context ref="_array-destructuring-element-content"/> </include> </context> <!-- /_array-destructuring-elements --> </include> </context> <!-- /_array-destructuring-content --> </include> </context> <!-- /_choice-array-destructuring --> <!-- ## Object destructuring { a, y: b, ...rest } = { a: 1, y: 2, i: 3, y: 4 } { a = 1, y: b = 2, c = 3 } = { a: 11, y: 12 } --> <context id="_object-destructuring-assignment-target" once-only="true"> <start>:</start> <end>\%{before-next-token}</end> <include> <context ref="embedded-lang-hooks"/> <context ref="comments"/> <context id="_object-destructuring-assignment-target-content"> <include> <context ref="ordered-assignment-target"/> </include> </context> <!-- /_object-destructuring-assignment-target-content --> </include> </context> <!-- /_object-destructuring-assignment-target --> <context id="_ordered-object-destructuring-assignment-target" once-only="true"> <start>\%{before-next-token}</start> <end>\%{before-next-token}</end> <include> <context ref="_object-destructuring-assignment-target"/> </include> </context> <!-- /_ordered-object-destructuring-assignment-target --> <context id="_object-destructuring-property-content"> <include> <context ref="ordered-rest-syntax"/> <!-- ES2018 --> <context ref="js-lit:ordered-property-name"/> <context ref="_ordered-object-destructuring-assignment-target"/> <context ref="ordered-default-value-assignment"/> </include> </context> <!-- /_object-destructuring-property-content --> <!-- <ObjectBindingPattern> --> <context id="_choice-object-destructuring" style-ref="object-destructuring" end-parent="true"> <start>{</start> <end>}</end> <include> <context ref="embedded-lang-hooks"/> <context ref="comments"/> <context id="_object-destructuring-content"> <include> <context id="_object-destructuring-first-property" once-only="true"> <start>\%{before-next-token}</start> <end>\%{before-next-token}</end> <include> <context ref="embedded-lang-hooks"/> <context ref="comments"/> <context ref="_object-destructuring-property-content"/> </include> </context> <!-- /_object-destructuring-properties --> <context id="_object-destructuring-properties"> <start>,</start> <end>\%{before-next-token}</end> <include> <context ref="embedded-lang-hooks"/> <context ref="comments"/> <context ref="_object-destructuring-property-content"/> </include> </context> <!-- /_object-destructuring-properties --> </include> </context> <!-- /_object-destructuring-content --> </include> </context> <!-- /_choice-object-destructuring --> <!-- ## Assignment target Things that can appear on the left side of an equals sign (identifier or array/object destructuring assignment), in all places (function parameters, variable declaration) *except* in assignment expressions (array/object literals will match for array/object destructuring) --> <!-- <VariableDeclaration> / <LexicalBinding> --> <context id="_assignment-target" once-only="true"> <start>\%{before-next-token}</start> <end>\%{before-next-token}</end> <include> <context ref="embedded-lang-hooks"/> <context ref="comments"/> <context id="_assignment-target-content"> <include> <context ref="_choice-array-destructuring"/> <context ref="_choice-object-destructuring"/> <context ref="choice-identifier"/> </include> </context> <!-- /_assignment-target-content --> </include> </context> <!-- /_assignment-target --> <context id="ordered-assignment-target" once-only="true"> <start>\%{before-next-token}</start> <end>\%{before-next-token}</end> <include> <context ref="_assignment-target"/> </include> </context> <!-- /ordered-assignment-target --> <!-- Approximate code order for component files: * javascript-literals.lang * javascript-values.lang * javascript-functions-classes.lang * javascript-expressions.lang * javascript-statements.lang * javascript-modules.lang --> <!-- # Main context --> <context id="js" class="no-spell-check"> <include> <context ref="embedded-lang-hooks"/> <context ref="comments"/> <context ref="js-st:directives"/> <context ref="js-mod:export-declarations"/> <context ref="js-mod:import-declarations"/> <context ref="js-st:statements"/> </include> </context> <!-- /js --> </definitions> </language>
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
R.lang | File | 77.54 KB | 0644 |
|
abnf.lang | File | 3.54 KB | 0644 |
|
actionscript.lang | File | 8.64 KB | 0644 |
|
ada.lang | File | 7.05 KB | 0644 |
|
ansforth94.lang | File | 22.6 KB | 0644 |
|
asciidoc.lang | File | 22.17 KB | 0644 |
|
asp.lang | File | 40.88 KB | 0644 |
|
automake.lang | File | 11.15 KB | 0644 |
|
awk.lang | File | 4.15 KB | 0644 |
|
bennugd.lang | File | 8.81 KB | 0644 |
|
bibtex.lang | File | 3.75 KB | 0644 |
|
bluespec.lang | File | 5.79 KB | 0644 |
|
boo.lang | File | 8.42 KB | 0644 |
|
c.lang | File | 11.72 KB | 0644 |
|
cg.lang | File | 10.05 KB | 0644 |
|
changelog.lang | File | 3.41 KB | 0644 |
|
chdr.lang | File | 1.77 KB | 0644 |
|
cmake.lang | File | 35.58 KB | 0644 |
|
cobol.lang | File | 20.8 KB | 0644 |
|
commonlisp.lang | File | 17.14 KB | 0644 |
|
cpp.lang | File | 5.56 KB | 0644 |
|
cpphdr.lang | File | 1.41 KB | 0644 |
|
csharp.lang | File | 9.34 KB | 0644 |
|
css.lang | File | 84.08 KB | 0644 |
|
csv.lang | File | 2.36 KB | 0644 |
|
cuda.lang | File | 10.25 KB | 0644 |
|
d.lang | File | 9.83 KB | 0644 |
|
dart.lang | File | 9.47 KB | 0644 |
|
def.lang | File | 12.91 KB | 0644 |
|
desktop.lang | File | 10.7 KB | 0644 |
|
diff.lang | File | 2.99 KB | 0644 |
|
docbook.lang | File | 15.98 KB | 0644 |
|
docker.lang | File | 5.59 KB | 0644 |
|
dosbatch.lang | File | 5.08 KB | 0644 |
|
dot.lang | File | 4.42 KB | 0644 |
|
dpatch.lang | File | 1.49 KB | 0644 |
|
dtd.lang | File | 4.52 KB | 0644 |
|
dtl.lang | File | 9.9 KB | 0644 |
|
eiffel.lang | File | 7.11 KB | 0644 |
|
erlang.lang | File | 8.26 KB | 0644 |
|
fcl.lang | File | 3.75 KB | 0644 |
|
fish.lang | File | 15.61 KB | 0644 |
|
forth.lang | File | 9.34 KB | 0644 |
|
fortran.lang | File | 22.95 KB | 0644 |
|
fsharp.lang | File | 10.79 KB | 0644 |
|
ftl.lang | File | 3.06 KB | 0644 |
|
gap.lang | File | 2.72 KB | 0644 |
|
gdb-log.lang | File | 6.81 KB | 0644 |
|
gdscript.lang | File | 9.94 KB | 0644 |
|
genie.lang | File | 7.62 KB | 0644 |
|
glsl.lang | File | 17.25 KB | 0644 |
|
go.lang | File | 10.28 KB | 0644 |
|
gradle.lang | File | 1.69 KB | 0644 |
|
groovy.lang | File | 11.86 KB | 0644 |
|
gtk-doc.lang | File | 3.66 KB | 0644 |
|
gtkrc.lang | File | 4.12 KB | 0644 |
|
haddock.lang | File | 5.92 KB | 0644 |
|
haskell-literate.lang | File | 1.73 KB | 0644 |
|
haskell.lang | File | 8.15 KB | 0644 |
|
haxe.lang | File | 7.71 KB | 0644 |
|
html.lang | File | 15.08 KB | 0644 |
|
idl-exelis.lang | File | 20.63 KB | 0644 |
|
idl.lang | File | 5.06 KB | 0644 |
|
imagej.lang | File | 29.42 KB | 0644 |
|
ini.lang | File | 3.5 KB | 0644 |
|
j.lang | File | 7.45 KB | 0644 |
|
jade.lang | File | 6.55 KB | 0644 |
|
java.lang | File | 6.57 KB | 0644 |
|
javascript-expressions.lang | File | 27.04 KB | 0644 |
|
javascript-functions-classes.lang | File | 16.52 KB | 0644 |
|
javascript-literals.lang | File | 20.27 KB | 0644 |
|
javascript-modules.lang | File | 13.25 KB | 0644 |
|
javascript-statements.lang | File | 28.68 KB | 0644 |
|
javascript-values.lang | File | 26.55 KB | 0644 |
|
javascript.lang | File | 31.6 KB | 0644 |
|
jsdoc.lang | File | 7.37 KB | 0644 |
|
json.lang | File | 4.2 KB | 0644 |
|
jsx.lang | File | 12.67 KB | 0644 |
|
julia.lang | File | 14.03 KB | 0644 |
|
kotlin.lang | File | 13.19 KB | 0644 |
|
language.dtd | File | 2.29 KB | 0644 |
|
language.rng | File | 10.78 KB | 0644 |
|
language2.rng | File | 12.93 KB | 0644 |
|
latex.lang | File | 24.8 KB | 0644 |
|
less.lang | File | 29.67 KB | 0644 |
|
lex.lang | File | 6.14 KB | 0644 |
|
libtool.lang | File | 1.83 KB | 0644 |
|
llvm.lang | File | 10.05 KB | 0644 |
|
logcat.lang | File | 3.35 KB | 0644 |
|
logtalk.lang | File | 14.22 KB | 0644 |
|
lua.lang | File | 10.2 KB | 0644 |
|
m4.lang | File | 45.03 KB | 0644 |
|
makefile.lang | File | 6.03 KB | 0644 |
|
mallard.lang | File | 3.69 KB | 0644 |
|
markdown.lang | File | 15.17 KB | 0644 |
|
matlab.lang | File | 4.87 KB | 0644 |
|
maxima.lang | File | 65.65 KB | 0644 |
|
mediawiki.lang | File | 10.68 KB | 0644 |
|
meson.lang | File | 5.62 KB | 0644 |
|
modelica.lang | File | 9.26 KB | 0644 |
|
mxml.lang | File | 2.16 KB | 0644 |
|
nemerle.lang | File | 8.21 KB | 0644 |
|
netrexx.lang | File | 10.36 KB | 0644 |
|
nsis.lang | File | 2.65 KB | 0644 |
|
objc.lang | File | 4 KB | 0644 |
|
objj.lang | File | 19.21 KB | 0644 |
|
ocaml.lang | File | 9.72 KB | 0644 |
|
ocl.lang | File | 5.24 KB | 0644 |
|
octave.lang | File | 59.04 KB | 0644 |
|
ooc.lang | File | 8.51 KB | 0644 |
|
opal.lang | File | 10.98 KB | 0644 |
|
opencl.lang | File | 20.36 KB | 0644 |
|
pascal.lang | File | 8.28 KB | 0644 |
|
perl.lang | File | 36.58 KB | 0644 |
|
php.lang | File | 12.91 KB | 0644 |
|
pig.lang | File | 9.35 KB | 0644 |
|
pkgconfig.lang | File | 1.93 KB | 0644 |
|
po.lang | File | 3.33 KB | 0644 |
|
powershell.lang | File | 22.5 KB | 0644 |
|
prolog.lang | File | 8.2 KB | 0644 |
|
protobuf.lang | File | 4.4 KB | 0644 |
|
puppet.lang | File | 23.67 KB | 0644 |
|
python.lang | File | 16.99 KB | 0644 |
|
python3.lang | File | 10.31 KB | 0644 |
|
rpmspec.lang | File | 7.5 KB | 0644 |
|
rst.lang | File | 4.47 KB | 0644 |
|
ruby.lang | File | 26.9 KB | 0644 |
|
rust.lang | File | 10.25 KB | 0644 |
|
scala.lang | File | 12.63 KB | 0644 |
|
scheme.lang | File | 10.17 KB | 0644 |
|
scilab.lang | File | 6.87 KB | 0644 |
|
scss.lang | File | 31.72 KB | 0644 |
|
sh.lang | File | 36.34 KB | 0644 |
|
sml.lang | File | 6.43 KB | 0644 |
|
solidity.lang | File | 10.87 KB | 0644 |
|
sparql.lang | File | 16.34 KB | 0644 |
|
sql.lang | File | 22.79 KB | 0644 |
|
sweave.lang | File | 2.18 KB | 0644 |
|
swift.lang | File | 16.21 KB | 0644 |
|
systemverilog.lang | File | 8.6 KB | 0644 |
|
t2t.lang | File | 5.21 KB | 0644 |
|
tcl.lang | File | 4.46 KB | 0644 |
|
tera.lang | File | 5.12 KB | 0644 |
|
texinfo.lang | File | 15.23 KB | 0644 |
|
thrift.lang | File | 8.45 KB | 0644 |
|
toml.lang | File | 8.46 KB | 0644 |
|
typescript-js-expressions.lang | File | 6.83 KB | 0644 |
|
typescript-js-functions-classes.lang | File | 15.44 KB | 0644 |
|
typescript-js-literals.lang | File | 5.05 KB | 0644 |
|
typescript-js-modules.lang | File | 7.87 KB | 0644 |
|
typescript-js-statements.lang | File | 19.42 KB | 0644 |
|
typescript-js-values.lang | File | 2.33 KB | 0644 |
|
typescript-jsx.lang | File | 6.32 KB | 0644 |
|
typescript-type-expressions.lang | File | 19.3 KB | 0644 |
|
typescript-type-generics.lang | File | 8.51 KB | 0644 |
|
typescript-type-literals.lang | File | 13.59 KB | 0644 |
|
typescript.lang | File | 29.12 KB | 0644 |
|
vala.lang | File | 12.83 KB | 0644 |
|
vbnet.lang | File | 7.78 KB | 0644 |
|
verilog.lang | File | 15.54 KB | 0644 |
|
vhdl.lang | File | 7.68 KB | 0644 |
|
xml.lang | File | 9.23 KB | 0644 |
|
xslt.lang | File | 3.83 KB | 0644 |
|
yacc.lang | File | 5.65 KB | 0644 |
|
yaml.lang | File | 8.71 KB | 0644 |
|