IFS Grammar: "ifs" ["domain" {"(" | "["} expr "," expr {")" | "]"} {"(" | "["} expr "," expr {")" | "]"} ] [ "polygon" "(" expr "," expr ")" { "(" expr "," expr ")" } ] [ "transform" op { op } ] [ "dots" num ] "order" num [ "image" op { op } ] === expr::= [ "+" | "-" ] term { "+" term | "-" term } term::= factor | { "*" factor | "/" factor } factor:= prim | { "**" prim } prim:= num | function "(" expr ")" | "(" expr ")" function::= "sin" | "cos" | "atan" | "log" | "expr" | "sinh" | "cosh" | "atanh" op::= { "rot" "(" expr ")" | "rfx" | "rfy" | "rfc" | "trl" "(" expr "," expr ")" | "scl" "(" expr[ "," expr] ")" | "lin" "(" expr "," expr "," expr "," expr ")" } === [ ] = optional presence of { } = zero or more times presence of "x" = mandatory presence of