Is a grammar that accepts function declarations, function calls and expressions (at any order!) necessarily cyclic?
There is just no need for rules (or non-terminals) that are cyclic,
which I understand means that, for some non-terminal $X$, you have 
$X\stackrel*\Rightarrow X$.

What you often need is recursive rules and non-terminals, such that
$X\stackrel*\Rightarrow uXv$, where $u$ and $v$ are strings of
symbols. Without them, the language is finite.

For example, in the case of expressions you may have:


$Expr \to Term + Expr \mid Term$
$Term \to Factor * Term \mid Factor$
$Factor \to Ident \mid Literal \mid ( Expr )$


This said, you are right that cyclicity, as you define it, does make
the grammar ambiguous iff the cyclic symbol can also derive on a
terminal string.