You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2016/12/05 18:39:56 UTC
nifi git commit: NIFI-3149 Adding proper literal support for number
operators ('-' and '+') to ANTLR parser and UI highlighting
Repository: nifi
Updated Branches:
refs/heads/master 2b6d6c25d -> 7633fe35c
NIFI-3149 Adding proper literal support for number operators ('-' and '+') to ANTLR parser and UI highlighting
This closes #1298
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/7633fe35
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/7633fe35
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/7633fe35
Branch: refs/heads/master
Commit: 7633fe35c1e73037b00e8d3a098546c6fde8d53c
Parents: 2b6d6c2
Author: jpercivall <JP...@apache.org>
Authored: Mon Dec 5 12:37:52 2016 -0500
Committer: Matt Burgess <ma...@apache.org>
Committed: Mon Dec 5 13:34:54 2016 -0500
----------------------------------------------------------------------
.../language/antlr/AttributeExpressionLexer.g | 9 +--
.../expression/language/TestQuery.java | 68 +++++++++++---------
.../webapp/js/jquery/nfeditor/languages/nfel.js | 11 ++--
3 files changed, 48 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/7633fe35/nifi-commons/nifi-expression-language/src/main/antlr3/org/apache/nifi/attribute/expression/language/antlr/AttributeExpressionLexer.g
----------------------------------------------------------------------
diff --git a/nifi-commons/nifi-expression-language/src/main/antlr3/org/apache/nifi/attribute/expression/language/antlr/AttributeExpressionLexer.g b/nifi-commons/nifi-expression-language/src/main/antlr3/org/apache/nifi/attribute/expression/language/antlr/AttributeExpressionLexer.g
index 9375579..f09eba8 100644
--- a/nifi-commons/nifi-expression-language/src/main/antlr3/org/apache/nifi/attribute/expression/language/antlr/AttributeExpressionLexer.g
+++ b/nifi-commons/nifi-expression-language/src/main/antlr3/org/apache/nifi/attribute/expression/language/antlr/AttributeExpressionLexer.g
@@ -77,12 +77,13 @@ COLON : ':';
COMMA : ',';
DOT : '.';
SEMICOLON : ';';
-WHOLE_NUMBER : ('0'..'9')+;
+WHOLE_NUMBER : OP? ('0'..'9')+;
-DECIMAL : ('0'..'9')+ '.' ('0'..'9')* EXP?
- | '.' ('0'..'9')+ EXP?
- | ('0'..'9')+ EXP;
+DECIMAL : OP? ('0'..'9')+ '.' ('0'..'9')* EXP?
+ | OP? '.' ('0'..'9')+ EXP?
+ | OP? ('0'..'9')+ EXP;
+fragment OP: ('+'|'-');
fragment EXP : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
TRUE : 'true';
http://git-wip-us.apache.org/repos/asf/nifi/blob/7633fe35/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java
----------------------------------------------------------------------
diff --git a/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java b/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java
index b8eacc8..f47fbbb 100644
--- a/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java
+++ b/nifi-commons/nifi-expression-language/src/test/java/org/apache/nifi/attribute/expression/language/TestQuery.java
@@ -1063,7 +1063,13 @@ public class TestQuery {
verifyEquals("${literal(\"5.5\")}", attributes, "5.5");
verifyEquals("${literal(5.5):toNumber()}", attributes, 5L);
+ verifyEquals("${literal(-5.5):toNumber()}", attributes, -5L);
+ verifyEquals("${literal(+5.5):toNumber()}", attributes, 5L);
+
verifyEquals("${literal(5.5):toDecimal()}", attributes, 5.5D);
+ verifyEquals("${literal(-5.5):toDecimal()}", attributes, -5.5D);
+ verifyEquals("${literal(+5.5):toDecimal()}", attributes, 5.5D);
+
verifyEquals("${literal('0xF.Fp10'):toDecimal()}", attributes, 0xF.Fp10D);
verifyEquals("${literal('0x1234567890ABCDEF'):toNumber()}", attributes, 0x1234567890ABCDEFL);
@@ -1079,49 +1085,49 @@ public class TestQuery {
// Test decimal format X.X
verifyEquals("${literal(5.5):toDecimal()}", attributes, 5.5D);
- verifyEquals("${literal('-12.5'):toDecimal()}", attributes, -12.5D);
- verifyEquals("${literal('+12.5'):toDecimal()}", attributes, 12.5D);
+ verifyEquals("${literal(-12.5):toDecimal()}", attributes, -12.5D);
+ verifyEquals("${literal(+12.5):toDecimal()}", attributes, 12.5D);
// Test decimal format X.XEX with positive exponent
- verifyEquals("${literal('-12.5E2'):toDecimal()}", attributes, -12.5E2D);
- verifyEquals("${literal('-12.5e2'):toDecimal()}", attributes, -12.5e2D);
- verifyEquals("${literal('-12.5e+2'):toDecimal()}", attributes, -12.5e+2D);
- verifyEquals("${literal('12.5E+2'):toDecimal()}", attributes, 12.5E+2D);
- verifyEquals("${literal('+12.5e+2'):toDecimal()}", attributes, +12.5e+2D);
- verifyEquals("${literal('+12.5E2'):toDecimal()}", attributes, +12.5E2D);
- verifyEquals("${literal('-12.5e2'):toDecimal()}", attributes, -12.5e2D);
- verifyEquals("${literal('12.5E2'):toDecimal()}", attributes, 12.5E2D);
- verifyEquals("${literal('+12.5e2'):toDecimal()}", attributes, +12.5e2D);
+ verifyEquals("${literal(-12.5E2):toDecimal()}", attributes, -12.5E2D);
+ verifyEquals("${literal(-12.5e2):toDecimal()}", attributes, -12.5e2D);
+ verifyEquals("${literal(-12.5e+2):toDecimal()}", attributes, -12.5e+2D);
+ verifyEquals("${literal(12.5E+2):toDecimal()}", attributes, 12.5E+2D);
+ verifyEquals("${literal(+12.5e+2):toDecimal()}", attributes, +12.5e+2D);
+ verifyEquals("${literal(+12.5E2):toDecimal()}", attributes, +12.5E2D);
+ verifyEquals("${literal(-12.5e2):toDecimal()}", attributes, -12.5e2D);
+ verifyEquals("${literal(12.5E2):toDecimal()}", attributes, 12.5E2D);
+ verifyEquals("${literal(+12.5e2):toDecimal()}", attributes, +12.5e2D);
// Test decimal format X.XEX with negative exponent
- verifyEquals("${literal('-12.5E-2'):toDecimal()}", attributes, -12.5E-2D);
- verifyEquals("${literal('12.5E-2'):toDecimal()}", attributes, 12.5E-2D);
- verifyEquals("${literal('+12.5e-2'):toDecimal()}", attributes, +12.5e-2D);
+ verifyEquals("${literal(-12.5E-2):toDecimal()}", attributes, -12.5E-2D);
+ verifyEquals("${literal(12.5E-2):toDecimal()}", attributes, 12.5E-2D);
+ verifyEquals("${literal(+12.5e-2):toDecimal()}", attributes, +12.5e-2D);
// Test decimal format .X
- verifyEquals("${literal('.5'):toDecimal()}", attributes, .5D);
- verifyEquals("${literal('.5'):toDecimal()}", attributes, .5D);
- verifyEquals("${literal('-.5'):toDecimal()}", attributes, -0.5D);
- verifyEquals("${literal('+.5'):toDecimal()}", attributes, .5D);
+ verifyEquals("${literal(.5):toDecimal()}", attributes, .5D);
+ verifyEquals("${literal(.5):toDecimal()}", attributes, .5D);
+ verifyEquals("${literal(-.5):toDecimal()}", attributes, -0.5D);
+ verifyEquals("${literal(+.5):toDecimal()}", attributes, .5D);
// Test decimal format .XEX with positive exponent
- verifyEquals("${literal('-.5E2'):toDecimal()}", attributes, -.5E2D);
- verifyEquals("${literal('-.5E2'):toDecimal()}", attributes, -.5E2D);
- verifyEquals("${literal('-.5e+2'):toDecimal()}", attributes, -.5e+2D);
- verifyEquals("${literal('.5E+2'):toDecimal()}", attributes, .5E+2D);
- verifyEquals("${literal('+.5e+2'):toDecimal()}", attributes, +.5e+2D);
- verifyEquals("${literal('+.5E2'):toDecimal()}", attributes, +.5E2D);
- verifyEquals("${literal('-.5e2'):toDecimal()}", attributes, -.5e2D);
- verifyEquals("${literal('.5E2'):toDecimal()}", attributes, .5E2D);
- verifyEquals("${literal('+.5e2'):toDecimal()}", attributes, +.5e2D);
+ verifyEquals("${literal(-.5E2):toDecimal()}", attributes, -.5E2D);
+ verifyEquals("${literal(-.5E2):toDecimal()}", attributes, -.5E2D);
+ verifyEquals("${literal(-.5e+2):toDecimal()}", attributes, -.5e+2D);
+ verifyEquals("${literal(.5E+2):toDecimal()}", attributes, .5E+2D);
+ verifyEquals("${literal(+.5e+2):toDecimal()}", attributes, +.5e+2D);
+ verifyEquals("${literal(+.5E2):toDecimal()}", attributes, +.5E2D);
+ verifyEquals("${literal(-.5e2):toDecimal()}", attributes, -.5e2D);
+ verifyEquals("${literal(.5E2):toDecimal()}", attributes, .5E2D);
+ verifyEquals("${literal(+.5e2):toDecimal()}", attributes, +.5e2D);
// Test decimal format .XEX with negative exponent
- verifyEquals("${literal('-.5E-2'):toDecimal()}", attributes, -.5E-2D);
- verifyEquals("${literal('.5e-2'):toDecimal()}", attributes, .5e-2D);
- verifyEquals("${literal('+.5E-2'):toDecimal()}", attributes, +.5E-2D);
+ verifyEquals("${literal(-.5E-2):toDecimal()}", attributes, -.5E-2D);
+ verifyEquals("${literal(.5e-2):toDecimal()}", attributes, .5e-2D);
+ verifyEquals("${literal(+.5E-2):toDecimal()}", attributes, +.5E-2D);
// Verify allowed values
- verifyEquals("${literal('9876543210.0123456789e123'):toDecimal()}", attributes, 9876543210.0123456789e123D);
+ verifyEquals("${literal(9876543210.0123456789e123):toDecimal()}", attributes, 9876543210.0123456789e123D);
verifyEmpty("${literal('A.1e123'):toDecimal()}", attributes);
verifyEmpty("${literal('0.Ae123'):toDecimal()}", attributes);
http://git-wip-us.apache.org/repos/asf/nifi/blob/7633fe35/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js
index 8f90f20..9635337 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js
@@ -662,16 +662,17 @@ nf.nfel = (function() {
}
return argumentStringResult;
- } else if (stream.match(/^(([0-9]+\.[0-9]*)([eE][+-]?([0-9])+)?)|((\.[0-9]+)([eE][+-]?([0-9])+)?)|(([0-9]+)([eE][+-]?([0-9])+))/)) {
+ } else if (stream.match(/^[-\+]?((([0-9]+\.[0-9]*)([eE][+-]?([0-9])+)?)|((\.[0-9]+)([eE][+-]?([0-9])+)?)|(([0-9]+)([eE][+-]?([0-9])+)))/)) {
// -------------
// Decimal value
// -------------
// This matches the following ANTLR spec for deciamls
//
- // DECIMAL : ('0'..'9')+ '.' ('0'..'9')* EXP? ^([0-9]+\.[0-9]*)([eE][+-]?([0-9])+)?
- // | '.' ('0'..'9')+ EXP?
- // | ('0'..'9')+ EXP;
+ // DECIMAL : OP? ('0'..'9')+ '.' ('0'..'9')* EXP? ^([0-9]+\.[0-9]*)([eE][+-]?([0-9])+)?
+ // | OP? '.' ('0'..'9')+ EXP?
+ // | OP? ('0'..'9')+ EXP;
//
+ // fragment OP: ('+'|'-');
// fragment EXP : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
// change context back to arguments
@@ -679,7 +680,7 @@ nf.nfel = (function() {
// style for decimal (use same as number)
return 'number';
- } else if (stream.match(/^-?[0-9]+/)) {
+ } else if (stream.match(/^[-\+]?[0-9]+/)) {
// -------------
// integer value
// -------------