Use stack-based approach for parsing binary expressions.
Use stack-based approach for parsing binary expressions.

Instead of going recursively, binary expressions are parsed using
shift-reduce strategy with a simple stack mechanism. It makes Esprima
more similar to the parser in V8 and JavaScriptCore. Also, this means
that we don't exhaust JavaScript engine's stack anymore for a really
complex expression.

Speed-up is noticeable due to the elimination of the long chain of
recursive calls. V8 3.13.7 shows at least 8% improvement.

See also the discussion in the mailing-list:
https://groups.google.com/d/topic/esprima/FqjWJc6UawA/

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

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