| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
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.
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
These productions were used to give better error messages in some situations.
They are no longer useful, since we are building a whole new system for reporting errors.
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
Having the file in memory will help build an error message.
Also, this may be slightly faster.
|
| | | |
|
| | | |
|
| | | |
|