これを前置きするために、この種のものについての私の知識は貧弱です.
とにかく、CYK 構文解析アルゴリズムがどのように機能するかを独学できるように、代数式の構造を記述する文脈自由文法を開発してきました。このような構造が中置代数式だけで機能する仕組みは理解していますが、「-」演算子の単項定義と 2 項定義の両方を処理できる文法を開発する方法がわかりません。
参考までに、私が CNF で書いた文法 (S は開始記号) を次に示します。
S -> x
A -> OS
S -> LB
B -> SR
S -> KS
O -> +
O -> -
O -> *
O -> /
O -> ^
K -> -
L -> (
R - > )
問題は、「-」演算子に遭遇したときに、CYK 解析アルゴリズムが S -> KS と A -> OS のどちらを決定するかをどのように事前に知ることができるかということです。そのような文法はもはや文脈自由ですか? そして最も重要なことは、プログラミング言語は 2 進数と単項の両方のマイナス記号を含む言語を処理できるため、これを合理的に解析するにはどうすればよいでしょうか?