Scheme 48 Development Tools (SDT)
- Java 97%
- GAP 3%
| sdt | Use ,show-structures-in-config-package instead of ,show-known-packages. | |
| sdt.feature | Add name and url for update site. | |
| sdt.update-site | Add name and url for update site, replace datetime string with "qualifier". | |
| .hgignore | Add .hgignore. | |
| README | Another attempt to describe the deployment process. | |
Scheme 48 Development Tools (SDT) SDT is an Eclipse-based IDE for Scheme 48 written by Sebastian Rheinnecker for his Master's thesis. See http://www-pu.informatik.uni-tuebingen.de/sdt for details. ----- The SDT root directory is organized as follows (not all files are listed here): README this file sdt/ plugin source files sdt.feature/ feature packages all plugins that form SDT (currently, SDT consists of one plugin) META-INF/MANIFEST.MF bundle manifest build.properties plugin-specific build settings icons/ toolbar icons lib/ third party libraries that SDT uses plugin.xml plugin manifest src/ contains Java packages that form SDT, see below templates/ predefined code templates sdt.update-site/ meta-information for creating an distribution of SDT that works via Eclipse's "Install New Software" The SDT plugin consists of various packages (not all packages are listed here): sdt The main plugins life-cycle activator class (Scheme48Plugin.java) and some main information about the plugin, such as the nature and meta-information for DLTK (LanguageToolkit and UILanguageToolkit). Also contains the plugin perspective class that defines the layout and visible items of the SDT user interface. sdt.actions - Two global actions, start and restart interpreter. sdt.dialogs Various classes extending JFace dialog. These are used in the New Module Wizard and in the Set Default Package and Eval/Load with context actions. sdt.editor The main editor class as well as a DocumentSetupParticipant that configures an IDocument for the use in the SourceViewer and two classes responsible for setting up the outline. sdt.editor.actions Actions related to the editor and files that are currently edited. sdt.editor.autoeditstrategies Classes that perform changes to the editing of files, like auto-closing matching brackets or selecting a whole clause when double-clicking in an s-expression. sdt.editor.autoeditstrategies.indent Classes for adding indentation when the user creates a new line. sdt.editor.completion Implementation of the DLTK provided completion engine. The computing of the actual proposals happen in the *ComputionEngine classes. sdt.editor.templates Implementation of the DLTK provided code template system. sdt.interpreter Launching and Managing the scheme 48 interpreter process. Scheme48LaunchConfigurationDelegate starts the process using the Eclipse Process API and Scheme48Interpreter provides all methods for interacting with the process. sdt.interpreter.query Queries are interactions with the Scheme 48 process. When the IDE calls a method in Scheme48Interpreter, it creates an instance of an apropiate query, which does the actual communication via the streams proxy of the process. sdt.language.clause Representation of important clauses in the Configuration Language (OPEN and FILES). sdt.language.definition Representation of the definition of interfaces and structures in CL. sdt.language.modifier Representation of the modifier system of CL. sdt.library Representations of Scheme- and Configuration-Language-Files and the three libraries in SDT: CLLibrary, SchemeLibrary and DefaultPackageLibrary. sdt.parser Provides the main functionality of the parser. First of all the SourceParser that gets an Inputfile, invokes the appropiate parser, gathers errors and reports them and returns a container for the AST. Besides of that, there are several auxiliary classes like the ContentModel and ISourceRange, providing Offsets for Tokens and Trees, DLTKTokenConverter and Scheme48ErrorReporter for automatically reporting syntax errors and a visitor for the AST. sdt.parser.antlr.r5rs Contains all R5RS-specific parsing classes like the ANTLR grammars, lexer, parser, the treewalker for the parser output and the treewalker for expanded macros. Also contains some auxiliary classes like a class with a list of all keywords and an ASTNodeFactory for the treewalker. sdt.parser.antlr.scheme48 Contains all Configuration-Language-specific parsing classes like ANTLR grammars, lexer, parser and treewalker. Also contains some auxiliary classes like a class with a list of all keywords and an ASTNodeFactory for the treewalker. sdt.parser.declarations Declarations are the actual AST Nodes that are created by the tree walkers and returned by the SourceParser. These nodes represent top-level elements like bindings, structures or interfaces. The visitor in sdt.parser visits those classes by calling methods, which produce JDT-AST equivalents to populate the outline and enable the search provided by DLTK. sdt.parser.interfaces A model of CL-interfaces. sdt.parser.problems Various errors that can occur in a Scheme- or CL-file. Each problem class has a method to return an instance of DefaultProblem, which annotates an error in the editor. sdt.parser.scope Implementations of scopes for Scheme and CL. IScope, EmptyScope and Scope are used for Scheme-files, IScheme48Scope, ModuleScope and Structure(s)Scope for CL-files. Each scope is responsible for checking bindings and reporting related errors. sdt.parser.structures A model of CL-structures. Distinguishes between a structure itself and the import of a structure. sdt.preferences Responsible for content and initialization of the scheme 48 preferences pages. sdt.tests Some JUnit tests. sdt.text Provides all functionality for enriched presentation of source code: Scan an IDocument, devide it into partitions and present the text according to the syntax highlighting rules. Main class is Scheme48SourceViewerConfiguration, which provides the settings for a SourceViewer (like the one in the editor or the expansion viewer) sdt.text.search The search dialogue. sdt.util Auxiliary classes and methods for general purpose. sdt.views The views contributed by the plugin. Currently the only contributed view is the expansion viewer that has a SourceViewer to display the expanded form of a macro. sdt.wizards The wizards contributed by the plugin. Wizards are divided into two class-types: A class for calling and initializing (multiple) page classes that provide the UI of a wizard. Currently only holds the New Module Wizard. The New Project Wizard is pre-defined by DLTK and enabled in the plugin.xml. For developing SDT, you need Eclipse Indigo 3.7.x, available at http://www.eclipse.org/downloads/packages/eclipse-classic-37/indigor You also need to install the following plugins into Eclipse: Eclise Plug-in Development Environment (PDE) 3.7.x This plugin is needed for proper editing of build-specific files like the feature and update-site XML files. Dynamic Languages Toolkit - Core Frameworks 3.0 This plugin provides sources for many classes of SDT. All these plugins are available from the official Indigo update-site: 1. Select menu "Help" -> "Install New Software" 2. Select "Indigo" from the "Work with" selection box 3. Expand "General Purpose Tools" and check the plugins above for installation 4. Click "Next" and follow the instructions Import SDT sources into Eclipse: 1. Select menu "File" -> "Import..." 2. Under "General" select "Existing Projects into Workspace" and click "Next" 3. Choose "Select root directory" and enter the path to your SDT root directory 4. Check all three SDT projects in the "Projects" list 5. Click "Finish" For editing the ANTLR grammars, ANTLR IDE or ANTLRWorks is recommended. ANTLR IDE: http://antlrv3ide.sourceforge.net ANTLRWorks: http://www.antlr.org/works You can build and run SDT with "Run" -> "Run As" -> "Eclipse Application". To deploy and distribute SDT: 1. In sdt.feature project open feature.xml 2. Click on "Export Wizard" on the right-hand side 3. Make sure to have the following settings in the dialog: Tab "Destination": Enter the path to sdt.update-site in your SDT root directory Tab "Options": Make sure that the following settings are checked: [x] Package as individual JAR archives [x] Generate metadata repository [x] Categorize repository: Enter path to sdt.feature/sdt-category.xml in your SDT root directroy [x] Allow for binary cycles in target platform Leave the other settings unchecked 4. Click "Finish" 5. sdt.update-site in your SDT root directory now contains a distributable version of SDT To install the contents of sdt.update-site into your Eclipse, select menu "Help" -> "Install New Software", add the sdt.update-site as a local source or "Reload" the local source's contents under "Available Software Sites" to enable Eclipse to see the updated version.