{"version":3,"file":"z80-B9lBbT6u.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/z80.js"],"sourcesContent":["function mkZ80(ez80) {\n  var keywords1, keywords2;\n  if (ez80) {\n    keywords1 = /^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\\.([sl]?i)?[sl])?\\b/i;\n    keywords2 = /^(((call|j[pr]|rst|ret[in]?)(\\.([sl]?i)?[sl])?)|(rs|st)mix)\\b/i;\n  } else {\n    keywords1 = /^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\\b/i;\n    keywords2 = /^(call|j[pr]|ret[in]?|b_?(call|jump))\\b/i;\n  }\n\n  var variables1 = /^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\\b/i;\n  var variables2 = /^(n?[zc]|p[oe]?|m)\\b/i;\n  var errors = /^([hl][xy]|i[xy][hl]|slia|sll)\\b/i;\n  var numbers = /^([\\da-f]+h|[0-7]+o|[01]+b|\\d+d?)\\b/i;\n\n  return {\n    name: \"z80\",\n    startState: function() {\n      return {\n        context: 0\n      };\n    },\n    token: function(stream, state) {\n      if (!stream.column())\n        state.context = 0;\n\n      if (stream.eatSpace())\n        return null;\n\n      var w;\n\n      if (stream.eatWhile(/\\w/)) {\n        if (ez80 && stream.eat('.')) {\n          stream.eatWhile(/\\w/);\n        }\n        w = stream.current();\n\n        if (stream.indentation()) {\n          if ((state.context == 1 || state.context == 4) && variables1.test(w)) {\n            state.context = 4;\n            return 'variable';\n          }\n\n          if (state.context == 2 && variables2.test(w)) {\n            state.context = 4;\n            return 'variableName.special';\n          }\n\n          if (keywords1.test(w)) {\n            state.context = 1;\n            return 'keyword';\n          } else if (keywords2.test(w)) {\n            state.context = 2;\n            return 'keyword';\n          } else if (state.context == 4 && numbers.test(w)) {\n            return 'number';\n          }\n\n          if (errors.test(w))\n            return 'error';\n        } else if (stream.match(numbers)) {\n          return 'number';\n        } else {\n          return null;\n        }\n      } else if (stream.eat(';')) {\n        stream.skipToEnd();\n        return 'comment';\n      } else if (stream.eat('\"')) {\n        while (w = stream.next()) {\n          if (w == '\"')\n            break;\n\n          if (w == '\\\\')\n            stream.next();\n        }\n        return 'string';\n      } else if (stream.eat('\\'')) {\n        if (stream.match(/\\\\?.'/))\n          return 'number';\n      } else if (stream.eat('.') || stream.sol() && stream.eat('#')) {\n        state.context = 5;\n\n        if (stream.eatWhile(/\\w/))\n          return 'def';\n      } else if (stream.eat('$')) {\n        if (stream.eatWhile(/[\\da-f]/i))\n          return 'number';\n      } else if (stream.eat('%')) {\n        if (stream.eatWhile(/[01]/))\n          return 'number';\n      } else {\n        stream.next();\n      }\n      return null;\n    }\n  };\n};\n\nexport const z80 = mkZ80(false)\nexport const ez80 = mkZ80(true)\n"],"names":["mkZ80","ez80","keywords1","keywords2","variables1","variables2","errors","numbers","name","startState","context","token","stream","state","column","eatSpace","w","eatWhile","eat","current","indentation","match","test","skipToEnd","next","sol","z80"],"mappings":"aAAA,SAASA,EAAMC,GACb,IAAIC,EAAWC,EACXF,GACFC,EAAY,mQACZC,EAAY,mEAEZD,EAAY,iLACZC,EAAY,4CAGd,IAAIC,EAAa,0CACbC,EAAa,wBACbC,EAAS,oCACTC,EAAU,uCAEd,MAAO,CACLC,KAAM,MACNC,WAAY,WACV,MAAO,CACLC,QAAS,EAEb,EACAC,MAAO,SAASC,EAAQC,GAItB,GAHKD,EAAOE,WACVD,EAAMH,QAAU,GAEdE,EAAOG,WACT,OAAO,KAET,IAAIC,EAEJ,GAAIJ,EAAOK,SAAS,MAAO,CAMzB,GALIhB,GAAQW,EAAOM,IAAI,MACrBN,EAAOK,SAAS,MAElBD,EAAIJ,EAAOO,WAEPP,EAAOQ,cAuBJ,OAAIR,EAAOS,MAAMd,GACf,SAEA,KAzBP,IAAsB,GAAjBM,EAAMH,SAAiC,GAAjBG,EAAMH,UAAiBN,EAAWkB,KAAKN,GAEhE,OADAH,EAAMH,QAAU,EACT,WAGT,GAAqB,GAAjBG,EAAMH,SAAgBL,EAAWiB,KAAKN,GAExC,OADAH,EAAMH,QAAU,EACT,uBAGT,GAAIR,EAAUoB,KAAKN,GAEjB,OADAH,EAAMH,QAAU,EACT,UACF,GAAIP,EAAUmB,KAAKN,GAExB,OADAH,EAAMH,QAAU,EACT,UACF,GAAqB,GAAjBG,EAAMH,SAAgBH,EAAQe,KAAKN,GAC5C,MAAO,SAGT,GAAIV,EAAOgB,KAAKN,GACd,MAAO,OAMb,KAAO,IAAIJ,EAAOM,IAAI,KAEpB,OADAN,EAAOW,YACA,UACF,GAAIX,EAAOM,IAAI,KAAM,CAC1B,MAAOF,EAAIJ,EAAOY,SACP,KAALR,GAGK,MAALA,GACFJ,EAAOY,OAEX,MAAO,QACT,CAAO,GAAIZ,EAAOM,IAAI,MACpB,GAAIN,EAAOS,MAAM,SACf,MAAO,cACJ,GAAIT,EAAOM,IAAI,MAAQN,EAAOa,OAASb,EAAOM,IAAI,MAGvD,GAFAL,EAAMH,QAAU,EAEZE,EAAOK,SAAS,MAClB,MAAO,WACJ,GAAIL,EAAOM,IAAI,MACpB,GAAIN,EAAOK,SAAS,YAClB,MAAO,cACJ,GAAIL,EAAOM,IAAI,MACpB,GAAIN,EAAOK,SAAS,QAClB,MAAO,cAETL,EAAOY,MACT,CACA,OAAO,IACT,EAEJ,oEAEY,MAACE,EAAM1B,GAAM,GACLA,GAAM","x_google_ignoreList":[0]}