新千葉 ガーベージ・コレクション

FPGA マガジンやインターフェースで書けなかったこと等をちょぼちょぼ書いてます。@ryos36

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) でアクセプトできるようにしていくのはかなりしんどいので自動化してしまいたい。なんか大学のときに習ったような、、、