pike.git / lib / modules / Parser.pmod / Pike.pmod

version» Context lines:

pike.git/lib/modules/Parser.pmod/Pike.pmod:1:   #pike __REAL_VERSION__      inherit "C.pmod";    + #define UNKNOWN_TOKEN \ +  throw( ({sprintf("Unknown token %O\n",data[pos..pos+20]) }) ) +  + static mapping(string : int) backquoteops = + (["/":1, "%":1, "*":1, "&":1, "|":1, "^":1, "~":1, +  "+=":2, "+":1, +  "<<":2, "<=":2, "<":1, +  ">>":2, ">=":2, ">":1, +  "!=":2, "!":1, +  "==":2, "=":1, +  "()":2, +  "->=":3, "->":2, "-":1, +  "[]=":3, "[]":2 ]); +    array(string) split(string data)   {    int start;    int line=1;    array(string) ret=({});    int pos;    data += "\n\0"; /* End sentinel. */       while(1)    {
pike.git/lib/modules/Parser.pmod/Pike.pmod:99:    while(data[pos]>='0' && data[pos]<='9') pos++;    if(data[pos]=='e' || data[pos]=='E')    {    pos++;    while(data[pos]>='0' && data[pos]<='9') pos++;    }    }    break;       default: -  throw( ({sprintf("Unknown token %O\n",data[pos..pos+20]) }) ); +  UNKNOWN_TOKEN;       case '`': -  while(data[pos]=='`') data[pos]++; +  { +  int bqstart = pos; +  while(data[pos]=='`') +  ++pos; +  if (pos - bqstart > 3) // max. three ``` +  UNKNOWN_TOKEN; +  int chars = backquoteops[data[pos..pos+2]] +  || backquoteops[data[pos..pos+1]] +  || backquoteops[data[pos..pos]]; +  if (chars) +  pos += chars; +  else +  UNKNOWN_TOKEN; +  } +  break;       case '/':    case '{': case '}':    case '[': case ']':    case '(': case ')':    case ';':    case ',':    case '*': case '%':    case '?': case ':':    case '&': case '|': case '^':