From 01d7f77f65c3a2b83978b1f00c87b54f00647816 Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Wed, 25 Oct 2017 14:50:32 +0200 Subject: Update sheet traversal --- expressionParser.mly | 45 ++++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 19 deletions(-) (limited to 'expressionParser.mly') diff --git a/expressionParser.mly b/expressionParser.mly index f85f44f..303e683 100755 --- a/expressionParser.mly +++ b/expressionParser.mly @@ -35,7 +35,7 @@ %left POW %start value -%start content +%start content %% @@ -46,26 +46,33 @@ content: | basic EOF {$1} basic: - | num {Num ((snd $1), Some (u(fst $1)))} - | MINUS num {Num (Num.minus_num (snd $2), Some (u("-" ^(fst $2)) ))} - | PLUS num {Num ((snd $2), Some (u(fst $2)))} - | NUM DIVIDE NUM DIVIDE NUM { - Date (Tools.Date.get_julian_day - (Num.int_of_num @@ snd $1) - (Num.int_of_num @@ snd $3) - (Num.int_of_num @@ snd $5) - )} - | NUM COLON NUM COLON NUM { - Date (Num.( - let nhour = (snd $1) // (num_of_int 24) - and nmin = (snd $3) // (num_of_int 1440) - and nsec = (snd $5) // (num_of_int 86400) - in nhour +/ nmin +/ nsec - )) - } + | PLUS num {Result (Num (ScTypes.Number, (DataType.Num.of_num (snd $2))))} + | MINUS num {Result (Num (ScTypes.Number, (DataType.Num.of_num @@ Num.minus_num (snd $2))))} + | num {Result (Num (ScTypes.Number, (DataType.Num.of_num (snd $1))))} + | NUM DIVIDE NUM DIVIDE NUM {Result ( + Num ( + ScTypes.Date, + DataType.Num.of_num @@ (Date.get_julian_day + (Num.int_of_num @@ snd $1) + (Num.int_of_num @@ snd $3) + (Num.int_of_num @@ snd $5) + )))} + | NUM COLON NUM COLON NUM {Result ( + Num ( + ScTypes.Date, + (Num.( + let nhour = (snd $1) // (num_of_int 24) + and nmin = (snd $3) // (num_of_int 1440) + and nsec = (snd $5) // (num_of_int 86400) + in DataType.Num.of_num @@ nhour +/ nmin +/ nsec)) + ) + )} expr: - | num {Value (Num ((snd $1), Some (u(fst $1))))} + | num {Value (Num ( + ScTypes.Number, + DataType.Num.of_num (snd $1) + ))} | MINUS expr {Call (F.sub, [$2])} | PLUS expr {Call (F.add, [$2])} -- cgit v1.2.3