Metalanguage, letter L

L, label, labelref, LB, leftexpr, leftrestricted, LEVEL, levelline, LF, li, libdatatype, library, libraryelement, libraryelementdef, libraryelementexpr, libraryexpr, libraryopt, libraryparam, libraryref, libraryresult, line, linebody, linend, lineref, lname, lnamind, lockargument, logicalop, longchars, ls, lvn lvnexpr


L

Introduced in the 1977 ANSI M[UMPS] language standard.

This metalanguage symbol indicates that an indefinite repetition of a certain entity may occur. E.g. L name means: a list of names (separated by commas), and is equivalent with name [ , name ] ...


label

Introduced in the 1977 ANSI M[UMPS] language standard.

This metalanguage symbol represents a label in a M[UMPS] routine.
A label can be either a name or a string of digits.

Note: Leading zeroes in a label are significant.
Note: If a label starts with a digit, it must be all digits.


labelref

Introduced in the 1990 ANSI M[UMPS] language standard.

This metalanguage symbol represents a reference to a label in a routine.

Examples:

ABCDE
KLM^PQR
^XYZ

Modified in the 1995 ANSI M[UMPS] language standard.

A reference to a routine may include an environment specification like ABCDE^|"LONDON"|ROUTINE.


LB

Approved for inclusion in a future ANSI M[UMPS] language standard.

This metalanguage symbol represents the special character "Left bracket" ("["). This metalanguage element is used to avoid confusion between the metalanguage symbol that implies an optional element with the actual character.


leftexpr

Introduced in the 1995 ANSI M[UMPS] language standard.

This metalanguage element represents one possible destination where the SET command may store information. This metalanguage symbol allows for the specification of references to $EXTRACT, $PIECE, $ECODE and $ETRAP in this context.

For a complete list of all possible destinations in the context of the SET command, see the metalanguage symbol setargument.

Approved for addition in a future ANSI M[UMPS] language standard.

The ability to use a reference to the intrinsic function $QSUBSRIPT as a SET-destination has been added.


leftrestricted

Introduced in the 1995 ANSI M[UMPS] language standard.

This metalanguage element represents one possible destination where the SET command may store information. This metalanguage symbol allows for the specification of $DEVICE, $KEY, $X and $Y in this context.

For a complete list of all possible destinations in the context of the SET command, see the metalanguage symbol setargument.


LEVEL

Introduced in the 1990 ANSI M[UMPS] language standard.

The LEVEL of a line in a M[UMPS] routine is equal to the number of level indicator marks following the line start white space plus one.

The LEVEL of a line has a meaning in the context of the argumentless DO command, and in the context of the GOTO command.


levelline

Introduced in the 1990 ANSI M[UMPS] language standard.

This metalanguage symbol represents a line in a routine that does not start with a label that carries a formal parameter list (there still may be a label without a parameter list in such a line). This type of line is called levelline, because the line may have level indicator marks (periods) following its line start white space.


LF

Introduced in the 1977 ANSI M[UMPS] language standard.

This metalanguage symbol represents the special character "Line Feed". Since this character is normally not visible in printed text, the representation LF is used in the ANSI M[UMPS] language standard to indicate that this special character is present in a specific location.

Starting from the 1990 ANSI M[UMPS] language standard, this symbol is spelled as LF (underscored).


li

Introduced in the 1990 ANSI M[UMPS] language standard.

This metalanguage symbol represents a level indicator mark. A level indicator mark is written as a period, followed by zero or more space characters.


libdatatype

Approved for inclusion in a future ANSI M[UMPS] language standard.

This metalanguage element represents the specification of the data type of a parameter or a result in the context of a reference to a library function or procedure.

Possible data types are BOOLEAN, COMPLEX, INTEGER, NAME, REAL and STRING.

The definition of this metalanguage element includes a colon preceding the name of the data type.


library

Approved for inclusion in a future ANSI M[UMPS] language standard.

This metalanguage element represents the name of a library.

Such a name may be like any name in M[UMPS], it starts with either a percent sign or a letter, and further only contains ident characters or digits.


libraryelement

Approved for inclusion in a future ANSI M[UMPS] language standard.

This metalanguage element represents the name of a function or procedure within a library.

Such a name may be like any name in M[UMPS], it starts with either a percent sign or a letter, and further only contains ident characters or digits.

