HaskellでAlex/Happyを使用して単純なレクサー/パーサーを構築しようとしています。テキストファイルのローカリゼーション情報を最終的なASTに保持したいと思います。
ローカリゼーションを使用してトークンのリストを作成するAlexを使用してレクサーを作成することができました。
data Token = Token AlexPosn Foo Bar
lexer :: String -> [Token]
Happyファイルで、%token部分を宣言するときに、$$記号を使用してトークンのセマンティック部分を宣言できます。
%token FOO { Token _ $$ _ }
解析ルールでは、$iはこの$$を参照します。
foo_list: FOO { [$1] }
| foo_list FOO { $2 : $1 }
AlexPosn部分とFOOトークンのFoo部分を参照する方法はありますか?今のところ、私はそれらのうちの1つだけを参照する方法しか知りません。''いくつかの$$を追加する''方法に関する情報を見つけて、後でそれらを参照することができます。
そうする方法はありますか?
V。