redesigned grammar
added CanonicalName
used CanonicalName in FunctionFactory, FunctionRegistry