Forráskód Böngészése

增加BigDecimal类型

mxd 4 éve
szülő
commit
7ef7334e7f

+ 12 - 1
src/main/resources/magicapi-support/monaco/language/magicscript.js

@@ -200,6 +200,7 @@ var TokenType = {
     SingleQuote: {literal: '\'', error: '\''},
     BooleanLiteral: {error: 'true 或 false'},
     DoubleLiteral: {error: '一个 double 类型数值'},
+    DecimalLiteral: {error: '一个 BigDecimal 类型数值'},
     FloatLiteral: {error: '一个 float 类型数值'},
     LongLiteral: {error: '一个 long 类型数值'},
     IntegerLiteral: {error: '一个 int 类型数值'},
@@ -375,6 +376,8 @@ var Parser = {
                     type = TokenType.FloatLiteral;
                 } else if (stream.match("d", true) || stream.match("D", true)) {
                     type = TokenType.DoubleLiteral;
+                } else if (stream.match("m", true) || stream.match("M", true)) {
+                    type = TokenType.DecimalLiteral;
                 }
                 tokens.push(new Token(type, stream.endSpan()));
                 continue;
@@ -869,6 +872,8 @@ var Parser = {
             return new AST.TypeLiteral('int', stream.expect(TokenType.IntegerLiteral).getSpan());
         } else if (stream.match(TokenType.LongLiteral, false)) {
             return new AST.TypeLiteral('long', stream.expect(TokenType.LongLiteral).getSpan());
+        } else if (stream.match(TokenType.DecimalLiteral, false)) {
+            return new AST.TypeLiteral('BigDecimal', stream.expect(TokenType.LongLiteral).getSpan());
         } else if (stream.match(TokenType.NullLiteral, false)) {
             return new AST.TypeLiteral('null', stream.expect(TokenType.NullLiteral).getSpan());
         } else {
@@ -974,6 +979,9 @@ var AST = {
             if (type == 'long') {
                 return 'java.lang.Long';
             }
+            if (type == 'BigDecimal') {
+                return 'java.math.BigDecimal';
+            }
             if (type == 'null') {
                 return null;
             }
@@ -1012,6 +1020,9 @@ var AST = {
                     return 'java.lang.String';
                 }
             }
+            if (left.type == 'BigDecimal' || right.type == 'BigDecimal') {
+                return 'java.math.BigDecimal';
+            }
             if (left.type == 'double' || right.type == 'double') {
                 return 'java.lang.Double';
             }
@@ -1321,7 +1332,7 @@ require(['vs/editor/editor.main'], function() {
                     }
                 }],
                 [/[{}()\[\]]/, '@brackets'],
-                [/(@digits)[lLbBsSdDfF]?/, 'number'],
+                [/(@digits)[lLbBsSdDfFmM]?/, 'number'],
                 [/\/\*\*(?!\/)/, 'comment.doc', '@mulcomment'],
                 [/\/\*/, 'comment', '@comment'],
                 [/\/\/.*$/, 'comment'],