【发布时间】:2010-07-24 10:55:02
【问题描述】:
我正在尝试在 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 部分? 现在我只知道如何只引用其中一个。我可以找到有关“添加多个 $$”的方法的信息,并在之后参考它们。
有办法吗?
V.
【问题讨论】:
-
事实上,即使在C flex/bison 中似乎也不可能,因此直接在haskell 或caml 中应该是不可能的。但是,我可以使用元组数据 Token = Token (AlexPosn,Foo,Bar)) 而不是几个参数。我将这个问题留了几天,但我想我很快就会关闭它。
标签: haskell parser-generator alex happy