PROPOSAL: open and close brace optional for single statement try, 	catch, finally, method declaration
    Tom Hawtin 
    Thomas.Hawtin at Sun.COM
       
    Mon Mar 30 06:25:01 PDT 2009
    
    
  
Glenn A. Marshall wrote:
> 1.  This example is syntactically invalid since the first try does not have
> a catch nor finally clause; it is not ambiguous.  Good example tho.
Neal's example:
 >> try
 >> try stmt;
 >> catch(...) stmt;
 >> catch(...) stmt;
 >> finally stmt;
Under the proposal "try stmt; catch(...) stmt;" is a statement. So the 
above is equivalent to:
try
stmt2;
catch(...) stmt;
finally stmt;
But "try stmt; catch(...) stmt; catch(...) stmt;" is also a statement. 
So the example is also equivalent to:
try
stmt2;
finally stmt;
Which is different. Which is it?
This is similar to the dangling-else ambiguity. 
http://en.wikipedia.org/wiki/Dangling_else
> 2.  The optional omission of the braces is only applicable to simple, single
> statement try, catch, finally (and method declaration).  Braces are still
> allowed, and are required for disambiguation, as well as for multiple
> statement try, catch finally (and method declaration).  They are are needed
> in this example.
That reads as if you think of a block statement (in for example the 
typical while usage) as not a type of statement. A block is a statement. 
You could ammend the grammar so the proposal uses non-block statement, 
but this is not how the rest of the language works.
BTW: Does anyone have a good suggestion for tool and basic Java grammar 
to check that syntax modifications are still parseable?
Tom
    
    
More information about the coin-dev
mailing list