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: | Sat, 19 Mar 2022 19:58:19 +0200 |
Organization: | Aioe.org NNTP Server |
References: | 22-03-035 22-03-038 |
Injection-Info: | gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="94916"; mail-complaints-to="abuse@iecc.com" |
Keywords: | parse, performance |
Posted-Date: | 19 Mar 2022 13:59:18 EDT |
Content-Language: | en-US |
On 18/03/2022 20:12, Thomas Koenig wrote:
> ...
> If you are compiling, it is usually a small fraction of time that
> is spent in the parsing, and much more in optimization and code
> generation. An example: Compiling a 50 k line Fortran program with
> "gfortran -O2" takes 17.4 seconds on the computer I type this on.
> Checking with "gfortran -fsyntax-only" takes 4.2 seconds. (For
> those who want to reproduce: aermod.f90 from the Polyhedron suite).
> ...
Thanks. Just tested this large file and the runtime overhead seems
to be negligible.
Likely, I'll try the change but it took me a while to find another case
with enumerators (that also lack error recovery now). Although my trial
changes added messages for 43 states, some of them are useless and so
this approach seems to be useful for BNF rules with an optional tail.
Unavoidably, a parser/front-end has to make some guessing on error
and this doesn't change easily. So, any improvement without default
state reductions (hello Kaz) will be limited, as in the code below:
-----------------------------------------------------------------------
miniserver:errors suser$ cat enum-1.f90 && fcheck enum-1.f90
ENUM, BIND(C)
ENUMERATOR :: RED => 4, BLUE => 9
ENUMERATOR YELLOW
END ENUM
END
enum-1.f90:2: error: syntax:Unexpected: '=>'. Expected: ",", ";", or "=".
Parsed with Errors: enum-1.f90
miniserver:errors suser$
Return to the
comp.compilers page.
Search the
comp.compilers archives again.