LL(1) と電卓

上記の電卓。言語としては LL(1) のようだ。しかし、これを私の直感的な bnf にしてしまうと、うまく LL(1) でアクセプトできるように書けない、、、

E ::= E + T | T
T ::= T * F | F
F ::= ( E ) | number

見たいになってしまう。あるいは、言語プロセッサという本の例にあるように

cond ::= expr "+" expr | expr "*" expr

とか。これを自力で考えて LL(1) でアクセプトできるようにしていくのはかなりしんどいので自動化してしまいたい。なんか大学のときに習ったような、、、