The syntax of a logical pathname namestring is as follows. (Note that unlike many notational descriptions in this document, this is a syntactic description of character sequences, not a structural description of objects.)
logical-pathname::= | [↓host host-marker] | |
[↓relative-directory-marker] {↓directory directory-marker}* | ||
[↓name] [type-marker ↓type [version-marker ↓version]] |
host::= | ↓word |
directory::= | ↓word | ↓wildcard-word | ↓wild-inferiors-word |
name::= | ↓word | ↓wildcard-word |
type::= | ↓word | ↓wildcard-word |
version::= | ↓pos-int | newest-word | wildcard-version |
host-marker — a colon.
relative-directory-marker — a semicolon.
directory-marker — a semicolon.
type-marker — a dot.
version-marker — a dot.
wild-inferiors-word — The two character sequence “**
” (two asterisks).
newest-word — The six character sequence “newest
” or the six character sequence “NEWEST
”.
wildcard-version — an asterisk.
wildcard-word — one or more asterisks, uppercase letters, digits, and hyphens, including at least one asterisk, with no two asterisks adjacent.
word — one or more uppercase letters, digits, and hyphens.
pos-int — a positive integer.
The host must have been defined as a logical pathname host; this can be done by using setf of logical-pathname-translations.
The logical pathname host name "SYS"
is reserved for the implementation. The existence and meaning of SYS:
logical pathnames is implementation-defined.
There is no syntax for a logical pathname device since the device component of a logical pathname is always :unspecific; see Section 19.3.2.1 (Unspecific Components of a Logical Pathname).
If a relative-directory-marker precedes the directories, the directory component parsed is as relative; otherwise, the directory component is parsed as absolute.
If a wild-inferiors-marker is specified, it parses into :wild-inferiors.
The type of a logical pathname for a source file is "LISP"
. This should be translated into whatever type is appropriate in a physical pathname.
Some file systems do not have versions. Logical pathname translation to such a file system ignores the version. This implies that a program cannot rely on being able to store more than one version of a file named by a logical pathname.
If a wildcard-version is specified, it parses into :wild.
Each asterisk in a wildcard-word matches a sequence of zero or more characters. The wildcard-word “*
” parses into :wild; other wildcard-words parse into strings.
When parsing words and wildcard-words, lowercase letters are translated to uppercase.
The consequences of using characters other than those specified here in a logical pathname namestring are unspecified.
The consequences of using any value not specified here as a logical pathname component are unspecified.
The device component of a logical pathname is always :unspecific; no other component of a logical pathname can be :unspecific.
The null string, ""
, is not a valid value for any component of a logical pathname.