Skip to content
ckaestne edited this page Oct 4, 2010 · 2 revisions

#High-Level Documentation

List of Plugins

All plugins are located in the trunk directory

  • CIDE is the old version, depricated
  • CIDE2 is the core that contains most of the infrastructure, the colored text editor (including views), the variant generation mechanism, astview, statistics and others.
  • CIDE2_AST contains the common AST infrastructure for all languages (IASTNode)
  • CIDE2_TypeChecking contains the infrastructure for type checking and its caching mechanism (see architecture description in docs directory)
  • CIDE_Storage_Default contains the mechanism to store .color files (annotations of each file)
  • CIDE_FM_* contains the three different feature model types (guidsl, list and purevariants). They extend an extension point in the core plugin. They mostly bridge to external plugins.
  • CIDE_Export_* and CIDE_Import_* contain code for exports and imports
  • CIDE_Language_* contain the grammar and code for various languages.
  • CIDE_Language_JDT is special because it bridges to Eclipse's AST and provides type-checking capabilities and the Colored Java Editor
  • CIDE_Deploy_* is for deployment (features, website, updatesite,...)
  • CIDE_Docs provides some documentation inside Eclipse
  • CIDE_Samples contributes several examples to Eclipse
  • all plugin fragments ending in "-test" contain unit tests for the corresponding plugin. they are not part of the deployment process
  • CIDE_generateAST and CIDE_DTDgen is not a plugin, but infrastructure used to generate the language plugins from a grammar. similar disciplinedanalysis and fstgen have an external purpose.

FM Plugins

Currently there are three Feature Model (FM) plugins, CIDE_FM_List, CIDE_FM_Guidsl, CIDE_FM_PureVariants. Only one of them can be used at the same time, which one can be configured in Eclipse's options.

The CIDE_FM_List plugin supports 50 features in a list. There are no connections, dependencies or the like between the features (except of parent-child relations), all features are optional.

In contrast CIDE_FM_Guidsl allows reasoning with feature models on top of CIDE. It uses the guidsl model (see http://www.cs.utexas.edu/users/dsb/fopdocs/guidsl.html and accordant SPLC05 paper) to store feature models in a textual form as grammar in the model.m file in the root-directory of the project. There can be arbitrary constraints between features, e.g., it is possible to create dependent features (pseudo features/derivatives) which are selected automatically. This can be used to annotate conditions like "not Feature1 or Feature2" in CIDE. The CIDE_FM_Guidsl must be used together with two plugins (featureide_fm_core and featureide_fm_ui) from the FeatureIDE project which implement the reasoning and a graphical editor (which are available on the CIDE update site or can be mailed on request).

How to get started (regarding Haskell) -- in German

Anleitung als Datei angehängt.

Zum Arbeiten an und mit CIDE Haskell benötigt man folgende Projekte: CIDE2, CIDE2_ast, CIDE_FM_guidsl oder CIDE_FM_List, CIDE_generateAST, CIDE_Language_Haskell.

Für CIDE Haskell gibt es zwei Versionen des Parsers, ein Pseudo-Parser (phaskell.gcide) und ein richtiger Parser (haskell.gcide). Wir nutzen eigentlich nur noch den richtigen Parser. Der Parser kann Haskell-Code im sog. Layout-Stil (Einrückungen spielen eine Rolle, dafür braucht man keine Block-bildenden Klammern wie geschweifte Klammern) nicht sauber parsen. Einfache Blockeinrueckungen zwischen Zeilen sind moeglich, aber keine automatischen Klammern innerhalb einer Zeile. Es gibt aber auch den Block-Stil, in den wir glücklicherweise fast jedes Haskell-Programm im Layout-Stil konvertieren können (wichtigstes Kriterium für die Konvertierung und auch dafür, dass wir es parsen können: der Code muss Haskell98-konform sein und darf keine Spracherweiterungen nutzen). Das Konvertierungstool !NoLayout (von Armin Größlinger und somit selbstverständlich selbst in Haskell geschrieben) ist auf Anfrage verfügbar.

Clone this wiki locally