i. Introduction

  1. ii. Background
  2. iii. Token Register Objectives

ii. Background

TDF is an interface used for architecture neutral and programming language neutral representation of program. It is used both within portable language specific compilation systems, and for architecture neutral distribution of compiled programs. For full details see TDF Specification.

TDF tokens offer a general encapsulation and expansion mechanism which allows any implementation detail to be delayed to the most appropriate stage of program translation. This provides a means for encapsulating any target dependencies in a neutral form, with specific implementations defined through standard TDF features. This raises a natural opportunity for well understood sets of TDF tokens to be included along with TDF itself as interface between TDF tools.

This first revision includes additional tokens for accessing variable parameter lists (see §4.3), and a C mapping token to support the optional type long long int.

iii. Token Register Objectives

As TDF tokens may be used to represent any piece of TDF, they may be used to supplement any TDF interface between software tools. However, that raises the issue of control authority for such an interface. In many cases, the interfaces may be considered to “belong” to a particular tool. In other cases, the names and specifications of tokens need to be recorded for common use.

This token register is used to record the names and specifications of tokens which may need to be assumed by more than one software tool. It also defines a naming scheme which should be used consistently to avoid ambiguity between tokens.

Five classes of tokens are identified:

Target dependency tokens

concerned with describing target architecture or translator detail;

Basic mapping tokens

relating general language features to architecture detail;

TDF interface tokens

These may be required to complete the specification of some TDF constructs;

Language Programming Interfaces (LPI)

These may be specific to a particular producer;

Application Programming Interfaces (API)

corresponding to libraries' interfaces.

These classes are discussed separately, in §2 to §6 below.