小编Vpe*_*Vpe的帖子

Haskell中的解析函数,制作地图函数时遇到麻烦

我是Haskell的新手,正在从事一项工作,我试图为一种简单的计算器语言提供解析功能。

我已经获得了语法,并且不允许更改它。我试图通过遍历字符串并递归使用解析函数来解决它。

语法应该是

Expr -> Int | -Expr | + Expr Expr | * Expr Expr
Int -> Digit | Digit Int 
Digit -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Run Code Online (Sandbox Code Playgroud)

因此,我的函数将使用Expr语言的字符串作为参数,并以这种格式生成抽象语法树

data Ast = Tall Int | Sum Ast Ast | Mult Ast Ast| Min Ast| Var String deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)

Ast应该是抽象的语法树

这就是到目前为止我的解析功能

parseEx :: [String] -> (Ast, [String])
parseEx [] = error "empty string"
parseEx (s:ss) …
Run Code Online (Sandbox Code Playgroud)

string parsing haskell abstract-syntax-tree

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

标签 统计

abstract-syntax-tree ×1

haskell ×1

parsing ×1

string ×1