CodeStore info
Hi! I'm very interested in the CodeStore component, for using it in another free/cross-platform IDE for CodeCompletion/ClassBrowser/etc.
I've been looking for good C++ parsers, and the best I could find were ANTLR (C++ gramar) and Elsa (based on Elkhound). But Elsa currently doesn't works with GCC MinGW32, so the only option is ANTLR.
I would like to see if I could use CodeStore directly, instead of dealing with ANTLR+ucpp (or boost::wave).
So, my main questions are:
-What is the CVS branch/trunk which I should use?
-What is the state of completeness of CodeStore right now?
-The code of CodeStore will be clean C++/STL (not needing any external dependency or library)?
-You'll be using std::string or an Unicode capable string class?
-What are the exact changes you've made to ANTLR and ucpp?
-Do you plan to make more changes in the future to ANTLR/ucpp?
-Are you planning to use the default AST generated by ANTLR or are you writting a custom AST?
Well, that's for the CodeStore specific part.
Now, I will list the features of the parser I need, so please tell me if they are according to what you will be doing with CodeStore (take this as my guidelines/personal requeriments only):
-Parsing MUST be done in a separate thread.
-Several threads MAY be used.
-The parser thread(s) MUST have lower priority than the main thread.
-The parser MUST NOT do insane things from the main thread. Events MUST be handed to the worker thread and MUST be handled there.
- It SHOULD be designed around the class browser: Classes, Functions, Variables, Enums, Preprocessor.
-The code completion plugin MUST hold an in-memory structure (maps, arrays, whatever is necessary) to contain all the tokens. For example, a class would include member variables, methods, and the methods would include the local variables.
-This structure MUST be independent from the GUI. It MUST be a container. All code MUST be done by another class, but it MAY include saving, reading / writing from cache, and necessary functions.
-There SHOULD be a structure per development language in the project. It's no use mixing C++ and Perl tokens, it would only create confusion.
-The codecompletion plugin MAY have modules for different languages, these modules would consist of thread-safe functions to add the tokens into the main structure.
I'm asking these questions to know if CodeStore will fit in the IDE, or I'll have to write a CodeStore-like in my own.
If the former, I'll hope we can cooperate to achieve a great parser! :)
BTW, the IDE is called Code::Blocks and it's about to see the 1.0 final version in a few months.
Thank you very much!
