DXCore abstract source tree structure
DXCore supports lots of programming languages provided by the language services in Visual Studio. These services provide language-specific support (such as CSharp, Visual Basic, C++) for editing source code in the integrated development environment (IDE). DXCore includes appropriate source code parsers for these programming languages. When the source code is parsed, DXCore builds an abstract syntax tree (AST) that is a representation of the syntactic structure of the source code of a particular programming language. This abstract syntax tree is unified for all languages supported by IDETools. That’s why it is easy to develop a language-independent feature as a DXCore plug-in – in most cases your feature will be available in all corresponding languages automatically.
The abstract syntax tree is represented by the DXCore language elements. LanguageElement is the main base class for a rich variety of classes which denote a construct occurring in the source code and present a corresponding node in the unified tree. You can see the result parsed source tree using the Expression Lab tool window available via the “DevExpress | Tool Windows | Diagnostics | Expression Lab” menu item in Visual Studio.
All DXCore source code parsers are maintained by a single assembly named “DevExpress.DXCore.Parser”. This assembly can be used for code parsing and code generation (to build language-specific source code). You can use it according to the DevExpress license agreement.
Here is a complete map of LanguageElement class inheritance, excluding some very rarely used language elements. Click on one of the images to open it in full size. Bear in mind that the size of the images is HUGE (~1.5 Mb and ~4k pixels), and you have to scroll it to see the content. Click on the picture once again to close it. You can download these images as a single zip file from this link (2,079,862 bytes).
- DXCore Expression Lab tool window for observing the parsed source code trees
- Navigation between expressions of the parsed source tree
- Navigating in the CodeRush abstract source code tree
- How to use DXCore in a Console App outside of Visual Studio
- DXCore APIs related to the programming languages specification