Support for multiple notations and languages.

## Package Specification

### Definitions

Language in the context of ArgoUML is the representation of a model fragment, either as visible `notation` or as `code`.

Notation is the representation of model fragments as part of a diagram.

Notation may not only be pure text: UML attributes/operations may have graphical text properties (underlining, italics) with a semantic relevance.

Code is (hopefully) syntactically correct text that is stored in files for the purpose to be processed by a tool (for example, by a compiler).

A generator converts model elements or portions thereof into textual representations, either as notation or as code. No generators are required for a language. Certain languages (UML) may not even support code generators.

A parser processes textual notation or code to generate or update model elements to reflect the code. ArgoUML supports two types of parsers, one for notation and one for code. ArgoUML does not require parsers for any language, and recognizes that are languages (UML) that are not represented in code. A language which provides a notational parser must provide a notational generator.

ArgoUML recognizes that a language may have different though basically equivalent representations when displayed in the context of a diagram or when generated as a source file.

Thus both code and notation are subsets of language.

Examples for notation:

- UML
- Java-like

Examples for code:
- Java
- C++
- IDL

ArgoUML will refer to a notation which is similar to code with the same name that is used to refer to the code itself. So a notation which is Java-like will be called Java notation.

### Package Structure up until March 2004

The different languages or notations supplied with ArgoUML are found in subpackages of {@link org.argouml.language}. Any definition or foundation interfaces are found in the ArgoUML API directory {@link org.argouml.application.api}. Any helper classes such as abstract implementation classes are found in {@link org.argouml.language.helpers}.

## Related Documentation

(none)