feat(formula): add expression ast nodes

This commit is contained in:
dualfroz committed 2026-08-24 09:00:00 +02:00
1 parent 5adf469beb
commit 71323a7939
1 file changed
+63
+63
View File
@@ -0,0 +1,63 @@
import 'address.dart';
import 'values.dart';
sealed class Expr {
const Expr();
}
class NumberLit extends Expr {
final double value;
const NumberLit(this.value);
}
class TextLit extends Expr {
final String value;
const TextLit(this.value);
}
class BoolLit extends Expr {
final bool value;
const BoolLit(this.value);
}
class ErrorLit extends Expr {
final ErrorKind kind;
const ErrorLit(this.kind);
}
class RefNode extends Expr {
final CellAddress address;
final String? sheet;
const RefNode(this.address, [this.sheet]);
}
class RangeNode extends Expr {
final CellAddress start;
final CellAddress end;
final String? sheet;
const RangeNode(this.start, this.end, [this.sheet]);
}
class NameNode extends Expr {
final String name;
const NameNode(this.name);
}
class UnaryOp extends Expr {
final String op;
final Expr operand;
const UnaryOp(this.op, this.operand);
}
class BinaryOp extends Expr {
final String op;
final Expr left;
final Expr right;
const BinaryOp(this.op, this.left, this.right);
}
class FuncCall extends Expr {
final String name;
final List<Expr> args;
const FuncCall(this.name, this.args);
}