Hi,

This may be a bit of an odd question, but I was thinking about it and thought it might not be as hard as I first thought it would.

I am creating a kind of 'lightweight' visual studio IDE, basically a text editor for VB or C# code files, or in other words: a visual studio IDE without all the fancy stuff like actually running projects, debugging, form designer, etc. The idea is that you can view and edit code source files quickly and easily without having to start visual studio itself. I often find myself opening source files in notepad when I just want to take a look at something quickly, or to type some code that is intended to be posted on this forum. I find it too much 'work' to fire up visual studio on those occasions, but it would be nice if I had some basic syntax highlighting (already have that), Intellisense and such.

What I'm trying to do now is parse a VB or C# source file to extract information such as the types/classes in a file, and the members (as well as their parameters and return type) in those classes.

I was going to do this manually but I doubt I could pull it off efficiently (if at all), so I started thinking about it and thought maybe .NET has some built in functionality already. I don't know much about this stuff, but I do know that you can compile source code by feeding it a string that represents the code. So if it can 'compile a string', then surely it should be able to parse it as well? With the difference between compiling and parsing (I'm not sure if I have this terminology correct) I mean:
- compiling: reading the source and converting it to the CIL so it can be run
- parsing: reading the source and extracting classes/members info, so that the IDE can do some basic error checking (undeclared variable warnings etc) and display the members in a class (in those comboboxes at the top of the code editor for example).

I don't need to compile the source (I'm not going to run the application), I only need to parse it.


Can this be done? I think it should be possible but I cannot find what I would need to do this... I would assume that I could call some function that would return a collection of types (Type), and from that I could figure out the members (MethodInfo, PropertyInfo, etc) and their parameters, return types, etc. And all I should give it is the source code as a string.

Thanks for any help!



Oh, and if this is impossible after all, then does someone know where I can find some information about the VB and C# languages related to parsing? I think I read something like that a while back, where some article (probably MSDN) explained the format of each language in detail so someone could write their own parser. I didn't look at it too long but I can't find it anymore now that I might need it...