this repo has no description
at develop 3.9 kB view raw
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