% A FlatZinc model ::= [ ]* [ ]* [ ]* [ ]* % Predicate items ::= "predicate" "(" [ : "," ... ] ")" ";" % Identifiers ::= [A-Za-z][A-Za-z0-9_]* ::= "bool" | "int" | "float" | "set of int" ::= | "array" "[" "]" "of" ::= "var" | "var" ".." | "var" "{" "," ... "}" | "var" ".." | "var" "set" "of" ".." | "var" "set" "of" "{" [ "," ... ] "}" ::= "array" "[" "]" "of" ::= "1" ".." ::= | | ".." | ".." | "{" "," ... "}" | "set" "of" .. | "set" "of" "{" [ "," ... ] "}" ::= | "array" "[" "]" "of" ::= | "int" ::= | | | ::= | ::= | ::= | ::= [A-Za-z_][A-Za-z0-9_]* % Boolean literals ::= "false" | "true" % Integer literals ::= [-]?[0-9]+ | [-]?0x[0-9A-Fa-f]+ | [-]?0o[0-7]+ % Float literals ::= [-]?[0-9]+.[0-9]+ | [-]?[0-9]+.[0-9]+[Ee][-+]?[0-9]+ | [-]?[0-9]+[Ee][-+]?[0-9]+ % Set literals ::= "{" [ "," ... ] "}" | ".." | "{" [ "," ... ] "}" | ".." ::= "[" [ "," ... ] "]" ::= "[" [ "," ... ] "]" % Parameter declarations ::= ":" "=" ";" % Variable declarations ::= ":" [ "=" ] ";" | ":" "=" ";" % Constraint items ::= "constraint" "(" [ "," ... ] ")" ";" % Solve item ::= "solve" "satisfy" ";" | "solve" "minimize" ";" | "solve" "maximize" ";" % Annotations ::= [ "::" ]* ::= | "(" "," ... ")" := | "[" [ "," ... ] "]" := | | ::= ([^"\n\] | \[^\n(])* ::= """ """ % End of FlatZinc grammar