{"version":3,"file":"vhdl-9LHG0O1e.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/vhdl.js"],"sourcesContent":["function words(str) {\n  var obj = {}, words = str.split(\",\");\n  for (var i = 0; i < words.length; ++i) {\n    var allCaps = words[i].toUpperCase();\n    var firstCap = words[i].charAt(0).toUpperCase() + words[i].slice(1);\n    obj[words[i]] = true;\n    obj[allCaps] = true;\n    obj[firstCap] = true;\n  }\n  return obj;\n}\n\nfunction metaHook(stream) {\n  stream.eatWhile(/[\\w\\$_]/);\n  return \"meta\";\n}\n\nvar atoms = words(\"null\"),\n    hooks = {\"`\": metaHook, \"$\": metaHook},\n    multiLineStrings = false;\n\nvar keywords = words(\"abs,access,after,alias,all,and,architecture,array,assert,attribute,begin,block,\" +\n                     \"body,buffer,bus,case,component,configuration,constant,disconnect,downto,else,elsif,end,end block,end case,\" +\n                     \"end component,end for,end generate,end if,end loop,end process,end record,end units,entity,exit,file,for,\" +\n                     \"function,generate,generic,generic map,group,guarded,if,impure,in,inertial,inout,is,label,library,linkage,\" +\n                     \"literal,loop,map,mod,nand,new,next,nor,null,of,on,open,or,others,out,package,package body,port,port map,\" +\n                     \"postponed,procedure,process,pure,range,record,register,reject,rem,report,return,rol,ror,select,severity,signal,\" +\n                     \"sla,sll,sra,srl,subtype,then,to,transport,type,unaffected,units,until,use,variable,wait,when,while,with,xnor,xor\");\n\nvar blockKeywords = words(\"architecture,entity,begin,case,port,else,elsif,end,for,function,if\");\n\nvar isOperatorChar = /[&|~><!\\)\\(*#%@+\\/=?\\:;}{,\\.\\^\\-\\[\\]]/;\nvar curPunc;\n\nfunction tokenBase(stream, state) {\n  var ch = stream.next();\n  if (hooks[ch]) {\n    var result = hooks[ch](stream, state);\n    if (result !== false) return result;\n  }\n  if (ch == '\"') {\n    state.tokenize = tokenString2(ch);\n    return state.tokenize(stream, state);\n  }\n  if (ch == \"'\") {\n    state.tokenize = tokenString(ch);\n    return state.tokenize(stream, state);\n  }\n  if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n    curPunc = ch;\n    return null;\n  }\n  if (/[\\d']/.test(ch)) {\n    stream.eatWhile(/[\\w\\.']/);\n    return \"number\";\n  }\n  if (ch == \"-\") {\n    if (stream.eat(\"-\")) {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n  }\n  if (isOperatorChar.test(ch)) {\n    stream.eatWhile(isOperatorChar);\n    return \"operator\";\n  }\n  stream.eatWhile(/[\\w\\$_]/);\n  var cur = stream.current();\n  if (keywords.propertyIsEnumerable(cur.toLowerCase())) {\n    if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n    return \"keyword\";\n  }\n  if (atoms.propertyIsEnumerable(cur)) return \"atom\";\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) {end = true; break;}\n      escaped = !escaped && next == \"--\";\n    }\n    if (end || !(escaped || multiLineStrings))\n      state.tokenize = tokenBase;\n    return \"string\";\n  };\n}\nfunction tokenString2(quote) {\n  return function(stream, state) {\n    var escaped = false, next, end = false;\n    while ((next = stream.next()) != null) {\n      if (next == quote && !escaped) {end = true; break;}\n      escaped = !escaped && next == \"--\";\n    }\n    if (end || !(escaped || multiLineStrings))\n      state.tokenize = tokenBase;\n    return \"string.special\";\n  };\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}\nfunction pushContext(state, col, type) {\n  return state.context = new Context(state.indented, col, type, null, state.context);\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 vhdl = {\n  name: \"vhdl\",\n  startState: function(indentUnit) {\n    return {\n      tokenize: null,\n      context: new Context(-indentUnit, 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\" || style == \"meta\") return style;\n    if (ctx.align == null) ctx.align = true;\n\n    if ((curPunc == \";\" || curPunc == \":\") && ctx.type == \"statement\") popContext(state);\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 (ctx.type == \"}\" || ctx.type == \"top\" || (ctx.type == \"statement\" && curPunc == \"newstatement\"))\n      pushContext(state, stream.column(), \"statement\");\n    state.startOfLine = false;\n    return style;\n  },\n\n  indent: function(state, textAfter, cx) {\n    if (state.tokenize != tokenBase && state.tokenize != null) return 0;\n    var firstChar = textAfter && textAfter.charAt(0), ctx = state.context, closing = firstChar == ctx.type;\n    if (ctx.type == \"statement\") return ctx.indented + (firstChar == \"{\" ? 0 : cx.unit);\n    else if (ctx.align) return ctx.column + (closing ? 0 : 1);\n    else return ctx.indented + (closing ? 0 : cx.unit);\n  },\n\n  languageData: {\n    indentOnInput: /^\\s*[{}]$/,\n    commentTokens: {line: \"--\"}\n  }\n}\n"],"names":["words","str","obj","split","i","length","allCaps","toUpperCase","firstCap","charAt","slice","metaHook","stream","eatWhile","curPunc","atoms","hooks","$","keywords","blockKeywords","isOperatorChar","tokenBase","state","quote","ch","next","result","tokenize","escaped","end","tokenString","test","eat","skipToEnd","cur","current","propertyIsEnumerable","toLowerCase","Context","indented","column","type","align","prev","this","pushContext","col","context","popContext","t","vhdl","name","startState","indentUnit","startOfLine","token","ctx","sol","indentation","eatSpace","style","indent","textAfter","cx","firstChar","closing","unit","languageData","indentOnInput","commentTokens","line"],"mappings":"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","x_google_ignoreList":[0]}