This is the BNF description of the PCA pathname syntax.
a-char ::==
'a' |
'A'
alpha-char ::==
'a' .. 'z' |
'A'..'Z'
b-char ::==
'b' |
'B'
digit-char ::==
'0' .. '9'
dot-char ::==
'.'
double-colon-char ::==
':'
double-quote-char ::==
'"'
e-char ::==
'e' |
'E'
i-char ::==
'i' |
'I'
l-char ::==
'l' |
'L'
m-char ::==
'm' |
'M'
n-char ::==
'n' |
'N'
percent-char ::==
'%'
single-quote-char ::==
'''
space-char ::==
space |
horizontal-tab
special-char ::==
'^' |
'~' |
'|' |
'#' |
'$' |
'-' |
'=' |
'&' |
'+' |
'<' |
'>' |
'*' |
'_'
zero-char ::==
'0'
operator-char ::==
space-char |
'[' |
']' |
',' |
'(' |
')' |
'/' |
'!' |
'\'
quote-char ::=
single-quote-char |
double-quote-char
separator-char ::==
'\' |
dot-char (Ada only)
terminator-char ::==
space-char |
carriage-return |
'[' |
']' |
',' |
'(' |
')' |
'/' |
'!'
double-quoted-char ::==
alpha-char |
digit-char |
dot-char |
double-colon-char |
operator-char |
percent-char |
single-quote-char |
special-char
single-quoted-char ::==
alpha-char |
digit-char |
double-colon-char |
double-quote-char |
dot-char |
operator-char |
percent-char |
special-char
unquoted-char ::==
alpha-char |
digit-char |
dot-char (not Ada) |
double-quote-char |
percent-char |
single-quote-char |
special-char
double-quote-quote ::==
double-quote-char double-quote-char
double-quote-sequence ::==
double-quoted-char |
double-quote-quote
double-quoted-identifier ::==
double-quote-char double-quote-sequence [{double-quoted-sequence}]
double-quote-char
single-quote-quote ::==
single-quote-char single-quote-char
single-quote-sequence ::==
single-quoted-char |
single-quote-quote
single-quoted-identifier ::==
single-quote-char single-quote-sequence [{single-quoted-sequence}]
single-quote-char
double-colon-colon ::==
double-colon-char double-colon-char
unquoted-identifier ::==
{[ [{unquoted-char}] double-colon-colon]}
unquoted-char [{unquoted-char}]
quoted-identifier ::==
double-quoted-indentifier |
single-quoted-identifer
token-identifier ::==
quoted-identifier | unquoted-identifier
label-identifier ::==
percent l-char a-char [b-char e-char l-char]
space-char [{space-char}]
token-identifer
line-identifier ::==
percent l-char i-char [n-char e-char]
space-char [{space-char}]
[{'0'}] digit-char {digit-char}
[dot [{'0'}] digit-char {digit-char}]
name-identifier ::==
percent n-char a-char [m-char e-char]
space-char [{space-char}]
token-identifer
identifier ::==
line-identifier |
label-identifier |
name-identifier |
token-identifier
path-name :==
[{identifier separator-char}] identifier terminator-char
The following BNF operator definitions are used:
::== assignment operator.
| exclusive OR operator.
[] optional operator.
.. range operator.
{} repeat operator.