1

重複の可能性:
Haskell パーサーから AST データ型への代入

私は問題で立ち往生しており、しばらくの間行ってきました。数値とともに入力として入力されるプレフィックス演算子を使用して、一連の Int 値を計算することを目的とした文字列テーブルを取得しました。

アイデアは、コンソールに「+ 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
4

0 に答える 0