jweinst1
12/6/2016 - 6:56 PM

royalscripttimeparse.js

//altrnative tokenizer/parser to RoyalScript
//time test


function RoyalParse(code){
  var tokens = code.split(/(\()|(\))|(,)|( )|\n|\t/);
  var repdict = {
    "(":"[",
    ")":"]",
    "undefined":''
  };
  for (var i=0;i<tokens.length;i++){
    if(tokens[i] in repdict) tokens[i] = repdict[tokens[i]];
    else if(tokens[i+1] === "("){
      tokens[i] = '"' + tokens[i] + '",';
    }
  }
  return JSON.parse('[' + tokens.join("") + ']');
}

var start = new Date().getTime()/1000;
var d = RoyalParse('a(4, 5, 6), b(4, c(4, "true")), print("fooo  fff"),b(),b(),b(),b(),b(),b(),b(),b(f(g(a(4, 5, y())), 4)),b(),b(d(r())),b(c())');
console.log((new Date().getTime()/1000) - start);
console.log(JSON.stringify(d, null, 3));

/*0.0009999275207519531
[
   "a",
   [
      4,
      5,
      6
   ],
   "b",
   [
      4,
      "c",
      [
         4,
         "true"
      ]
   ],
   "print",
   [
      "fooo  fff"
   ],
   "b",
   [],
   "b",
   [],
   "b",
   [],
   "b",
   [],
   "b",
   [],
   "b",
   [],
   "b",
   [],
   "b",
   [
      "f",
      [
         "g",
         [
            "a",
            [
               4,
               5,
               "y",
               []
            ]
         ],
         4
      ]
   ],
   "b",
   [],
   "b",
   [
      "d",
      [
         "r",
         []
      ]
   ],
   "b",
   [
      "c",
      []
   ]
]*/