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 :