我正在尝试在 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 部分?现在我只知道如何只引用其中一个。我可以找到有关“添加多个 $$”的方法的信息,并在之后参考它们。
有没有办法这样做?
五。