Parses file-related expressions. Classes in this package are used for parsing file-related expressions.

Primary configuration strings is command and expression.

Formal syntax

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 ::= [^]]*

BasicFileGroup

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:

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 '/'.