# About XDS

- Welcome to XDS
- Conventions used in this manual

## Welcome to XDS

XDS is a family name for professional Modula-2/Oberon-2 programming systems for Intel x86-based PCs (Windows and Linux editions are available). XDS-C is a "via C" cross-compiler that allows you to target virtually any system, from embedded to Unix servers. XDS provides an uniform programming environment for the mentioned platforms and allows design and implementation of portable software.

The system contains both Modula-2 and Oberon-2 compilers. These languages are often called ``safe'' and ``modular''. The principle innovation of the language Modula-2 was the module concept, information hiding and separate compilation.

Oberon-2 is an object-oriented programming (OOP) language based on Modula-2. With the introduction of object-oriented facilities, extensible project design became much easier. At the same time, Oberon-2 is quite simple and easy to learn and use, unlike other OOP languages, such as C++ or Smalltalk.

The XDS Modula-2 compiler implements ISO 10514 standard of Modula-2. The ISO standard library set is accessible from both Modula-2 and Oberon-2.

XDS is based on a platform-independent front-end for both source languages which performs all syntactic and semantic checks on the source program. The compiler builds an internal representation of the compilation unit in memory and performs platform-independent analysis and optimizations. After that the compiler emits output code. It can be either native code for the target platform or text in the ANSI C language. ANSI C code generation allows you to cross compile Modula-2/Oberon-2 for almost any platform.

Moving to a new language usually means throwing away or rewriting your existing library set which could have been the work of many years. XDS allows the programmer to mix Modula-2, Oberon-2, C and Assembler modules and libraries in a single project.

XDS includes standard ISO and PIM libraries along with a set of utility libraries and an interface to the ANSI C library set.

XDS compilers produce optimized ANSI C code which is further compiled by a C compiler. The call of a C compiler can be done transparent for the user. However, XDS can be used as Modula-2/Oberon-2 to C translator, as it produces easy readable and understandable text. It is also possible to preserve your source code comments in their original context.

## Conventions used in this manual

- Language descriptions
- Source code fragments

### Language descriptions

Where formal descriptions for language syntax constructions appear, an extended Backus-Naur Formalism (EBNF) is used.

These descriptions are set in the `Courier` font.

`Text = Text [ { Text } ] | Text.`

In EBNF, brackets "`[`" and "`]`" denote optionality of the enclosed expression, braces "`{`" and "`}`" denote repetition (possibly 0 times), and the vertival line "`|`" separates mutually exclusive variants.

Non-terminal symbols start with an upper case letter (`Statement`). Terminal symbols either start with a lower case letter (`ident`), or are written in all upper case letters (`BEGIN`), or are enclosed within quotation marks (e.g. `":="`).

### Source code fragments

When fragments of a source code are used for examples or appear within a text they are set in the `Courier` font.

        MODULE Example;

        IMPORT InOut;

        BEGIN
          InOut.WriteString("This is an example");
          InOut.WriteLn;
        END Example.