branches/work/kdevelop-pg

Adam Treat treat at kde.org
Tue Aug 8 14:52:19 UTC 2006


On Tuesday 08 August 2006 5:40 am, Jakob Petsovits wrote:
> SVN commit 570972 by jpetso:
>
> * Say hello to the KDevelop codemodel generator, kdev-cmg.
>   It produces those subject-to-be-changed codemodels like
>   the current C++ one (which is provided in examples/cpp)
>   and uses kdevelop-pg as internal parser ;)

Can it produce a codemodel for csharp and java?  How about the binder or is 
that next?

> * In order to get both programs into one directory
>   (they share the need for kdev-pg's includes/ directory,
>   and it's cool to have all examples/ in one place)
>   kdev-pg is moved from src/ to kdev-pg/,
>   and kdev-cmg gets its own kdev-cmg/ directory.
>
> * Refining kdev-pg's serialization visitor:
>   - it deserves to be written to a seperate file,
>     lang_serialize_visitor.h, which is created by passing
>     the --serialize-visitor command line option to kdev-pg.
>   - fix the "startrule is hardcoded" bug
>   - don't serialize ast_node.kind, it's not needed

Sweet!  BTW, I hooked the csharp serializer up to kdevelop using a custom 
class that uses google's sparsehash...  Each AST* from Mono's core library 
was serialized.  735 files in all.  I also made sure to keep the mem pool for 
each ast around to gage the true hit to memory...

Here are the results:

%14.1 of memory

8.4MB on disk non-compressed

1.3MB on disk compressed

735 C# files

To me, this is not very different from storing the codemodels ie, storing the 
ast seems to be about equivalent of storing the models, both in memory and on 
disk.  Of course, we're not serializing the token stream yet ;P

>  M  +2 -1      CMakeLists.txt  
>  M  +1 -0      examples/CMakeLists.txt  
>  M  +1 -1      examples/cool/CMakeLists.txt  
>  M  +3 -3      examples/cool/cool.h  
>  M  +5 -2      examples/csharp/CMakeLists.txt  
>  M  +2 -1686   examples/csharp/csharp.h  
>  M  +10 -10    examples/csharp/csharp_pp.h  
>  A             examples/csharp/csharp_serialize_visitor.h   [License: no
> copyright GENERATED FILE] M  +1 -0      examples/csharp/main_serialize.cpp
>  M  +1 -1      examples/fact/CMakeLists.txt  
>  M  +3 -3      examples/fact/fact.h  
>  M  +1 -1      examples/java/CMakeLists.txt  
>  M  +5 -5      examples/java/java.h  
>  A             kdev-cmg (directory)  
>  A             kdev-cmg/ASBeautifier.cpp   [License: LGPL (v2.1+) (wrong
> address)] A             kdev-cmg/ASFormatter.cpp   [License: LGPL (v2.1+)
> (wrong address)] A             kdev-cmg/CMakeLists.txt
>  A             kdev-cmg/astyle.h   [License: LGPL (v2.1+) (wrong address)]
>  A             kdev-cmg/kdev-cmg-beautifier.cpp   [License: LGPL (v2+)]
>  A             kdev-cmg/kdev-cmg-beautifier.h   [License: LGPL (v2+)]
>  A             kdev-cmg/kdev-cmg-declarations-gen.cpp   [License: LGPL
> (v2+)] A             kdev-cmg/kdev-cmg-declarations-gen.h   [License: LGPL
> (v2+)] A             kdev-cmg/kdev-cmg-decoder.cpp   [License: no
> copyright] A             kdev-cmg/kdev-cmg-decoder.h   [License: LGPL
> (v2+)] A             kdev-cmg/kdev-cmg-forward-declarations-gen.cpp  
> [License: LGPL (v2+)] A            
> kdev-cmg/kdev-cmg-forward-declarations-gen.h   [License: LGPL (v2+)] A    
>         kdev-cmg/kdev-cmg-generate.cpp   [License: LGPL (v2+) GENERATED
> FILE] A             kdev-cmg/kdev-cmg-generate.h   [License: LGPL (v2+)] A
>             kdev-cmg/kdev-cmg-implementation-gen.cpp   [License: LGPL
> (v2+)] A             kdev-cmg/kdev-cmg-implementation-gen.h   [License:
> LGPL (v2+)] A             kdev-cmg/kdev-cmg-initialize-ast.cpp   [License:
> LGPL (v2+)] A             kdev-cmg/kdev-cmg-initialize-ast.h   [License:
> LGPL (v2+)] A             kdev-cmg/kdev-cmg-io.cpp   [License: LGPL (v2+)]
>  A             kdev-cmg/kdev-cmg-lexer.ll  
>  A             kdev-cmg/kdev-cmg-main.cpp   [License: LGPL (v2+)]
>  A             kdev-cmg/kdev-cmg-parser.g  
>  A             kdev-cmg/kdev-cmg-string-tools.cpp   [License: LGPL (v2+)]
>  A             kdev-cmg/kdev-cmg-string-tools.h   [License: LGPL (v2+)]
>  A             kdev-cmg/kdev-cmg-visitor-template.cpp   [License: LGPL
> (v2+)] A             kdev-cmg/kdev-cmg-visitor-template.h   [License: LGPL
> (v2+)] A             kdev-cmg/kdev-cmg.h   [License: LGPL (v2+)]
>  A             kdev-pg (directory)   src#531158
>  A             kdev-pg/CMakeLists.txt   src/CMakeLists.txt#570567
>  D             kdev-pg/Makefile.am  
>  A             kdev-pg/kdev-pg-ast-gen.cpp   src/kdev-pg-ast-gen.cpp#570567
>  A             kdev-pg/kdev-pg-ast-gen.h   src/kdev-pg-ast-gen.h#566286
>  A             kdev-pg/kdev-pg-ast.h   src/kdev-pg-ast.h#568589
>  A             kdev-pg/kdev-pg-beautifier.cpp  
> src/kdev-pg-beautifier.cpp#566286 A            
> kdev-pg/kdev-pg-beautifier.h   src/kdev-pg-beautifier.h#566286 A          
>   kdev-pg/kdev-pg-checker.cpp   src/kdev-pg-checker.cpp#566286 A          
>   kdev-pg/kdev-pg-checker.h   src/kdev-pg-checker.h#566286 A            
> kdev-pg/kdev-pg-clone-tree.cpp   src/kdev-pg-clone-tree.cpp#568589 A      
>       kdev-pg/kdev-pg-clone-tree.h   src/kdev-pg-clone-tree.h#568589 A    
>         kdev-pg/kdev-pg-code-gen.cpp   src/kdev-pg-code-gen.cpp#570567 A  
>           kdev-pg/kdev-pg-code-gen.h   src/kdev-pg-code-gen.h#568589 A    
>         kdev-pg/kdev-pg-default-visitor-gen.cpp  
> src/kdev-pg-default-visitor-gen.cpp#566734 A            
> kdev-pg/kdev-pg-default-visitor-gen.h  
> src/kdev-pg-default-visitor-gen.h#566286 A            
> kdev-pg/kdev-pg-default-visitor.cpp  
> src/kdev-pg-default-visitor.cpp#568589 A            
> kdev-pg/kdev-pg-default-visitor.h   src/kdev-pg-default-visitor.h#568589 A
>             kdev-pg/kdev-pg-environment.h  
> src/kdev-pg-environment.h#566286 A             kdev-pg/kdev-pg-first.cpp  
> src/kdev-pg-first.cpp#568589 A             kdev-pg/kdev-pg-first.h  
> src/kdev-pg-first.h#568589 A             kdev-pg/kdev-pg-follow.cpp  
> src/kdev-pg-follow.cpp#568589 A             kdev-pg/kdev-pg-follow.h  
> src/kdev-pg-follow.h#568589 A             kdev-pg/kdev-pg-global.cpp  
> src/kdev-pg-global.cpp#566286 A             kdev-pg/kdev-pg-lexer.ll  
> src/kdev-pg-lexer.ll#569627 A             kdev-pg/kdev-pg-main.cpp  
> src/kdev-pg-main.cpp#570567 [License: LGPL (v2+) (wrong address) GENERATED
> FILE] A             kdev-pg/kdev-pg-parser.yy  
> src/kdev-pg-parser.yy#570567 A            
> kdev-pg/kdev-pg-pretty-printer.cpp   src/kdev-pg-pretty-printer.cpp#568589
> A             kdev-pg/kdev-pg-pretty-printer.h  
> src/kdev-pg-pretty-printer.h#568589 A            
> kdev-pg/kdev-pg-serialize-visitor-gen.cpp  
> src/kdev-pg-serialize-visitor-gen.cpp#570567 [License: LGPL (v2+)] A      
>       kdev-pg/kdev-pg-serialize-visitor-gen.h  
> src/kdev-pg-serialize-visitor-gen.h#570567 D            
> kdev-pg/kdev-pg-utils.cpp
>  D             kdev-pg/kdev-pg-utils.h  
>  A             kdev-pg/kdev-pg-visitor-bits-gen.cpp  
> src/kdev-pg-visitor-bits-gen.cpp#566286 A            
> kdev-pg/kdev-pg-visitor-bits-gen.h   src/kdev-pg-visitor-bits-gen.h#566286
> A             kdev-pg/kdev-pg-visitor-gen.cpp  
> src/kdev-pg-visitor-gen.cpp#566286 A            
> kdev-pg/kdev-pg-visitor-gen.h   src/kdev-pg-visitor-gen.h#566286 A        
>     kdev-pg/kdev-pg-visitor.cpp   src/kdev-pg-visitor.cpp#568589 A        
>     kdev-pg/kdev-pg-visitor.h   src/kdev-pg-visitor.h#568589 A            
> kdev-pg/kdev-pg.cpp   src/kdev-pg.cpp#569627
>  A             kdev-pg/kdev-pg.h   src/kdev-pg.h#570567
>  D             src/ASBeautifier.cpp  
>  D             src/ASFormatter.cpp  
>  D             src/CMakeLists.txt  
>  D             src/astyle.h  
>  D             src/kdev-pg-ast-gen.cpp  
>  D             src/kdev-pg-ast-gen.h  
>  D             src/kdev-pg-ast.h  
>  D             src/kdev-pg-beautifier.cpp  
>  D             src/kdev-pg-beautifier.h  
>  D             src/kdev-pg-checker.cpp  
>  D             src/kdev-pg-checker.h  
>  D             src/kdev-pg-clone-tree.cpp  
>  D             src/kdev-pg-clone-tree.h  
>  D             src/kdev-pg-code-gen.cpp  
>  D             src/kdev-pg-code-gen.h  
>  D             src/kdev-pg-default-visitor-gen.cpp  
>  D             src/kdev-pg-default-visitor-gen.h  
>  D             src/kdev-pg-default-visitor.cpp  
>  D             src/kdev-pg-default-visitor.h  
>  D             src/kdev-pg-environment.h  
>  D             src/kdev-pg-first.cpp  
>  D             src/kdev-pg-first.h  
>  D             src/kdev-pg-follow.cpp  
>  D             src/kdev-pg-follow.h  
>  D             src/kdev-pg-global.cpp  
>  D             src/kdev-pg-lexer.ll  
>  D             src/kdev-pg-main.cpp  
>  D             src/kdev-pg-parser.yy  
>  D             src/kdev-pg-pretty-printer.cpp  
>  D             src/kdev-pg-pretty-printer.h  
>  D             src/kdev-pg-serialize-visitor-gen.cpp  
>  D             src/kdev-pg-serialize-visitor-gen.h  
>  D             src/kdev-pg-visitor-bits-gen.cpp  
>  D             src/kdev-pg-visitor-bits-gen.h  
>  D             src/kdev-pg-visitor-gen.cpp  
>  D             src/kdev-pg-visitor-gen.h  
>  D             src/kdev-pg-visitor.cpp  
>  D             src/kdev-pg-visitor.h  
>  D             src/kdev-pg.cpp  
>  D             src/kdev-pg.h  
> _______________________________________________
> KDevelop-devel mailing list
> KDevelop-devel at barney.cs.uni-potsdam.de
> http://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel


More information about the KDevelop-devel mailing list