{ "information_for_contributors": [ "This file has been converted from https://github.com/JuliaEditorSupport/atom-language-julia/blob/master/grammars/julia_vscode.json", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], "version": "https://github.com/JuliaEditorSupport/atom-language-julia/commit/c686684f18153687886e7d19c1bfc3a33076b1ab", "name": "Julia", "scopeName": "source.julia", "comment": "This grammar is used by Atom (Oniguruma), GitHub (PCRE), and VSCode (Oniguruma),\nso all regexps must be compatible with both engines.\n\nSpecs:\n- https://github.com/kkos/oniguruma/blob/master/doc/RE\n- https://www.pcre.org/current/doc/html/", "patterns": [ { "include": "#operator" }, { "include": "#array" }, { "include": "#string" }, { "include": "#parentheses" }, { "include": "#bracket" }, { "include": "#function_decl" }, { "include": "#function_call" }, { "include": "#for_block" }, { "include": "#keyword" }, { "include": "#number" }, { "include": "#comment" }, { "include": "#type_decl" }, { "include": "#symbol" }, { "include": "#punctuation" } ], "repository": { "array": { "patterns": [ { "begin": "\\[", "beginCaptures": { "0": { "name": "meta.bracket.julia" } }, "end": "(\\])((?:\\.)?'*)", "endCaptures": { "1": { "name": "meta.bracket.julia" }, "2": { "name": "keyword.operator.transpose.julia" } }, "name": "meta.array.julia", "patterns": [ { "match": "\\bbegin\\b", "name": "constant.numeric.julia" }, { "match": "\\bend\\b", "name": "constant.numeric.julia" }, { "include": "#self_no_for_block" } ] } ] }, "parentheses": { "patterns": [ { "begin": "\\(", "beginCaptures": { "0": { "name": "meta.bracket.julia" } }, "end": "(\\))((?:\\.)?'*)", "endCaptures": { "1": { "name": "meta.bracket.julia" }, "2": { "name": "keyword.operator.transpose.julia" } }, "patterns": [ { "include": "#self_no_for_block" } ] } ] }, "bracket": { "patterns": [ { "begin": "\\{", "beginCaptures": { "0": { "name": "meta.bracket.julia" } }, "end": "(\\})((?:\\.)?'*)", "endCaptures": { "1": { "name": "meta.bracket.julia" }, "2": { "name": "keyword.operator.transpose.julia" } }, "patterns": [ { "include": "#self_no_for_block" } ] } ] }, "comment_tags": { "patterns": [ { "match": "\\bTODO\\b", "name": "keyword.other.comment-annotation.julia" }, { "match": "\\bFIXME\\b", "name": "keyword.other.comment-annotation.julia" }, { "match": "\\bCHANGED\\b", "name": "keyword.other.comment-annotation.julia" }, { "match": "\\bXXX\\b", "name": "keyword.other.comment-annotation.julia" } ] }, "comment": { "patterns": [ { "include": "#comment_block" }, { "begin": "#", "beginCaptures": { "0": { "name": "punctuation.definition.comment.julia" } }, "end": "\\n", "name": "comment.line.number-sign.julia", "patterns": [ { "include": "#comment_tags" } ] } ] }, "comment_block": { "patterns": [ { "begin": "#=", "beginCaptures": { "0": { "name": "punctuation.definition.comment.begin.julia" } }, "end": "=#", "endCaptures": { "0": { "name": "punctuation.definition.comment.end.julia" } }, "name": "comment.block.number-sign-equals.julia", "patterns": [ { "include": "#comment_tags" }, { "include": "#comment_block" } ] } ] }, "function_call": { "patterns": [ { "begin": "((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?\\.?(\\()", "beginCaptures": { "1": { "name": "support.function.julia" }, "2": { "name": "support.type.julia" }, "3": { "name": "meta.bracket.julia" } }, "end": "\\)(('|(\\.'))*\\.?')?", "endCaptures": { "0": { "name": "meta.bracket.julia" }, "1": { "name": "keyword.operator.transposed-func.julia" } }, "patterns": [ { "include": "#self_no_for_block" } ] } ] }, "function_decl": { "patterns": [ { "captures": { "1": { "name": "entity.name.function.julia" }, "2": { "name": "support.type.julia" } }, "match": "((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?(?=\\([^#]*\\)(::[^\\s]+)?(\\s*\\bwhere\\b\\s+.+?)?\\s*?=(?![=>]))", "comment": "first group is function name\nSecond group is type parameters (e.g. {T<:Number, S})\nThen open parens\nThen a lookahead ensures that we are followed by:\n - anything (function arguments)\n - 0 or more spaces\n - Finally an equal sign\nNegative lookahead ensures we don't have another equal sign (not `==`)" }, { "captures": { "1": { "name": "keyword.other.julia" }, "2": { "name": "keyword.operator.dots.julia" }, "3": { "name": "entity.name.function.julia" }, "4": { "name": "support.type.julia" } }, "match": "\\b(function|macro)(?:\\s+(?:(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*(\\.))?((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?|\\s*)(?=\\()", "comment": "similar regex to previous, but with keyword not 1-line syntax" } ] }, "for_block": { "comment": "for blocks need to be special-cased to support tokenizing 'outer' properly", "patterns": [ { "begin": "\\b(for)\\b", "beginCaptures": { "0": { "name": "keyword.control.julia" } }, "end": "(?|->|-->|<--|←|→|↔|↚|↛|↞|↠|↢|↣|↦|↤|↮|⇎|⇍|⇏|⇐|⇒|⇔|⇴|⇶|⇷|⇸|⇹|⇺|⇻|⇼|⇽|⇾|⇿|⟵|⟶|⟷|⟹|⟺|⟻|⟼|⟽|⟾|⟿|⤀|⤁|⤂|⤃|⤄|⤅|⤆|⤇|⤌|⤍|⤎|⤏|⤐|⤑|⤔|⤕|⤖|⤗|⤘|⤝|⤞|⤟|⤠|⥄|⥅|⥆|⥇|⥈|⥊|⥋|⥎|⥐|⥒|⥓|⥖|⥗|⥚|⥛|⥞|⥟|⥢|⥤|⥦|⥧|⥨|⥩|⥪|⥫|⥬|⥭|⥰|⧴|⬱|⬰|⬲|⬳|⬴|⬵|⬶|⬷|⬸|⬹|⬺|⬻|⬼|⬽|⬾|⬿|⭀|⭁|⭂|⭃|⥷|⭄|⥺|⭇|⭈|⭉|⭊|⭋|⭌|←|→|⇜|⇝|↜|↝|↩|↪|↫|↬|↼|↽|⇀|⇁|⇄|⇆|⇇|⇉|⇋|⇌|⇚|⇛|⇠|⇢|↷|↶|↺|↻|=>)", "name": "keyword.operator.arrow.julia" }, { "match": "(?::=|\\+=|-=|\\*=|//=|/=|\\.//=|\\./=|\\.\\*=|\\\\=|\\.\\\\=|\\^=|\\.\\^=|%=|\\.%=|÷=|\\.÷=|\\|=|&=|\\.&=|⊻=|\\.⊻=|\\$=|<<=|>>=|>>>=|=(?!=))", "name": "keyword.operator.update.julia" }, { "match": "(?:<<|>>>|>>|\\.>>>|\\.>>|\\.<<)", "name": "keyword.operator.shift.julia" }, { "match": "(?:\\s*(::|>:|<:)\\s*((?:(?:Union)?\\([^)]*\\)|[[:alpha:]_$∇][[:word:]⁺-ₜ!′\\.]*(?:(?:{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})|(?:\".+?(?)>=|>|<|≥|≤|===|==|≡|!=|≠|!==|≢|∈|∉|∋|∌|⊆|⊈|⊂|⊄|⊊|∝|∊|∍|∥|∦|∷|∺|∻|∽|∾|≁|≃|≂|≄|≅|≆|≇|≈|≉|≊|≋|≌|≍|≎|≐|≑|≒|≓|≖|≗|≘|≙|≚|≛|≜|≝|≞|≟|≣|≦|≧|≨|≩|≪|≫|≬|≭|≮|≯|≰|≱|≲|≳|≴|≵|≶|≷|≸|≹|≺|≻|≼|≽|≾|≿|⊀|⊁|⊃|⊅|⊇|⊉|⊋|⊏|⊐|⊑|⊒|⊜|⊩|⊬|⊮|⊰|⊱|⊲|⊳|⊴|⊵|⊶|⊷|⋍|⋐|⋑|⋕|⋖|⋗|⋘|⋙|⋚|⋛|⋜|⋝|⋞|⋟|⋠|⋡|⋢|⋣|⋤|⋥|⋦|⋧|⋨|⋩|⋪|⋫|⋬|⋭|⋲|⋳|⋴|⋵|⋶|⋷|⋸|⋹|⋺|⋻|⋼|⋽|⋾|⋿|⟈|⟉|⟒|⦷|⧀|⧁|⧡|⧣|⧤|⧥|⩦|⩧|⩪|⩫|⩬|⩭|⩮|⩯|⩰|⩱|⩲|⩳|⩵|⩶|⩷|⩸|⩹|⩺|⩻|⩼|⩽|⩾|⩿|⪀|⪁|⪂|⪃|⪄|⪅|⪆|⪇|⪈|⪉|⪊|⪋|⪌|⪍|⪎|⪏|⪐|⪑|⪒|⪓|⪔|⪕|⪖|⪗|⪘|⪙|⪚|⪛|⪜|⪝|⪞|⪟|⪠|⪡|⪢|⪣|⪤|⪥|⪦|⪧|⪨|⪩|⪪|⪫|⪬|⪭|⪮|⪯|⪰|⪱|⪲|⪳|⪴|⪵|⪶|⪷|⪸|⪹|⪺|⪻|⪼|⪽|⪾|⪿|⫀|⫁|⫂|⫃|⫄|⫅|⫆|⫇|⫈|⫉|⫊|⫋|⫌|⫍|⫎|⫏|⫐|⫑|⫒|⫓|⫔|⫕|⫖|⫗|⫘|⫙|⫷|⫸|⫹|⫺|⊢|⊣|⟂|⫪|⫫|<:|>:))", "name": "keyword.operator.relation.julia" }, { "match": "(?<=\\s)(?:\\?)(?=\\s)", "name": "keyword.operator.ternary.julia" }, { "match": "(?<=\\s)(?:\\:)(?=\\s)", "name": "keyword.operator.ternary.julia" }, { "match": "(?:\\|\\||&&|(?)", "name": "keyword.operator.applies.julia" }, { "match": "(?:\\||\\.\\||\\&|\\.\\&|~|¬|\\.~|⊻|\\.⊻)", "name": "keyword.operator.bitwise.julia" }, { "match": "\\.?(?:\\+\\+|\\-\\-|\\+|\\-|−|¦|\\||⊕|⊖|⊞|⊟|∪|∨|⊔|±|∓|∔|∸|≏|⊎|⊻|⊽|⋎|⋓|⟇|⧺|⧻|⨈|⨢|⨣|⨤|⨥|⨦|⨧|⨨|⨩|⨪|⨫|⨬|⨭|⨮|⨹|⨺|⩁|⩂|⩅|⩊|⩌|⩏|⩐|⩒|⩔|⩖|⩗|⩛|⩝|⩡|⩢|⩣|\\*|//?|⌿|÷|%|&|·|·|⋅|∘|×|\\\\|∩|∧|⊗|⊘|⊙|⊚|⊛|⊠|⊡|⊓|∗|∙|∤|⅋|≀|⊼|⋄|⋆|⋇|⋉|⋊|⋋|⋌|⋏|⋒|⟑|⦸|⦼|⦾|⦿|⧶|⧷|⨇|⨰|⨱|⨲|⨳|⨴|⨵|⨶|⨷|⨸|⨻|⨼|⨽|⩀|⩃|⩄|⩋|⩍|⩎|⩑|⩓|⩕|⩘|⩚|⩜|⩞|⩟|⩠|⫛|⊍|▷|⨝|⟕|⟖|⟗|⨟|\\^|↑|↓|⇵|⟰|⟱|⤈|⤉|⤊|⤋|⤒|⤓|⥉|⥌|⥍|⥏|⥑|⥔|⥕|⥘|⥙|⥜|⥝|⥠|⥡|⥣|⥥|⥮|⥯|↑|↓|√|∛|∜|⋆|±|∓)", "name": "keyword.operator.arithmetic.julia" }, { "match": "(?:∘)", "name": "keyword.operator.compose.julia" }, { "match": "(?:::|(?<=\\s)isa(?=\\s))", "name": "keyword.operator.isa.julia" }, { "match": "(?:(?<=\\s)in(?=\\s))", "name": "keyword.operator.relation.in.julia" }, { "match": "(?:\\.(?=(?:@|_|\\p{L}))|\\.\\.+|…|⁝|⋮|⋱|⋰|⋯)", "name": "keyword.operator.dots.julia" }, { "match": "(?:\\$)(?=.+)", "name": "keyword.operator.interpolation.julia" }, { "captures": { "2": { "name": "keyword.operator.transposed-variable.julia" } }, "match": "((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)(('|(\\.'))*\\.?')" }, { "captures": { "1": { "name": "bracket.end.julia" }, "2": { "name": "keyword.operator.transposed-matrix.julia" } }, "match": "(\\])((?:'|(?:\\.'))*\\.?')" }, { "captures": { "1": { "name": "bracket.end.julia" }, "2": { "name": "keyword.operator.transposed-parens.julia" } }, "match": "(\\))((?:'|(?:\\.'))*\\.?')" } ] }, "string": { "patterns": [ { "begin": "(?:(@doc)\\s((?:doc)?\"\"\")|(doc\"\"\"))", "beginCaptures": { "1": { "name": "support.function.macro.julia" }, "2": { "name": "punctuation.definition.string.begin.julia" } }, "end": "(\"\"\") ?(->)?", "endCaptures": { "1": { "name": "punctuation.definition.string.end.julia" }, "2": { "name": "keyword.operator.arrow.julia" } }, "name": "string.docstring.julia", "patterns": [ { "include": "#string_escaped_char" }, { "include": "#string_dollar_sign_interpolate" } ] }, { "begin": "(i?cxx)(\"\"\")", "beginCaptures": { "1": { "name": "support.function.macro.julia" }, "2": { "name": "punctuation.definition.string.begin.julia" } }, "end": "\"\"\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.julia" } }, "name": "embed.cxx.julia", "contentName": "meta.embedded.inline.cpp", "patterns": [ { "include": "source.cpp#root_context" }, { "include": "#string_dollar_sign_interpolate" } ] }, { "begin": "(py)(\"\"\")", "beginCaptures": { "1": { "name": "support.function.macro.julia" }, "2": { "name": "punctuation.definition.string.begin.julia" } }, "end": "([\\s\\w]*)(\"\"\")", "endCaptures": { "2": { "name": "punctuation.definition.string.end.julia" } }, "name": "embed.python.julia", "contentName": "meta.embedded.inline.python", "patterns": [ { "include": "source.python" }, { "include": "#string_dollar_sign_interpolate" } ] }, { "begin": "(js)(\"\"\")", "beginCaptures": { "1": { "name": "support.function.macro.julia" }, "2": { "name": "punctuation.definition.string.begin.julia" } }, "end": "\"\"\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.julia" } }, "name": "embed.js.julia", "contentName": "meta.embedded.inline.javascript", "patterns": [ { "include": "source.js" }, { "include": "#string_dollar_sign_interpolate" } ] }, { "begin": "(R)(\"\"\")", "beginCaptures": { "1": { "name": "support.function.macro.julia" }, "2": { "name": "punctuation.definition.string.begin.julia" } }, "end": "\"\"\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.julia" } }, "name": "embed.R.julia", "contentName": "meta.embedded.inline.r", "patterns": [ { "include": "source.r" }, { "include": "#string_dollar_sign_interpolate" } ] }, { "begin": "(raw)(\"\"\")", "beginCaptures": { "1": { "name": "support.function.macro.julia" }, "2": { "name": "punctuation.definition.string.begin.julia" } }, "end": "\"\"\"", "name": "string.quoted.other.julia", "endCaptures": { "0": { "name": "punctuation.definition.string.end.julia" } }, "patterns": [ { "include": "#string_escaped_char" } ] }, { "begin": "(raw)(\")", "beginCaptures": { "1": { "name": "support.function.macro.julia" }, "2": { "name": "punctuation.definition.string.begin.julia" } }, "end": "\"", "name": "string.quoted.other.julia", "endCaptures": { "0": { "name": "punctuation.definition.string.end.julia" } }, "patterns": [ { "include": "#string_escaped_char" } ] }, { "begin": "(sql)(\"\"\")", "beginCaptures": { "1": { "name": "support.function.macro.julia" }, "2": { "name": "punctuation.definition.string.begin.julia" } }, "end": "\"\"\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.julia" } }, "name": "embed.sql.julia", "contentName": "meta.embedded.inline.sql", "patterns": [ { "include": "source.sql" }, { "include": "#string_dollar_sign_interpolate" } ] }, { "begin": "var\"\"\"", "end": "\"\"\"", "name": "constant.other.symbol.julia", "patterns": [ { "include": "#string_escaped_char" } ] }, { "begin": "var\"", "end": "\"", "name": "constant.other.symbol.julia", "patterns": [ { "include": "#string_escaped_char" } ] }, { "begin": "^\\s?(doc)?(\"\"\")\\s?$", "beginCaptures": { "1": { "name": "support.function.macro.julia" }, "2": { "name": "punctuation.definition.string.begin.julia" } }, "end": "(\"\"\")", "endCaptures": { "1": { "name": "punctuation.definition.string.end.julia" } }, "name": "string.docstring.julia", "comment": "This only matches docstrings that start and end with triple quotes on\ntheir own line in the void", "patterns": [ { "include": "#string_escaped_char" }, { "include": "#string_dollar_sign_interpolate" } ] }, { "begin": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.julia" } }, "end": "'(?!')", "endCaptures": { "0": { "name": "punctuation.definition.string.end.julia" } }, "name": "string.quoted.single.julia", "patterns": [ { "include": "#string_escaped_char" } ] }, { "begin": "\"\"\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.multiline.begin.julia" } }, "end": "\"\"\"", "endCaptures": { "0": { "name": "punctuation.definition.string.multiline.end.julia" } }, "name": "string.quoted.triple.double.julia", "comment": "multi-line string with triple double quotes", "patterns": [ { "include": "#string_escaped_char" }, { "include": "#string_dollar_sign_interpolate" } ] }, { "name": "string.quoted.double.julia", "begin": "\"(?!\"\")", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.julia" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.julia" } }, "comment": "String with single pair of double quotes. Regex matches isolated double quote", "patterns": [ { "include": "#string_escaped_char" }, { "include": "#string_dollar_sign_interpolate" } ] }, { "begin": "r\"\"\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.regexp.begin.julia" } }, "end": "(\"\"\")([imsx]{0,4})?", "endCaptures": { "1": { "name": "punctuation.definition.string.regexp.end.julia" }, "2": { "comment": "I took this scope name from python regex grammar", "name": "keyword.other.option-toggle.regexp.julia" } }, "name": "string.regexp.julia", "patterns": [ { "include": "#string_escaped_char" } ] }, { "begin": "r\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.regexp.begin.julia" } }, "end": "(\")([imsx]{0,4})?", "endCaptures": { "1": { "name": "punctuation.definition.string.regexp.end.julia" }, "2": { "comment": "I took this scope name from python regex grammar", "name": "keyword.other.option-toggle.regexp.julia" } }, "name": "string.regexp.julia", "patterns": [ { "include": "#string_escaped_char" } ] }, { "begin": "(?!:_)(?:struct|mutable\\s+struct|abstract\\s+type|primitive\\s+type)\\s+((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)(\\s*(<:)\\s*(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*(?:{.*})?)?", "name": "meta.type.julia" } ] }, "self_no_for_block": { "comment": "Same as $self, but does not contain #for_block. 'outer' is not valid in some contexts (e.g. generators, comprehensions, indexing), so use this when matching those in begin/end patterns. Keep this up-to-date with $self!", "patterns": [ { "include": "#operator" }, { "include": "#array" }, { "include": "#string" }, { "include": "#parentheses" }, { "include": "#bracket" }, { "include": "#function_decl" }, { "include": "#function_call" }, { "include": "#keyword" }, { "include": "#number" }, { "include": "#comment" }, { "include": "#type_decl" }, { "include": "#symbol" }, { "include": "#punctuation" } ] }, "punctuation": { "patterns": [ { "match": ",", "name": "punctuation.separator.comma.julia" }, { "match": ";", "name": "punctuation.separator.semicolon.julia" } ] } } }