私はかなりの間これを疑ってきました。彼らはすでにたくさんあり、過負荷になる可能性があるので、最後までやり直してカスタムオペレータを許可してみませんか?私はそれが素晴らしい追加だと思う。なぜC++はユーザ定義演算子を許可しないのですか?
これは、言語をコンパイルするのが難しいと言われてきました。これは私には不思議ですが、C++は本当に簡単にコンパイルできるように設計されていないので、元に戻すことはできますか?もちろん、静的テーブルと文法のLRパーサーを使用して、
E → T + E | T
T → F * T | F
F → id | '(' E ')'
のような文法を使用すると、それはうまくいかないでしょう。通常、オペレータ優先順位パーザAFAIKで解析されるPrologでは、新しい演算子を簡単に定義できますが、言語ははるかに簡単です。さて、オペレータが文法にハードコードされているすべての場所で、文法はidentifiers
を受け入れるように書き直すことができます。
他にどのようなソリューションとパーサーのスキームがあり、他にどのようなことが設計上の決定に影響していますか?
あなたは私が推測するどこかに線を描く必要があります。そして、コンパイラを書くことを試みたことがある人は、コード化するのが簡単ではないことに感謝します。 – Matt