Related articles |
---|
Improved accuracy in diagnostics. Is it worthwhile? drikosev@gmail.com (Ev. Drikos) (2022-03-18) |
Re: Improved accuracy in diagnostics. Is it worthwhile? 480-992-1380@kylheku.com (Kaz Kylheku) (2022-03-18) |
Re: Improved accuracy in diagnostics. Is it worthwhile? tkoenig@netcologne.de (Thomas Koenig) (2022-03-18) |
Re: Improved accuracy in diagnostics. Is it worthwhile? drikosev@gmail.com (Ev. Drikos) (2022-03-19) |
From: | "Ev. Drikos" <drikosev@gmail.com> |
Newsgroups: | comp.compilers |
Date: | Fri, 18 Mar 2022 07:25:40 +0200 |
Organization: | Aioe.org NNTP Server |
Injection-Info: | gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="84428"; mail-complaints-to="abuse@iecc.com" |
Keywords: | errors, question |
Posted-Date: | 18 Mar 2022 12:28:46 EDT |
Content-Language: | en-US |
Hello,
This is mainly a parsing question but it's also Fortran related as well.
When I make syntax checking with the command 'fcheck' in the code below,
the error message doesn't contain a '(' in the expected tokens. This
happens due to default actions, although the parser is basically LALR. A
pure LALR parser wouldn't make reductions without examininig the lookahead.
Default actions are useful because they save a lot of space in parsing
tables, at the cost of missing expected tokens in the error messages
printed by the command 'fcheck'. This is the relevant BNF rule for the
example given at the end of this message:
implicit-stmt ::=
IMPLICIT implicit-spec-list
| IMPLICIT NONE [ ( [ implicit-none-spec-list ] ) ]
Disabling default actions for the command 'fcheck' is fairly simple,
just a button click in Syntaxis, but at the moment I can't think of
how many error messages would be improved, whereas a parsing table
increase (50%) would be granted. The command 'fcheck' can be found at
https://github.com/drikosev/Fortran
So far, my approach has been that improved diagnostics shouldn't slow
down the processing of correct programs. Is it worthwhile to improve
diagnostics by disabling default actions in a LALR parser?
Thanks,
Ev. Drikos
----------------------------------------------------------------------
$ cat default-actions.f90 && fcheck default-actions.f90
IMPLICIT NONE ? (type, external)
PRINT *, "Only ';', not a '(', in the expected tokens in diagnostics."
END
default-actions.f90:1: error: syntax:Unexpected: '?'. Expected: ";".
Parsed with Errors: default-actions.f90
$
[When yacc was new and everything had to fit in 64K, small parse tables
were important. Today when people include a megabyte library to get
a four line routine, not so much. -John]
Return to the
comp.compilers page.
Search the
comp.compilers archives again.