| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|\ \ \ \ \
| | | | | |
| | | | | | |
When printing a fragment of source text as part of an error message, …
|
| | |/ / /
| |/| | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
compress multiple whitespace characters into just one space character.
This is done before the call to [sanitize], which replaces special characters with a dot.
This produces more a readable result when the error spans multiple lines.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The new option -gonly-global allows the generation of debuging
information for global variables only.
Bug 17566.
|
| | | | | |
|
| |_|_|/
|/| | | |
|
| |_|/
|/| | |
|
| | | |
|
|/ /
| |
| |
| |
| |
| | |
Instead of having a function for each instruction we now use a
generic function to print the arguments.
Bug 17544.
|
| |
| |
| |
| |
| |
| | |
In a first step all the print commands for the names are replaced
by a more safe variant that avoids missing \".
Bug 17328
|
| |
| |
| |
| | |
Bug 17473
|
| |
| |
| |
| | |
Bug 17473
|
|\ \ |
|
| |\ \
| | | |
| | | | |
Fixed some comments.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When [debug] is [false], there are a few places where we silently
ignore an error.
This should not make any difference if everything works as planned.
|
| |/ / |
|
| | | |
|
| | |
| | |
| | |
| | | |
Bug 17481.
|
|/ /
| |
| |
| | |
Bug 17481
|
| |
| |
| |
| | |
Bug 17473.
|
|\ \
| | |
| | | |
Fixed one error message and removed two comments.
|
| | | |
|
| | |
| | |
| | |
| | | |
Bug 17481.
|
|\ \ \ |
|
|/| | |
| |/ / |
|
| |\ \ |
|
| | |\ \
| | | | |
| | | | |
| | | | |
| | | | | |
Conflicts:
Makefile.extr
|
| |\ \ \ \
| | |/ / /
| |/| / /
| | |/ /
| | | | |
Conflicts:
Makefile.extr
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This requires the development version of Menhir, to be released soon.
In summary:
handcrafted.messages is new.
It contains a mapping of erroneous sentences to error messages,
together with a lot of comments.
Makefile.extr is new.
It contains a rule to generate cparser/pre_parser_messages.ml
based on this mapping.
cparser/ErrorReports.{ml,mli} are new.
They construct syntax error messages, based on the compiled mapping.
cparser/Lexer.mll is modified.
The last two tokens that have been read are stored in a buffer.
ErrorReports is called to construct a syntax error message.
cparser/GNUmakefile is new.
It offers several commands for working on the pre-parser.
cparser/deLexer.ml is new.
It is a script (it is not linked into CompCert).
It translates the symbolic name of a token to an example of this
token in concrete C syntax.
It is used by [make -C cparser concrete] to produce the .c files
in tests/generated/.
cparser/tests/generated/Makefile is new.
It runs ccomp, clang and gcc on each of the generated C files,
so as to allow a comparison of the error messages.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This means that CompCert must now be compiled in --table mode.
At this point, the error message for a syntax error is still just "syntax error".
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This affects in which states errors are detected,
but does not change the language that is accepted.
|
| | | |
| | | |
| | | |
| | | | |
This allows us to give a better error message in one state.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
For the first one, this is fine; the error is caught by a type check later on.
For the second one, it is temporary. More thought is needed about the syntax
of K&R functions anyway, as Jacques-Henri and I discovered that it is currently
broken (it mis-interprets some function definitions).
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
list.
This saves 7 states and 4 error states.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This creates more states and does not change the number of error states.
It should make it easier to give a good error message in at least 2 states.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
[declaration_specifier_no_typedef_name*].
This replaces a right-recursive list with a left-recursive list.
This saves 2 states and 6 error states.
|
| | | |
| | | |
| | | |
| | | | |
This results in slightly fewer states.
|
| | | |
| | | |
| | | |
| | | | |
elegant manner.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
a left-recursive list.
This further reduces the number of states (and error states).
|
| | | |
| | | |
| | | |
| | | | |
This saves a few states.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This parameter is passed down in [declaration_specifiers(declaration(phantom))].
This allows us to distinguish between three calling contexts for [declaration_specifiers]:
- we are definitely in a parameter declaration;
- we are definitely in a declaration (e.g., in a block);
- we are in a declaration or in a function definition (i.e., at the top level).
This allows us to give better error messages.
For instance, when inside a block, we know that this cannot be the beginning
of a function definition.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This does not change the automaton at all.
It allows us to distinguish more easily between two contexts:
- the beginning of a declaration or function definition;
- the beginning of a parameter declaration.
This leads to better error messages.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This allows distinguishing two uses of abstract_declarator, within a type_name
and within a parameter_declaration. This provides more static context and
allows giving a better syntax error message, as this allows us know what is
expected next: a closing parenthesis or a comma.
|
| | | | |
|