Names that start with a Z are reserved for implementors; names that start with a Y are reserved for users.


libraryelementdef

Approved for inclusion in a future ANSI M[UMPS] language standard.

This metalanguage element represents the definition of a function or procedure in a library.

Such a definition contains the names of the element and the library, the data type of the result when the element is a function, and the data types of any parameters.


libraryelementexpr

Approved for inclusion in a future ANSI M[UMPS] language standard.

This metalanguage element represents an expression that evaluates to a value that is equal to the name of a function or procedure in a library.


libraryexpr

Approved for inclusion in a future ANSI M[UMPS] language standard.

This metalanguage element represents an expression that evaluates to a value that is equal to the name of a library.


libraryopt

Approved for inclusion in a future ANSI M[UMPS] language standard.

This metalanguage element represents a specification that indicates whether a parameter of a function or procedure in a library is mandatory or optional. Possible values are M (for mandatory) and O (for optional).


libraryparam

Approved for inclusion in a future ANSI M[UMPS] language standard.

This metalanguage element represents the specification of the definition of a parameter in a function or procedure in a library. Such a definition consists of up to four parts:

  1. pass by value or by reference
  2. name
  3. data type
  4. optional or mandatory
Of these items, only the name must appear, the other parts are optional.

A complete definition of a parameter could look like:
angle:REAL:M
.OutArray:INTEGER:O


libraryref

Approved for inclusion in a future ANSI M[UMPS] language standard.

This metalanguage element represents a reference to a function or procedure within a library.

Such a reference typically looks like %elementname^libraryname.


libraryresult

Approved for inclusion in a future ANSI M[UMPS] language standard.

This metalanguage element represents the specification of the data type of the return value of a library function.

Possible data types are BOOLEAN, COMPLEX, INTEGER, NAME, REAL and STRING.


line

Introduced in the 1977 ANSI M[UMPS] language standard.

This metalanguage symbol represents a line of M[UMPS] code.

A line of code looks like: optionally a label, then a "line start white space", optionally followed by zero or more commands, optionally followed by a comment. Between the various commands, there is "command separating white space", if there is a comment, there is "command separating white space" between the last command on the line and that comment.

The "line start white space" is exactly one space character.

The "command separating white space" is exactly one space character.

Examples:

(The symbol _ is used in these examples to make the space character(s) visible):

_
_;_comment
LABEL_;_comment
_SET_X=1
_SET_X=1_WRITE__X
_SET_X=1_WRITEX_;_comment
_ELSE__SET_X=3

(Note: In the last example, there are two spaces following the verb ELSE. The first space separates the word ELSE from its (non-existent) argument, the second space separates that argument from the next command.)

Additions in the 1990 ANSI M[UMPS] language standard.

There may be a parameter list following the label.

Following the "line start white space" there may be one or more "line indent markers". A "line indent marker" consists of a period, optionally followed by one or more space characters.

The "line start white space" is one or more space characters.

The "command separating white space" is one or more space characters.

Examples:

(The symbol _ is used in these examples to make the space character(s) visible):

____; comment
LABEL(A,B)_; comment
____SET_X=1
_SET_X=1___WRITE_X
_._.___SET_X=1_WRITE_ X____; comment
_ELSE__SET_X=3

but not:

_SET____X=2

Approved for addition in a future ANSI M[UMPS] language standard:

Spaces may occur at the end of a line.
___SET_X=1___WRITE_"Hello."___


linebody

Introduced in the 1990 ANSI M[UMPS] language standard.

This metalanguage symbol represents the general structure of a line of M[UMPS] code. A line of M[UMPS] code consists of one or more commands and a comment, or just a comment.

Modified in the 1995 ANSI M[UMPS] language standard.

A line of M[UMPS] code consists of one or more commands and a comment, or just a comment, or zero or more commands, followed by code to be processed by an external code processor.

To be modified in a future ANSI M[UMPS] language standard.

Trailing spaces are allowed at the end of a line of M[UMPS] code.


linend

Introduced in the 1995 M[UMPS] Windowing Application Programmer's Interface.

This metalanguage symbol represents the internal encoding for "end of line" within a routine. Although the standard does not specify how a routine should be stored internally in a system, the standard does specify that the data stream created for routine interchange between implementations should encode the "end of line" as a Carriage Return followed by a Line Feed.


