function e(e,t={}){return t.variants=e,t}function t(t){let n=t.regex,r=e([t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.COMMENT(`/\\*\\*`,`\\*/`,{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:`doctag`,begin:`@[A-Za-z]+`}]})]),i={className:`regexp`,begin:/~?\/[^\/\n]+\//,contains:[t.BACKSLASH_ESCAPE]},a=e([t.BINARY_NUMBER_MODE,t.C_NUMBER_MODE]),o=e([{begin:/"""/,end:/"""/},{begin:/'''/,end:/'''/},{begin:`\\$/`,end:`/\\$`,relevance:10},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE],{className:`string`}),s={match:[/(class|interface|trait|enum|record|extends|implements)/,/\s+/,t.UNDERSCORE_IDENT_RE],scope:{1:`keyword`,3:`title.class`}};return{name:`Groovy`,keywords:{"variable.language":`this super`,literal:`true false null`,type:[`byte`,`short`,`char`,`int`,`long`,`boolean`,`float`,`double`,`void`],keyword:`def.as.in.assert.trait.abstract.static.volatile.transient.public.private.protected.synchronized.final.class.interface.enum.if.else.for.while.switch.case.break.default.continue.throw.throws.try.catch.finally.implements.extends.new.import.package.return.instanceof.var`.split(`.`)},contains:[t.SHEBANG({binary:`groovy`,relevance:10}),r,o,i,a,s,{className:`meta`,begin:`@[A-Za-z]+`,relevance:0},{className:`attr`,begin:`[A-Za-z0-9_$]+[ 	]*:`,relevance:0},{begin:/\?/,end:/:/,relevance:0,contains:[r,o,i,a,`self`]},{className:`symbol`,begin:`^[ 	]*`+n.lookahead(`[A-Za-z0-9_$]+:`),excludeBegin:!0,end:`[A-Za-z0-9_$]+:`,relevance:0}],illegal:/#|<\//}}export{t as default};