Hoa\Compiler Not Enough Memory

I have the following PP grammar:

%skip		space		\s

%token		lparan		\(
%token		rparan		\)
%token		period		\.

%token		identifier	[A-Za-z][A-Za-z0-9_]*

#expression:
	primaryExpression() |
	expression() ::period:: <identifier>
	
#primaryExpression:
	<identifier> |
	::lparan:: expression() ::rparan::

I would like to parse expressions like the following:

Favourite.Food.Cake
(Favourite.Food.Cake)
(Favourite.Food).Cake
(Favourite).Food.Cake

There’s no problem with the first two expressions, but the last two produce the following error:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 65536 bytes) ... Llk\Parser.php on line 389

which I assume is due to infinite recursion. What’s the best way to solve this problem?