lineref

Introduced in the 1977 ANSI M[UMPS] language standard.

This metalanguage symbol represents a reference to a line in a M[UMPS] program. Such a reference consists of a label (either directly or indirectly specified), optionally followed by an off-set specification.

Since a lineref does not allow for a routine specification, this metalanguage symbol is limited to the lines in the current routine.

Modification in the 1990 ANSI M[UMPS] language standard.

The metalanguage symbol lineref no longer occurs, instead the more general entity entryref and the more specific entity labelref are used.


lname

Introduced in the 1990 ANSI M[UMPS] language standard.

This metalanguage symbol represents a name of a local variable, specified either directly or indirectly.


lnamind

Introduced in the 1984 ANSI M[UMPS] language standard.

This metalanguage symbol represents a part of an indirect reference to a local variable. In the context of an indirection of the type @name@(subscripts), this metalanguage symbol corresponds to the part between the indirection operators. This entity may be a regular local variable name (see metalanguage symbol rlvn, a regular global variable name (see metalanguage symbol rgvn) or an expritem). In this context, the value between the indirection operator must evaluate to a name of a local variable, possibly with a list of subscripts enclosed in parentheses.


lockargument

Introduced in the 1977 ANSI M[UMPS] language standard.

This metalanguage symbol represents an occurrence of an argument of the LOCK command. Examples of valid arguments for the LOCK command appear in an earlier section. The argument of the LOCK command is either a name reference (see metalanguage symbol nref or a list of name rerefences (separated by commas) enclosed in parentheses, optionally followed by a colon and an expression, or an indirection operator (@) followed by an expression that evaluates to a list (separated by commas) of such arguments.

Modified in the 1990 ANSI M[UMPS] language standard.

An argument of the LOCK command may be preceeded by a plus (+) or minus (-) sign, to indicate addition or deletion of a LOCK.


logicalop

Introduced in the 1977 ANSI M[UMPS] language standard.

This metalanguage symbol represents any of the logical binary operators, i.e. one of ! or &.

Approved for addition in a future ANSI M[UMPS] language standard.

The logical operator !! (exclusive or) is added to the list of possible operators.


longchars

Introduced in the 1995 M[UMPS] Windowing Application Programmer's Interface.

This metalanguage symbol represents a sequence of zero or more characters.

For portability, the number of characters for the text value of a document gadget is limited to 32,767 characters.


ls

Introduced in the 1977 ANSI M[UMPS] language standard.

This metalanguage symbol represents the line start character (which is equal to a space). Note that many "pretty print" programs represent the line start "white space" as a tabulation, but internally, a line start is represented as a space.

Addition in the 1984 ANSI M[UMPS] language standard.

A line start may now consist of one or more spaces.


lvn

Introduced in the 1977 ANSI M[UMPS] language standard.

This metalanguage symbol represents a local variable name (possibly with a list of subscripts enclosed in parentheses). An lvn may be either a "straight" local variable name, or an indirected reference to one.

Examples:

ABC
@("PQR")
ABC(1,2,3)
@"PQR(4,5,6)"

Modified in the 1984 ANSI M[UMPS] language standard.

This metalanguage symbol represents a local variable name (possibly with a list of subscripts enclosed in parentheses). An lvn may be either a regular local variable name (see metalanguage symbol rlvn, or an indirected reference to a regular local variable name.

Examples:

ABC
@("PQR")
ABC(1,2,3)
@"PQR(4,5,6)"
@"KLM"@(8,9,10)
@"@""XYZ""@(11,23)"


lvnexpr

Approved for inclusion in a future ANSI M[UMPS] language standard.

This metalanguage symbol represents an expression that evaluates to the name of a local variable.


This document is © Ed de Moel, 1995-2005.
It is part of a book by Ed de Moel that is published under the title "M[UMPS] by Example" (ISBN 0-918118-42-5).
Printed copies of the book are no longer available.

This document describes the various metalanguage terms starting with the letter "L" that are used throughout the M[UMPS] standards, as well as some other terms that may not be obvious to all readers of the M[UMPS] language standards.

The information in this document is NOT authoritative and subject to be modified at any moment.
Please consult the appropriate (draft) language standard for an authoritative definition.

In this document, information is included that will appear in future standards.
The MDC cannot guarantee that these 'next' standards will indeed appear.