MKS Yacc は、彼らの Web サイトで「選択設定構文」と呼ばれる表記法をサポートしています。図示されていませんが、角括弧で囲まれたトークンと、オプションでキャレットで構成され、特定のトークンが残りの規則に従う必要があるか、または従わない必要があることを示します。
non_terminal: TOKEN1 non_terminal2 TOKEN2 [TOKEN3]
non_terminal: TOKEN1 non_terminal2 TOKEN2 [^TOKEN3]
(角かっこで囲まれた項目が非終端記号になるかどうかはわかりません。表記法を使用して見たコードでは、常にトークンまたはスペースで区切られたトークンを使用し、非終端記号は使用しません。)
UnixまたはLinuxマシンで実行され、できればソース形式で利用できる、同じサポート(表記が異なる場合があります-機能はできない)を提供する代替のYacc互換システム(できればオープンソース)を知っている人はいますか?
(MKS Yacc はまた、エラーの処理とエラー動作の調整においてある程度の柔軟性を提供します。それを使用できる 1 つの方法は、キーワードとして扱われると意味をなさない位置でキーワードが検出されたときに、キーワードを識別子として扱うことです。それをバークレー Yacc に後付けすることはできbyacc
ますが、「選択設定」を処理する方法を考えるのに十分な時間を費やしていません。)