class MainClass {
void Main(CaseClass c) {
forall (EntryClass e in c.EntryRoot()) {
if (e.IsSelected(), 20) { // a comma is legal???
Console.WriteLine("so bad");
}
}
}
}
void Main(CaseClass c) {
forall (EntryClass e in c.EntryRoot()) {
if (e.IsSelected(), 20) { // a comma is legal???
Console.WriteLine("so bad");
}
}
}
}
I'm not sure which is worse, that this compiles, or that I found such a syntax error in my own code.
There are free tools available to generate a parser from a formal grammar. To get started, check out the bison manual.
Jon, just found your blog today, didn't know you blogged! Good stuff.
ReplyDeleteRegarding the 'comma in if statement', this is a lesser known, almost never used and quite unintuitive feature of C++ (i believe C also has it).
if (condition1, condition2, ...) will execute all conditions, but only the result of the last one is taken into consideration.
I didn't know of it myself until one fine day when I too thought it was a bug in enscript and showed it to Shaun McCreight. It did not go down well with the boss who reminded me to get my c++ right.
Yogesh
It's not often someone teaches me something new about C++. You are going to make me break out my copy of The C++ Standard to double-check this.
ReplyDelete