[Mono-devel-list] mcs patch for precise location handling
atsushi at ximian.com
Mon Jun 27 11:54:41 EDT 2005
I once posted a patch but it seems waiting for approval and
Miguel still could not see, so am reposting the message without
patch. The patch itself is here:
Here is the latest mcs patch for precise location handling. With
this patch mcs reports
- the column number as well as line number, and
- the line number which is not shifted to next token
(you would have seen mcs reporting "next line" to the
actual related line number).
As long as I tested it does not fail under mcs/tests and mcs/errors.
This patch sadly has a bad side effect that it increases memory
consumption than before. Here are the profile results for
building sys.xml (I ran "make BOOTSTRAP_MCS="mono ../../mcs/mcs.exe"):
For summary, total memory consumption became 77765 KB from 74023 KB.
For the change details (will form ChangeLog):
- I added Column support in location.cs that is originally
suggested by Ben (checkpoints) last year, and added
Location to MemberName to store location for identifiers.
- I changed tokenizer to return Location for keywords, and
new "LocatedToken" for IDENTIFIERS, unary operators and
some symbols such as SEMICOLON. And modified cs-parser.jay
to cast correct types (especially for IDENTIFIERS).
- I replaced most of "lexer.Location" with
corresponding locations. I also removed "_mark_" hack in
cs-parser.jay and shifted some item numbers in the rules.
(Ben and Miguel: there are some changes since the last patch you
guys might have seen: unary operators return Location in tokenizer,
and I removed _mark_ in cs-parser.jay.)
There are still a few things I cannot remove lexer.Location and thus
for them it still reports "shifted" location (but with column).
I'll clarify more if any of them are not clear.
More information about the Mono-devel-list