式を連結して文字列を形成できるように、連結された文字列を解析しようとしました。あれは、
"No, " + 4*(6+5)/(8-4) + " is not equal to " + 75*1.3 + "."
上記は正しく解析する必要があります。問題は、+
シフト削減の競合につながることです。私は次の文法を使用しています。
<S> ::= <A> '+' <S>
| <A>
<A> ::= <E>
|QUOT
<E> ::= <T> '+' <E>
| <T> '-' <E>
| <T>
<T> ::= <F> '*' <T>
| <F> '/' <T>
| <F>
<F> ::= NUM
| '(' <E> ')'
+
shift-reduce 競合を引き起こさない文法を見つけようとしても成功していません。この文法を LALR にする方法があることを願っています。それを見つけるための助けをいただければ幸いです。