私の質問に対する回答がまったく得られなかったので、MKS Yacc に代わる、選択設定の構文または非常に類似したものをサポートするものはありますか? 、より基本的な質問をします。
- MKS Yacc が提供する「選択設定」を使用した人はいますか?
持っている場合、何に使用しましたか。また、ルールの最後の位置以外で使用する意味はありますか?
次のような規則を表す文法に注意する必要があります。
TOKEN1 LPAREN non_terminal1 [^EQUAL] TOKEN2 non_terminal2 RPAREN
私が何かを誤解していない限り、埋め込まれた選択設定は、このコンテキストでは何の価値もありません。
バックグラウンド
MKS Yacc は、彼らの Web サイトで「選択設定構文」と呼ばれる表記法をサポートしています。図示されていませんが、トークンまたはキャレット付きの角括弧内のトークンのリスト (オプションの場合があります) で構成され、特定のトークンがこの構造に従ってはならないことを示しますが、そのトークンは一部としてカウントされません。このルールの:
non_terminal1: TOKEN1 non_terminal2 TOKEN2 [^TOKEN3]
したがって、このルールは、次のトークンが a でない限り、 a の後に aTOKEN1
が続き、non_terminal2
aTOKEN2
がa であることを示しています。non_terminal1
ただし、次のトークンが a のTOKEN3
場合は、他のルールが適用されます。
(角かっこで囲まれた項目が非終端記号になるかどうかはわかりません。表記法を使用して見たコードは、常にトークンまたはスペースで区切られたトークンをいくつか使用し、非終端記号を使用することはありません。私もそうではありませんキャレットが必要かどうかを明確にしてください。繰り返しますが、私が見たすべての例でキャレットが使用されています。)