#include<stdio.h>
char s[999],*p=s;k(){while(*p==32)++p;}a(void){int r=0;if(*p=='('){char c=*++p
;++p;k();r=a();if(c==43)r+=a();else if(c==45)r-=a();else if(c==42)r*=a();else
if(c==47)r/=a();else if(c==37)r%=a();else if(c==80)printf("%d\n",r);else if(76
==c){int i,n=r;char*b=p;for(i=0;i<n;++i){p=b;r=a();}}++p;}else do{r=r*10+*(p++
)-'0';}while(*p!=32&&*p!=')');k();return r;}main(){gets(s);a();return 0;}

lisp風電卓、再び6行に縮めることができました。

仕様(俺がlisp知らないので適当)

(演算子 式 式) …計算 + - * / %
(P 式) …式を表示、結果は式の値そのまま
(L 回数 式) …式を回数繰り返す、結果は最後に実行した式の値

条件判断と再帰呼出しができるようにしたいなー。
そうすればLも廃止できるし…後一行の余裕でどうにかならないかしら。