I use Jison and I ignore white-space (including new-lines).
The first line in my %lex is:
\s+ /* ignore */
But you don't have to do it that way if you don't want to. Try something along these lines:
"expression": [
["NUMBER", "$$ = yytext;"],
["expression + expression", "$$ = $1 + ' + ' + $3;"],
["expression - expression", "$$ = $1 + ' - ' + $3;"],
["expression * expression", "$$ = $1 + ' * ' + $3;"],
["expression / expression", "$$ = $1 + ' / ' + $3;"],
["expression % expression", "$$ = $1 + ' % ' + $3;"],
["expression newlines", "$$ = $1"],
["newlines expression", "$$ = $2"]
],
That should allow any amount of new lines before/after any expression.