function e(e){let t=e.regex,n=`[a-zA-Z_][a-zA-Z0-9_.]*(!|\\?)?`,r={$pattern:n,keyword:`after.alias.and.case.catch.cond.defstruct.defguard.do.else.end.fn.for.if.import.in.not.or.quote.raise.receive.require.reraise.rescue.try.unless.unquote.unquote_splicing.use.when.with|0`.split(`.`),literal:[`false`,`nil`,`true`]},i={className:`subst`,begin:/#\{/,end:/\}/,keywords:r},a={className:`number`,begin:`(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[0-9][0-9_]*(\\.[0-9_]+([eE][-+]?[0-9]+)?)?)`,relevance:0},o={match:/\\[\s\S]/,scope:`char.escape`,relevance:0},s=[{begin:/"/,end:/"/},{begin:/'/,end:/'/},{begin:/\//,end:/\//},{begin:/\|/,end:/\|/},{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/},{begin:/\{/,end:/\}/},{begin:/</,end:/>/}],c=e=>({scope:`char.escape`,begin:t.concat(/\\/,e),relevance:0}),l={className:`string`,begin:`~[a-z](?=[/|([{<"'])`,contains:s.map(t=>e.inherit(t,{contains:[c(t.end),o,i]}))},u={className:`string`,begin:`~[A-Z](?=[/|([{<"'])`,contains:s.map(t=>e.inherit(t,{contains:[c(t.end)]}))},d={className:`regex`,variants:[{begin:`~r(?=[/|([{<"'])`,contains:s.map(n=>e.inherit(n,{end:t.concat(n.end,/[uismxfU]{0,7}/),contains:[c(n.end),o,i]}))},{begin:`~R(?=[/|([{<"'])`,contains:s.map(n=>e.inherit(n,{end:t.concat(n.end,/[uismxfU]{0,7}/),contains:[c(n.end)]}))}]},f={className:`string`,contains:[e.BACKSLASH_ESCAPE,i],variants:[{begin:/"""/,end:/"""/},{begin:/'''/,end:/'''/},{begin:/~S"""/,end:/"""/,contains:[]},{begin:/~S"/,end:/"/,contains:[]},{begin:/~S'''/,end:/'''/,contains:[]},{begin:/~S'/,end:/'/,contains:[]},{begin:/'/,end:/'/},{begin:/"/,end:/"/}]},p={className:`function`,beginKeywords:`def defp defmacro defmacrop`,end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})]},m=e.inherit(p,{className:`class`,beginKeywords:`defimpl defmodule defprotocol defrecord`,end:/\bdo\b|$|;/}),h=[f,d,u,l,e.HASH_COMMENT_MODE,m,p,{begin:`::`},{className:`symbol`,begin:`:(?![\\s:])`,contains:[f,{begin:"[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?"}],relevance:0},{className:`symbol`,begin:`[a-zA-Z_][a-zA-Z0-9_.]*(!|\\?)?:(?!:)`,relevance:0},{className:`title.class`,begin:/(\b[A-Z][a-zA-Z0-9_]+)/,relevance:0},a,{className:`variable`,begin:`(\\$\\W)|((\\$|@@?)(\\w+))`}];return i.contains=h,{name:`Elixir`,aliases:[`ex`,`exs`],keywords:r,contains:h}}export{e as default};