私の式評価ツールの数値に+/-符号のサポートを追加したいのですが、数字トークンの一部としての字句要素(例えばnumber = [\+\-]*[0-9]+
)か構文(例えばprimary ::= [ ("+" | "-") ] primary | number
の場合はnumber = [0-9]+
)のどちらであるべきかわかりません。+/-数字のプレフィックスの記号:字句/構文要素?
上記から分かるように、この記号は任意に多くなる可能性があります。現在、再帰的降下と演算子の優先順位の解析の両方を使用して構文バージョンを実装しました。しかし、私はまだこれが良い選択かどうかは分かりません。一つ目は、文法上のバージョンでは、それが満たしている各記号に対して再帰が必要です。
なぜあなたは任意の数を許可しますか? 'のようなもの' primary :: = [( "+" | " - ")] number |数字がよかったようです。 –
ええ、私はそれもちょっと役に立たないと思った。言語は書くのを容易にするほど表現力豊かでなければならないが、ほとんど何も受け入れられないことを過度に表現してはならない。とにかく、これを可能にする多くのプログラミング言語なので、おそらく私もそれを実装すべきだと思った。私はそのシンプルなオプションのシングルサインアプローチをとるでしょう。 – LeleDumbo