| % Plug-in Decomposition |
| \section{Introduction} |
| |
| This chapter presents a high-level overview of the different projects and |
| plug-ins in Photran. It serves as a guide for developers reverse-engineering |
| Photran to \emph{guess-and-locate} where certain components are. It also serves |
| as a guide for contributers on \emph{where} to put their contributions. |
| |
| The following sections are grouped by feature. A feature is a collection of |
| related Eclipse plug-ins that the user can install as a whole. |
| |
| \section{Base Photran Feature: \\org.eclipse.photran-feature} |
| |
| The following projects comprise the ``base'' of Photran. |
| |
| \begin{itemize} |
| |
| \item \textbf{org.eclipse.photran.cdtinterface} |
| |
| This contains most of the components (core and user interface) related |
| to integration with the CDT. It includes: |
| \begin{itemize} |
| \item The FortranLanguage class, which adds Fortran to the list of languages |
| recognized by CDT |
| \item Fortran model elements and icons for the Outline and Fortran Projects views |
| \item An extension point for contributing Fortran model builders, and a |
| simple lexical analyzer-based model builder (which, generally speaking, |
| is not used) |
| \item The Fortran perspective, Fortran Projects view, and other CDT-based |
| parts of the user interface |
| \item New Project wizards and Fortran project templates |
| \end{itemize} |
| |
| For more information about CDT, see Chapter~\ref{cha:cdt}. |
| |
| \item \textbf{org.eclipse.photran.core} |
| |
| This is the Photran Core plug-in. It contains much of the Fortran-specific |
| ``behind the scenes'' functionality: |
| |
| \begin{itemize} |
| \item Utility classes |
| \item Error parsers for Fortran compilers |
| \item Fortran 95 lexical analyzer |
| \item Workspace preferences |
| \end{itemize} |
| |
| \item \textbf{org.eclipse.photran.managedbuilder.core}, \\ |
| \textbf{org.eclipse.photran.managedbuilder.gnu.ui}, \\ |
| \textbf{org.eclipse.photran.managedbuilder.ui} |
| |
| Support for Managed Build projects using the GNU toolchain. Managed by Craig Rasmussen at LANL. |
| |
| \item \textbf{org.eclipse.photran.ui} |
| |
| This contains the Fortran-specific components of the user interface: |
| |
| \begin{itemize} |
| \item Fortran Editors |
| \item Preference pages |
| \end{itemize} |
| |
| \end{itemize} |
| |
| \section{Virtual Program Graph (VPG) feature: \\org.eclipse.photran.vpg-feature} |
| |
| The following projects support parsing, analysis, and refactoring of Fortran |
| sources. They are written in Java 5. The Virtual Program Graph is described in |
| more detail in Chapter~\ref{cha:parsing}. |
| |
| \begin{itemize} |
| |
| \item \textbf{org.eclipse.photran.core.vpg} |
| |
| This contains the parsing, analysis, and refactoring infrastructure. |
| \begin{itemize} |
| \item Fortran parser and abstract syntax tree (AST) |
| \item Fortran preprocessor (to handle INCLUDE lines) |
| \item Parser-based model builder |
| \item Virtual Program Graph library (vpg-eclipse.jar) |
| \item Photran's Virtual Program Graph (VPG) |
| \item Utility classes (e.g., \texttt{SemanticError}, \texttt{LineCol}) |
| \item Project property pages |
| \item Binding analysis (equivalent to symbol tables) |
| \item Refactoring/program transformation engine |
| \item Refactorings |
| \end{itemize} |
| |
| \item \textbf{org.eclipse.photran.core.vpg.tests}, \\ |
| \textbf{org.eclipse.photran.core.vpg.tests.failing} |
| |
| JUnit Plug-in tests for the VPG core plug-in. |
| |
| All tests in org.eclipse.photran.core.vpg.tests should pass. Test suites and |
| test cases are placed in the ``failing'' plug-in project until all of their |
| tests pass. |
| |
| These plug-ins \textit{must} be run as a ``JUnit Plug-in Test'' (\textbf{not} a |
| ``JUnit Test''). In the launch configuration, the environment variable TESTING |
| must be set to some non-empty value. (This ensures that the VPG will not try to |
| run in the background and interfere with testing.) |
| |
| \item \textbf{org.eclipse.photran.ui.vpg} |
| |
| UI contributions that depend on the \texttt{org.eclipse.photran.core.vpg} |
| plug-in. Currently, this includes the Open Declaration action, a project |
| property page where the user can customize the search path for Fortran modules |
| and include files, Fortran Search support, and all of the actions in the |
| Refactor menu. |
| |
| \item \textbf{org.eclipse.photran.cdtinterface.vpg} |
| |
| This contributes the Fortran model builder which constructs the model seen in |
| the Outline view and Fortran Projects view. It uses the Fortran parser |
| contained in the org.eclipse.photran.core.vpg plug-in. |
| |
| \end{itemize} |
| |
| \section{XL Fortran Compiler Feature: \\org.eclipse.photran.xlf-feature} |
| |
| The following are plug-ins to support the |
| \href{http://www-306.ibm.com/software/awdtools/fortran/}{XL Fortran compiler}. |
| |
| \begin{itemize} |
| \item \textbf{org.eclipse.photran.core.errorparsers.xlf}, \\ |
| \textbf{org.eclipse.photran.managedbuilder.xlf.ui} |
| |
| Support for Managed Build projects using XL toolchains. Managed by Craig |
| Rasmussen at LANL. |
| |
| \end{itemize} |
| |
| \section{Intel Fortran Compiler Feature: \\org.eclipse.photran.intel-feature} |
| |
| The following are plug-ins to support the \href{http://www.intel.com/cd/software/products/asmo-na/eng/compilers/284132.htm}{Intel Fortran Compiler}. |
| |
| \begin{itemize} |
| \item \textbf{org.eclipse.photran.core.intel}, \\ |
| \textbf{org.eclipse.photran.managedbuilder.intel.ui} |
| |
| Support for Managed Build projects using Intel toolchains. Maintained by Bill |
| Hilliard at Intel. |
| |
| \end{itemize} |
| |
| \section{Non-plug-in projects} |
| |
| The following projects are in CVS but are not distributed to users: |
| |
| \begin{itemize} |
| |
| \item \textbf{org.eclipse.photran-dev-docs} |
| |
| Developer documentation, including this document (\texttt{dev-guide/*}), CVS |
| instructions (\texttt{dev-guide/cvs-instructions.pdf}), the materials from our |
| presentation at EclipseCon 2006 on adding a new language to the CDT, and a |
| spreadsheet mapping features in the Fortran language to JUnit tests |
| (\texttt{language-coverage/*}). |
| |
| \item \textbf{org.eclipse.photran-samples} |
| |
| A Photran project containing an assortment of Fortran code. |
| |
| \end{itemize} |