# Predefined Language Conventions

Source-Navigator does not invoke a compiler to build its databases; instead, it has a plug-in parser for each language it supports. For details on how to add plug-in parsers to Source-Navigator, see The Parser Toolbox Library.

## Predefined Parsers

Source-Navigator was designed to support not only the most common software development languages, but to support them together. With Source-Navigator you can follow references from a C++ method to a FORTRAN subroutine, and even to assembly language. To accomplish this task efficiently, Source-Navigator shares terms between multiple languages, even when the languages are defined in different terms.
For example, a C `struct` is represented in Source-Navigator as a `class`; there is no separate `struct` type for C. By unifying these terms, Source-Navigator greatly simplifies both the task of multi-language code comprehension and its own internal organization.

### The C and C++ Parser

This parser understands C++, K&R C, and ANSI C languages, including the pre-processor directives. Pre-processing is not necessary to parse C or C++ source code. During project creation a default include search path is created that has the same role as the `-I` option for the C pre-processor. The include search path can be modified during project creation or by selecting File -> Project Preferences -> Include.

### The FORTRAN Parser

The FORTRAN parser understands the FORTRAN 77 syntax, plus extensions such as `record` , `structure`, and `include`. The usual FORTRAN extensions are understood by the parser as well. The include search path has the same role as the `-I` option for the C pre-processor. The include search path can be modified during project creation or by selecting File -> Project Preferences -> Include.
The FORTRAN structure declaration is mapped by the tools to a class. Structure members are treated as instance variables.

### The COBOL Parser

The COBOL parser understands these dialects: ANSI '74 Standard, ANSI '85 Standard (ANSI X3.23-1985), IBM OS/VS COBOL, IBM VS COBOL II, IBM SAA COBOL/370, IBM DOSVS COBOL, X/Open, and Micro Focus COBOL.

Note: | The empty areas of Type Definitions for Supported Languages represent types that don't exist in each language.

Type Definitions for Supported Languages
Type Abbrev. | C/C++ and Java | FORTRAN | COBOL | Tcl | [incr Tcl] | PowerPC assembly
--- | --- | --- | --- | --- | --- | ---
cl | Class, Struct | Structure | Structure | Namespace | Class |
com |  | Common Block |  |  |  |
cov |  | Common variable |  |  |  |
con | #define1 const2 static final3 | Constant |  |  |  | Const
e | Enum |  |  |  |  |
ec | Enum value |  |  |  |  |
fd | Function declaration |  |  |  |  |
fr | Friend |  |  |  |  |
fu | Function | Function, Label | Function, Label | Procedure | Procedure | Function
gv | Global variable |  | Global variable | Global variable | Global variable | Global variable
iv | Instance variable | Instance variable4 | Instance variable5 | Namespace variable | Instance variable |
lv | Local variable |  |  | Local variable | Local variable |
ma | Macro |  |  |  |  | Macro
md | Method declaration |  |  |  |  |
mi | Method implementation |  |  | Namespace procedure | Method implementation |
su |  | Subroutine |  |  |  |
t | Typedef |  |  |  |  |
un | Union |  |  |  |  |

### The Tcl and [incr Tcl] Parser

The Tcl parser understands all versions of Tcl/Tk through version 8.1. In addition, it understands `[incr Tcl]` versions 1.5 and 2.x.

### The Java Parser

The Java parser understands Java 1.0.

### The PowerPC assembly Parser

The PowerPC assembly parser understands model number 601 assembly language.

1. In C and C++.
2. In C and C++.
3. In Java.
4. For structure members.
5. For structure members.