function o(t){for(var e={},n=t.split(" "),r=0;r!\/]/,a;function N(t,e){var n=t.next();if(n=='"'||n=="'")return e.tokenize=$(n),e.tokenize(t,e);if(/[\[\]{}\(\),;\\:\?\.]/.test(n))return a=n,"punctuation";if(n=="#")return t.skipToEnd(),"atom";if(n=="%")return t.eatWhile(/\b/),"atom";if(/\d/.test(n))return t.eatWhile(/[\w\.]/),"number";if(n=="/"){if(t.eat("*"))return e.tokenize=d,d(t,e);if(t.eat("/"))return t.skipToEnd(),"comment"}if(f.test(n))return n=="@"&&(t.match("try")||t.match("catch")||t.match("lazy"))?"keyword":(t.eatWhile(f),"operator");t.eatWhile(/[\w\$_\xa1-\uffff]/);var r=t.current();return y.propertyIsEnumerable(r)?"keyword":v.propertyIsEnumerable(r)?"builtin":g.propertyIsEnumerable(r)||k.propertyIsEnumerable(r)||O.propertyIsEnumerable(r)||x.propertyIsEnumerable(r)||E.propertyIsEnumerable(r)||w.propertyIsEnumerable(r)?"def":I.propertyIsEnumerable(r)||z.propertyIsEnumerable(r)||L.propertyIsEnumerable(r)?"string":C.propertyIsEnumerable(r)?"typeName.standard":S.propertyIsEnumerable(r)?"modifier":M.propertyIsEnumerable(r)?"atom":"variable"}function $(t){return function(e,n){for(var r=!1,l,m=!1;(l=e.next())!=null;){if(l==t&&!r){var s=e.peek();s&&(s=s.toLowerCase(),(s=="b"||s=="h"||s=="o")&&e.next()),m=!0;break}r=!r&&l=="\\"}return(m||!(r||W))&&(n.tokenize=null),"string"}}function d(t,e){for(var n=!1,r;r=t.next();){if(r=="/"&&n){e.tokenize=null;break}n=r=="*"}return"comment"}function h(t,e,n,r,l){this.indented=t,this.column=e,this.type=n,this.align=r,this.prev=l}function p(t,e,n){var r=t.indented;return t.context&&t.context.type=="statement"&&(r=t.context.indented),t.context=new h(r,e,n,null,t.context)}function c(t){var e=t.context.type;return(e==")"||e=="]"||e=="}")&&(t.indented=t.context.indented),t.context=t.context.prev}const P={name:"ttcn",startState:function(){return{tokenize:null,context:new h(0,0,"top",!1),indented:0,startOfLine:!0}},token:function(t,e){var n=e.context;if(t.sol()&&(n.align==null&&(n.align=!1),e.indented=t.indentation(),e.startOfLine=!0),t.eatSpace())return null;a=null;var r=(e.tokenize||N)(t,e);if(r=="comment")return r;if(n.align==null&&(n.align=!0),(a==";"||a==":"||a==",")&&n.type=="statement")c(e);else if(a=="{")p(e,t.column(),"}");else if(a=="[")p(e,t.column(),"]");else if(a=="(")p(e,t.column(),")");else if(a=="}"){for(;n.type=="statement";)n=c(e);for(n.type=="}"&&(n=c(e));n.type=="statement";)n=c(e)}else a==n.type?c(e):T&&((n.type=="}"||n.type=="top")&&a!=";"||n.type=="statement"&&a=="newstatement")&&p(e,t.column(),"statement");return e.startOfLine=!1,r},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:b}};export{P as ttcn};