Yes, I also have a feeling that semicolons are inconsistent.
Thanks for the article. Even though I don't mind not having semicolons, and in some languages this might actually be preferable, I think the author does make some good points, and the semicolon might make things easier for tools (and for some users).
The issue I have is about the mixture of braces and semicolons. In C/C++ sometimes you must put a semicolon after a closing brace, but not always, which is inconsistent. In our case, composite constructs use braces. I think that the rule should be that if the construct does not contain anything, then use a semicolon, otherwise use only braces. For example:
state S1;
state S2 { ... }
The alternative, to use semicolons everywhere doesn't look too good for me:
capsule {
statemachine {
state S1 {
...
};
};
};
Specially because the language is space insensitive, so this term could be written as
capsule{statemachine{state S1{...};};};
I'm not sure I like that.
On the other hand, the use of semicolons for simple declarations has one awkward case: actions. Consider
entry action 'p.sig().send();';
The combination of a semicolon in the action language and the core language doesn't look very good. But I don't know if there is a good way of dealing with this case.
PS: I noticed that in your example you have a transition with an empty action. These are now optional, as are transition names. So you could write
transition from ServerInitial to ServerActive;