{"version":3,"file":"ebnf-CHmKiAoS.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/ebnf.js"],"sourcesContent":["var commentType = {slash: 0, parenthesis: 1};\nvar stateType = {comment: 0, _string: 1, characterClass: 2};\n\nexport const ebnf = {\n  name: \"ebnf\",\n  startState: function () {\n    return {\n      stringType: null,\n      commentType: null,\n      braced: 0,\n      lhs: true,\n      localState: null,\n      stack: [],\n      inDefinition: false\n    };\n  },\n  token: function (stream, state) {\n    if (!stream) return;\n\n    //check for state changes\n    if (state.stack.length === 0) {\n      //strings\n      if ((stream.peek() == '\"') || (stream.peek() == \"'\")) {\n        state.stringType = stream.peek();\n        stream.next(); // Skip quote\n        state.stack.unshift(stateType._string);\n      } else if (stream.match('/*')) { //comments starting with /*\n        state.stack.unshift(stateType.comment);\n        state.commentType = commentType.slash;\n      } else if (stream.match('(*')) { //comments starting with (*\n        state.stack.unshift(stateType.comment);\n        state.commentType = commentType.parenthesis;\n      }\n    }\n\n    //return state\n    //stack has\n    switch (state.stack[0]) {\n    case stateType._string:\n      while (state.stack[0] === stateType._string && !stream.eol()) {\n        if (stream.peek() === state.stringType) {\n          stream.next(); // Skip quote\n          state.stack.shift(); // Clear flag\n        } else if (stream.peek() === \"\\\\\") {\n          stream.next();\n          stream.next();\n        } else {\n          stream.match(/^.[^\\\\\\\"\\']*/);\n        }\n      }\n      return state.lhs ? \"property\" : \"string\"; // Token style\n\n    case stateType.comment:\n      while (state.stack[0] === stateType.comment && !stream.eol()) {\n        if (state.commentType === commentType.slash && stream.match('*/')) {\n          state.stack.shift(); // Clear flag\n          state.commentType = null;\n        } else if (state.commentType === commentType.parenthesis && stream.match('*)')) {\n          state.stack.shift(); // Clear flag\n          state.commentType = null;\n        } else {\n          stream.match(/^.[^\\*]*/);\n        }\n      }\n      return \"comment\";\n\n    case stateType.characterClass:\n      while (state.stack[0] === stateType.characterClass && !stream.eol()) {\n        if (!(stream.match(/^[^\\]\\\\]+/) || stream.match('.'))) {\n          state.stack.shift();\n        }\n      }\n      return \"operator\";\n    }\n\n    var peek = stream.peek();\n\n    //no stack\n    switch (peek) {\n    case \"[\":\n      stream.next();\n      state.stack.unshift(stateType.characterClass);\n      return \"bracket\";\n    case \":\":\n    case \"|\":\n    case \";\":\n      stream.next();\n      return \"operator\";\n    case \"%\":\n      if (stream.match(\"%%\")) {\n        return \"header\";\n      } else if (stream.match(/[%][A-Za-z]+/)) {\n        return \"keyword\";\n      } else if (stream.match(/[%][}]/)) {\n        return \"bracket\";\n      }\n      break;\n    case \"/\":\n      if (stream.match(/[\\/][A-Za-z]+/)) {\n        return \"keyword\";\n      }\n    case \"\\\\\":\n      if (stream.match(/[\\][a-z]+/)) {\n        return \"string.special\";\n      }\n    case \".\":\n      if (stream.match(\".\")) {\n        return \"atom\";\n      }\n    case \"*\":\n    case \"-\":\n    case \"+\":\n    case \"^\":\n      if (stream.match(peek)) {\n        return \"atom\";\n      }\n    case \"$\":\n      if (stream.match(\"$$\")) {\n        return \"builtin\";\n      } else if (stream.match(/[$][0-9]+/)) {\n        return \"variableName.special\";\n      }\n    case \"<\":\n      if (stream.match(/<<[a-zA-Z_]+>>/)) {\n        return \"builtin\";\n      }\n    }\n\n    if (stream.match('//')) {\n      stream.skipToEnd();\n      return \"comment\";\n    } else if (stream.match('return')) {\n      return \"operator\";\n    } else if (stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)) {\n      if (stream.match(/(?=[\\(.])/)) {\n        return \"variable\";\n      } else if (stream.match(/(?=[\\s\\n]*[:=])/)) {\n        return \"def\";\n      }\n      return \"variableName.special\";\n    } else if ([\"[\", \"]\", \"(\", \")\"].indexOf(stream.peek()) != -1) {\n      stream.next();\n      return \"bracket\";\n    } else if (!stream.eatSpace()) {\n      stream.next();\n    }\n    return null;\n  }\n};\n"],"names":["commentType","stateType","ebnf","name","startState","stringType","braced","lhs","localState","stack","inDefinition","token","stream","state","length","peek","next","unshift","match","eol","shift","skipToEnd","indexOf","eatSpace"],"mappings":"gFAAA,IAAIA,EAAsB,EAAtBA,EAAsC,EACtCC,EAAsB,EAAtBA,EAAkC,EAAlCA,EAAqD,EAE7C,MAACC,EAAO,CAClBC,KAAM,OACNC,WAAY,WACV,MAAO,CACLC,WAAY,KACZL,YAAa,KACbM,OAAQ,EACRC,KAAK,EACLC,WAAY,KACZC,MAAO,GACPC,cAAc,EAElB,EACAC,MAAO,SAAUC,EAAQC,GACvB,GAAKD,EAAL,CAoBA,OAjB2B,IAAvBC,EAAMJ,MAAMK,SAEQ,KAAjBF,EAAOG,QAAoC,KAAjBH,EAAOG,QACpCF,EAAMR,WAAaO,EAAOG,OAC1BH,EAAOI,OACPH,EAAMJ,MAAMQ,QAAQhB,IACXW,EAAOM,MAAM,OACtBL,EAAMJ,MAAMQ,QAAQhB,GACpBY,EAAMb,YAAcA,GACXY,EAAOM,MAAM,QACtBL,EAAMJ,MAAMQ,QAAQhB,GACpBY,EAAMb,YAAcA,IAMhBa,EAAMJ,MAAM,IACpB,KAAKR,EACH,KAAOY,EAAMJ,MAAM,KAAOR,IAAsBW,EAAOO,OACjDP,EAAOG,SAAWF,EAAMR,YAC1BO,EAAOI,OACPH,EAAMJ,MAAMW,SACe,OAAlBR,EAAOG,QAChBH,EAAOI,OACPJ,EAAOI,QAEPJ,EAAOM,MAAM,gBAGjB,OAAOL,EAAMN,IAAM,WAAa,SAElC,KAAKN,EACH,KAAOY,EAAMJ,MAAM,KAAOR,IAAsBW,EAAOO,OACjDN,EAAMb,cAAgBA,GAAqBY,EAAOM,MAAM,OAGjDL,EAAMb,cAAgBA,GAA2BY,EAAOM,MAAM,OAFvEL,EAAMJ,MAAMW,QACZP,EAAMb,YAAc,MAKpBY,EAAOM,MAAM,YAGjB,MAAO,UAET,KAAKjB,EACH,KAAOY,EAAMJ,MAAM,KAAOR,IAA6BW,EAAOO,OACtDP,EAAOM,MAAM,cAAgBN,EAAOM,MAAM,MAC9CL,EAAMJ,MAAMW,QAGhB,MAAO,WAGT,IAAIL,EAAOH,EAAOG,OAGlB,OAAQA,GACR,IAAK,IAGH,OAFAH,EAAOI,OACPH,EAAMJ,MAAMQ,QAAQhB,GACb,UACT,IAAK,IACL,IAAK,IACL,IAAK,IAEH,OADAW,EAAOI,OACA,WACT,IAAK,IACH,GAAIJ,EAAOM,MAAM,MACf,MAAO,SACF,GAAIN,EAAOM,MAAM,gBACtB,MAAO,UACF,GAAIN,EAAOM,MAAM,UACtB,MAAO,UAET,MACF,IAAK,IACH,GAAIN,EAAOM,MAAM,iBACf,MAAO,UAEX,IAAK,KACH,GAAIN,EAAOM,MAAM,aACf,MAAO,iBAEX,IAAK,IACH,GAAIN,EAAOM,MAAM,KACf,MAAO,OAEX,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACH,GAAIN,EAAOM,MAAMH,GACf,MAAO,OAEX,IAAK,IACH,GAAIH,EAAOM,MAAM,MACf,MAAO,UACF,GAAIN,EAAOM,MAAM,aACtB,MAAO,uBAEX,IAAK,IACH,GAAIN,EAAOM,MAAM,kBACf,MAAO,UAIX,OAAIN,EAAOM,MAAM,OACfN,EAAOS,YACA,WACET,EAAOM,MAAM,UACf,WACEN,EAAOM,MAAM,2BAClBN,EAAOM,MAAM,aACR,WACEN,EAAOM,MAAM,mBACf,MAEF,wBACiD,GAA/C,CAAC,IAAK,IAAK,IAAK,KAAKI,QAAQV,EAAOG,SAC7CH,EAAOI,OACA,YACGJ,EAAOW,YACjBX,EAAOI,OAEF,KAjIM,CAkIf","x_google_ignoreList":[0]}