Only a session-variable-substitution-reference is permitted to occur in host attribute values. For the following grammar, a simple-substitution-variable-reference can be used in configuration resource files and certain component element attributes. complex-substitution-variable-reference can be used in substitution variable default and override values.
In this grammar, \p{N} represents all Unicode numbers, and \p{L} represents all Unicode letters.
simple-substitution-variable-reference:
local-component-substitution-reference
complex-substitution-variable-reference:
simple-substitution-variable-reference
host-substitution-reference
external-component-substitution-reference
session-variable-substitution-reference
local-component-substitution-reference:
:[component-variable-name]
component-variable-name:
predefined-component-variable-name
dynamic-component-variable-name
predefined-component-variable-name:
sys.name
sys.description
sys.label
sys.softwareVendor
sys.author
sys.path
sys.rsrcInstallPath
sys.targetRefName
dynamic-component-variable-name:
identifier
host-substitution-reference:
:[target:host-variable-name]
:[target(host-reference):host-variable-name]
:[:]
:[/]
host-reference:
root-host-selector
parent-host-selector
host-selector / root-host-selector
host-selector / parent-host-selector
host-selector:
host-name
complex-substitution-variable-reference
root-host-selector:
/
parent-host-selector:
..(/..)*
host-variable-name:
predefined-host-variable-name
dynamic-host-variable-name
predefined-host-variable-name:
sys.hostName
sys.description
sys.hostType
sys.ipAddress
sys.portNumber
sys.raHomeDir
sys.raDataDir
sys.raConfigDir
sys.raTmpDir
dynamic-host-variable-name:
identifier
session-variable-substitution-reference:
:[session:session-variable-name]
session-variable-name:
predefined-session-variable-name
dynamic-session-variable-name
predefined-session-variable-name:
sys:sessionID
external-component-substitution-reference:
:[component-reference-list:component-variable-name]
component-reference-list:
primary-component-reference
primary-component-reference:secondary-component-reference-list
primary-component-reference:
explicit-external-component-reference
system-service-component-reference
system-type-component-reference
secondary-component-reference
targetable-component-reference
secondary-component-reference:
nested-component-reference
toplevel-component-reference
dependee-component-reference
container-component-reference
secondary-component-reference-list:
secondary-component
secondary-component:secondary-component-reference-list
explicit-external-component-reference:
component:explicit-component-reference
component(host-reference):explicit-component-reference
explicit-component-reference:
full-component-name
full-component-name#component-version
full-component-name@{install-path}
full-component-name#component-version@{install-path}
full-component-name:
path-reference component-name
component-name
path-reference:
/
/ relative-path-reference /
relative-path-reference /
relative-path-reference:
.
..
path-part
. / relative-path-reference
.. / relative-path-reference
path-part / relative-path-reference
system-service-component-reference:
systemService:system-name
system-type-component-reference:
systemType:system-name
systemType:system-name@{install-path}
systemType(host-reference):system-name
systemType(host-reference):system-name@{install-path}
targetable-component-reference:
targetableComponent
targetableComponent(host-reference)
nested-component-reference:
nestedRef:component-reference-name
toplevel-component-reference:
toplevelRef:component-reference-name
toplevelRef:component-reference-name@{install-path}
toplevelRef(host-reference):component-reference-name
toplevelRef(host-reference):component-reference-name@{install-path}
dependee-component-reference:
dependee:dependency-name
container-component-reference:
container
dependency-name:
component-reference-name:
identifier
dynamic-session-variable-name:
host-name:
[\p{L}_][\p{N}\p{L}-_. ]*
path-part:
component-name:
[\p{N}\p{L}-_. ]+ (except "." and "..")
system-name:
system-name-identifier
plugin-name#system-name-identifer
plugin-name:
identifier
identifier.plugin-name
system-name-identifier:
[\p{L}_][\p{N}\p{L}-_. +]*
component-version:
[1-9][0-9]*.[0-9]+
install-path:
complex-substitution-variable-reference
path-literal
path-liternal:
(([^}])|(}}))+
identifier:
[\p{L}_][\p{N}\p{L}_]*
|