You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
2.5 KiB
1 lines
2.5 KiB
function n(t){return new RegExp("^(("+t.join(")|(")+"))\\b")}var o=["Clamp","Constructor","EnforceRange","Exposed","ImplicitThis","Global","PrimaryGlobal","LegacyArrayClass","LegacyUnenumerableNamedProperties","LenientThis","NamedConstructor","NewObject","NoInterfaceObject","OverrideBuiltins","PutForwards","Replaceable","SameObject","TreatNonObjectAsNull","TreatNullAs","EmptyString","Unforgeable","Unscopeable"],s=n(o),c=["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"],u=n(c),l=["attribute","callback","const","deleter","dictionary","enum","getter","implements","inherit","interface","iterable","legacycaller","maplike","partial","required","serializer","setlike","setter","static","stringifier","typedef","optional","readonly","or"],f=n(l),m=["true","false","Infinity","NaN","null"],d=n(m),y=["callback","dictionary","enum","interface"],b=n(y),p=["typedef"],h=n(p),A=/^[:<=>?]/,g=/^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/,D=/^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/,i=/^_?[A-Za-z][0-9A-Z_a-z-]*/,k=/^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/,E=/^"[^"]*"/,C=/^\/\*.*?\*\//,N=/^\/\*.*/,w=/^.*?\*\//;function S(t,e){if(t.eatSpace())return null;if(e.inComment)return t.match(w)?(e.inComment=!1,"comment"):(t.skipToEnd(),"comment");if(t.match("//"))return t.skipToEnd(),"comment";if(t.match(C))return"comment";if(t.match(N))return e.inComment=!0,"comment";if(t.match(/^-?[0-9\.]/,!1)&&(t.match(g)||t.match(D)))return"number";if(t.match(E))return"string";if(e.startDef&&t.match(i))return"def";if(e.endDef&&t.match(k))return e.endDef=!1,"def";if(t.match(f))return"keyword";if(t.match(u)){var r=e.lastToken,a=(t.match(/^\s*(.+?)\b/,!1)||[])[1];return r===":"||r==="implements"||a==="implements"||a==="="?"builtin":"type"}return t.match(s)?"builtin":t.match(d)?"atom":t.match(i)?"variable":t.match(A)?"operator":(t.next(),null)}const T={name:"webidl",startState:function(){return{inComment:!1,lastToken:"",startDef:!1,endDef:!1}},token:function(t,e){var r=S(t,e);if(r){var a=t.current();e.lastToken=a,r==="keyword"?(e.startDef=b.test(a),e.endDef=e.endDef||h.test(a)):e.startDef=!1}return r},languageData:{autocomplete:o.concat(c).concat(l).concat(m)}};export{T as webIDL};
|