diff --git a/src/main/java/com/github/sidhant92/boolparser/parser/antlr/BooleanExpressionLexer.java b/src/main/java/com/github/sidhant92/boolparser/parser/antlr/BooleanExpressionLexer.java index 6d3d467..c943be8 100644 --- a/src/main/java/com/github/sidhant92/boolparser/parser/antlr/BooleanExpressionLexer.java +++ b/src/main/java/com/github/sidhant92/boolparser/parser/antlr/BooleanExpressionLexer.java @@ -114,7 +114,7 @@ public BooleanExpressionLexer(CharStream input) { public ATN getATN() { return _ATN; } public static final String _serializedATN = - "\u0004\u0000 \u0114\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+ + "\u0004\u0000 \u0126\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+ "\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+ "\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+ "\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+ @@ -153,145 +153,160 @@ public BooleanExpressionLexer(CharStream input) { "\b\u001b\u000b\u001b\f\u001b\u00ec\u0001\u001b\u0001\u001b\u0001\u001c"+ "\u0001\u001c\u0001\u001c\u0004\u001c\u00f4\b\u001c\u000b\u001c\f\u001c"+ "\u00f5\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0005\u001c\u00fc"+ - "\b\u001c\n\u001c\f\u001c\u00ff\t\u001c\u0001\u001d\u0001\u001d\u0001\u001e"+ - "\u0001\u001e\u0005\u001e\u0105\b\u001e\n\u001e\f\u001e\u0108\t\u001e\u0001"+ - "\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0005\u001f\u010e\b\u001f\n"+ - "\u001f\f\u001f\u0111\t\u001f\u0001\u001f\u0001\u001f\u0002\u0106\u010f"+ - "\u0000 \u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005\u000b"+ - "\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019\r\u001b"+ - "\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'\u0014)\u0015+\u0016"+ - "-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d;\u001e=\u001f? \u0001"+ - "\u0000\u0004\u0001\u000009\u0003\u0000\t\n\f\r \u0002\u0000-.__\u0003"+ - "\u000009AZaz\u012c\u0000\u0001\u0001\u0000\u0000\u0000\u0000\u0003\u0001"+ - "\u0000\u0000\u0000\u0000\u0005\u0001\u0000\u0000\u0000\u0000\u0007\u0001"+ - "\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000\u000b\u0001\u0000"+ - "\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f\u0001\u0000\u0000"+ - "\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013\u0001\u0000\u0000"+ - "\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017\u0001\u0000\u0000"+ - "\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b\u0001\u0000\u0000"+ - "\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f\u0001\u0000\u0000"+ - "\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000\u0000\u0000\u0000"+ - "%\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000\u0000\u0000)\u0001"+ - "\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000-\u0001\u0000\u0000"+ - "\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001\u0000\u0000\u0000\u0000"+ - "3\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000\u0000\u00007\u0001"+ - "\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000;\u0001\u0000\u0000"+ - "\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?\u0001\u0000\u0000\u0000\u0001"+ - "A\u0001\u0000\u0000\u0000\u0003G\u0001\u0000\u0000\u0000\u0005M\u0001"+ - "\u0000\u0000\u0000\u0007W\u0001\u0000\u0000\u0000\t_\u0001\u0000\u0000"+ - "\u0000\u000bg\u0001\u0000\u0000\u0000\rq\u0001\u0000\u0000\u0000\u000f"+ - "}\u0001\u0000\u0000\u0000\u0011\u0097\u0001\u0000\u0000\u0000\u0013\u00b1"+ - "\u0001\u0000\u0000\u0000\u0015\u00b3\u0001\u0000\u0000\u0000\u0017\u00b5"+ - "\u0001\u0000\u0000\u0000\u0019\u00b7\u0001\u0000\u0000\u0000\u001b\u00b9"+ - "\u0001\u0000\u0000\u0000\u001d\u00bb\u0001\u0000\u0000\u0000\u001f\u00bd"+ - "\u0001\u0000\u0000\u0000!\u00bf\u0001\u0000\u0000\u0000#\u00c2\u0001\u0000"+ - "\u0000\u0000%\u00c4\u0001\u0000\u0000\u0000\'\u00c7\u0001\u0000\u0000"+ - "\u0000)\u00c9\u0001\u0000\u0000\u0000+\u00cc\u0001\u0000\u0000\u0000-"+ - "\u00ce\u0001\u0000\u0000\u0000/\u00d0\u0001\u0000\u0000\u00001\u00d3\u0001"+ - "\u0000\u0000\u00003\u00dd\u0001\u0000\u0000\u00005\u00e5\u0001\u0000\u0000"+ - "\u00007\u00ea\u0001\u0000\u0000\u00009\u00f3\u0001\u0000\u0000\u0000;"+ - "\u0100\u0001\u0000\u0000\u0000=\u0102\u0001\u0000\u0000\u0000?\u010b\u0001"+ - "\u0000\u0000\u0000AB\u0005,\u0000\u0000B\u0002\u0001\u0000\u0000\u0000"+ - "CD\u0005I\u0000\u0000DH\u0005N\u0000\u0000EF\u0005i\u0000\u0000FH\u0005"+ - "n\u0000\u0000GC\u0001\u0000\u0000\u0000GE\u0001\u0000\u0000\u0000H\u0004"+ - "\u0001\u0000\u0000\u0000IJ\u0005T\u0000\u0000JN\u0005O\u0000\u0000KL\u0005"+ - "t\u0000\u0000LN\u0005o\u0000\u0000MI\u0001\u0000\u0000\u0000MK\u0001\u0000"+ - "\u0000\u0000N\u0006\u0001\u0000\u0000\u0000OP\u0005A\u0000\u0000PQ\u0005"+ - "N\u0000\u0000QX\u0005D\u0000\u0000RS\u0005a\u0000\u0000ST\u0005n\u0000"+ - "\u0000TX\u0005d\u0000\u0000UV\u0005&\u0000\u0000VX\u0005&\u0000\u0000"+ - "WO\u0001\u0000\u0000\u0000WR\u0001\u0000\u0000\u0000WU\u0001\u0000\u0000"+ - "\u0000X\b\u0001\u0000\u0000\u0000YZ\u0005O\u0000\u0000Z`\u0005R\u0000"+ - "\u0000[\\\u0005o\u0000\u0000\\`\u0005r\u0000\u0000]^\u0005|\u0000\u0000"+ - "^`\u0005|\u0000\u0000_Y\u0001\u0000\u0000\u0000_[\u0001\u0000\u0000\u0000"+ - "_]\u0001\u0000\u0000\u0000`\n\u0001\u0000\u0000\u0000ab\u0005N\u0000\u0000"+ - "bc\u0005O\u0000\u0000ch\u0005T\u0000\u0000de\u0005n\u0000\u0000ef\u0005"+ - "o\u0000\u0000fh\u0005t\u0000\u0000ga\u0001\u0000\u0000\u0000gd\u0001\u0000"+ - "\u0000\u0000h\f\u0001\u0000\u0000\u0000ij\u0005T\u0000\u0000jk\u0005R"+ - "\u0000\u0000kl\u0005U\u0000\u0000lr\u0005E\u0000\u0000mn\u0005t\u0000"+ - "\u0000no\u0005r\u0000\u0000op\u0005u\u0000\u0000pr\u0005e\u0000\u0000"+ - "qi\u0001\u0000\u0000\u0000qm\u0001\u0000\u0000\u0000r\u000e\u0001\u0000"+ - "\u0000\u0000st\u0005F\u0000\u0000tu\u0005A\u0000\u0000uv\u0005L\u0000"+ - "\u0000vw\u0005S\u0000\u0000w~\u0005E\u0000\u0000xy\u0005f\u0000\u0000"+ - "yz\u0005a\u0000\u0000z{\u0005l\u0000\u0000{|\u0005s\u0000\u0000|~\u0005"+ - "e\u0000\u0000}s\u0001\u0000\u0000\u0000}x\u0001\u0000\u0000\u0000~\u0010"+ - "\u0001\u0000\u0000\u0000\u007f\u0080\u0005C\u0000\u0000\u0080\u0081\u0005"+ - "O\u0000\u0000\u0081\u0082\u0005N\u0000\u0000\u0082\u0083\u0005T\u0000"+ - "\u0000\u0083\u0084\u0005A\u0000\u0000\u0084\u0085\u0005I\u0000\u0000\u0085"+ - "\u0086\u0005N\u0000\u0000\u0086\u0087\u0005S\u0000\u0000\u0087\u0088\u0005"+ - "_\u0000\u0000\u0088\u0089\u0005A\u0000\u0000\u0089\u008a\u0005L\u0000"+ - "\u0000\u008a\u0098\u0005L\u0000\u0000\u008b\u008c\u0005c\u0000\u0000\u008c"+ - "\u008d\u0005o\u0000\u0000\u008d\u008e\u0005n\u0000\u0000\u008e\u008f\u0005"+ - "t\u0000\u0000\u008f\u0090\u0005a\u0000\u0000\u0090\u0091\u0005i\u0000"+ - "\u0000\u0091\u0092\u0005n\u0000\u0000\u0092\u0093\u0005s\u0000\u0000\u0093"+ - "\u0094\u0005_\u0000\u0000\u0094\u0095\u0005a\u0000\u0000\u0095\u0096\u0005"+ - "l\u0000\u0000\u0096\u0098\u0005l\u0000\u0000\u0097\u007f\u0001\u0000\u0000"+ - "\u0000\u0097\u008b\u0001\u0000\u0000\u0000\u0098\u0012\u0001\u0000\u0000"+ - "\u0000\u0099\u009a\u0005C\u0000\u0000\u009a\u009b\u0005O\u0000\u0000\u009b"+ - "\u009c\u0005N\u0000\u0000\u009c\u009d\u0005T\u0000\u0000\u009d\u009e\u0005"+ - "A\u0000\u0000\u009e\u009f\u0005I\u0000\u0000\u009f\u00a0\u0005N\u0000"+ - "\u0000\u00a0\u00a1\u0005S\u0000\u0000\u00a1\u00a2\u0005_\u0000\u0000\u00a2"+ - "\u00a3\u0005A\u0000\u0000\u00a3\u00a4\u0005N\u0000\u0000\u00a4\u00b2\u0005"+ - "Y\u0000\u0000\u00a5\u00a6\u0005c\u0000\u0000\u00a6\u00a7\u0005o\u0000"+ - "\u0000\u00a7\u00a8\u0005n\u0000\u0000\u00a8\u00a9\u0005t\u0000\u0000\u00a9"+ - "\u00aa\u0005a\u0000\u0000\u00aa\u00ab\u0005i\u0000\u0000\u00ab\u00ac\u0005"+ - "n\u0000\u0000\u00ac\u00ad\u0005s\u0000\u0000\u00ad\u00ae\u0005_\u0000"+ - "\u0000\u00ae\u00af\u0005a\u0000\u0000\u00af\u00b0\u0005n\u0000\u0000\u00b0"+ - "\u00b2\u0005y\u0000\u0000\u00b1\u0099\u0001\u0000\u0000\u0000\u00b1\u00a5"+ - "\u0001\u0000\u0000\u0000\u00b2\u0014\u0001\u0000\u0000\u0000\u00b3\u00b4"+ - "\u0005+\u0000\u0000\u00b4\u0016\u0001\u0000\u0000\u0000\u00b5\u00b6\u0005"+ - "-\u0000\u0000\u00b6\u0018\u0001\u0000\u0000\u0000\u00b7\u00b8\u0005*\u0000"+ - "\u0000\u00b8\u001a\u0001\u0000\u0000\u0000\u00b9\u00ba\u0005/\u0000\u0000"+ - "\u00ba\u001c\u0001\u0000\u0000\u0000\u00bb\u00bc\u0005%\u0000\u0000\u00bc"+ - "\u001e\u0001\u0000\u0000\u0000\u00bd\u00be\u0005^\u0000\u0000\u00be \u0001"+ - "\u0000\u0000\u0000\u00bf\u00c0\u0005!\u0000\u0000\u00c0\u00c1\u0005=\u0000"+ - "\u0000\u00c1\"\u0001\u0000\u0000\u0000\u00c2\u00c3\u0005>\u0000\u0000"+ - "\u00c3$\u0001\u0000\u0000\u0000\u00c4\u00c5\u0005>\u0000\u0000\u00c5\u00c6"+ - "\u0005=\u0000\u0000\u00c6&\u0001\u0000\u0000\u0000\u00c7\u00c8\u0005<"+ - "\u0000\u0000\u00c8(\u0001\u0000\u0000\u0000\u00c9\u00ca\u0005<\u0000\u0000"+ - "\u00ca\u00cb\u0005=\u0000\u0000\u00cb*\u0001\u0000\u0000\u0000\u00cc\u00cd"+ - "\u0005=\u0000\u0000\u00cd,\u0001\u0000\u0000\u0000\u00ce\u00cf\u0005("+ - "\u0000\u0000\u00cf.\u0001\u0000\u0000\u0000\u00d0\u00d1\u0005)\u0000\u0000"+ - "\u00d10\u0001\u0000\u0000\u0000\u00d2\u00d4\u0007\u0000\u0000\u0000\u00d3"+ - "\u00d2\u0001\u0000\u0000\u0000\u00d4\u00d5\u0001\u0000\u0000\u0000\u00d5"+ - "\u00d3\u0001\u0000\u0000\u0000\u00d5\u00d6\u0001\u0000\u0000\u0000\u00d6"+ - "\u00d7\u0001\u0000\u0000\u0000\u00d7\u00d9\u0005.\u0000\u0000\u00d8\u00da"+ - "\u0007\u0000\u0000\u0000\u00d9\u00d8\u0001\u0000\u0000\u0000\u00da\u00db"+ - "\u0001\u0000\u0000\u0000\u00db\u00d9\u0001\u0000\u0000\u0000\u00db\u00dc"+ - "\u0001\u0000\u0000\u0000\u00dc2\u0001\u0000\u0000\u0000\u00dd\u00e0\u0007"+ - "\u0000\u0000\u0000\u00de\u00df\u0005.\u0000\u0000\u00df\u00e1\u00035\u001a"+ - "\u0000\u00e0\u00de\u0001\u0000\u0000\u0000\u00e1\u00e2\u0001\u0000\u0000"+ - "\u0000\u00e2\u00e0\u0001\u0000\u0000\u0000\u00e2\u00e3\u0001\u0000\u0000"+ - "\u0000\u00e34\u0001\u0000\u0000\u0000\u00e4\u00e6\u0007\u0000\u0000\u0000"+ - "\u00e5\u00e4\u0001\u0000\u0000\u0000\u00e6\u00e7\u0001\u0000\u0000\u0000"+ - "\u00e7\u00e5\u0001\u0000\u0000\u0000\u00e7\u00e8\u0001\u0000\u0000\u0000"+ - "\u00e86\u0001\u0000\u0000\u0000\u00e9\u00eb\u0007\u0001\u0000\u0000\u00ea"+ - "\u00e9\u0001\u0000\u0000\u0000\u00eb\u00ec\u0001\u0000\u0000\u0000\u00ec"+ - "\u00ea\u0001\u0000\u0000\u0000\u00ec\u00ed\u0001\u0000\u0000\u0000\u00ed"+ - "\u00ee\u0001\u0000\u0000\u0000\u00ee\u00ef\u0006\u001b\u0000\u0000\u00ef"+ - "8\u0001\u0000\u0000\u0000\u00f0\u00f4\u0003;\u001d\u0000\u00f1\u00f4\u0003"+ - "=\u001e\u0000\u00f2\u00f4\u0003?\u001f\u0000\u00f3\u00f0\u0001\u0000\u0000"+ - "\u0000\u00f3\u00f1\u0001\u0000\u0000\u0000\u00f3\u00f2\u0001\u0000\u0000"+ - "\u0000\u00f4\u00f5\u0001\u0000\u0000\u0000\u00f5\u00f3\u0001\u0000\u0000"+ - "\u0000\u00f5\u00f6\u0001\u0000\u0000\u0000\u00f6\u00fd\u0001\u0000\u0000"+ - "\u0000\u00f7\u00fc\u0003;\u001d\u0000\u00f8\u00fc\u0007\u0002\u0000\u0000"+ - "\u00f9\u00fc\u0003=\u001e\u0000\u00fa\u00fc\u0003?\u001f\u0000\u00fb\u00f7"+ - "\u0001\u0000\u0000\u0000\u00fb\u00f8\u0001\u0000\u0000\u0000\u00fb\u00f9"+ - "\u0001\u0000\u0000\u0000\u00fb\u00fa\u0001\u0000\u0000\u0000\u00fc\u00ff"+ - "\u0001\u0000\u0000\u0000\u00fd\u00fb\u0001\u0000\u0000\u0000\u00fd\u00fe"+ - "\u0001\u0000\u0000\u0000\u00fe:\u0001\u0000\u0000\u0000\u00ff\u00fd\u0001"+ - "\u0000\u0000\u0000\u0100\u0101\u0007\u0003\u0000\u0000\u0101<\u0001\u0000"+ - "\u0000\u0000\u0102\u0106\u0005\'\u0000\u0000\u0103\u0105\t\u0000\u0000"+ - "\u0000\u0104\u0103\u0001\u0000\u0000\u0000\u0105\u0108\u0001\u0000\u0000"+ - "\u0000\u0106\u0107\u0001\u0000\u0000\u0000\u0106\u0104\u0001\u0000\u0000"+ - "\u0000\u0107\u0109\u0001\u0000\u0000\u0000\u0108\u0106\u0001\u0000\u0000"+ - "\u0000\u0109\u010a\u0005\'\u0000\u0000\u010a>\u0001\u0000\u0000\u0000"+ - "\u010b\u010f\u0005\"\u0000\u0000\u010c\u010e\t\u0000\u0000\u0000\u010d"+ - "\u010c\u0001\u0000\u0000\u0000\u010e\u0111\u0001\u0000\u0000\u0000\u010f"+ - "\u0110\u0001\u0000\u0000\u0000\u010f\u010d\u0001\u0000\u0000\u0000\u0110"+ - "\u0112\u0001\u0000\u0000\u0000\u0111\u010f\u0001\u0000\u0000\u0000\u0112"+ - "\u0113\u0005\"\u0000\u0000\u0113@\u0001\u0000\u0000\u0000\u0015\u0000"+ + "\b\u001c\n\u001c\f\u001c\u00ff\t\u001c\u0001\u001c\u0001\u001c\u0003\u001c"+ + "\u0103\b\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0004\u001c"+ + "\u0109\b\u001c\u000b\u001c\f\u001c\u010a\u0001\u001c\u0001\u001c\u0003"+ + "\u001c\u010f\b\u001c\u0003\u001c\u0111\b\u001c\u0001\u001d\u0001\u001d"+ + "\u0001\u001e\u0001\u001e\u0005\u001e\u0117\b\u001e\n\u001e\f\u001e\u011a"+ + "\t\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0005\u001f\u0120"+ + "\b\u001f\n\u001f\f\u001f\u0123\t\u001f\u0001\u001f\u0001\u001f\u0002\u0118"+ + "\u0121\u0000 \u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005"+ + "\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019"+ + "\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'\u0014)\u0015"+ + "+\u0016-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d;\u001e=\u001f"+ + "? \u0001\u0000\u0005\u0001\u000009\u0003\u0000\t\n\f\r \u0002\u0000."+ + ".__\u0002\u0000-.__\u0003\u000009AZaz\u0145\u0000\u0001\u0001\u0000\u0000"+ + "\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005\u0001\u0000\u0000"+ + "\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000"+ + "\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000"+ + "\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000"+ + "\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000"+ + "\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000"+ + "\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000"+ + "\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001"+ + "\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000"+ + "\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000"+ + "\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u00001"+ + "\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001\u0000"+ + "\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000"+ + "\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?"+ + "\u0001\u0000\u0000\u0000\u0001A\u0001\u0000\u0000\u0000\u0003G\u0001\u0000"+ + "\u0000\u0000\u0005M\u0001\u0000\u0000\u0000\u0007W\u0001\u0000\u0000\u0000"+ + "\t_\u0001\u0000\u0000\u0000\u000bg\u0001\u0000\u0000\u0000\rq\u0001\u0000"+ + "\u0000\u0000\u000f}\u0001\u0000\u0000\u0000\u0011\u0097\u0001\u0000\u0000"+ + "\u0000\u0013\u00b1\u0001\u0000\u0000\u0000\u0015\u00b3\u0001\u0000\u0000"+ + "\u0000\u0017\u00b5\u0001\u0000\u0000\u0000\u0019\u00b7\u0001\u0000\u0000"+ + "\u0000\u001b\u00b9\u0001\u0000\u0000\u0000\u001d\u00bb\u0001\u0000\u0000"+ + "\u0000\u001f\u00bd\u0001\u0000\u0000\u0000!\u00bf\u0001\u0000\u0000\u0000"+ + "#\u00c2\u0001\u0000\u0000\u0000%\u00c4\u0001\u0000\u0000\u0000\'\u00c7"+ + "\u0001\u0000\u0000\u0000)\u00c9\u0001\u0000\u0000\u0000+\u00cc\u0001\u0000"+ + "\u0000\u0000-\u00ce\u0001\u0000\u0000\u0000/\u00d0\u0001\u0000\u0000\u0000"+ + "1\u00d3\u0001\u0000\u0000\u00003\u00dd\u0001\u0000\u0000\u00005\u00e5"+ + "\u0001\u0000\u0000\u00007\u00ea\u0001\u0000\u0000\u00009\u0110\u0001\u0000"+ + "\u0000\u0000;\u0112\u0001\u0000\u0000\u0000=\u0114\u0001\u0000\u0000\u0000"+ + "?\u011d\u0001\u0000\u0000\u0000AB\u0005,\u0000\u0000B\u0002\u0001\u0000"+ + "\u0000\u0000CD\u0005I\u0000\u0000DH\u0005N\u0000\u0000EF\u0005i\u0000"+ + "\u0000FH\u0005n\u0000\u0000GC\u0001\u0000\u0000\u0000GE\u0001\u0000\u0000"+ + "\u0000H\u0004\u0001\u0000\u0000\u0000IJ\u0005T\u0000\u0000JN\u0005O\u0000"+ + "\u0000KL\u0005t\u0000\u0000LN\u0005o\u0000\u0000MI\u0001\u0000\u0000\u0000"+ + "MK\u0001\u0000\u0000\u0000N\u0006\u0001\u0000\u0000\u0000OP\u0005A\u0000"+ + "\u0000PQ\u0005N\u0000\u0000QX\u0005D\u0000\u0000RS\u0005a\u0000\u0000"+ + "ST\u0005n\u0000\u0000TX\u0005d\u0000\u0000UV\u0005&\u0000\u0000VX\u0005"+ + "&\u0000\u0000WO\u0001\u0000\u0000\u0000WR\u0001\u0000\u0000\u0000WU\u0001"+ + "\u0000\u0000\u0000X\b\u0001\u0000\u0000\u0000YZ\u0005O\u0000\u0000Z`\u0005"+ + "R\u0000\u0000[\\\u0005o\u0000\u0000\\`\u0005r\u0000\u0000]^\u0005|\u0000"+ + "\u0000^`\u0005|\u0000\u0000_Y\u0001\u0000\u0000\u0000_[\u0001\u0000\u0000"+ + "\u0000_]\u0001\u0000\u0000\u0000`\n\u0001\u0000\u0000\u0000ab\u0005N\u0000"+ + "\u0000bc\u0005O\u0000\u0000ch\u0005T\u0000\u0000de\u0005n\u0000\u0000"+ + "ef\u0005o\u0000\u0000fh\u0005t\u0000\u0000ga\u0001\u0000\u0000\u0000g"+ + "d\u0001\u0000\u0000\u0000h\f\u0001\u0000\u0000\u0000ij\u0005T\u0000\u0000"+ + "jk\u0005R\u0000\u0000kl\u0005U\u0000\u0000lr\u0005E\u0000\u0000mn\u0005"+ + "t\u0000\u0000no\u0005r\u0000\u0000op\u0005u\u0000\u0000pr\u0005e\u0000"+ + "\u0000qi\u0001\u0000\u0000\u0000qm\u0001\u0000\u0000\u0000r\u000e\u0001"+ + "\u0000\u0000\u0000st\u0005F\u0000\u0000tu\u0005A\u0000\u0000uv\u0005L"+ + "\u0000\u0000vw\u0005S\u0000\u0000w~\u0005E\u0000\u0000xy\u0005f\u0000"+ + "\u0000yz\u0005a\u0000\u0000z{\u0005l\u0000\u0000{|\u0005s\u0000\u0000"+ + "|~\u0005e\u0000\u0000}s\u0001\u0000\u0000\u0000}x\u0001\u0000\u0000\u0000"+ + "~\u0010\u0001\u0000\u0000\u0000\u007f\u0080\u0005C\u0000\u0000\u0080\u0081"+ + "\u0005O\u0000\u0000\u0081\u0082\u0005N\u0000\u0000\u0082\u0083\u0005T"+ + "\u0000\u0000\u0083\u0084\u0005A\u0000\u0000\u0084\u0085\u0005I\u0000\u0000"+ + "\u0085\u0086\u0005N\u0000\u0000\u0086\u0087\u0005S\u0000\u0000\u0087\u0088"+ + "\u0005_\u0000\u0000\u0088\u0089\u0005A\u0000\u0000\u0089\u008a\u0005L"+ + "\u0000\u0000\u008a\u0098\u0005L\u0000\u0000\u008b\u008c\u0005c\u0000\u0000"+ + "\u008c\u008d\u0005o\u0000\u0000\u008d\u008e\u0005n\u0000\u0000\u008e\u008f"+ + "\u0005t\u0000\u0000\u008f\u0090\u0005a\u0000\u0000\u0090\u0091\u0005i"+ + "\u0000\u0000\u0091\u0092\u0005n\u0000\u0000\u0092\u0093\u0005s\u0000\u0000"+ + "\u0093\u0094\u0005_\u0000\u0000\u0094\u0095\u0005a\u0000\u0000\u0095\u0096"+ + "\u0005l\u0000\u0000\u0096\u0098\u0005l\u0000\u0000\u0097\u007f\u0001\u0000"+ + "\u0000\u0000\u0097\u008b\u0001\u0000\u0000\u0000\u0098\u0012\u0001\u0000"+ + "\u0000\u0000\u0099\u009a\u0005C\u0000\u0000\u009a\u009b\u0005O\u0000\u0000"+ + "\u009b\u009c\u0005N\u0000\u0000\u009c\u009d\u0005T\u0000\u0000\u009d\u009e"+ + "\u0005A\u0000\u0000\u009e\u009f\u0005I\u0000\u0000\u009f\u00a0\u0005N"+ + "\u0000\u0000\u00a0\u00a1\u0005S\u0000\u0000\u00a1\u00a2\u0005_\u0000\u0000"+ + "\u00a2\u00a3\u0005A\u0000\u0000\u00a3\u00a4\u0005N\u0000\u0000\u00a4\u00b2"+ + "\u0005Y\u0000\u0000\u00a5\u00a6\u0005c\u0000\u0000\u00a6\u00a7\u0005o"+ + "\u0000\u0000\u00a7\u00a8\u0005n\u0000\u0000\u00a8\u00a9\u0005t\u0000\u0000"+ + "\u00a9\u00aa\u0005a\u0000\u0000\u00aa\u00ab\u0005i\u0000\u0000\u00ab\u00ac"+ + "\u0005n\u0000\u0000\u00ac\u00ad\u0005s\u0000\u0000\u00ad\u00ae\u0005_"+ + "\u0000\u0000\u00ae\u00af\u0005a\u0000\u0000\u00af\u00b0\u0005n\u0000\u0000"+ + "\u00b0\u00b2\u0005y\u0000\u0000\u00b1\u0099\u0001\u0000\u0000\u0000\u00b1"+ + "\u00a5\u0001\u0000\u0000\u0000\u00b2\u0014\u0001\u0000\u0000\u0000\u00b3"+ + "\u00b4\u0005+\u0000\u0000\u00b4\u0016\u0001\u0000\u0000\u0000\u00b5\u00b6"+ + "\u0005-\u0000\u0000\u00b6\u0018\u0001\u0000\u0000\u0000\u00b7\u00b8\u0005"+ + "*\u0000\u0000\u00b8\u001a\u0001\u0000\u0000\u0000\u00b9\u00ba\u0005/\u0000"+ + "\u0000\u00ba\u001c\u0001\u0000\u0000\u0000\u00bb\u00bc\u0005%\u0000\u0000"+ + "\u00bc\u001e\u0001\u0000\u0000\u0000\u00bd\u00be\u0005^\u0000\u0000\u00be"+ + " \u0001\u0000\u0000\u0000\u00bf\u00c0\u0005!\u0000\u0000\u00c0\u00c1\u0005"+ + "=\u0000\u0000\u00c1\"\u0001\u0000\u0000\u0000\u00c2\u00c3\u0005>\u0000"+ + "\u0000\u00c3$\u0001\u0000\u0000\u0000\u00c4\u00c5\u0005>\u0000\u0000\u00c5"+ + "\u00c6\u0005=\u0000\u0000\u00c6&\u0001\u0000\u0000\u0000\u00c7\u00c8\u0005"+ + "<\u0000\u0000\u00c8(\u0001\u0000\u0000\u0000\u00c9\u00ca\u0005<\u0000"+ + "\u0000\u00ca\u00cb\u0005=\u0000\u0000\u00cb*\u0001\u0000\u0000\u0000\u00cc"+ + "\u00cd\u0005=\u0000\u0000\u00cd,\u0001\u0000\u0000\u0000\u00ce\u00cf\u0005"+ + "(\u0000\u0000\u00cf.\u0001\u0000\u0000\u0000\u00d0\u00d1\u0005)\u0000"+ + "\u0000\u00d10\u0001\u0000\u0000\u0000\u00d2\u00d4\u0007\u0000\u0000\u0000"+ + "\u00d3\u00d2\u0001\u0000\u0000\u0000\u00d4\u00d5\u0001\u0000\u0000\u0000"+ + "\u00d5\u00d3\u0001\u0000\u0000\u0000\u00d5\u00d6\u0001\u0000\u0000\u0000"+ + "\u00d6\u00d7\u0001\u0000\u0000\u0000\u00d7\u00d9\u0005.\u0000\u0000\u00d8"+ + "\u00da\u0007\u0000\u0000\u0000\u00d9\u00d8\u0001\u0000\u0000\u0000\u00da"+ + "\u00db\u0001\u0000\u0000\u0000\u00db\u00d9\u0001\u0000\u0000\u0000\u00db"+ + "\u00dc\u0001\u0000\u0000\u0000\u00dc2\u0001\u0000\u0000\u0000\u00dd\u00e0"+ + "\u0007\u0000\u0000\u0000\u00de\u00df\u0005.\u0000\u0000\u00df\u00e1\u0003"+ + "5\u001a\u0000\u00e0\u00de\u0001\u0000\u0000\u0000\u00e1\u00e2\u0001\u0000"+ + "\u0000\u0000\u00e2\u00e0\u0001\u0000\u0000\u0000\u00e2\u00e3\u0001\u0000"+ + "\u0000\u0000\u00e34\u0001\u0000\u0000\u0000\u00e4\u00e6\u0007\u0000\u0000"+ + "\u0000\u00e5\u00e4\u0001\u0000\u0000\u0000\u00e6\u00e7\u0001\u0000\u0000"+ + "\u0000\u00e7\u00e5\u0001\u0000\u0000\u0000\u00e7\u00e8\u0001\u0000\u0000"+ + "\u0000\u00e86\u0001\u0000\u0000\u0000\u00e9\u00eb\u0007\u0001\u0000\u0000"+ + "\u00ea\u00e9\u0001\u0000\u0000\u0000\u00eb\u00ec\u0001\u0000\u0000\u0000"+ + "\u00ec\u00ea\u0001\u0000\u0000\u0000\u00ec\u00ed\u0001\u0000\u0000\u0000"+ + "\u00ed\u00ee\u0001\u0000\u0000\u0000\u00ee\u00ef\u0006\u001b\u0000\u0000"+ + "\u00ef8\u0001\u0000\u0000\u0000\u00f0\u00f4\u0003;\u001d\u0000\u00f1\u00f4"+ + "\u0003=\u001e\u0000\u00f2\u00f4\u0003?\u001f\u0000\u00f3\u00f0\u0001\u0000"+ + "\u0000\u0000\u00f3\u00f1\u0001\u0000\u0000\u0000\u00f3\u00f2\u0001\u0000"+ + "\u0000\u0000\u00f4\u00f5\u0001\u0000\u0000\u0000\u00f5\u00f3\u0001\u0000"+ + "\u0000\u0000\u00f5\u00f6\u0001\u0000\u0000\u0000\u00f6\u00fd\u0001\u0000"+ + "\u0000\u0000\u00f7\u00fc\u0003;\u001d\u0000\u00f8\u00fc\u0007\u0002\u0000"+ + "\u0000\u00f9\u00fc\u0003=\u001e\u0000\u00fa\u00fc\u0003?\u001f\u0000\u00fb"+ + "\u00f7\u0001\u0000\u0000\u0000\u00fb\u00f8\u0001\u0000\u0000\u0000\u00fb"+ + "\u00f9\u0001\u0000\u0000\u0000\u00fb\u00fa\u0001\u0000\u0000\u0000\u00fc"+ + "\u00ff\u0001\u0000\u0000\u0000\u00fd\u00fb\u0001\u0000\u0000\u0000\u00fd"+ + "\u00fe\u0001\u0000\u0000\u0000\u00fe\u0111\u0001\u0000\u0000\u0000\u00ff"+ + "\u00fd\u0001\u0000\u0000\u0000\u0100\u0103\u0003=\u001e\u0000\u0101\u0103"+ + "\u0003?\u001f\u0000\u0102\u0100\u0001\u0000\u0000\u0000\u0102\u0101\u0001"+ + "\u0000\u0000\u0000\u0103\u0108\u0001\u0000\u0000\u0000\u0104\u0109\u0003"+ + ";\u001d\u0000\u0105\u0109\u0007\u0003\u0000\u0000\u0106\u0109\u0003=\u001e"+ + "\u0000\u0107\u0109\u0003?\u001f\u0000\u0108\u0104\u0001\u0000\u0000\u0000"+ + "\u0108\u0105\u0001\u0000\u0000\u0000\u0108\u0106\u0001\u0000\u0000\u0000"+ + "\u0108\u0107\u0001\u0000\u0000\u0000\u0109\u010a\u0001\u0000\u0000\u0000"+ + "\u010a\u0108\u0001\u0000\u0000\u0000\u010a\u010b\u0001\u0000\u0000\u0000"+ + "\u010b\u010e\u0001\u0000\u0000\u0000\u010c\u010f\u0003=\u001e\u0000\u010d"+ + "\u010f\u0003?\u001f\u0000\u010e\u010c\u0001\u0000\u0000\u0000\u010e\u010d"+ + "\u0001\u0000\u0000\u0000\u010f\u0111\u0001\u0000\u0000\u0000\u0110\u00f3"+ + "\u0001\u0000\u0000\u0000\u0110\u0102\u0001\u0000\u0000\u0000\u0111:\u0001"+ + "\u0000\u0000\u0000\u0112\u0113\u0007\u0004\u0000\u0000\u0113<\u0001\u0000"+ + "\u0000\u0000\u0114\u0118\u0005\'\u0000\u0000\u0115\u0117\t\u0000\u0000"+ + "\u0000\u0116\u0115\u0001\u0000\u0000\u0000\u0117\u011a\u0001\u0000\u0000"+ + "\u0000\u0118\u0119\u0001\u0000\u0000\u0000\u0118\u0116\u0001\u0000\u0000"+ + "\u0000\u0119\u011b\u0001\u0000\u0000\u0000\u011a\u0118\u0001\u0000\u0000"+ + "\u0000\u011b\u011c\u0005\'\u0000\u0000\u011c>\u0001\u0000\u0000\u0000"+ + "\u011d\u0121\u0005\"\u0000\u0000\u011e\u0120\t\u0000\u0000\u0000\u011f"+ + "\u011e\u0001\u0000\u0000\u0000\u0120\u0123\u0001\u0000\u0000\u0000\u0121"+ + "\u0122\u0001\u0000\u0000\u0000\u0121\u011f\u0001\u0000\u0000\u0000\u0122"+ + "\u0124\u0001\u0000\u0000\u0000\u0123\u0121\u0001\u0000\u0000\u0000\u0124"+ + "\u0125\u0005\"\u0000\u0000\u0125@\u0001\u0000\u0000\u0000\u001a\u0000"+ "GMW_gq}\u0097\u00b1\u00d5\u00db\u00e2\u00e7\u00ec\u00f3\u00f5\u00fb\u00fd"+ - "\u0106\u010f\u0001\u0006\u0000\u0000"; + "\u0102\u0108\u010a\u010e\u0110\u0118\u0121\u0001\u0006\u0000\u0000"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/src/main/java/com/github/sidhant92/boolparser/parser/antlr/BooleanFilterListener.java b/src/main/java/com/github/sidhant92/boolparser/parser/antlr/BooleanFilterListener.java index 4f06e0a..70de966 100644 --- a/src/main/java/com/github/sidhant92/boolparser/parser/antlr/BooleanFilterListener.java +++ b/src/main/java/com/github/sidhant92/boolparser/parser/antlr/BooleanFilterListener.java @@ -212,7 +212,7 @@ public void exitParse(BooleanExpressionParser.ParseContext ctx) { } } if (this.node == null && tokenCount == 1 && lastToken instanceof CommonToken) { - this.node = StringNode.builder().field((lastToken.getText())).build(); + this.node = StringNode.builder().field(ValueUtils.convertValue(lastToken.getText(), DataType.STRING).toString()).build(); } if (this.node == null) { log.error("Error parsing expression for the string {}", ctx.getText()); diff --git a/src/main/java/resources/BooleanExpression.g4 b/src/main/java/resources/BooleanExpression.g4 index c0007c9..34b4821 100644 --- a/src/main/java/resources/BooleanExpression.g4 +++ b/src/main/java/resources/BooleanExpression.g4 @@ -90,7 +90,7 @@ DECIMAL : [0-9]+ '.' [0-9]+; APP_VERSION : [0-9] ('.' INTEGER)+; INTEGER : [0-9]+; WS : [ \r\t\u000C\n]+ -> skip; -WORD : (ALPHANUMERIC | SQ | DQ)+ (ALPHANUMERIC | '_' | '-' | '.' | SQ | DQ)*; +WORD : ( ((ALPHANUMERIC | SQ | DQ)+ (ALPHANUMERIC | '_' | '.' | SQ | DQ)*) | (SQ | DQ) (ALPHANUMERIC | '_' | '-' | '.' | SQ | DQ)+ (SQ | DQ)); ALPHANUMERIC : [a-zA-Z0-9]; SQ : '\''.*? '\''; DQ : '"'.*? '"'; diff --git a/src/test/java/com/github/sidhant92/boolparser/application/ArithmeticExpressionEvaluatorTest.java b/src/test/java/com/github/sidhant92/boolparser/application/ArithmeticExpressionEvaluatorTest.java index 1922cf3..d8ba8f4 100644 --- a/src/test/java/com/github/sidhant92/boolparser/application/ArithmeticExpressionEvaluatorTest.java +++ b/src/test/java/com/github/sidhant92/boolparser/application/ArithmeticExpressionEvaluatorTest.java @@ -97,6 +97,26 @@ public void testSimpleSubtractOperationWithVariable() { assertEquals(resultOptional.get(), 5); } + @Test + public void testSimpleSubtractOperationWithTwoVariable() { + final Map data = new HashMap<>(); + data.put("a", 10); + data.put("b", 5); + final Try resultOptional = arithmeticExpressionEvaluator.evaluate("a-b", data); + assertTrue(resultOptional.isSuccess()); + assertEquals(resultOptional.get(), 5); + } + + @Test + public void testStringEvaluation() { + final Map data = new HashMap<>(); + data.put("a", 10); + data.put("b", 5); + final Try resultOptional = arithmeticExpressionEvaluator.evaluate("\"a-b\"", data); + assertTrue(resultOptional.isSuccess()); + assertEquals(resultOptional.get(), "a-b"); + } + @Test public void testSimpleMultiplyOperationWithVariable() { final Map data = new HashMap<>(); diff --git a/src/test/java/com/github/sidhant92/boolparser/application/BooleanExpressionEvaluatorTest.java b/src/test/java/com/github/sidhant92/boolparser/application/BooleanExpressionEvaluatorTest.java index 3058f28..2d6a391 100644 --- a/src/test/java/com/github/sidhant92/boolparser/application/BooleanExpressionEvaluatorTest.java +++ b/src/test/java/com/github/sidhant92/boolparser/application/BooleanExpressionEvaluatorTest.java @@ -62,7 +62,7 @@ public void testSimpleTrueCorrectExpression() { public void testSimpleTrueCorrectExpressions() { final Map data = new HashMap<>(); data.put("name", "abc-"); - final Try booleanOptional = booleanExpressionEvaluator.evaluate("name = abc-", data); + final Try booleanOptional = booleanExpressionEvaluator.evaluate("name = 'abc-'", data); assertTrue(booleanOptional.isSuccess()); assertTrue(booleanOptional.get()); }