プレフィックス(ポーランド語)表記の方程式を常に明確にする文法です。

cs.stackexchange https://cs.stackexchange.com/questions/125299

質問

最近、式 $ + \、5 \、* \、4 \、3 $ の解析ツリーを生成するように求められた問題を完了しました。次の文法と最も右端の派生を使う:

$$ expr \ requearrow + \、expr \、expr \、| \、* \、expr \、expr \、| \、0 \、| .. \、\ dots \、| .. \、9 \、$$

私は派生とその解析木の作成に問題がない間、その質問は文法があいまいかどうかを尋ねます。私が教えられたことの範囲では、あいまいさを証明するための私の唯一のツールは、私が持っている一番左または最も右端の派生のために異なる解析ツリーを見つけることであり、複数の有効な解析とあいまいさを証明しています。しかし、 UnamBigurityを証明する方法を言われていません。私は、上記の文法が直感に基づいて明確で、そして部分的にはプレフィックス表記のために設計されているとはかなり確信しています。あいまいさを証明するために特定の文字列のための新しいツリーを生成しようとしましたが、オペレータは常に左端になっているため、複数の解析ツリーを作成できる文字列が見つかりませんでした。私が間違っているならば、私に知らせてください。

私の質問はこれです:上記のものなどのプレフィックス(ポーランド語)表記を曖昧にすることを説明する文法は可能ですか?私の直感は、それが常に明確になるだろうと私に言いますが、なぜこれが事実であるかもしれないのか疑問に思いました。

役に立ちましたか?

解決

あなたの質問は答えやすいです。文法を取り、次の規則を追加します。 $$ \ begin {align *} &s \ t \ mid \ mathit {expr} \\ &T \ to \ mathit {expr} \ end {align *} $$

あなたの特定の文法は、明確に見えます。

これは私がそれを証明しようとする方法です。まず、式を示す表現は自己区切りです。式は別のものの接頭辞です。

今、式を解析しようとすると、最初のシンボルを見ることで最初にどのルールを適用する必要があるかを判断できます。興味深いケースでは、入力を2つの式に分割する必要があります。自己区切りの性質はこれをユニークな方法で可能にするべきです。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top