Parses file-related expressions.
Classes in this package are used for parsing file-related expressions.
Primary configuration strings is command
and
expression
.
command |
::= |
simple-command | meta-command |
simple-command |
::= |
[^[{]* argument-list |
meta-command |
::= |
'{' file-group '}' argument-list |
argument-list |
::= |
('[' argument ']' | '{' file-group '}'| ' ')* |
file-group |
::= |
basic-file-group |
file-group '#' filter |
file-group ':' pattern
|
basic-file-group |
::= |
'source' | 'sources'
| 'exec' | 'execs'
| 'all' | 'current'
|
filter |
::= |
[^}:#]* |
pattern |
::= |
[^}:#]* |
argument |
::= |
[^]]* |
Possible {@link pcms.util.expr.BasicFileGroup}
types:
Type | Description |
source |
first source file |
sources |
all source files |
all |
all files in the directory |
current |
current source file |
exec |
first executable file |
execs |
all executable files |
Filter is a standard glob file mask.
The file from file-group
used only if mathes filter.
Note: here and further "name" denotes full name without last suffix (e.g. name of "a.pas" is "a", name of "abc" is "", name of "a.b.c" is "a.b").
Expression expanding:
!
" in pattern
is replaced with
file name (for each file in file-group
).
!.!
" in pattern
is replaced with
full file name (for each file in file-group
).
!/
" in pattern
is replaced with
file path (for each file in file-group
).
{file-group#filter:mask}
is replaced with space-delimited list. It includes files from
file-group
that match template
and
substituted in patter
.
Note: file-list
is threated as
space-dilimited (oredered) list of filenames. If filename
listed more than once the only first occurence used.
Remember: All paths that appear in local
configuration should be written in _external_ form regardless
of underlying OS:
1. Path components are separated with '/' (slash).
2. Path beginning with '/' denotes path relative to base/root
3. All directory names MUST end with '/'.