function wordObj(e){for(var t={},r=0,n=e.length;r<n;++r)t[e[r]]=!0;return t}var keywords=wordObj(["note","across","when","variant","until","unique","undefine","then","strip","select","retry","rescue","require","rename","reference","redefine","prefix","once","old","obsolete","loop","local","like","is","inspect","infix","include","if","frozen","from","external","export","ensure","end","elseif","else","do","creation","create","check","alias","agent","separate","invariant","inherit","indexing","feature","expanded","deferred","class","Void","True","Result","Precursor","False","Current","create","attached","detachable","as","and","implies","not","or"]),operators=wordObj([":=","and then","and","or","<<",">>"]);function chain(e,t,r){return r.tokenize.push(e),e(t,r)}function tokenBase(e,t){if(e.eatSpace())return null;var r=e.next();return '"'==r||"'"==r?chain(readQuoted(r,"string"),e,t):"-"==r&&e.eat("-")?(e.skipToEnd(),"comment"):":"==r&&e.eat("=")?"operator":/[0-9]/.test(r)?(e.eatWhile(/[xXbBCc0-9\.]/),e.eat(/[\?\!]/),"variable"):/[a-zA-Z_0-9]/.test(r)?(e.eatWhile(/[a-zA-Z_0-9]/),e.eat(/[\?\!]/),"variable"):/[=+\-\/*^%<>~]/.test(r)?(e.eatWhile(/[=+\-\/*^%<>~]/),"operator"):null}function readQuoted(e,t,r){return function(n,a){for(var o,i=!1;null!=(o=n.next());){if(o==e&&(r||!i)){a.tokenize.pop();break}i=!i&&"%"==o;}return t}}const eiffel={startState:function(){return {tokenize:[tokenBase]}},token:function(e,t){var r=t.tokenize[t.tokenize.length-1](e,t);if("variable"==r){var n=e.current();r=keywords.propertyIsEnumerable(e.current())?"keyword":operators.propertyIsEnumerable(e.current())?"operator":/^[A-Z][A-Z_0-9]*$/g.test(n)?"tag":/^0[bB][0-1]+$/g.test(n)||/^0[cC][0-7]+$/g.test(n)||/^0[xX][a-fA-F0-9]+$/g.test(n)||/^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(n)||/^[0-9]+$/g.test(n)?"number":"variable";}return r},languageData:{commentTokens:{line:"--"}}};

export { eiffel };
