{"version":3,"file":"ttcn-D-KkrC_Y.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/ttcn.js"],"sourcesContent":["function words(str) {\n  var obj = {}, words = str.split(\" \");\n  for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n  return obj;\n}\n\nconst parserConfig = {\n  name: \"ttcn\",\n  keywords: words(\"activate address alive all alt altstep and and4b any\" +\n                  \" break case component const continue control deactivate\" +\n                  \" display do else encode enumerated except exception\" +\n                  \" execute extends extension external for from function\" +\n                  \" goto group if import in infinity inout interleave\" +\n                  \" label language length log match message mixed mod\" +\n                  \" modifies module modulepar mtc noblock not not4b nowait\" +\n                  \" of on optional or or4b out override param pattern port\" +\n                  \" procedure record recursive rem repeat return runs select\" +\n                  \" self sender set signature system template testcase to\" +\n                  \" type union value valueof var variant while with xor xor4b\"),\n  builtin: words(\"bit2hex bit2int bit2oct bit2str char2int char2oct encvalue\" +\n                 \" decomp decvalue float2int float2str hex2bit hex2int\" +\n                 \" hex2oct hex2str int2bit int2char int2float int2hex\" +\n                 \" int2oct int2str int2unichar isbound ischosen ispresent\" +\n                 \" isvalue lengthof log2str oct2bit oct2char oct2hex oct2int\" +\n                 \" oct2str regexp replace rnd sizeof str2bit str2float\" +\n                 \" str2hex str2int str2oct substr unichar2int unichar2char\" +\n                 \" enum2int\"),\n  types: words(\"anytype bitstring boolean char charstring default float\" +\n               \" hexstring integer objid octetstring universal verdicttype timer\"),\n  timerOps: words(\"read running start stop timeout\"),\n  portOps: words(\"call catch check clear getcall getreply halt raise receive\" +\n                 \" reply send trigger\"),\n  configOps: words(\"create connect disconnect done kill killed map unmap\"),\n  verdictOps: words(\"getverdict setverdict\"),\n  sutOps: words(\"action\"),\n  functionOps: words(\"apply derefers refers\"),\n\n  verdictConsts: words(\"error fail inconc none pass\"),\n  booleanConsts: words(\"true false\"),\n  otherConsts: words(\"null NULL omit\"),\n\n  visibilityModifiers: words(\"private public friend\"),\n  templateMatch: words(\"complement ifpresent subset superset permutation\"),\n  multiLineStrings: true\n}\n\nvar wordList = []\nfunction add(obj) {\n  if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop))\n    wordList.push(prop);\n}\nadd(parserConfig.keywords);\nadd(parserConfig.builtin);\nadd(parserConfig.timerOps);\nadd(parserConfig.portOps);\n\nvar keywords = parserConfig.keywords || {},\n    builtin = parserConfig.builtin || {},\n    timerOps = parserConfig.timerOps || {},\n    portOps  = parserConfig.portOps || {},\n    configOps = parserConfig.configOps || {},\n    verdictOps = parserConfig.verdictOps || {},\n    sutOps = parserConfig.sutOps || {},\n    functionOps = parserConfig.functionOps || {},\n\n    verdictConsts = parserConfig.verdictConsts || {},\n    booleanConsts = parserConfig.booleanConsts || {},\n    otherConsts   = parserConfig.otherConsts || {},\n\n    types = parserConfig.types || {},\n    visibilityModifiers = parserConfig.visibilityModifiers || {},\n    templateMatch = parserConfig.templateMatch || {},\n    multiLineStrings = parserConfig.multiLineStrings,\n    indentStatements = parserConfig.indentStatements !== false;\nvar isOperatorChar = /[+\\-*&@=<>!\\/]/;\nvar curPunc;\n\nfunction tokenBase(stream, state) {\n  var ch = stream.next();\n\n  if (ch == '\"' || ch == \"'\") {\n    state.tokenize = tokenString(ch);\n    return state.tokenize(stream, state);\n  }\n  if (/[\\[\\]{}\\(\\),;\\\\:\\?\\.]/.test(ch)) {\n    curPunc = ch;\n    return \"punctuation\";\n  }\n  if (ch == \"#\"){\n    stream.skipToEnd();\n    return \"atom\";\n  }\n  if (ch == \"%\"){\n    stream.eatWhile(/\\b/);\n    return \"atom\";\n  }\n  if (/\\d/.test(ch)) {\n    stream.eatWhile(/[\\w\\.]/);\n    return \"number\";\n  }\n  if (ch == \"/\") {\n    if (stream.eat(\"*\")) {\n      state.tokenize = tokenComment;\n      return tokenComment(stream, state);\n    }\n    if (stream.eat(\"/\")) {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n  }\n  if (isOperatorChar.test(ch)) {\n    if(ch == \"@\"){\n      if(stream.match(\"try\") || stream.match(\"catch\")\n         || stream.match(\"lazy\")){\n        return \"keyword\";\n      }\n    }\n    stream.eatWhile(isOperatorChar);\n    return \"operator\";\n  }\n  stream.eatWhile(/[\\w\\$_\\xa1-\\uffff]/);\n  var cur = stream.current();\n\n  if (keywords.propertyIsEnumerable(cur)) return \"keyword\";\n  if (builtin.propertyIsEnumerable(cur)) return \"builtin\";\n\n  if (timerOps.propertyIsEnumerable(cur)) return \"def\";\n  if (configOps.propertyIsEnumerable(cur)) return \"def\";\n  if (verdictOps.propertyIsEnumerable(cur)) return \"def\";\n  if (portOps.propertyIsEnumerable(cur)) return \"def\";\n  if (sutOps.propertyIsEnumerable(cur)) return \"def\";\n  if (functionOps.propertyIsEnumerable(cur)) return \"def\";\n\n  if (verdictConsts.propertyIsEnumerable(cur)) return \"string\";\n  if (booleanConsts.propertyIsEnumerable(cur)) return \"string\";\n  if (otherConsts.propertyIsEnumerable(cur)) return \"string\";\n\n  if (types.propertyIsEnumerable(cur)) return \"typeName.standard\";\n  if (visibilityModifiers.propertyIsEnumerable(cur))\n    return \"modifier\";\n  if (templateMatch.propertyIsEnumerable(cur)) return \"atom\";\n\n  return \"variable\";\n}\n\nfunction tokenString(quote) {\n  return function(stream, state) {\n    var escaped = false, next, end = false;\n    while ((next = stream.next()) != null) {\n      if (next == quote && !escaped){\n        var afterQuote = stream.peek();\n        //look if the character after the quote is like the B in '10100010'B\n        if (afterQuote){\n          afterQuote = afterQuote.toLowerCase();\n          if(afterQuote == \"b\" || afterQuote == \"h\" || afterQuote == \"o\")\n            stream.next();\n        }\n        end = true; break;\n      }\n      escaped = !escaped && next == \"\\\\\";\n    }\n    if (end || !(escaped || multiLineStrings))\n      state.tokenize = null;\n    return \"string\";\n  };\n}\n\nfunction tokenComment(stream, state) {\n  var maybeEnd = false, ch;\n  while (ch = stream.next()) {\n    if (ch == \"/\" && maybeEnd) {\n      state.tokenize = null;\n      break;\n    }\n    maybeEnd = (ch == \"*\");\n  }\n  return \"comment\";\n}\n\nfunction Context(indented, column, type, align, prev) {\n  this.indented = indented;\n  this.column = column;\n  this.type = type;\n  this.align = align;\n  this.prev = prev;\n}\n\nfunction pushContext(state, col, type) {\n  var indent = state.indented;\n  if (state.context && state.context.type == \"statement\")\n    indent = state.context.indented;\n  return state.context = new Context(indent, col, type, null, state.context);\n}\n\nfunction popContext(state) {\n  var t = state.context.type;\n  if (t == \")\" || t == \"]\" || t == \"}\")\n    state.indented = state.context.indented;\n  return state.context = state.context.prev;\n}\n\n//Interface\nexport const ttcn = {\n  name: \"ttcn\",\n  startState: function() {\n    return {\n      tokenize: null,\n      context: new Context(0, 0, \"top\", false),\n      indented: 0,\n      startOfLine: true\n    };\n  },\n\n  token: function(stream, state) {\n    var ctx = state.context;\n    if (stream.sol()) {\n      if (ctx.align == null) ctx.align = false;\n      state.indented = stream.indentation();\n      state.startOfLine = true;\n    }\n    if (stream.eatSpace()) return null;\n    curPunc = null;\n    var style = (state.tokenize || tokenBase)(stream, state);\n    if (style == \"comment\") return style;\n    if (ctx.align == null) ctx.align = true;\n\n    if ((curPunc == \";\" || curPunc == \":\" || curPunc == \",\")\n        && ctx.type == \"statement\"){\n      popContext(state);\n    }\n    else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n    else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n    else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n    else if (curPunc == \"}\") {\n      while (ctx.type == \"statement\") ctx = popContext(state);\n      if (ctx.type == \"}\") ctx = popContext(state);\n      while (ctx.type == \"statement\") ctx = popContext(state);\n    }\n    else if (curPunc == ctx.type) popContext(state);\n    else if (indentStatements &&\n             (((ctx.type == \"}\" || ctx.type == \"top\") && curPunc != ';') ||\n              (ctx.type == \"statement\" && curPunc == \"newstatement\")))\n      pushContext(state, stream.column(), \"statement\");\n\n    state.startOfLine = false;\n\n    return style;\n  },\n\n  languageData: {\n    indentOnInput: /^\\s*[{}]$/,\n    commentTokens: {line: \"//\", block: {open: \"/*\", close: \"*/\"}},\n    autocomplete: wordList\n  }\n};\n"],"names":["words","str","obj","split","i","length","parserConfig","keywords","builtin","types","timerOps","portOps","configOps","verdictOps","sutOps","functionOps","verdictConsts","booleanConsts","otherConsts","visibilityModifiers","templateMatch","wordList","add","prop","hasOwnProperty","push","curPunc","indentStatements","isOperatorChar","tokenBase","stream","state","quote","ch","next","tokenize","escaped","end","afterQuote","peek","toLowerCase","test","skipToEnd","eatWhile","eat","tokenComment","match","cur","current","propertyIsEnumerable","maybeEnd","Context","indented","column","type","align","prev","this","pushContext","col","indent","context","popContext","t","ttcn","name","startState","startOfLine","token","ctx","sol","indentation","eatSpace","style","languageData","indentOnInput","commentTokens","line","block","open","close","autocomplete"],"mappings":"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","x_google_ignoreList":[0]}