function e(e){return RegExp(`^((`+e.join(`)|(`)+`))\\b`)}var t=[`Clamp`,`Constructor`,`EnforceRange`,`Exposed`,`ImplicitThis`,`Global`,`PrimaryGlobal`,`LegacyArrayClass`,`LegacyUnenumerableNamedProperties`,`LenientThis`,`NamedConstructor`,`NewObject`,`NoInterfaceObject`,`OverrideBuiltins`,`PutForwards`,`Replaceable`,`SameObject`,`TreatNonObjectAsNull`,`TreatNullAs`,`EmptyString`,`Unforgeable`,`Unscopeable`],n=e(t),r=`unsigned.short.long.unrestricted.float.double.boolean.byte.octet.Promise.ArrayBuffer.DataView.Int8Array.Int16Array.Int32Array.Uint8Array.Uint16Array.Uint32Array.Uint8ClampedArray.Float32Array.Float64Array.ByteString.DOMString.USVString.sequence.object.RegExp.Error.DOMException.FrozenArray.any.void`.split(`.`),i=e(r),a=[`attribute`,`callback`,`const`,`deleter`,`dictionary`,`enum`,`getter`,`implements`,`inherit`,`interface`,`iterable`,`legacycaller`,`maplike`,`partial`,`required`,`serializer`,`setlike`,`setter`,`static`,`stringifier`,`typedef`,`optional`,`readonly`,`or`],o=e(a),s=[`true`,`false`,`Infinity`,`NaN`,`null`],c=e(s),l=e([`callback`,`dictionary`,`enum`,`interface`]),u=e([`typedef`]),d=/^[:<=>?]/,f=/^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/,p=/^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/,m=/^_?[A-Za-z][0-9A-Z_a-z-]*/,h=/^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/,g=/^"[^"]*"/,_=/^\/\*.*?\*\//,v=/^\/\*.*/,y=/^.*?\*\//;function b(e,t){if(e.eatSpace())return null;if(t.inComment)return e.match(y)?(t.inComment=!1,`comment`):(e.skipToEnd(),`comment`);if(e.match(`//`))return e.skipToEnd(),`comment`;if(e.match(_))return`comment`;if(e.match(v))return t.inComment=!0,`comment`;if(e.match(/^-?[0-9\.]/,!1)&&(e.match(f)||e.match(p)))return`number`;if(e.match(g))return`string`;if(t.startDef&&e.match(m))return`def`;if(t.endDef&&e.match(h))return t.endDef=!1,`def`;if(e.match(o))return`keyword`;if(e.match(i)){var r=t.lastToken,a=(e.match(/^\s*(.+?)\b/,!1)||[])[1];return r===`:`||r===`implements`||a===`implements`||a===`=`?`builtin`:`type`}return e.match(n)?`builtin`:e.match(c)?`atom`:e.match(m)?`variable`:e.match(d)?`operator`:(e.next(),null)}const x={name:`webidl`,startState:function(){return{inComment:!1,lastToken:``,startDef:!1,endDef:!1}},token:function(e,t){var n=b(e,t);if(n){var r=e.current();t.lastToken=r,n===`keyword`?(t.startDef=l.test(r),t.endDef=t.endDef||u.test(r)):t.startDef=!1}return n},languageData:{autocomplete:t.concat(r).concat(a).concat(s)}};export{x as webIDL};