aboutsummaryrefslogtreecommitdiff
path: root/expressionParser.mly
diff options
context:
space:
mode:
Diffstat (limited to 'expressionParser.mly')
-rwxr-xr-xexpressionParser.mly45
1 files changed, 26 insertions, 19 deletions
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<ScTypes.expression> value
-%start<ScTypes.types> content
+%start<ScTypes.result> 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])}