我正在嘗試用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