blob: 43c66efe1365ec5007b4b60ef12c623d57c5d5d5 [file] [log] [blame]
% Creating an Error Parser
%{\scriptsize Last modified }
Error parsers scan the output of \texttt{make} for error messages for a
particular compiler. When they see an error message they can recognize, they
extract the filename, line number, and error message, and use it to populate the
Problems view.
For an example, see \texttt{IntelFortranErrorParser}.
(It's a mere 60 lines.)
To create a new error parser, do the following.
\item We will assume that your error parser class will be in the
\texttt{errorparsers} folder in the \texttt{org.eclipse.photran.core} plug-in
and added to the \\\texttt{org.eclipse.photran.internal.errorparsers} package.
\item Define a class implementing \texttt{IErrorParser}
\item Implement \texttt{public boolean processLine(String line,
ErrorParserManager eoParser)} which should always return false because
ErrorParserManager appears not to use the result in a rational way
\item In org.eclipse.photran.core's \texttt{plugin.xml}, find the place where we
define all of the Fortran error parsers. Basically, copy an existing one. Your
addition will look something like this:
\begin{lstlisting}[frame=lines, language=xml]
name="Photran Error Parser for Some New Fortran Compiler"
\item Your new error parser will appear in the error parser list in the
Preferences automatically, and it will be automatically added to new projects.
For existing projects, you will need to open the project properties dialog and
add the new error parser to the project manually.
\textbf{Note.} Error parsers do not have to be implemented in the Photran Core
plug-in. In fact, they do not have to be implemented as part of Photran at all.
If you create a brand new plug-in, you can specify \texttt{org.eclipse.cdt.core}
as a dependency, include the above XML snippet in your plug-in's
\texttt{plugin.xml}, and include your custom error parser class in that plug-in.
The plug-in system for Eclipse will recognize your plug-in, detect that it
extends the \texttt{org.eclipse.cdt.core.ErrorParser} extension point, and add
it to the list of implemented error parsers automatically.