This repository was archived by the owner on Feb 29, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +23
-0
lines changed
main/java/net/hollowcube/mql/parser
test/java/net/hollowcube/mql Expand file tree Collapse file tree 2 files changed +23
-0
lines changed Original file line number Diff line number Diff line change 7
7
import java .util .ArrayList ;
8
8
import java .util .List ;
9
9
10
+ import static net .hollowcube .mql .parser .MqlToken .Type .NUMBER ;
11
+
10
12
public class MqlParser {
11
13
private final MqlLexer lexer ;
12
14
@@ -89,6 +91,12 @@ public MqlParser(@NotNull String source) {
89
91
if (token == null ) throw new MqlParseError ("unexpected end of input" );
90
92
91
93
return switch (token .type ()) {
94
+ case DOT -> {
95
+ var next = lexer .next ();
96
+ if (next == null ) throw new MqlParseError ("unexpected end of input" );
97
+ if (next .type () != NUMBER ) throw new MqlParseError ("expected number after ." );
98
+ yield new MqlNumberExpr (Double .parseDouble ("0." + lexer .span (next )));
99
+ }
92
100
case NUMBER -> new MqlNumberExpr (Double .parseDouble (lexer .span (token )));
93
101
case IDENT -> new MqlIdentExpr (lexer .span (token ));
94
102
case MINUS -> {
Original file line number Diff line number Diff line change @@ -38,6 +38,21 @@ public void basicQueryCall() {
38
38
assertEquals (1 , ((MqlNumberValue ) result ).value ());
39
39
}
40
40
41
+ @ Test
42
+ public void testDot () {
43
+ var source = ".1 + 10 + 10 + .3" ;
44
+
45
+ var expr = new MqlParser (source ).parse ();
46
+ var scopeImpl = new MqlScopeImpl ();
47
+ var vars = new MqlScopeImpl .Mutable ();
48
+
49
+ var scope = new MqlScriptScope (scopeImpl , vars , scopeImpl );
50
+ var result = expr .evaluate (scope );
51
+
52
+ assertTrue (result instanceof MqlNumberValue );
53
+ assertEquals (20.4 , ((MqlNumberValue ) result ).value (), 0.0001 );
54
+ }
55
+
41
56
@ Test
42
57
public void testAdd () {
43
58
var source = "10 + 10 + 10" ;
You can’t perform that action at this time.
0 commit comments