Edsko de Vries wrote:
> if(...)
> {
> blah
> // TODO: must do something else here
> }
>
> f();
>
> the comment is not associated with the call to f, but with a NOP
> instruction which is the last instruction in the body of the if. That
I would expect a } to be a token, so the comment would be associated
with that }, never with the f() call.
As long as you don't discard significant punctuation like this, I doubt
there is any need for NOPs.
> also works if the body of the if is completely empty, or if the comment
> is the very last thing in the file.
I use a fake EOF token to handle this case (because I deal with language
conversion (e.g. Natural to COBOL), it is fairly important for me to
attach comments to the most logically relevant token - that is the pain
in the ass part).
> Now when we combine it with the empty lines problem, suppose we have
> something like
>
> function g()
> {
> code 1
> code 2
> code 3
>
> // TODO: I need to do something here
>
> code 4
> code 5
> code 6
> }
>
> At the moment, what happens is that the comment gets associated with
> "code 4", and the blank lines are ignored entirely:
>
> function g()
> {
> code 1
> code 2
> code 3
> // TODO: I need to do something here
> code 4
> code 5
> code 6
> }
>
> If we do what you suggest, then we mark "code 3" as having three
> (including the line of the comment) blank lines after it (or,
> equivalently, code 4 as having three blank lines before it), but we
> still associate the comment with "code 4":
Sure but your question was blank lines, so I only offered a blank-lines
related answer.
But if you already have comments handled like this, why don't you simply
treat a blank line like a full-line comment (which it is, to some
extent)?
_______________________________________________
[email protected] http://lists.gnu.org/mailman/listinfo/help-bison