aboutsummaryrefslogtreecommitdiff
path: root/expressionParser.mly
diff options
context:
space:
mode:
authorSébastien Dailly <sebastien@chimrod.com>2017-10-31 16:07:04 +0100
committerSébastien Dailly <sebastien@chimrod.com>2017-10-31 16:07:04 +0100
commitab721136f50914a21f6cca89f0fcfb055ba58cd2 (patch)
tree60f788e3e8733a6d3606e801bc21a24e419e070e /expressionParser.mly
parentdb627ca2cfc745bbf2e489251e64054ab2b3bff9 (diff)
parentd8ed0babfa1c03c8f1968443a465972bb3bf460c (diff)
Update ScTypes.types with types used in evaluator
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])}