I have a few questions about the AST structure and how the set of nodes 
defined in ast.h (bleeding-edge) were chosen that I hope an engineer 
familiar with V8 would be able to answer for me.

What is the relationship between Assignment and Declaration? The source 
hints to me that Assignment actually knows whether it is a declaration or 
not, and "var x = 0" would be considered an Assignment (whose parent would 
likely be an ExpressionStatement). The separation between assignments and 
declarations makes sense when keeping hoisting in mind, but I'm confused 
because I'm used to thinking that declarations are statements (in ast.h 
they derive directly from AstNode).

At a glance, some of the node types appear somewhat redundant. For example, 
CountOperation looks like it could be adequately described by 
UnaryOperation and the same is true for CompareOperation and 
BinaryOperation. Are these extra nodes (CountOperation and 
CompareOperation) defined solely for the compilation stage?

Why is Throw defined as an expression and not a statement?

How is a try-catch-finally statement represented? I'm also curious as to 
why TryCatchStatement and TryFinallyStatement exist, as opposed to having 
TryStatement encompass all cases.

Some insight would be much appreciated.

-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users

Reply via email to