this repo has no description
1% A FlatZinc model
2<model> ::=
3 [ <predicate-item> ]*
4 [ <par-decl-item> ]*
5 [ <var-decl-item> ]*
6 [ <constraint-item> ]*
7 <solve-item>
8
9% Predicate items
10<predicate-item> ::= "predicate" <identifier> "(" [ <pred-param-type> : <identifier> "," ... ] ")" ";"
11
12% Identifiers
13<identifier> ::= [A-Za-z][A-Za-z0-9_]*
14
15<basic-par-type> ::= "bool"
16 | "int"
17 | "float"
18 | "set of int"
19
20<par-type> ::= <basic-par-type>
21 | "array" "[" <index-set> "]" "of" <basic-par-type>
22
23<basic-var-type> ::= "var" <basic-par-type>
24 | "var" <int-literal> ".." <int-literal>
25 | "var" "{" <int-literal> "," ... "}"
26 | "var" <float-literal> ".." <float-literal>
27 | "var" "set" "of" <int-literal> ".." <int-literal>
28 | "var" "set" "of" "{" [ <int-literal> "," ... ] "}"
29
30<array-var-type> ::= "array" "[" <index-set> "]" "of" <basic-var-type>
31
32<index-set> ::= "1" ".." <int-literal>
33
34<basic-pred-param-type> ::= <basic-par-type>
35 | <basic-var-type>
36 | <int-literal> ".." <int-literal>
37 | <float-literal> ".." <float-literal>
38 | "{" <int-literal> "," ... "}"
39 | "set" "of" <int-literal> .. <int-literal>
40 | "set" "of" "{" [ <int-literal> "," ... ] "}"
41
42<pred-param-type> ::= <basic-pred-param-type>
43 | "array" "[" <pred-index-set> "]" "of" <basic-pred-param-type>
44
45<pred-index-set> ::= <index-set>
46 | "int"
47
48<basic-literal-expr> ::= <bool-literal>
49 | <int-literal>
50 | <float-literal>
51 | <set-literal>
52
53<basic-expr> ::= <basic-literal-expr>
54 | <var-par-identifier>
55
56<expr> ::= <basic-expr>
57 | <array-literal>
58
59<par-expr> ::= <basic-literal-expr>
60 | <par-array-literal>
61
62<var-par-identifier> ::= [A-Za-z_][A-Za-z0-9_]*
63
64% Boolean literals
65<bool-literal> ::= "false"
66 | "true"
67
68% Integer literals
69<int-literal> ::= [-]?[0-9]+
70 | [-]?0x[0-9A-Fa-f]+
71 | [-]?0o[0-7]+
72
73% Float literals
74<float-literal> ::= [-]?[0-9]+.[0-9]+
75 | [-]?[0-9]+.[0-9]+[Ee][-+]?[0-9]+
76 | [-]?[0-9]+[Ee][-+]?[0-9]+
77
78% Set literals
79<set-literal> ::= "{" [ <int-literal> "," ... ] "}"
80 | <int-literal> ".." <int-literal>
81 | "{" [ <float-literal> "," ... ] "}"
82 | <float-literal> ".." <float-literal>
83
84<array-literal> ::= "[" [ <basic-expr> "," ... ] "]"
85
86<par-array-literal> ::= "[" [ <basic-literal-expr> "," ... ] "]"
87
88% Parameter declarations
89
90<par-decl-item> ::= <par-type> ":" <var-par-identifier> "=" <par-expr> ";"
91
92% Variable declarations
93
94<var-decl-item> ::= <basic-var-type> ":" <var-par-identifier> <annotations> [ "=" <basic-expr> ] ";"
95 | <array-var-type> ":" <var-par-identifier> <annotations> "=" <array-literal> ";"
96
97
98% Constraint items
99
100<constraint-item> ::= "constraint" <identifier> "(" [ <expr> "," ... ] ")" <annotations> ";"
101
102% Solve item
103
104<solve-item> ::= "solve" <annotations> "satisfy" ";"
105 | "solve" <annotations> "minimize" <basic-expr> ";"
106 | "solve" <annotations> "maximize" <basic-expr> ";"
107
108% Annotations
109
110<annotations> ::= [ "::" <annotation> ]*
111
112<annotation> ::= <identifier>
113 | <identifier> "(" <ann-expr> "," ... ")"
114
115<ann-expr> := <basic-ann-expr>
116 | "[" [ <basic-ann-expr> "," ... ] "]"
117
118<basic-ann-expr> := <basic-literal-expr>
119 | <string-literal>
120 | <annotation>
121
122<string-contents> ::= ([^"\n\] | \[^\n(])*
123
124<string-literal> ::= """ <string-contents> """
125
126% End of FlatZinc grammar