data Expr = ExprNum Double -- constants
| ExprVar String -- variables
| ExprAdd Expr Expr
| ExprSub Expr Expr
| ExprNeg Expr -- The unary '-' operator
| ExprMul Expr Expr
| ExprDiv Expr Expr
deriving Show
Это мой пользовательский тип данных. Я хочу обрабатывать арифметическое выражение, например (2+3 *4 - x)
, используя вышеуказанные типы данных без использования парсера buildExpression
. Что я могу сделать?Как построить Parser в Haskell
Пожалуйста, помогите мне. Он должен обрабатывать приоритет оператора.
Есть ли причина, по которой мы не можем использовать buildExpressionParser? Я предполагаю, что это означает, что вы используете parsec. Знаете ли вы, как левый фактор грамматики, чтобы он был действительно действительным? – alternative
"' 'buildExpression' parser", вероятно, относится к [этому модулю Parsec] (https://hackage.haskell.org/package/parsec-3.1.9/docs/Text-Parsec-Expr.html). – duplode