我正在尝试用Haskell中的Alex/Happy构建一个简单的词法分析器/解析器,并且我想 将来自文本文件的一些本地化信息保存到我的最终的AST。如何在使用Happy/Haskell进行分析时保留多个语义值
我设法建立使用亚历克斯建立令牌的列表本地化词法分析:
data Token = Token AlexPosn Foo Bar
lexer :: String -> [Token]
在我的快乐文件
,声明%令牌部分的时候,我可以声明什么的 语义部分带有$$符号的令牌
%token FOO { Token _ $$ _ }
并且在解析规则中,$ i将引用此$$。
foo_list: FOO { [$1] }
| foo_list FOO { $2 : $1 }
有没有办法来指代AlexPosn部分和到FOO令牌的富一部分? 现在我只知道如何只参考其中的一个。我可以通过“添加几个$$”的方式找到信息,并在之后参考它们。
有没有办法做到这一点?
五
事实上,即使在C flex/bison中也不可能,所以它不应该直接在haskell或caml中。 但是,我可以使用一个元组 数据Token = Token(AlexPosn,Foo,Bar)) 而不是几个参数。 我打开了几天的问题,但我想我会很快关闭 。 – Vinz 2010-07-26 08:37:44