Hi all

Check this out:
http://www.thespanner.co.uk/2012/11/07/sandboxing-and-parsing-jquery-in-100ms/

I have written a complete parser/sandbox based on tracking opening and
closing characters (I will be writing a paper on this in more detail) it
works by using the opening and closing states to store the current state.
For example:

o={
};

Here my parser looks at the state before "{" and labels it as a object
literal. I track that state and when a "}" is encountered I can use the
balanced nature of javascript to my advantage by looking up the current
count of characters which allows me to identify that "}" is in fact a
closing object literal. It isn't that simple I here you say and there are
complicated cases such as:
var xyz, xyz
{}

Here my parser takes an additional step using the characters it tracks such
as "{" and "(" etc I can use that to uniquely identify the var statement
context by using indexes of these characters to know the comma is in fact
part of a var statement. Lets look at another example and I'll illustrate
with comments how the tracking works.

//C = curly
//P = Paren

//C 1
{
function x
//P1
()
//P0
{//C2
  var x, y // C2 + P0 = Var statement
  //C3
  {
  }//C2
  ; // C2 + P0 = '';
}//C1
}//C0

By using these reference points no matter how many nested expressions you
have you can still know the statement it's part of or the character should
be a particular state. Please let me know your comments and I'll post the
paper when it's done.

Cheers

Gareth
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to