小编Joh*_*Gis的帖子

Haskell解析器到AST数据类型 - 输入"|"时解析错误

我正在努力完成我们给予的任务.我在这里稍微基于不同的指南编写了这段代码:不在范围内:数据构造函数

我遇到的问题是这里的管道:

| x == "+" = (Sum y y',xs'') where
Run Code Online (Sandbox Code Playgroud)

问题似乎与3个管道或管道跟在"哪里"有关.如果我交换最后2个管道.把

x == "+"  = (Sum y y' (...))
Run Code Online (Sandbox Code Playgroud)

之前

x == "*"  = (Prod y y' (...))
Run Code Online (Sandbox Code Playgroud)

导致错误移动到该代码.如果我注释掉这两个代码段中的任何一个,一切正常,但是我需要它们来完成我们给出的赋值.

快速摘要:

| x == "*" = (Prod y y',xs'') where
                (y,xs') = ast xs
                (y',xs'') = ast xs'
Run Code Online (Sandbox Code Playgroud)

和

| x == "+" = (Sum y y',xs'') where
                (y,xs') = ast xs
                (y',xs'') = ast xs'
Run Code Online (Sandbox Code Playgroud)

两者都单独工作,但当我把它们放在一起时,我的程序无法编译.

完整代码:

import Data.Char

data AST = Leaf Int 
            | Sum AST AST …
Run Code Online (Sandbox Code Playgroud)

parsing haskell

1
推荐指数
1
解决办法
498
查看次数

标签 统计

haskell ×1

parsing ×1