ConstExpr = Expr. Expr = E1 {OR E1}. E1 = E2 {AND E2}. E2 = {NOT} E3. E3 = E4 {Relop E4}. E4 = E5 {Addop E5}. E5 = E6 {Mulop E6}. E6 = {"+" | "-"} E7. E7 = E8 {Selector}. E8 = Id | Number | CharLiteral | TextLiteral | Constructor | "(" Expr ")". Relop = "=" | "#" | "<" | "<=" | ">" | ">=" | IN. Addop = "+" | "-" | "&". Mulop = "*" | "/" | DIV | MOD. Selector = "^" | "." Id | "[" Expr {"," Expr} "]" | "(" [ Actual {"," Actual} ] ")". Constructor = Type "{" [ SetCons | RecordCons | ArrayCons ] "}". SetCons = SetElt {"," SetElt}. SetElt = Expr [".." Expr]. RecordCons = RecordElt {"," RecordElt}. RecordElt = [Id ":="] Expr. ArrayCons = Expr {"," Expr} ["," ".."].