[cfe-dev] How can I use incremental compiler?

Tomohiro Matsuyama m2ym.pub at gmail.com
Thu Feb 18 03:10:59 PST 2010


Hi all,

I'm working on C++ code completion in Emacs by using -code-completion-at option.
I know C++ is not fully supported yet, but It seems work well (I'm
looking forward it).
However, I have also found that incremental compiler is not seen, which is the
most important part for code-completion.

So, where can I find incremental compiler? And how can I use it to
make code-completion
faster? If you don't implement it yet, how can I start to implement it?
Actually, all what I need is just incremental parser, not incremental compiler.

I am a newbie for this field. All knowledge currently I have are:

* GCC
  GCC is too complicated and too slow. It is almost impossible to implement
  incremental compiler/parser. Two challenges existed: "A Gcc Compile
Server" and
  "IncrementalCompiler". However, they are outdated.

* Elsa/Elkhound
  A GLR parser for C++ based on Elkhound. I have read a thread "clang
leveraging Elsa?",
  and I understand what clang team is trying to accomplish. Of course,
it is very good
  for code-completion. So, I don't want to extend Elsa anymore.

* EDG C++
  This is one of C++ front ends for commercial use. It has good
compatibilities with
  many other C++ compilers, and I guess it has an incremental compiler
also. Xrefactory,
  which is refactoring tool for C++, uses it internally. Recently,
Visual C++ Team decided
  to use EDG front end for its compiler and intellisense. It will be
available on VS2010.
  Well, it is closed. No anymore talks here.

Xrefactory: http://xref-tech.com/xrefactory/main.html
Rebuilding Intellisense:
http://blogs.msdn.com/vcblog/archive/2009/05/27/rebuilding-intellisense.aspx

I don't like LLVM's license, but I'm really really looking forward
to it, as I said. I want C++ compiler which never segv when compling
C++ source codes...

Anyway, could you please give me information or advice?

Regards,
Tomohiro



More information about the cfe-dev mailing list