blob: 2d23688e805c2243dca928bf337fbe206bf57222 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
// file : doc/manual.cli
// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd
// license : MIT; see accompanying LICENSE file
"\name=build2-build-system-manual"
"\subject=build system"
"\title=Build System"
// NOTES
//
// - Maximum <pre> line is 70 characters.
//
"
\h0#preface|Preface|
This is the preface.
\h1#grammar|Grammar|
\
eval: '(' (eval-comma | eval-qual)? ')'
eval-comma: eval-ternary (',' eval-ternary)*
eval-ternary: eval-or ('?' eval-ternary ':' eval-ternary)?
eval-or: eval-and ('||' eval-and)*
eval-and: eval-comp ('&&' eval-comp)*
eval-comp: eval-value (('=='|'!='|'<'|'>'|'<='|'>=') eval-value)*
eval-value: value-attributes? (<value> | eval | '!' eval-value)
eval-qual: <name> ':' <name>
value-attributes: '[' <key-value-pairs> ']'
\
Note that \c{?:} (ternary operator) and \c{!} (logical not) are
right-associative. Unlike C++, all the comparison operators have the same
precedence. A qualified name cannot be combined with any other operator
(including ternary) unless enclosed in parentheses. The \c{eval} option
in the \c{eval-value} production shall contain single value only (no
commas).
"
|