Speed up parsing by scanning every token only once
Speed up parsing by scanning every token only once

Storing extra state in the token allows the reuse of the token. This is
very useful when calling lex() after previously lookahead() has been
called since there is no need to invoke any of the scan...() functions.

Chrome 15 running the benchmarks suite shows %15 performance win.

http://code.google.com/p/esprima/issues/detail?id=80

drom/esprima,thr0w/esprima,azu/esprima,jscs-dev/esprima-harmony,jeffmo/esprima,facebookarchive/esprima,toshok/esprima-old,jquery/esprima,ariya/esprima,fishbar/esprima,goatslacker/esprima,facebook/esprima,thr0w/esprima,ariya/esprima,gibson042/esprima,simudream/esprima,facebookarchive/esprima,xuyuanxiang/esprima,google-code-export/esprima,thr0w/esprima,as02700/esprima,djulien/esprima,J2TeaM/esprima,tk120404/esprima,google-code-export/esprima,substack/esprima,ariya/esprima,ikarienator/esprima,npmcomponent/ariya-esprima,fishbar/esprima,bcbcarl/esprima,hughsk/esprima,toshok/esprima-old,gibson042/esprima,kittens/esprima,sebmck/esprima,ChromeDevTools/esprima,djulien/esprima,spicyj/esprima,bcbcarl/esprima,supriyantomaftuh/esprima,facebook/esprima,toshok/esprima-old,jscs-dev/esprima-harmony,fishbar/esprima,bjlxj2008/esprima,jquery/esprima,xuyuanxiang/esprima,ChromeDevTools/esprima,drom/esprima,facebook/esprima,jquery/esprima,kriskowal/esprima,bcbcarl/esprima,renzy3/esprima,treejames/esprima,kittens/esprima,renzy3/esprima,supriyantomaftuh/esprima,simudream/esprima,michaelficarra/esprima,sebmck/esprima,ravjot28/esprima,caolan/esprima,bjlxj2008/esprima,renzy3/esprima,ravjot28/esprima,facebookarchive/esprima,ChromeDevTools/esprima,jasonLaster/esprima,curious-inc/esprima-tame,gibson042/esprima,ravjot28/esprima