@@ -74,6 +74,14 @@ public static Expression Parse(ParserContext context)
7474 context . MoveNextRequired ( ) ;
7575 expression = new Subtract ( expression , Parse ( context ) ) ;
7676 break ;
77+ case Operator { Character : '*' } :
78+ context . MoveNextRequired ( ) ;
79+ expression = new Multiply ( expression , Parse ( context ) ) ;
80+ break ;
81+ case Operator { Character : '/' } :
82+ context . MoveNextRequired ( ) ;
83+ expression = new Divide ( expression , Parse ( context ) ) ;
84+ break ;
7785
7886 case Operator { Character : '.' } :
7987 {
@@ -246,6 +254,40 @@ public sealed class Subtract(Expression left, Expression right) : Expression
246254 return ( int ) leftValue ! - ( int ) rightValue ! ; // TODO: Handle varied input types here.
247255 }
248256
257+ #if DEBUG
258+ public override string ToString ( ) => $ "{ left } + { right } ";
259+ #endif
260+ }
261+
262+ public sealed class Multiply ( Expression left , Expression right ) : Expression
263+ {
264+ private readonly Expression left = left , right = right ;
265+
266+ public override object ? Run ( Func < List < string > , object ? > getColumnValue )
267+ {
268+ var leftValue = left . Run ( getColumnValue ) ;
269+ var rightValue = right . Run ( getColumnValue ) ;
270+
271+ return ( int ) leftValue ! * ( int ) rightValue ! ; // TODO: Handle varied input types here.
272+ }
273+
274+ #if DEBUG
275+ public override string ToString ( ) => $ "{ left } + { right } ";
276+ #endif
277+ }
278+
279+ public sealed class Divide ( Expression left , Expression right ) : Expression
280+ {
281+ private readonly Expression left = left , right = right ;
282+
283+ public override object ? Run ( Func < List < string > , object ? > getColumnValue )
284+ {
285+ var leftValue = left . Run ( getColumnValue ) ;
286+ var rightValue = right . Run ( getColumnValue ) ;
287+
288+ return ( int ) leftValue ! / ( int ) rightValue ! ; // TODO: Handle varied input types here.
289+ }
290+
249291#if DEBUG
250292 public override string ToString ( ) => $ "{ left } + { right } ";
251293#endif
0 commit comments