I've made progress on implementing the OpenToken/wisi generalized LALR
parser in OpenToken Ada; it can now parse the same grammar that the
elisp parser does.

I've also got a first timing measurement:

time ./run_ada_parser 
/apps/GNAT-gpl_2014/gnatcoll-1.7w-src/src/sqlite/gnatcoll-xref.adb
        real    0m0.390s

This is _without_ computing or applying the text properties that are
required for the indentation engine. 

Philippe Waroquiers has a file that takes 10 seconds to parse with Emacs
Ada mode 5.1.4; the goal of this faster implementation is get that down
to < 1 second (factor of 10 improvement in speed).

gnatcoll-xref.adb takes 2 seconds to parse with Emacs Ada mode 5.1.5;
that needs to be < 0.2 seconds.

So this new parser might be too slow by a factor of 2 or so. But it is
very encouraging; there is one-time overhead used to start the process,
build the parse table, and allocate some parsing structures, which will
go away when used as a persistent Emacs background process. There are
also some obvious improvements in dynamic memory use that could be made.

So the next step is to integrate this as a background process with Emacs
Ada mode; it will pass the list of elisp actions as strings back to
Emacs to be evaluated, which will compute and apply the text properties
(as the elisp parser does now). Depending on how fast that total is, I
will either translate that into Ada and/or work on speeding up the
Ada parser, or declare success :).

--
-- Stephe

_______________________________________________
Emacs-ada-mode mailing list
[email protected]
http://host114.hostmonster.com/mailman/listinfo/emacs-ada-mode_stephe-leake.org

Reply via email to