happy

    4熱度

    1回答

    我正在爲實驗性語言進行語義分析。我使用Alex和Happy來生成詞法分析器和解析器(實際上我使用BNFC工具來生成Alex和Happy文件)。每當出現語義錯誤時(例如類型錯誤),我都希望得到帶有行號和列號的錯誤消息。 看來,我將不得不存儲行號信息,同時建立我的符號表或AST。如果我可以以某種方式訪問​​Happy文件的規則部分中的位置信息,我的問題將被解決。 在這方面的任何建議將不勝感激。 我試着

    3熱度

    1回答

    我正在使用Alex和Happy在Haskell編寫monadic解析器。 我的誤差函數的定義如下: parseError :: Token -> Alex a parseError _ = alexError "error occurred" 如何發送自定義錯誤(如不正確類型,而試圖添加一個字符串到數字)解析過程? UPDATE 解析器並不需要做的類型檢查,我正在做的製作裏面,因爲我跟蹤的操

    3熱度

    1回答

    我正在運行,看起來像由Happy生成的無效代碼。問題歸結爲GHC不推斷函數的polykinded類型簽名。這裏有這樣一個例子: {-# Language MagicHash #-} f x =() main = pure (f 1#) 由於GHC被推斷f :: a ->()其中a :: *,這種失敗 • Couldn't match a lifted type with an unli

    0熱度

    1回答

    我在Happy(1.19.5)的最新版本中碰到a bug。我該如何告訴堆棧去尋找僅在git repo上找到的更新版本的Happy(1.19.6)?現在,我讓堆棧管理一切;對Happy的唯一引用是在我的cabal文件中。相關的部分是: ... library: hs-source-dirs: src ghc-options: -Wall build-tools

    2熱度

    1回答

    這些都是鏈接錯誤,我得到: happy-1.19.5: configure cpphs-1.20.2: download th-reify-many-0.1.6: download time-qq-0.0.1.0: download th-reify-many-0.1.6: configure th-reify-many-0.1.6: build time-qq-0.0.1.0: co

    0熱度

    2回答

    我有一個快樂的解析器中的這個語法部分,在快樂的官方網站上給出,但我需要對括號中的規則的含義進行更深入的解釋。下面是令牌定義 %token let { TokenLet } in { TokenIn } int { TokenInt $$ } var { TokenVar $$ } '=' { TokenEq

    0熱度

    1回答

    我目前使用happy來解析語言,但我不認爲解析器是相關的,只是說它是一個LALR解析器。這裏是從語法的一小部分摘錄: ArithExpr -> ArithExpr + ArithExpr ArithExpr -> (ArithExpr) ArithExpr -> ... BoolExpr -> ArithExpr == ArithExpr BoolExpr -> (BoolExpr)

    1熱度

    1回答

    快樂的最新版本給出了GHC 7.10.4 沒有實例(應用型HappyIdentity) 以下錯誤消息從一個實例的產生超聲明 我認爲我應該nof亂了快樂,但我怎麼能解決我的問題?

    2熱度

    2回答

    我正在解析同時具有<和<<的語言。在我的亞歷克斯定義我已經得到的東西,它包含類似 tokens :- "<" { token Lt } "<<" { token (BinOp Shl) } 所以每當我遇到<<,是被符號化的左移和不以低於的。這通常是一件好事,因爲我最終在標記後拋出空白,並且想區分1 < < 2和1 << 2。不過,還有其他的時候我希望<<已經被讀爲兩個<。例如,

    1熱度

    2回答

    Happy生成帶簽名的解析器:: [Token] -> a 我想生成一個參數化的解析器,即需要函數作爲參數來傳遞解析器的函數。 所以我想簽名:(x->y) -> [Token] -> a。 但是,我也可以使用簽名:: [Token] -> (x->y) -> a。 當功能固定後,我可以通過導入和分配函數來解決它 。 import Functions (fixedFunction) Root :