私は、Haskell言語用のパーサーを書こうとしました。プログラムが解析した付加的な注意書きは、有効なHaskellソースコードの接頭辞にすることができます。たとえば、これは私の場合は有効なソースである定義済みの言語のすべての接頭辞を受け入れるBison文法
:https://www.haskell.org/onlinereport/syntax-iso.html#sect9.5:
func x = (x +
ここHaskellのためのBNFのような仕様があります。
BNF文法をそのようなプレフィックス言語を受け入れるbison文法に変換する模式的な方法はありますか?
この練習の文脈はEmacsのエディタであり、ソースコードはプログラムが記述されているので、目標はプログラマがソースコードを書くときにインデントのヒントを与えることです。
良いアイデアのように見えます。これらのXX_prefixプロダクションはすべて返されますか? –
あなたが返すものは何でも - 基本的なshift-reduceパーサーは文字列が記述された言語かどうかを認識します。 bisonの意味情報を使用して、解析に対応するAST、または必要な他のデータ構造を構築することができます。 –
これは私の質問に答えるので、答えを受け入れました。これらのプレフィックス規則から何を返すべきかはまだ分かりませんが、それは別の研究の話題です。ありがとうございます。 –