You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by ce...@apache.org on 2017/10/30 15:45:03 UTC
metron git commit: METRON-1254: Conditionals as map keys do not
function in Stellar closes apache/incubator-metron#801
Repository: metron
Updated Branches:
refs/heads/master 5c41bf7f3 -> 191d5d84a
METRON-1254: Conditionals as map keys do not function in Stellar closes apache/incubator-metron#801
Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/191d5d84
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/191d5d84
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/191d5d84
Branch: refs/heads/master
Commit: 191d5d84ae5ff9f7c464555c6a1285d9c5a702bf
Parents: 5c41bf7
Author: cstella <ce...@gmail.com>
Authored: Mon Oct 30 11:44:51 2017 -0400
Committer: cstella <ce...@gmail.com>
Committed: Mon Oct 30 11:44:51 2017 -0400
----------------------------------------------------------------------
.../metron/stellar/common/generated/Stellar.g4 | 5 +
.../metron/stellar/common/StellarCompiler.java | 4 +-
.../common/generated/StellarBaseListener.java | 12 +
.../common/generated/StellarListener.java | 12 +
.../stellar/common/generated/StellarParser.java | 538 +++++++++++--------
.../stellar/dsl/functions/BasicStellarTest.java | 19 +
6 files changed, 366 insertions(+), 224 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metron/blob/191d5d84/metron-stellar/stellar-common/src/main/antlr4/org/apache/metron/stellar/common/generated/Stellar.g4
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/main/antlr4/org/apache/metron/stellar/common/generated/Stellar.g4 b/metron-stellar/stellar-common/src/main/antlr4/org/apache/metron/stellar/common/generated/Stellar.g4
index edd9632..dd92e3d 100644
--- a/metron-stellar/stellar-common/src/main/antlr4/org/apache/metron/stellar/common/generated/Stellar.g4
+++ b/metron-stellar/stellar-common/src/main/antlr4/org/apache/metron/stellar/common/generated/Stellar.g4
@@ -194,6 +194,8 @@ op_list :
| op_list COMMA identifier_operand
| conditional_expr
| op_list COMMA conditional_expr
+ | comparison_expr
+ | op_list COMMA comparison_expr
;
list_entity :
@@ -203,7 +205,9 @@ list_entity :
kv_list :
identifier_operand COLON transformation_expr
+ | comparison_expr COLON transformation_expr
| kv_list COMMA identifier_operand COLON transformation_expr
+ | kv_list COMMA comparison_expr COLON transformation_expr
;
map_entity :
@@ -249,6 +253,7 @@ identifier_operand :
| NULL #NullConst
| EXISTS LPAREN IDENTIFIER RPAREN #ExistsFunc
| LPAREN conditional_expr RPAREN #condExpr_paren
+ | functions #func
;
http://git-wip-us.apache.org/repos/asf/metron/blob/191d5d84/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/StellarCompiler.java
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/StellarCompiler.java b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/StellarCompiler.java
index fbb5bc0..69564df 100644
--- a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/StellarCompiler.java
+++ b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/StellarCompiler.java
@@ -662,7 +662,7 @@ public class StellarCompiler extends StellarBaseListener {
public void exitMap_entity(StellarParser.Map_entityContext ctx) {
final FrameContext.Context context = getArgContext();
expression.tokenDeque.push(new Token<>( (tokenDeque, state) -> {
- HashMap<String, Object> args = new HashMap<>();
+ HashMap<Object, Object> args = new HashMap<>();
Object value = null;
for (int i = 0; true; i++) {
Token<?> token = popDeque(tokenDeque);
@@ -672,7 +672,7 @@ public class StellarCompiler extends StellarBaseListener {
if (i % 2 == 0) {
value = token.getValue();
} else {
- args.put(token.getValue() + "", value);
+ args.put(token.getValue(), value);
}
}
}
http://git-wip-us.apache.org/repos/asf/metron/blob/191d5d84/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarBaseListener.java
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarBaseListener.java b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarBaseListener.java
index 6e0ae8c..d2806b9 100644
--- a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarBaseListener.java
+++ b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarBaseListener.java
@@ -709,6 +709,18 @@ public class StellarBaseListener implements StellarListener {
*
* <p>The default implementation does nothing.</p>
*/
+ @Override public void enterFunc(StellarParser.FuncContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * <p>The default implementation does nothing.</p>
+ */
+ @Override public void exitFunc(StellarParser.FuncContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * <p>The default implementation does nothing.</p>
+ */
@Override public void enterLambda_without_args(StellarParser.Lambda_without_argsContext ctx) { }
/**
* {@inheritDoc}
http://git-wip-us.apache.org/repos/asf/metron/blob/191d5d84/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarListener.java
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarListener.java b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarListener.java
index 8b16e00..f07efaa 100644
--- a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarListener.java
+++ b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarListener.java
@@ -679,6 +679,18 @@ public interface StellarListener extends ParseTreeListener {
*/
void exitCondExpr_paren(StellarParser.CondExpr_parenContext ctx);
/**
+ * Enter a parse tree produced by the {@code func}
+ * labeled alternative in {@link StellarParser#identifier_operand}.
+ * @param ctx the parse tree
+ */
+ void enterFunc(StellarParser.FuncContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code func}
+ * labeled alternative in {@link StellarParser#identifier_operand}.
+ * @param ctx the parse tree
+ */
+ void exitFunc(StellarParser.FuncContext ctx);
+ /**
* Enter a parse tree produced by {@link StellarParser#lambda_without_args}.
* @param ctx the parse tree
*/
http://git-wip-us.apache.org/repos/asf/metron/blob/191d5d84/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarParser.java
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarParser.java b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarParser.java
index 1ea8a11..3ee2603 100644
--- a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarParser.java
+++ b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/generated/StellarParser.java
@@ -1194,6 +1194,9 @@ public class StellarParser extends Parser {
public Conditional_exprContext conditional_expr() {
return getRuleContext(Conditional_exprContext.class,0);
}
+ public Comparison_exprContext comparison_expr() {
+ return getRuleContext(Comparison_exprContext.class,0);
+ }
public Op_listContext op_list() {
return getRuleContext(Op_listContext.class,0);
}
@@ -1227,7 +1230,7 @@ public class StellarParser extends Parser {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(152);
+ setState(153);
switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
case 1:
{
@@ -1241,9 +1244,15 @@ public class StellarParser extends Parser {
conditional_expr();
}
break;
+ case 3:
+ {
+ setState(152);
+ comparison_expr(0);
+ }
+ break;
}
_ctx.stop = _input.LT(-1);
- setState(162);
+ setState(166);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,10,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
@@ -1251,17 +1260,17 @@ public class StellarParser extends Parser {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(160);
+ setState(164);
switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) {
case 1:
{
_localctx = new Op_listContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx, _startState, RULE_op_list);
- setState(154);
- if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
setState(155);
- match(COMMA);
+ if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
setState(156);
+ match(COMMA);
+ setState(157);
identifier_operand();
}
break;
@@ -1269,18 +1278,30 @@ public class StellarParser extends Parser {
{
_localctx = new Op_listContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx, _startState, RULE_op_list);
- setState(157);
- if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
setState(158);
- match(COMMA);
+ if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
setState(159);
+ match(COMMA);
+ setState(160);
conditional_expr();
}
break;
+ case 3:
+ {
+ _localctx = new Op_listContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_op_list);
+ setState(161);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(162);
+ match(COMMA);
+ setState(163);
+ comparison_expr(0);
+ }
+ break;
}
}
}
- setState(164);
+ setState(168);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,10,_ctx);
}
@@ -1321,25 +1342,25 @@ public class StellarParser extends Parser {
List_entityContext _localctx = new List_entityContext(_ctx, getState());
enterRule(_localctx, 28, RULE_list_entity);
try {
- setState(171);
+ setState(175);
switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(165);
+ setState(169);
match(LBRACKET);
- setState(166);
+ setState(170);
match(RBRACKET);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(167);
+ setState(171);
match(LBRACKET);
- setState(168);
+ setState(172);
op_list(0);
- setState(169);
+ setState(173);
match(RBRACKET);
}
break;
@@ -1364,6 +1385,9 @@ public class StellarParser extends Parser {
public Transformation_exprContext transformation_expr() {
return getRuleContext(Transformation_exprContext.class,0);
}
+ public Comparison_exprContext comparison_expr() {
+ return getRuleContext(Comparison_exprContext.class,0);
+ }
public Kv_listContext kv_list() {
return getRuleContext(Kv_listContext.class,0);
}
@@ -1397,42 +1421,78 @@ public class StellarParser extends Parser {
int _alt;
enterOuterAlt(_localctx, 1);
{
- {
- setState(174);
- identifier_operand();
- setState(175);
- match(COLON);
- setState(176);
- transformation_expr();
+ setState(186);
+ switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
+ case 1:
+ {
+ setState(178);
+ identifier_operand();
+ setState(179);
+ match(COLON);
+ setState(180);
+ transformation_expr();
+ }
+ break;
+ case 2:
+ {
+ setState(182);
+ comparison_expr(0);
+ setState(183);
+ match(COLON);
+ setState(184);
+ transformation_expr();
+ }
+ break;
}
_ctx.stop = _input.LT(-1);
- setState(186);
+ setState(202);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,12,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,14,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- {
- _localctx = new Kv_listContext(_parentctx, _parentState);
- pushNewRecursionContext(_localctx, _startState, RULE_kv_list);
- setState(178);
- if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(179);
- match(COMMA);
- setState(180);
- identifier_operand();
- setState(181);
- match(COLON);
- setState(182);
- transformation_expr();
+ setState(200);
+ switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
+ case 1:
+ {
+ _localctx = new Kv_listContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_kv_list);
+ setState(188);
+ if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
+ setState(189);
+ match(COMMA);
+ setState(190);
+ identifier_operand();
+ setState(191);
+ match(COLON);
+ setState(192);
+ transformation_expr();
+ }
+ break;
+ case 2:
+ {
+ _localctx = new Kv_listContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_kv_list);
+ setState(194);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(195);
+ match(COMMA);
+ setState(196);
+ comparison_expr(0);
+ setState(197);
+ match(COLON);
+ setState(198);
+ transformation_expr();
+ }
+ break;
}
}
}
- setState(188);
+ setState(204);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,12,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,14,_ctx);
}
}
}
@@ -1471,25 +1531,25 @@ public class StellarParser extends Parser {
Map_entityContext _localctx = new Map_entityContext(_ctx, getState());
enterRule(_localctx, 32, RULE_map_entity);
try {
- setState(195);
- switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
+ setState(211);
+ switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(189);
+ setState(205);
match(LBRACE);
- setState(190);
+ setState(206);
kv_list(0);
- setState(191);
+ setState(207);
match(RBRACE);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(193);
+ setState(209);
match(LBRACE);
- setState(194);
+ setState(210);
match(RBRACE);
}
break;
@@ -1588,29 +1648,29 @@ public class StellarParser extends Parser {
_ctx = _localctx;
_prevctx = _localctx;
- setState(198);
+ setState(214);
arithmetic_expr_mul(0);
}
_ctx.stop = _input.LT(-1);
- setState(208);
+ setState(224);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,15,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,17,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(206);
- switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
+ setState(222);
+ switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
case 1:
{
_localctx = new ArithExpr_plusContext(new Arithmetic_exprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_arithmetic_expr);
- setState(200);
+ setState(216);
if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
- setState(201);
+ setState(217);
match(PLUS);
- setState(202);
+ setState(218);
arithmetic_expr_mul(0);
}
break;
@@ -1618,20 +1678,20 @@ public class StellarParser extends Parser {
{
_localctx = new ArithExpr_minusContext(new Arithmetic_exprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_arithmetic_expr);
- setState(203);
+ setState(219);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(204);
+ setState(220);
match(MINUS);
- setState(205);
+ setState(221);
arithmetic_expr_mul(0);
}
break;
}
}
}
- setState(210);
+ setState(226);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,15,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,17,_ctx);
}
}
}
@@ -1728,29 +1788,29 @@ public class StellarParser extends Parser {
_ctx = _localctx;
_prevctx = _localctx;
- setState(212);
+ setState(228);
arithmetic_operands();
}
_ctx.stop = _input.LT(-1);
- setState(222);
+ setState(238);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,17,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,19,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(220);
- switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
+ setState(236);
+ switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) {
case 1:
{
_localctx = new ArithExpr_mulContext(new Arithmetic_expr_mulContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_arithmetic_expr_mul);
- setState(214);
+ setState(230);
if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
- setState(215);
+ setState(231);
match(MUL);
- setState(216);
+ setState(232);
arithmetic_expr_mul(3);
}
break;
@@ -1758,20 +1818,20 @@ public class StellarParser extends Parser {
{
_localctx = new ArithExpr_divContext(new Arithmetic_expr_mulContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_arithmetic_expr_mul);
- setState(217);
+ setState(233);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(218);
+ setState(234);
match(DIV);
- setState(219);
+ setState(235);
arithmetic_expr_mul(2);
}
break;
}
}
}
- setState(224);
+ setState(240);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,17,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,19,_ctx);
}
}
}
@@ -1820,9 +1880,9 @@ public class StellarParser extends Parser {
_localctx = new TransformationFuncContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(225);
+ setState(241);
match(IDENTIFIER);
- setState(226);
+ setState(242);
func_args();
}
}
@@ -1971,13 +2031,13 @@ public class StellarParser extends Parser {
Arithmetic_operandsContext _localctx = new Arithmetic_operandsContext(_ctx, getState());
enterRule(_localctx, 40, RULE_arithmetic_operands);
try {
- setState(243);
- switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) {
+ setState(259);
+ switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
case 1:
_localctx = new NumericFunctionsContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(228);
+ setState(244);
functions();
}
break;
@@ -1985,7 +2045,7 @@ public class StellarParser extends Parser {
_localctx = new DoubleLiteralContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(229);
+ setState(245);
match(DOUBLE_LITERAL);
}
break;
@@ -1993,7 +2053,7 @@ public class StellarParser extends Parser {
_localctx = new IntLiteralContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(230);
+ setState(246);
match(INT_LITERAL);
}
break;
@@ -2001,7 +2061,7 @@ public class StellarParser extends Parser {
_localctx = new LongLiteralContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(231);
+ setState(247);
match(LONG_LITERAL);
}
break;
@@ -2009,7 +2069,7 @@ public class StellarParser extends Parser {
_localctx = new FloatLiteralContext(_localctx);
enterOuterAlt(_localctx, 5);
{
- setState(232);
+ setState(248);
match(FLOAT_LITERAL);
}
break;
@@ -2017,7 +2077,7 @@ public class StellarParser extends Parser {
_localctx = new VariableContext(_localctx);
enterOuterAlt(_localctx, 6);
{
- setState(233);
+ setState(249);
match(IDENTIFIER);
}
break;
@@ -2025,7 +2085,7 @@ public class StellarParser extends Parser {
_localctx = new NaNArithContext(_localctx);
enterOuterAlt(_localctx, 7);
{
- setState(234);
+ setState(250);
match(NAN);
}
break;
@@ -2033,11 +2093,11 @@ public class StellarParser extends Parser {
_localctx = new ParenArithContext(_localctx);
enterOuterAlt(_localctx, 8);
{
- setState(235);
+ setState(251);
match(LPAREN);
- setState(236);
+ setState(252);
arithmetic_expr(0);
- setState(237);
+ setState(253);
match(RPAREN);
}
break;
@@ -2045,11 +2105,11 @@ public class StellarParser extends Parser {
_localctx = new CondExprContext(_localctx);
enterOuterAlt(_localctx, 9);
{
- setState(239);
+ setState(255);
match(LPAREN);
- setState(240);
+ setState(256);
conditional_expr();
- setState(241);
+ setState(257);
match(RPAREN);
}
break;
@@ -2117,6 +2177,20 @@ public class StellarParser extends Parser {
if ( listener instanceof StellarListener ) ((StellarListener)listener).exitStringLiteral(this);
}
}
+ public static class FuncContext extends Identifier_operandContext {
+ public FunctionsContext functions() {
+ return getRuleContext(FunctionsContext.class,0);
+ }
+ public FuncContext(Identifier_operandContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof StellarListener ) ((StellarListener)listener).enterFunc(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof StellarListener ) ((StellarListener)listener).exitFunc(this);
+ }
+ }
public static class LambdaWithoutArgsExprContext extends Identifier_operandContext {
public Lambda_without_argsContext lambda_without_args() {
return getRuleContext(Lambda_without_argsContext.class,0);
@@ -2221,13 +2295,13 @@ public class StellarParser extends Parser {
enterRule(_localctx, 42, RULE_identifier_operand);
int _la;
try {
- setState(261);
- switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) {
+ setState(278);
+ switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
case 1:
_localctx = new LogicalConstContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(245);
+ setState(261);
_la = _input.LA(1);
if ( !(_la==TRUE || _la==FALSE) ) {
_errHandler.recoverInline(this);
@@ -2240,7 +2314,7 @@ public class StellarParser extends Parser {
_localctx = new LambdaWithArgsExprContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(246);
+ setState(262);
lambda_with_args();
}
break;
@@ -2248,7 +2322,7 @@ public class StellarParser extends Parser {
_localctx = new LambdaWithoutArgsExprContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(247);
+ setState(263);
lambda_without_args();
}
break;
@@ -2256,7 +2330,7 @@ public class StellarParser extends Parser {
_localctx = new ArithmeticOperandsContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(248);
+ setState(264);
arithmetic_expr(0);
}
break;
@@ -2264,7 +2338,7 @@ public class StellarParser extends Parser {
_localctx = new StringLiteralContext(_localctx);
enterOuterAlt(_localctx, 5);
{
- setState(249);
+ setState(265);
match(STRING_LITERAL);
}
break;
@@ -2272,7 +2346,7 @@ public class StellarParser extends Parser {
_localctx = new ListContext(_localctx);
enterOuterAlt(_localctx, 6);
{
- setState(250);
+ setState(266);
list_entity();
}
break;
@@ -2280,7 +2354,7 @@ public class StellarParser extends Parser {
_localctx = new MapConstContext(_localctx);
enterOuterAlt(_localctx, 7);
{
- setState(251);
+ setState(267);
map_entity();
}
break;
@@ -2288,7 +2362,7 @@ public class StellarParser extends Parser {
_localctx = new NullConstContext(_localctx);
enterOuterAlt(_localctx, 8);
{
- setState(252);
+ setState(268);
match(NULL);
}
break;
@@ -2296,13 +2370,13 @@ public class StellarParser extends Parser {
_localctx = new ExistsFuncContext(_localctx);
enterOuterAlt(_localctx, 9);
{
- setState(253);
+ setState(269);
match(EXISTS);
- setState(254);
+ setState(270);
match(LPAREN);
- setState(255);
+ setState(271);
match(IDENTIFIER);
- setState(256);
+ setState(272);
match(RPAREN);
}
break;
@@ -2310,14 +2384,22 @@ public class StellarParser extends Parser {
_localctx = new CondExpr_parenContext(_localctx);
enterOuterAlt(_localctx, 10);
{
- setState(257);
+ setState(273);
match(LPAREN);
- setState(258);
+ setState(274);
conditional_expr();
- setState(259);
+ setState(275);
match(RPAREN);
}
break;
+ case 11:
+ _localctx = new FuncContext(_localctx);
+ enterOuterAlt(_localctx, 11);
+ {
+ setState(277);
+ functions();
+ }
+ break;
}
}
catch (RecognitionException re) {
@@ -2358,13 +2440,13 @@ public class StellarParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(263);
+ setState(280);
match(LPAREN);
- setState(264);
+ setState(281);
match(RPAREN);
- setState(265);
+ setState(282);
match(LAMBDA_OP);
- setState(266);
+ setState(283);
transformation_expr();
}
}
@@ -2410,31 +2492,31 @@ public class StellarParser extends Parser {
Lambda_with_argsContext _localctx = new Lambda_with_argsContext(_ctx, getState());
enterRule(_localctx, 46, RULE_lambda_with_args);
try {
- setState(278);
+ setState(295);
switch (_input.LA(1)) {
case LPAREN:
enterOuterAlt(_localctx, 1);
{
- setState(268);
+ setState(285);
match(LPAREN);
- setState(269);
+ setState(286);
lambda_variables();
- setState(270);
+ setState(287);
match(RPAREN);
- setState(271);
+ setState(288);
match(LAMBDA_OP);
- setState(272);
+ setState(289);
transformation_expr();
}
break;
case IDENTIFIER:
enterOuterAlt(_localctx, 2);
{
- setState(274);
+ setState(291);
single_lambda_variable();
- setState(275);
+ setState(292);
match(LAMBDA_OP);
- setState(276);
+ setState(293);
transformation_expr();
}
break;
@@ -2485,21 +2567,21 @@ public class StellarParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(280);
+ setState(297);
lambda_variable();
- setState(285);
+ setState(302);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
- setState(281);
+ setState(298);
match(COMMA);
- setState(282);
+ setState(299);
lambda_variable();
}
}
- setState(287);
+ setState(304);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -2540,7 +2622,7 @@ public class StellarParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(288);
+ setState(305);
lambda_variable();
}
}
@@ -2577,7 +2659,7 @@ public class StellarParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(290);
+ setState(307);
match(IDENTIFIER);
}
}
@@ -2617,40 +2699,44 @@ public class StellarParser extends Parser {
private boolean op_list_sempred(Op_listContext _localctx, int predIndex) {
switch (predIndex) {
case 1:
- return precpred(_ctx, 3);
+ return precpred(_ctx, 5);
case 2:
+ return precpred(_ctx, 3);
+ case 3:
return precpred(_ctx, 1);
}
return true;
}
private boolean kv_list_sempred(Kv_listContext _localctx, int predIndex) {
switch (predIndex) {
- case 3:
+ case 4:
+ return precpred(_ctx, 2);
+ case 5:
return precpred(_ctx, 1);
}
return true;
}
private boolean arithmetic_expr_sempred(Arithmetic_exprContext _localctx, int predIndex) {
switch (predIndex) {
- case 4:
+ case 6:
return precpred(_ctx, 2);
- case 5:
+ case 7:
return precpred(_ctx, 1);
}
return true;
}
private boolean arithmetic_expr_mul_sempred(Arithmetic_expr_mulContext _localctx, int predIndex) {
switch (predIndex) {
- case 6:
+ case 8:
return precpred(_ctx, 2);
- case 7:
+ case 9:
return precpred(_ctx, 1);
}
return true;
}
public static final String _serializedATN =
- "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3/\u0127\4\2\t\2\4"+
+ "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3/\u0138\4\2\t\2\4"+
"\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
"\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
@@ -2661,94 +2747,102 @@ public class StellarParser extends Parser {
"\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\5\13\u0081\n"+
"\13\3\13\3\13\3\13\3\13\7\13\u0087\n\13\f\13\16\13\u008a\13\13\3\f\3\f"+
"\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16\5\16\u0096\n\16\3\17\3\17\3\17"+
- "\5\17\u009b\n\17\3\17\3\17\3\17\3\17\3\17\3\17\7\17\u00a3\n\17\f\17\16"+
- "\17\u00a6\13\17\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u00ae\n\20\3\21\3\21"+
- "\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\7\21\u00bb\n\21\f\21\16"+
- "\21\u00be\13\21\3\22\3\22\3\22\3\22\3\22\3\22\5\22\u00c6\n\22\3\23\3\23"+
- "\3\23\3\23\3\23\3\23\3\23\3\23\3\23\7\23\u00d1\n\23\f\23\16\23\u00d4\13"+
- "\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\7\24\u00df\n\24\f\24"+
- "\16\24\u00e2\13\24\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3"+
- "\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\5\26\u00f6\n\26\3\27\3\27\3\27"+
- "\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\5\27"+
- "\u0108\n\27\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31"+
- "\3\31\3\31\3\31\5\31\u0119\n\31\3\32\3\32\3\32\7\32\u011e\n\32\f\32\16"+
- "\32\u0121\13\32\3\33\3\33\3\34\3\34\3\34\2\7\24\34 $&\35\2\4\6\b\n\f\16"+
- "\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\66\2\4\3\2\16\23\3\2\f\r\u0137"+
- "\28\3\2\2\2\4E\3\2\2\2\6G\3\2\2\2\bI\3\2\2\2\nK\3\2\2\2\fZ\3\2\2\2\16"+
- "e\3\2\2\2\20i\3\2\2\2\22s\3\2\2\2\24\u0080\3\2\2\2\26\u008b\3\2\2\2\30"+
- "\u008d\3\2\2\2\32\u0095\3\2\2\2\34\u009a\3\2\2\2\36\u00ad\3\2\2\2 \u00af"+
- "\3\2\2\2\"\u00c5\3\2\2\2$\u00c7\3\2\2\2&\u00d5\3\2\2\2(\u00e3\3\2\2\2"+
- "*\u00f5\3\2\2\2,\u0107\3\2\2\2.\u0109\3\2\2\2\60\u0118\3\2\2\2\62\u011a"+
- "\3\2\2\2\64\u0122\3\2\2\2\66\u0124\3\2\2\289\5\4\3\29:\7\2\2\3:\3\3\2"+
- "\2\2;F\5\f\7\2<=\7#\2\2=>\5\4\3\2>?\7$\2\2?F\3\2\2\2@F\5$\23\2AF\5\26"+
- "\f\2BF\5\24\13\2CF\5\16\b\2DF\5\22\n\2E;\3\2\2\2E<\3\2\2\2E@\3\2\2\2E"+
- "A\3\2\2\2EB\3\2\2\2EC\3\2\2\2ED\3\2\2\2F\5\3\2\2\2GH\5\16\b\2H\7\3\2\2"+
- "\2IJ\5\4\3\2J\t\3\2\2\2KL\5\4\3\2L\13\3\2\2\2MN\5\6\4\2NO\7\24\2\2OP\5"+
- "\b\5\2PQ\7\25\2\2QR\5\n\6\2R[\3\2\2\2ST\7\26\2\2TU\5\6\4\2UV\7\27\2\2"+
- "VW\5\b\5\2WX\7\30\2\2XY\5\n\6\2Y[\3\2\2\2ZM\3\2\2\2ZS\3\2\2\2[\r\3\2\2"+
- "\2\\]\5\20\t\2]^\7\t\2\2^_\5\16\b\2_f\3\2\2\2`a\5\20\t\2ab\7\n\2\2bc\5"+
- "\16\b\2cf\3\2\2\2df\5\20\t\2e\\\3\2\2\2e`\3\2\2\2ed\3\2\2\2f\17\3\2\2"+
- "\2gj\5\24\13\2hj\5\22\n\2ig\3\2\2\2ih\3\2\2\2j\21\3\2\2\2kl\5,\27\2lm"+
- "\7\3\2\2mn\5\20\t\2nt\3\2\2\2op\5,\27\2pq\7%\2\2qr\5\20\t\2rt\3\2\2\2"+
- "sk\3\2\2\2so\3\2\2\2t\23\3\2\2\2uv\b\13\1\2vw\7\13\2\2wx\7#\2\2xy\5\16"+
- "\b\2yz\7$\2\2z\u0081\3\2\2\2{|\7#\2\2|}\5\16\b\2}~\7$\2\2~\u0081\3\2\2"+
- "\2\177\u0081\5,\27\2\u0080u\3\2\2\2\u0080{\3\2\2\2\u0080\177\3\2\2\2\u0081"+
- "\u0088\3\2\2\2\u0082\u0083\f\6\2\2\u0083\u0084\5\30\r\2\u0084\u0085\5"+
- "\24\13\7\u0085\u0087\3\2\2\2\u0086\u0082\3\2\2\2\u0087\u008a\3\2\2\2\u0088"+
- "\u0086\3\2\2\2\u0088\u0089\3\2\2\2\u0089\25\3\2\2\2\u008a\u0088\3\2\2"+
- "\2\u008b\u008c\5,\27\2\u008c\27\3\2\2\2\u008d\u008e\t\2\2\2\u008e\31\3"+
- "\2\2\2\u008f\u0090\7#\2\2\u0090\u0091\5\34\17\2\u0091\u0092\7$\2\2\u0092"+
- "\u0096\3\2\2\2\u0093\u0094\7#\2\2\u0094\u0096\7$\2\2\u0095\u008f\3\2\2"+
- "\2\u0095\u0093\3\2\2\2\u0096\33\3\2\2\2\u0097\u0098\b\17\1\2\u0098\u009b"+
- "\5,\27\2\u0099\u009b\5\f\7\2\u009a\u0097\3\2\2\2\u009a\u0099\3\2\2\2\u009b"+
- "\u00a4\3\2\2\2\u009c\u009d\f\5\2\2\u009d\u009e\7\7\2\2\u009e\u00a3\5,"+
- "\27\2\u009f\u00a0\f\3\2\2\u00a0\u00a1\7\7\2\2\u00a1\u00a3\5\f\7\2\u00a2"+
- "\u009c\3\2\2\2\u00a2\u009f\3\2\2\2\u00a3\u00a6\3\2\2\2\u00a4\u00a2\3\2"+
- "\2\2\u00a4\u00a5\3\2\2\2\u00a5\35\3\2\2\2\u00a6\u00a4\3\2\2\2\u00a7\u00a8"+
- "\7!\2\2\u00a8\u00ae\7\"\2\2\u00a9\u00aa\7!\2\2\u00aa\u00ab\5\34\17\2\u00ab"+
- "\u00ac\7\"\2\2\u00ac\u00ae\3\2\2\2\u00ad\u00a7\3\2\2\2\u00ad\u00a9\3\2"+
- "\2\2\u00ae\37\3\2\2\2\u00af\u00b0\b\21\1\2\u00b0\u00b1\5,\27\2\u00b1\u00b2"+
- "\7\25\2\2\u00b2\u00b3\5\4\3\2\u00b3\u00bc\3\2\2\2\u00b4\u00b5\f\3\2\2"+
- "\u00b5\u00b6\7\7\2\2\u00b6\u00b7\5,\27\2\u00b7\u00b8\7\25\2\2\u00b8\u00b9"+
- "\5\4\3\2\u00b9\u00bb\3\2\2\2\u00ba\u00b4\3\2\2\2\u00bb\u00be\3\2\2\2\u00bc"+
- "\u00ba\3\2\2\2\u00bc\u00bd\3\2\2\2\u00bd!\3\2\2\2\u00be\u00bc\3\2\2\2"+
- "\u00bf\u00c0\7\37\2\2\u00c0\u00c1\5 \21\2\u00c1\u00c2\7 \2\2\u00c2\u00c6"+
- "\3\2\2\2\u00c3\u00c4\7\37\2\2\u00c4\u00c6\7 \2\2\u00c5\u00bf\3\2\2\2\u00c5"+
- "\u00c3\3\2\2\2\u00c6#\3\2\2\2\u00c7\u00c8\b\23\1\2\u00c8\u00c9\5&\24\2"+
- "\u00c9\u00d2\3\2\2\2\u00ca\u00cb\f\4\2\2\u00cb\u00cc\7\34\2\2\u00cc\u00d1"+
- "\5&\24\2\u00cd\u00ce\f\3\2\2\u00ce\u00cf\7\33\2\2\u00cf\u00d1\5&\24\2"+
- "\u00d0\u00ca\3\2\2\2\u00d0\u00cd\3\2\2\2\u00d1\u00d4\3\2\2\2\u00d2\u00d0"+
- "\3\2\2\2\u00d2\u00d3\3\2\2\2\u00d3%\3\2\2\2\u00d4\u00d2\3\2\2\2\u00d5"+
- "\u00d6\b\24\1\2\u00d6\u00d7\5*\26\2\u00d7\u00e0\3\2\2\2\u00d8\u00d9\f"+
- "\4\2\2\u00d9\u00da\7\36\2\2\u00da\u00df\5&\24\5\u00db\u00dc\f\3\2\2\u00dc"+
- "\u00dd\7\35\2\2\u00dd\u00df\5&\24\4\u00de\u00d8\3\2\2\2\u00de\u00db\3"+
- "\2\2\2\u00df\u00e2\3\2\2\2\u00e0\u00de\3\2\2\2\u00e0\u00e1\3\2\2\2\u00e1"+
- "\'\3\2\2\2\u00e2\u00e0\3\2\2\2\u00e3\u00e4\7,\2\2\u00e4\u00e5\5\32\16"+
- "\2\u00e5)\3\2\2\2\u00e6\u00f6\5(\25\2\u00e7\u00f6\7)\2\2\u00e8\u00f6\7"+
- "(\2\2\u00e9\u00f6\7+\2\2\u00ea\u00f6\7*\2\2\u00eb\u00f6\7,\2\2\u00ec\u00f6"+
- "\7\32\2\2\u00ed\u00ee\7#\2\2\u00ee\u00ef\5$\23\2\u00ef\u00f0\7$\2\2\u00f0"+
- "\u00f6\3\2\2\2\u00f1\u00f2\7#\2\2\u00f2\u00f3\5\f\7\2\u00f3\u00f4\7$\2"+
- "\2\u00f4\u00f6\3\2\2\2\u00f5\u00e6\3\2\2\2\u00f5\u00e7\3\2\2\2\u00f5\u00e8"+
- "\3\2\2\2\u00f5\u00e9\3\2\2\2\u00f5\u00ea\3\2\2\2\u00f5\u00eb\3\2\2\2\u00f5"+
- "\u00ec\3\2\2\2\u00f5\u00ed\3\2\2\2\u00f5\u00f1\3\2\2\2\u00f6+\3\2\2\2"+
- "\u00f7\u0108\t\3\2\2\u00f8\u0108\5\60\31\2\u00f9\u0108\5.\30\2\u00fa\u0108"+
- "\5$\23\2\u00fb\u0108\7-\2\2\u00fc\u0108\5\36\20\2\u00fd\u0108\5\"\22\2"+
- "\u00fe\u0108\7\31\2\2\u00ff\u0100\7&\2\2\u0100\u0101\7#\2\2\u0101\u0102"+
- "\7,\2\2\u0102\u0108\7$\2\2\u0103\u0104\7#\2\2\u0104\u0105\5\f\7\2\u0105"+
- "\u0106\7$\2\2\u0106\u0108\3\2\2\2\u0107\u00f7\3\2\2\2\u0107\u00f8\3\2"+
- "\2\2\u0107\u00f9\3\2\2\2\u0107\u00fa\3\2\2\2\u0107\u00fb\3\2\2\2\u0107"+
- "\u00fc\3\2\2\2\u0107\u00fd\3\2\2\2\u0107\u00fe\3\2\2\2\u0107\u00ff\3\2"+
- "\2\2\u0107\u0103\3\2\2\2\u0108-\3\2\2\2\u0109\u010a\7#\2\2\u010a\u010b"+
- "\7$\2\2\u010b\u010c\7\4\2\2\u010c\u010d\5\4\3\2\u010d/\3\2\2\2\u010e\u010f"+
- "\7#\2\2\u010f\u0110\5\62\32\2\u0110\u0111\7$\2\2\u0111\u0112\7\4\2\2\u0112"+
- "\u0113\5\4\3\2\u0113\u0119\3\2\2\2\u0114\u0115\5\64\33\2\u0115\u0116\7"+
- "\4\2\2\u0116\u0117\5\4\3\2\u0117\u0119\3\2\2\2\u0118\u010e\3\2\2\2\u0118"+
- "\u0114\3\2\2\2\u0119\61\3\2\2\2\u011a\u011f\5\66\34\2\u011b\u011c\7\7"+
- "\2\2\u011c\u011e\5\66\34\2\u011d\u011b\3\2\2\2\u011e\u0121\3\2\2\2\u011f"+
- "\u011d\3\2\2\2\u011f\u0120\3\2\2\2\u0120\63\3\2\2\2\u0121\u011f\3\2\2"+
- "\2\u0122\u0123\5\66\34\2\u0123\65\3\2\2\2\u0124\u0125\7,\2\2\u0125\67"+
- "\3\2\2\2\30EZeis\u0080\u0088\u0095\u009a\u00a2\u00a4\u00ad\u00bc\u00c5"+
- "\u00d0\u00d2\u00de\u00e0\u00f5\u0107\u0118\u011f";
+ "\3\17\5\17\u009c\n\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\7\17"+
+ "\u00a7\n\17\f\17\16\17\u00aa\13\17\3\20\3\20\3\20\3\20\3\20\3\20\5\20"+
+ "\u00b2\n\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u00bd\n"+
+ "\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\7\21\u00cb"+
+ "\n\21\f\21\16\21\u00ce\13\21\3\22\3\22\3\22\3\22\3\22\3\22\5\22\u00d6"+
+ "\n\22\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\7\23\u00e1\n\23\f\23"+
+ "\16\23\u00e4\13\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\7\24\u00ef"+
+ "\n\24\f\24\16\24\u00f2\13\24\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\26\3"+
+ "\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\5\26\u0106\n\26\3\27"+
+ "\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27"+
+ "\3\27\3\27\5\27\u0119\n\27\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31"+
+ "\3\31\3\31\3\31\3\31\3\31\3\31\5\31\u012a\n\31\3\32\3\32\3\32\7\32\u012f"+
+ "\n\32\f\32\16\32\u0132\13\32\3\33\3\33\3\34\3\34\3\34\2\7\24\34 $&\35"+
+ "\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\66\2\4\3\2\16"+
+ "\23\3\2\f\r\u014d\28\3\2\2\2\4E\3\2\2\2\6G\3\2\2\2\bI\3\2\2\2\nK\3\2\2"+
+ "\2\fZ\3\2\2\2\16e\3\2\2\2\20i\3\2\2\2\22s\3\2\2\2\24\u0080\3\2\2\2\26"+
+ "\u008b\3\2\2\2\30\u008d\3\2\2\2\32\u0095\3\2\2\2\34\u009b\3\2\2\2\36\u00b1"+
+ "\3\2\2\2 \u00bc\3\2\2\2\"\u00d5\3\2\2\2$\u00d7\3\2\2\2&\u00e5\3\2\2\2"+
+ "(\u00f3\3\2\2\2*\u0105\3\2\2\2,\u0118\3\2\2\2.\u011a\3\2\2\2\60\u0129"+
+ "\3\2\2\2\62\u012b\3\2\2\2\64\u0133\3\2\2\2\66\u0135\3\2\2\289\5\4\3\2"+
+ "9:\7\2\2\3:\3\3\2\2\2;F\5\f\7\2<=\7#\2\2=>\5\4\3\2>?\7$\2\2?F\3\2\2\2"+
+ "@F\5$\23\2AF\5\26\f\2BF\5\24\13\2CF\5\16\b\2DF\5\22\n\2E;\3\2\2\2E<\3"+
+ "\2\2\2E@\3\2\2\2EA\3\2\2\2EB\3\2\2\2EC\3\2\2\2ED\3\2\2\2F\5\3\2\2\2GH"+
+ "\5\16\b\2H\7\3\2\2\2IJ\5\4\3\2J\t\3\2\2\2KL\5\4\3\2L\13\3\2\2\2MN\5\6"+
+ "\4\2NO\7\24\2\2OP\5\b\5\2PQ\7\25\2\2QR\5\n\6\2R[\3\2\2\2ST\7\26\2\2TU"+
+ "\5\6\4\2UV\7\27\2\2VW\5\b\5\2WX\7\30\2\2XY\5\n\6\2Y[\3\2\2\2ZM\3\2\2\2"+
+ "ZS\3\2\2\2[\r\3\2\2\2\\]\5\20\t\2]^\7\t\2\2^_\5\16\b\2_f\3\2\2\2`a\5\20"+
+ "\t\2ab\7\n\2\2bc\5\16\b\2cf\3\2\2\2df\5\20\t\2e\\\3\2\2\2e`\3\2\2\2ed"+
+ "\3\2\2\2f\17\3\2\2\2gj\5\24\13\2hj\5\22\n\2ig\3\2\2\2ih\3\2\2\2j\21\3"+
+ "\2\2\2kl\5,\27\2lm\7\3\2\2mn\5\20\t\2nt\3\2\2\2op\5,\27\2pq\7%\2\2qr\5"+
+ "\20\t\2rt\3\2\2\2sk\3\2\2\2so\3\2\2\2t\23\3\2\2\2uv\b\13\1\2vw\7\13\2"+
+ "\2wx\7#\2\2xy\5\16\b\2yz\7$\2\2z\u0081\3\2\2\2{|\7#\2\2|}\5\16\b\2}~\7"+
+ "$\2\2~\u0081\3\2\2\2\177\u0081\5,\27\2\u0080u\3\2\2\2\u0080{\3\2\2\2\u0080"+
+ "\177\3\2\2\2\u0081\u0088\3\2\2\2\u0082\u0083\f\6\2\2\u0083\u0084\5\30"+
+ "\r\2\u0084\u0085\5\24\13\7\u0085\u0087\3\2\2\2\u0086\u0082\3\2\2\2\u0087"+
+ "\u008a\3\2\2\2\u0088\u0086\3\2\2\2\u0088\u0089\3\2\2\2\u0089\25\3\2\2"+
+ "\2\u008a\u0088\3\2\2\2\u008b\u008c\5,\27\2\u008c\27\3\2\2\2\u008d\u008e"+
+ "\t\2\2\2\u008e\31\3\2\2\2\u008f\u0090\7#\2\2\u0090\u0091\5\34\17\2\u0091"+
+ "\u0092\7$\2\2\u0092\u0096\3\2\2\2\u0093\u0094\7#\2\2\u0094\u0096\7$\2"+
+ "\2\u0095\u008f\3\2\2\2\u0095\u0093\3\2\2\2\u0096\33\3\2\2\2\u0097\u0098"+
+ "\b\17\1\2\u0098\u009c\5,\27\2\u0099\u009c\5\f\7\2\u009a\u009c\5\24\13"+
+ "\2\u009b\u0097\3\2\2\2\u009b\u0099\3\2\2\2\u009b\u009a\3\2\2\2\u009c\u00a8"+
+ "\3\2\2\2\u009d\u009e\f\7\2\2\u009e\u009f\7\7\2\2\u009f\u00a7\5,\27\2\u00a0"+
+ "\u00a1\f\5\2\2\u00a1\u00a2\7\7\2\2\u00a2\u00a7\5\f\7\2\u00a3\u00a4\f\3"+
+ "\2\2\u00a4\u00a5\7\7\2\2\u00a5\u00a7\5\24\13\2\u00a6\u009d\3\2\2\2\u00a6"+
+ "\u00a0\3\2\2\2\u00a6\u00a3\3\2\2\2\u00a7\u00aa\3\2\2\2\u00a8\u00a6\3\2"+
+ "\2\2\u00a8\u00a9\3\2\2\2\u00a9\35\3\2\2\2\u00aa\u00a8\3\2\2\2\u00ab\u00ac"+
+ "\7!\2\2\u00ac\u00b2\7\"\2\2\u00ad\u00ae\7!\2\2\u00ae\u00af\5\34\17\2\u00af"+
+ "\u00b0\7\"\2\2\u00b0\u00b2\3\2\2\2\u00b1\u00ab\3\2\2\2\u00b1\u00ad\3\2"+
+ "\2\2\u00b2\37\3\2\2\2\u00b3\u00b4\b\21\1\2\u00b4\u00b5\5,\27\2\u00b5\u00b6"+
+ "\7\25\2\2\u00b6\u00b7\5\4\3\2\u00b7\u00bd\3\2\2\2\u00b8\u00b9\5\24\13"+
+ "\2\u00b9\u00ba\7\25\2\2\u00ba\u00bb\5\4\3\2\u00bb\u00bd\3\2\2\2\u00bc"+
+ "\u00b3\3\2\2\2\u00bc\u00b8\3\2\2\2\u00bd\u00cc\3\2\2\2\u00be\u00bf\f\4"+
+ "\2\2\u00bf\u00c0\7\7\2\2\u00c0\u00c1\5,\27\2\u00c1\u00c2\7\25\2\2\u00c2"+
+ "\u00c3\5\4\3\2\u00c3\u00cb\3\2\2\2\u00c4\u00c5\f\3\2\2\u00c5\u00c6\7\7"+
+ "\2\2\u00c6\u00c7\5\24\13\2\u00c7\u00c8\7\25\2\2\u00c8\u00c9\5\4\3\2\u00c9"+
+ "\u00cb\3\2\2\2\u00ca\u00be\3\2\2\2\u00ca\u00c4\3\2\2\2\u00cb\u00ce\3\2"+
+ "\2\2\u00cc\u00ca\3\2\2\2\u00cc\u00cd\3\2\2\2\u00cd!\3\2\2\2\u00ce\u00cc"+
+ "\3\2\2\2\u00cf\u00d0\7\37\2\2\u00d0\u00d1\5 \21\2\u00d1\u00d2\7 \2\2\u00d2"+
+ "\u00d6\3\2\2\2\u00d3\u00d4\7\37\2\2\u00d4\u00d6\7 \2\2\u00d5\u00cf\3\2"+
+ "\2\2\u00d5\u00d3\3\2\2\2\u00d6#\3\2\2\2\u00d7\u00d8\b\23\1\2\u00d8\u00d9"+
+ "\5&\24\2\u00d9\u00e2\3\2\2\2\u00da\u00db\f\4\2\2\u00db\u00dc\7\34\2\2"+
+ "\u00dc\u00e1\5&\24\2\u00dd\u00de\f\3\2\2\u00de\u00df\7\33\2\2\u00df\u00e1"+
+ "\5&\24\2\u00e0\u00da\3\2\2\2\u00e0\u00dd\3\2\2\2\u00e1\u00e4\3\2\2\2\u00e2"+
+ "\u00e0\3\2\2\2\u00e2\u00e3\3\2\2\2\u00e3%\3\2\2\2\u00e4\u00e2\3\2\2\2"+
+ "\u00e5\u00e6\b\24\1\2\u00e6\u00e7\5*\26\2\u00e7\u00f0\3\2\2\2\u00e8\u00e9"+
+ "\f\4\2\2\u00e9\u00ea\7\36\2\2\u00ea\u00ef\5&\24\5\u00eb\u00ec\f\3\2\2"+
+ "\u00ec\u00ed\7\35\2\2\u00ed\u00ef\5&\24\4\u00ee\u00e8\3\2\2\2\u00ee\u00eb"+
+ "\3\2\2\2\u00ef\u00f2\3\2\2\2\u00f0\u00ee\3\2\2\2\u00f0\u00f1\3\2\2\2\u00f1"+
+ "\'\3\2\2\2\u00f2\u00f0\3\2\2\2\u00f3\u00f4\7,\2\2\u00f4\u00f5\5\32\16"+
+ "\2\u00f5)\3\2\2\2\u00f6\u0106\5(\25\2\u00f7\u0106\7)\2\2\u00f8\u0106\7"+
+ "(\2\2\u00f9\u0106\7+\2\2\u00fa\u0106\7*\2\2\u00fb\u0106\7,\2\2\u00fc\u0106"+
+ "\7\32\2\2\u00fd\u00fe\7#\2\2\u00fe\u00ff\5$\23\2\u00ff\u0100\7$\2\2\u0100"+
+ "\u0106\3\2\2\2\u0101\u0102\7#\2\2\u0102\u0103\5\f\7\2\u0103\u0104\7$\2"+
+ "\2\u0104\u0106\3\2\2\2\u0105\u00f6\3\2\2\2\u0105\u00f7\3\2\2\2\u0105\u00f8"+
+ "\3\2\2\2\u0105\u00f9\3\2\2\2\u0105\u00fa\3\2\2\2\u0105\u00fb\3\2\2\2\u0105"+
+ "\u00fc\3\2\2\2\u0105\u00fd\3\2\2\2\u0105\u0101\3\2\2\2\u0106+\3\2\2\2"+
+ "\u0107\u0119\t\3\2\2\u0108\u0119\5\60\31\2\u0109\u0119\5.\30\2\u010a\u0119"+
+ "\5$\23\2\u010b\u0119\7-\2\2\u010c\u0119\5\36\20\2\u010d\u0119\5\"\22\2"+
+ "\u010e\u0119\7\31\2\2\u010f\u0110\7&\2\2\u0110\u0111\7#\2\2\u0111\u0112"+
+ "\7,\2\2\u0112\u0119\7$\2\2\u0113\u0114\7#\2\2\u0114\u0115\5\f\7\2\u0115"+
+ "\u0116\7$\2\2\u0116\u0119\3\2\2\2\u0117\u0119\5(\25\2\u0118\u0107\3\2"+
+ "\2\2\u0118\u0108\3\2\2\2\u0118\u0109\3\2\2\2\u0118\u010a\3\2\2\2\u0118"+
+ "\u010b\3\2\2\2\u0118\u010c\3\2\2\2\u0118\u010d\3\2\2\2\u0118\u010e\3\2"+
+ "\2\2\u0118\u010f\3\2\2\2\u0118\u0113\3\2\2\2\u0118\u0117\3\2\2\2\u0119"+
+ "-\3\2\2\2\u011a\u011b\7#\2\2\u011b\u011c\7$\2\2\u011c\u011d\7\4\2\2\u011d"+
+ "\u011e\5\4\3\2\u011e/\3\2\2\2\u011f\u0120\7#\2\2\u0120\u0121\5\62\32\2"+
+ "\u0121\u0122\7$\2\2\u0122\u0123\7\4\2\2\u0123\u0124\5\4\3\2\u0124\u012a"+
+ "\3\2\2\2\u0125\u0126\5\64\33\2\u0126\u0127\7\4\2\2\u0127\u0128\5\4\3\2"+
+ "\u0128\u012a\3\2\2\2\u0129\u011f\3\2\2\2\u0129\u0125\3\2\2\2\u012a\61"+
+ "\3\2\2\2\u012b\u0130\5\66\34\2\u012c\u012d\7\7\2\2\u012d\u012f\5\66\34"+
+ "\2\u012e\u012c\3\2\2\2\u012f\u0132\3\2\2\2\u0130\u012e\3\2\2\2\u0130\u0131"+
+ "\3\2\2\2\u0131\63\3\2\2\2\u0132\u0130\3\2\2\2\u0133\u0134\5\66\34\2\u0134"+
+ "\65\3\2\2\2\u0135\u0136\7,\2\2\u0136\67\3\2\2\2\32EZeis\u0080\u0088\u0095"+
+ "\u009b\u00a6\u00a8\u00b1\u00bc\u00ca\u00cc\u00d5\u00e0\u00e2\u00ee\u00f0"+
+ "\u0105\u0118\u0129\u0130";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
http://git-wip-us.apache.org/repos/asf/metron/blob/191d5d84/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/BasicStellarTest.java
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/BasicStellarTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/BasicStellarTest.java
index 21b8a1a..aa4462a 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/BasicStellarTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/BasicStellarTest.java
@@ -218,6 +218,25 @@ public class BasicStellarTest {
}
}
+ @Test
+ public void testConditionalsAsMapKeys() {
+ {
+ String query = "{ ( RET_TRUE() && y < 50 ) : 'info', y >= 50 : 'warn'}";
+ Map<Boolean, String> ret = (Map)run(query, ImmutableMap.of("y", 50));
+ Assert.assertEquals(ret.size(), 2);
+ Assert.assertEquals("warn", ret.get(true));
+ Assert.assertEquals("info", ret.get(false));
+ }
+ }
+
+
+ @Test
+ public void testConditionalsAsFunctionArgs() {
+ {
+ String query = "RET_TRUE(y < 10)";
+ Assert.assertTrue((boolean)run(query, ImmutableMap.of("y", 50)));
+ }
+ }
@Test
public void testFunctionEmptyArgs() {