From 16fcae826df8ff65a36c6f2a7e2e9985999a40cf Mon Sep 17 00:00:00 2001 From: Sidhant Aggarwal <10743214+sidhant92@users.noreply.github.com> Date: Mon, 18 Mar 2024 12:14:59 +0530 Subject: [PATCH] unary node without space --- .../parser/antlr/BooleanExpressionLexer.java | 277 +++++++++--------- src/main/java/resources/BooleanExpression.g4 | 2 +- .../ArithmeticExpressionEvaluatorTest.java | 18 ++ 3 files changed, 161 insertions(+), 136 deletions(-) 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 cbc3ebd..6d3d467 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 \u010c\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+ + "\u0004\u0000 \u0114\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"+ @@ -151,140 +151,147 @@ public BooleanExpressionLexer(CharStream input) { "\u0019\u00e1\b\u0019\u000b\u0019\f\u0019\u00e2\u0001\u001a\u0004\u001a"+ "\u00e6\b\u001a\u000b\u001a\f\u001a\u00e7\u0001\u001b\u0004\u001b\u00eb"+ "\b\u001b\u000b\u001b\f\u001b\u00ec\u0001\u001b\u0001\u001b\u0001\u001c"+ - "\u0001\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u00f5\b\u001c\u000b\u001c"+ - "\f\u001c\u00f6\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0005\u001e"+ - "\u00fd\b\u001e\n\u001e\f\u001e\u0100\t\u001e\u0001\u001e\u0001\u001e\u0001"+ - "\u001f\u0001\u001f\u0005\u001f\u0106\b\u001f\n\u001f\f\u001f\u0109\t\u001f"+ - "\u0001\u001f\u0001\u001f\u0002\u00fe\u0107\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\u001b"+ - "7\u001c9\u001d;\u001e=\u001f? \u0001\u0000\u0004\u0001\u000009\u0003\u0000"+ - "\t\n\f\r \u0002\u0000-.__\u0003\u000009AZaz\u0121\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\u0000"+ - "1\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"+ - "\u00001\u00d3\u0001\u0000\u0000\u00003\u00dd\u0001\u0000\u0000\u00005"+ - "\u00e5\u0001\u0000\u0000\u00007\u00ea\u0001\u0000\u0000\u00009\u00f4\u0001"+ - "\u0000\u0000\u0000;\u00f8\u0001\u0000\u0000\u0000=\u00fa\u0001\u0000\u0000"+ - "\u0000?\u0103\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\u0005"+ - "O\u0000\u0000KL\u0005t\u0000\u0000LN\u0005o\u0000\u0000MI\u0001\u0000"+ - "\u0000\u0000MK\u0001\u0000\u0000\u0000N\u0006\u0001\u0000\u0000\u0000"+ - "OP\u0005A\u0000\u0000PQ\u0005N\u0000\u0000QX\u0005D\u0000\u0000RS\u0005"+ - "a\u0000\u0000ST\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`\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\u0000bc\u0005O\u0000\u0000ch\u0005T\u0000\u0000"+ - "de\u0005n\u0000\u0000ef\u0005o\u0000\u0000fh\u0005t\u0000\u0000ga\u0001"+ - "\u0000\u0000\u0000gd\u0001\u0000\u0000\u0000h\f\u0001\u0000\u0000\u0000"+ - "ij\u0005T\u0000\u0000jk\u0005R\u0000\u0000kl\u0005U\u0000\u0000lr\u0005"+ - "E\u0000\u0000mn\u0005t\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\u0000"+ - "xy\u0005f\u0000\u0000yz\u0005a\u0000\u0000z{\u0005l\u0000\u0000{|\u0005"+ - "s\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\u0005"+ - "O\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\u0005"+ - "t\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\u0005"+ - "n\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\u00ef8\u0001\u0000\u0000\u0000\u00f0\u00f5\u0003;\u001d\u0000"+ - "\u00f1\u00f5\u0007\u0002\u0000\u0000\u00f2\u00f5\u0003=\u001e\u0000\u00f3"+ - "\u00f5\u0003?\u001f\u0000\u00f4\u00f0\u0001\u0000\u0000\u0000\u00f4\u00f1"+ - "\u0001\u0000\u0000\u0000\u00f4\u00f2\u0001\u0000\u0000\u0000\u00f4\u00f3"+ - "\u0001\u0000\u0000\u0000\u00f5\u00f6\u0001\u0000\u0000\u0000\u00f6\u00f4"+ - "\u0001\u0000\u0000\u0000\u00f6\u00f7\u0001\u0000\u0000\u0000\u00f7:\u0001"+ - "\u0000\u0000\u0000\u00f8\u00f9\u0007\u0003\u0000\u0000\u00f9<\u0001\u0000"+ - "\u0000\u0000\u00fa\u00fe\u0005\'\u0000\u0000\u00fb\u00fd\t\u0000\u0000"+ - "\u0000\u00fc\u00fb\u0001\u0000\u0000\u0000\u00fd\u0100\u0001\u0000\u0000"+ - "\u0000\u00fe\u00ff\u0001\u0000\u0000\u0000\u00fe\u00fc\u0001\u0000\u0000"+ - "\u0000\u00ff\u0101\u0001\u0000\u0000\u0000\u0100\u00fe\u0001\u0000\u0000"+ - "\u0000\u0101\u0102\u0005\'\u0000\u0000\u0102>\u0001\u0000\u0000\u0000"+ - "\u0103\u0107\u0005\"\u0000\u0000\u0104\u0106\t\u0000\u0000\u0000\u0105"+ - "\u0104\u0001\u0000\u0000\u0000\u0106\u0109\u0001\u0000\u0000\u0000\u0107"+ - "\u0108\u0001\u0000\u0000\u0000\u0107\u0105\u0001\u0000\u0000\u0000\u0108"+ - "\u010a\u0001\u0000\u0000\u0000\u0109\u0107\u0001\u0000\u0000\u0000\u010a"+ - "\u010b\u0005\"\u0000\u0000\u010b@\u0001\u0000\u0000\u0000\u0013\u0000"+ - "GMW_gq}\u0097\u00b1\u00d5\u00db\u00e2\u00e7\u00ec\u00f4\u00f6\u00fe\u0107"+ - "\u0001\u0006\u0000\u0000"; + "\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"+ + "GMW_gq}\u0097\u00b1\u00d5\u00db\u00e2\u00e7\u00ec\u00f3\u00f5\u00fb\u00fd"+ + "\u0106\u010f\u0001\u0006\u0000\u0000"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/src/main/java/resources/BooleanExpression.g4 b/src/main/java/resources/BooleanExpression.g4 index d500a21..c0007c9 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)+; +WORD : (ALPHANUMERIC | SQ | DQ)+ (ALPHANUMERIC | '_' | '-' | '.' | 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 5a67421..1922cf3 100644 --- a/src/test/java/com/github/sidhant92/boolparser/application/ArithmeticExpressionEvaluatorTest.java +++ b/src/test/java/com/github/sidhant92/boolparser/application/ArithmeticExpressionEvaluatorTest.java @@ -196,4 +196,22 @@ public void testExpressionWithNestedUnaryNode1() { assertTrue(resultOptional.isSuccess()); assertEquals(resultOptional.get(), "test"); } + + @Test + public void testUnaryNode() { + final Map data = new HashMap<>(); + data.put("a", 10); + final Try resultOptional = arithmeticExpressionEvaluator.evaluate("-a", data); + assertTrue(resultOptional.isSuccess()); + assertEquals(resultOptional.get(), -10); + } + + @Test + public void testDoubleUnaryNode() { + final Map data = new HashMap<>(); + data.put("a", 10); + final Try resultOptional = arithmeticExpressionEvaluator.evaluate("--a", data); + assertTrue(resultOptional.isSuccess()); + assertEquals(resultOptional.get(), 10); + } }