History log of /seL4-camkes-master/projects/camkes-tool/camkes/ast/location.py
Revision Date Author Comments
# 8b2ec3e6 20-Jun-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

Fix licenses


# 02630bf5 30-May-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Fix: remove unnecessary quotes in comment.


# f41bf164 24-May-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Remove unnecessary carets from the beginning of regexes.

When using `re.match` the start of the string is assumed.

This commit cherry-picks c81dd371b04519c51615aee972da58a295bca9df from
ssh://github.inside.nicta.com.au/mfernandez/project.


# 203e17cc 24-May-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Add support for the alternative form of line directives without a filename.

This commit cherry-picks 1b34471c2afc9f98ec5766d89aea61f89884e39c from
ssh://github.inside.nicta.com.au/mfernandez/project.


# 0400b5b0 23-May-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

More accurate error messages.

This commit alters the logic that recognises PlyPlus errors to provide line and
column information to achieve two further things:

1. Provide line number information even when column information is absent;
and
2. Use unrecognised symbol length to compute maximum column coordinates.

Ultimately this leads to more accurate error reporting when the user has made a
syntax error in their input specification.

This commit cherry-picks 1e111d4415b85ee925c6edb0a0587b854a688ba5 from
ssh://github.inside.nicta.com.au/mfernandez/project.


# 4ac7a18c 15-Jan-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Expose column information from SourceLocation.


# 5d51731d 15-Jan-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Use "*col" instead of "*column" in SourceLocation.

This is a private member and this change has no effect, but it will help reduce
confusion in future by matching the variable naming PlyPlus uses.


# c07b9259 12-Jan-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Track minimum and maximum column numbers in source locations.

This information is currently unused, but is planned for future diagnostics.


# 79c918a7 05-Jan-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Support alternate form of CPP line directives.

GCC supports two forms of line directive:

#line <linenum> <filename>

# <linenum> <filename>

Only the first of these is documented in [0], though it is actually the second
of these that the C pre processor outputs. CAmkES' understanding of these
directives was previously based on observed directives from CPP and it could not
understand the first of these. This commit adds support for the first form as
well, as it may be in use by some other non-CPP pre processing tool.

[0]: https://gcc.gnu.org/onlinedocs/cpp/Line-Control.html


# 110e9675 04-Jan-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Locate precise line numbers even when PlyPlus throws multiple errors.

Background: When an error is encountered during parsing, CAmkES raises a
`ParseError`. This contains source line number information that is
automatically narrowed when the error is presented to the user. In the case
when the error occurred during PlyPlus lexing or parsing, CAmkES uses a
combination of the PlyPlus exception and C pre-processor line directives to
precisely locate the offending token(s).

Prior to this commit, CAmkES only anticipated PlyPlus exceptions that
identified a single source location. This meant that exceptions that referenced
multiple lines, such as:

Syntax error in input at 'notifier' (type ID) line 55 col 16
Syntax error in input at 'client' (type ID) line 60 col 20
Syntax error in input at 'client' (type ID) line 65 col 20
Syntax error in input at 'client1' (type ID) line 70 col 19
...

caused the line narrowing algorithm to exit early and the user was presented
with an imprecise source location. This commit corrects this imprecision and
such scenarios now give an accurate narrowed line number.


# bacfebce 27-Oct-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Refactored parser init commit.