可能重复:
Haskell 解析器到 AST 数据类型,赋值
我被困在一个问题上,我已经有一段时间了。我得到了一个字符串表,目的是使用前缀运算符计算一系列 Int 值,这些前缀运算符与数字一起作为输入输入。
这个想法是在控制台中写ie“+ 3 * 2 4”并让它计算3 +(2 * 4),然后输出答案。我对 Haskell 还很陌生,我会很感激一些帮助。谢谢。
我编写了一些代码来将字符串解析为字符串表,其中每个数字和运算符作为字符串表中的单个元素导入 Data.Char
import Data.Char
data AST = Leaf Int | Sum AST AST | Min AST | Mult AST AST
parseCharacter :: String -> [String]
parseCharacter [] = []
parseCharacter (' ':xs) = parseCharacter xs
parseCharacter ('(':xs) = "(": parseCharacter xs
parseCharacter (')':xs) = ")": parseCharacter xs
parseCharacter ('+':xs) = "+": parseCharacter xs
parseCharacter ('-':xs) = "-": parseCharacter xs
parseCharacter ('*':xs) = "*": parseCharacter xs
parseCharacter (x:xs) = if isDigit x then (takeWhile isDigit (x:xs)) : parseCharacter (dropWhile isDigit xs) else parseCharacter xs