{"version":3,"file":"pig-DnhgnaAt.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/pig.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\n// builtin funcs taken from trunk revision 1303237\nvar pBuiltins = \"ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL \"\n    + \"CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS \"\n    + \"DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG \"\n    + \"FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN \"\n    + \"INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER \"\n    + \"ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS \"\n    + \"LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA  \"\n    + \"PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE \"\n    + \"SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG \"\n    + \"TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER \";\n\n// taken from QueryLexer.g\nvar pKeywords = \"VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP \"\n    + \"JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL \"\n    + \"PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE \"\n    + \"SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE \"\n    + \"NEQ MATCHES TRUE FALSE DUMP\";\n\n// data types\nvar pTypes = \"BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP \";\n\nvar builtins = words(pBuiltins), keywords = words(pKeywords), types = words(pTypes)\n\nvar isOperatorChar = /[*+\\-%<>=&?:\\/!|]/;\n\nfunction chain(stream, state, f) {\n  state.tokenize = f;\n  return f(stream, state);\n}\n\nfunction tokenComment(stream, state) {\n  var isEnd = false;\n  var ch;\n  while(ch = stream.next()) {\n    if(ch == \"/\" && isEnd) {\n      state.tokenize = tokenBase;\n      break;\n    }\n    isEnd = (ch == \"*\");\n  }\n  return \"comment\";\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        end = true; break;\n      }\n      escaped = !escaped && next == \"\\\\\";\n    }\n    if (end || !escaped)\n      state.tokenize = tokenBase;\n    return \"error\";\n  };\n}\n\n\nfunction tokenBase(stream, state) {\n  var ch = stream.next();\n\n  // is a start of string?\n  if (ch == '\"' || ch == \"'\")\n    return chain(stream, state, tokenString(ch));\n  // is it one of the special chars\n  else if(/[\\[\\]{}\\(\\),;\\.]/.test(ch))\n    return null;\n  // is it a number?\n  else if(/\\d/.test(ch)) {\n    stream.eatWhile(/[\\w\\.]/);\n    return \"number\";\n  }\n  // multi line comment or operator\n  else if (ch == \"/\") {\n    if (stream.eat(\"*\")) {\n      return chain(stream, state, tokenComment);\n    }\n    else {\n      stream.eatWhile(isOperatorChar);\n      return \"operator\";\n    }\n  }\n  // single line comment or operator\n  else if (ch==\"-\") {\n    if(stream.eat(\"-\")){\n      stream.skipToEnd();\n      return \"comment\";\n    }\n    else {\n      stream.eatWhile(isOperatorChar);\n      return \"operator\";\n    }\n  }\n  // is it an operator\n  else if (isOperatorChar.test(ch)) {\n    stream.eatWhile(isOperatorChar);\n    return \"operator\";\n  }\n  else {\n    // get the while word\n    stream.eatWhile(/[\\w\\$_]/);\n    // is it one of the listed keywords?\n    if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) {\n      //keywords can be used as variables like flatten(group), group.$0 etc..\n      if (!stream.eat(\")\") && !stream.eat(\".\"))\n        return \"keyword\";\n    }\n    // is it one of the builtin functions?\n    if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase()))\n      return \"builtin\";\n    // is it one of the listed types?\n    if (types && types.propertyIsEnumerable(stream.current().toUpperCase()))\n      return \"type\";\n    // default is a 'variable'\n    return \"variable\";\n  }\n}\n\n// Interface\nexport const pig = {\n  name: \"pig\",\n\n  startState: function() {\n    return {\n      tokenize: tokenBase,\n      startOfLine: true\n    };\n  },\n\n  token: function(stream, state) {\n    if(stream.eatSpace()) return null;\n    var style = state.tokenize(stream, state);\n    return style;\n  },\n\n  languageData: {\n    autocomplete: (pBuiltins + pTypes + pKeywords).split(\" \")\n  }\n};\n"],"names":["words","str","obj","split","i","length","pBuiltins","pKeywords","pTypes","builtins","keywords","types","isOperatorChar","chain","stream","state","f","tokenize","tokenComment","ch","isEnd","next","tokenBase","quote","escaped","end","test","eatWhile","eat","skipToEnd","propertyIsEnumerable","current","toUpperCase","pig","name","startState","startOfLine","token","eatSpace","languageData","autocomplete"],"mappings":"aAAA,SAASA,EAAMC,GAEb,IADA,IAAIC,EAAM,CAAA,EAAIF,EAAQC,EAAIE,MAAM,KACvBC,EAAI,EAAGA,EAAIJ,EAAMK,SAAUD,EAAGF,EAAIF,EAAMI,KAAM,EACvD,OAAOF,CACT,oEAGA,IAAII,EAAY,w3BAYZC,EAAY,mXAOZC,EAAS,mEAETC,EAAWT,EAAMM,GAAYI,EAAWV,EAAMO,GAAYI,EAAQX,EAAMQ,GAExEI,EAAiB,oBAErB,SAASC,EAAMC,EAAQC,EAAOC,GAE5B,OADAD,EAAME,SAAWD,EACVA,EAAEF,EAAQC,EACnB,CAEA,SAASG,EAAaJ,EAAQC,GAG5B,IAFA,IACII,EADAC,GAAQ,EAEND,EAAKL,EAAOO,QAAQ,CACxB,GAAS,KAANF,GAAaC,EAAO,CACrBL,EAAME,SAAWK,EACjB,KACF,CACAF,EAAe,KAAND,CACX,CACA,MAAO,SACT,CAkBA,SAASG,EAAUR,EAAQC,GACzB,IAjBmBQ,EAiBfJ,EAAKL,EAAOO,OAGhB,MAAU,KAANF,GAAmB,KAANA,EACRN,EAAMC,EAAQC,GArBJQ,EAqBuBJ,EApBnC,SAASL,EAAQC,GAEtB,IADA,IAAqBM,EAAjBG,GAAU,EAAaC,GAAM,EACD,OAAzBJ,EAAOP,EAAOO,SAAiB,CACpC,GAAIA,GAAQE,IAAUC,EAAS,CAC7BC,GAAM,EAAM,KACd,CACAD,GAAWA,GAAmB,MAARH,CACxB,CAGA,OAFII,GAAQD,IACVT,EAAME,SAAWK,GACZ,OACT,IAWQ,mBAAmBI,KAAKP,GACvB,KAED,KAAKO,KAAKP,IAChBL,EAAOa,SAAS,UACT,UAGM,KAANR,EACHL,EAAOc,IAAI,KACNf,EAAMC,EAAQC,EAAOG,IAG5BJ,EAAOa,SAASf,GACT,YAIE,KAAJO,EACJL,EAAOc,IAAI,MACZd,EAAOe,YACA,YAGPf,EAAOa,SAASf,GACT,YAIFA,EAAec,KAAKP,IAC3BL,EAAOa,SAASf,GACT,aAIPE,EAAOa,SAAS,WAEZjB,GAAYA,EAASoB,qBAAqBhB,EAAOiB,UAAUC,iBAExDlB,EAAOc,IAAI,OAASd,EAAOc,IAAI,KAC3B,UAGPnB,GAAYA,EAASqB,qBAAqBhB,EAAOiB,UAAUC,eACtD,UAELrB,GAASA,EAAMmB,qBAAqBhB,EAAOiB,UAAUC,eAChD,OAEF,WAEX,CAGY,MAACC,EAAM,CACjBC,KAAM,MAENC,WAAY,WACV,MAAO,CACLlB,SAAUK,EACVc,aAAa,EAEjB,EAEAC,MAAO,SAASvB,EAAQC,GACtB,OAAGD,EAAOwB,WAAmB,KACjBvB,EAAME,SAASH,EAAQC,EAErC,EAEAwB,aAAc,CACZC,cAAelC,EAAYE,EAASD,GAAWJ,MAAM","x_google_ignoreList":[0]}