f7
f7 is a spreadsheet formula execution library
git clone https://git.vogt.world/f7.git
Log | Files | README.md | LICENSE.md
← All files
name: src/main/js/antlr/F7Parser.js
-rw-r--r--
106064
   1// Generated from F7.g4 by ANTLR 4.7.2
   2// jshint ignore: start
   3var antlr4 = require("antlr4/index");
   4var F7Listener = require("./F7Listener").F7Listener;
   5var F7Visitor = require("./F7Visitor").F7Visitor;
   6
   7var grammarFileName = "F7.g4";
   8
   9var serializedATN = [
  10  "\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
  11  "\u0003!\u0121\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004\u0004\t",
  12  "\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t\u0007\u0004",
  13  "\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004\f\t\f\u0004",
  14  "\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010\t\u0010\u0004",
  15  "\u0011\t\u0011\u0004\u0012\t\u0012\u0003\u0002\u0003\u0002\u0003\u0002",
  16  "\u0003\u0003\u0003\u0003\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004",
  17  "\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0006\u0004",
  18  "3\n\u0004\r\u0004\u000e\u00044\u0005\u00047\n\u0004\u0003\u0004\u0003",
  19  "\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003",
  20  "\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003",
  21  "\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0006\u0004K",
  22  "\n\u0004\r\u0004\u000e\u0004L\u0007\u0004O\n\u0004\f\u0004\u000e\u0004",
  23  "R\u000b\u0004\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
  24  "\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
  25  "\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
  26  "\u0005\u0003\u0005\u0007\u0005f\n\u0005\f\u0005\u000e\u0005i\u000b\u0005",
  27  "\u0005\u0005k\n\u0005\u0003\u0005\u0003\u0005\u0005\u0005o\n\u0005\u0003",
  28  "\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003",
  29  "\u0006\u0003\u0006\u0005\u0006y\n\u0006\u0003\u0007\u0003\u0007\u0003",
  30  "\u0007\u0005\u0007~\n\u0007\u0003\u0007\u0005\u0007\u0081\n\u0007\u0003",
  31  "\u0007\u0003\u0007\u0005\u0007\u0085\n\u0007\u0003\u0007\u0003\u0007",
  32  "\u0003\u0007\u0005\u0007\u008a\n\u0007\u0003\u0007\u0003\u0007\u0005",
  33  "\u0007\u008e\n\u0007\u0003\u0007\u0003\u0007\u0003\b\u0003\b\u0003\b",
  34  "\u0005\b\u0095\n\b\u0003\b\u0005\b\u0098\n\b\u0003\b\u0003\b\u0005\b",
  35  "\u009c\n\b\u0003\b\u0003\b\u0003\t\u0003\t\u0003\t\u0005\t\u00a3\n\t",
  36  "\u0003\t\u0005\t\u00a6\n\t\u0003\t\u0003\t\u0003\t\u0005\t\u00ab\n\t",
  37  "\u0003\t\u0003\t\u0003\n\u0003\n\u0003\n\u0005\n\u00b2\n\n\u0003\n\u0005",
  38  "\n\u00b5\n\n\u0003\n\u0003\n\u0005\n\u00b9\n\n\u0003\n\u0003\n\u0003",
  39  "\n\u0005\n\u00be\n\n\u0003\n\u0003\n\u0003\u000b\u0003\u000b\u0003\u000b",
  40  "\u0005\u000b\u00c5\n\u000b\u0003\u000b\u0005\u000b\u00c8\n\u000b\u0003",
  41  "\u000b\u0003\u000b\u0003\u000b\u0005\u000b\u00cd\n\u000b\u0003\u000b",
  42  "\u0003\u000b\u0005\u000b\u00d1\n\u000b\u0003\u000b\u0003\u000b\u0003",
  43  "\f\u0003\f\u0003\f\u0005\f\u00d8\n\f\u0003\f\u0005\f\u00db\n\f\u0003",
  44  "\f\u0003\f\u0003\f\u0005\f\u00e0\n\f\u0003\f\u0003\f\u0003\r\u0003\r",
  45  "\u0003\r\u0005\r\u00e7\n\r\u0003\r\u0005\r\u00ea\n\r\u0003\r\u0003\r",
  46  "\u0005\r\u00ee\n\r\u0003\r\u0003\r\u0003\r\u0005\r\u00f3\n\r\u0003\r",
  47  "\u0003\r\u0003\u000e\u0003\u000e\u0003\u000e\u0005\u000e\u00fa\n\u000e",
  48  "\u0003\u000e\u0005\u000e\u00fd\n\u000e\u0003\u000e\u0003\u000e\u0003",
  49  "\u000e\u0005\u000e\u0102\n\u000e\u0003\u000e\u0003\u000e\u0005\u000e",
  50  "\u0106\n\u000e\u0003\u000e\u0003\u000e\u0003\u000f\u0003\u000f\u0003",
  51  "\u000f\u0007\u000f\u010d\n\u000f\f\u000f\u000e\u000f\u0110\u000b\u000f",
  52  "\u0005\u000f\u0112\n\u000f\u0003\u0010\u0003\u0010\u0005\u0010\u0116",
  53  "\n\u0010\u0003\u0011\u0003\u0011\u0007\u0011\u011a\n\u0011\f\u0011\u000e",
  54  "\u0011\u011d\u000b\u0011\u0003\u0012\u0003\u0012\u0003\u0012\u0002\u0003",
  55  "\u0006\u0013\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018",
  56  '\u001a\u001c\u001e "\u0002\u0007\u0003\u0002\u0016\u0017\u0003\u0002',
  57  "\u0012\u0013\u0004\u0002\u000e\u000e\u0010\u0010\u0004\u0002\u0003\u0005",
  58  "  \u0003\u0002\u0018\u001d\u0002\u014d\u0002$\u0003\u0002\u0002\u0002",
  59  "\u0004'\u0003\u0002\u0002\u0002\u00066\u0003\u0002\u0002\u0002\bn\u0003",
  60  "\u0002\u0002\u0002\nx\u0003\u0002\u0002\u0002\f}\u0003\u0002\u0002\u0002",
  61  "\u000e\u0094\u0003\u0002\u0002\u0002\u0010\u00a2\u0003\u0002\u0002\u0002",
  62  "\u0012\u00b1\u0003\u0002\u0002\u0002\u0014\u00c4\u0003\u0002\u0002\u0002",
  63  "\u0016\u00d7\u0003\u0002\u0002\u0002\u0018\u00e6\u0003\u0002\u0002\u0002",
  64  "\u001a\u00f9\u0003\u0002\u0002\u0002\u001c\u0111\u0003\u0002\u0002\u0002",
  65  "\u001e\u0115\u0003\u0002\u0002\u0002 \u0117\u0003\u0002\u0002\u0002",
  66  '"\u011e\u0003\u0002\u0002\u0002$%\u0005\u0004\u0003\u0002%&\u0007\u0002',
  67  "\u0002\u0003&\u0003\u0003\u0002\u0002\u0002'(\u0005\u0006\u0004\u0002",
  68  "(\u0005\u0003\u0002\u0002\u0002)*\b\u0004\u0001\u0002*+\u0007\u0013",
  69  "\u0002\u0002+7\u0005\u0006\u0004\f,-\u0007\u0012\u0002\u0002-7\u0005",
  70  "\u0006\u0004\u000b.7\u0005\b\u0005\u0002/2\u0005\b\u0005\u000201\u0007",
  71  "\u000f\u0002\u000213\u0005\b\u0005\u000220\u0003\u0002\u0002\u00023",
  72  "4\u0003\u0002\u0002\u000242\u0003\u0002\u0002\u000245\u0003\u0002\u0002",
  73  "\u000257\u0003\u0002\u0002\u00026)\u0003\u0002\u0002\u00026,\u0003\u0002",
  74  "\u0002\u00026.\u0003\u0002\u0002\u00026/\u0003\u0002\u0002\u00027P\u0003",
  75  "\u0002\u0002\u000289\f\t\u0002\u00029:\u0007\u0015\u0002\u0002:O\u0005",
  76  "\u0006\u0004\n;<\f\b\u0002\u0002<=\t\u0002\u0002\u0002=O\u0005\u0006",
  77  "\u0004\t>?\f\u0007\u0002\u0002?@\t\u0003\u0002\u0002@O\u0005\u0006\u0004",
  78  '\bAB\f\u0006\u0002\u0002BC\u0005"\u0012\u0002CD\u0005\u0006\u0004\u0007',
  79  "DO\u0003\u0002\u0002\u0002EF\f\u0005\u0002\u0002FG\u0007\u001e\u0002",
  80  "\u0002GO\u0005\u0006\u0004\u0006HJ\f\n\u0002\u0002IK\u0007\u0014\u0002",
  81  "\u0002JI\u0003\u0002\u0002\u0002KL\u0003\u0002\u0002\u0002LJ\u0003\u0002",
  82  "\u0002\u0002LM\u0003\u0002\u0002\u0002MO\u0003\u0002\u0002\u0002N8\u0003",
  83  "\u0002\u0002\u0002N;\u0003\u0002\u0002\u0002N>\u0003\u0002\u0002\u0002",
  84  "NA\u0003\u0002\u0002\u0002NE\u0003\u0002\u0002\u0002NH\u0003\u0002\u0002",
  85  "\u0002OR\u0003\u0002\u0002\u0002PN\u0003\u0002\u0002\u0002PQ\u0003\u0002",
  86  "\u0002\u0002Q\u0007\u0003\u0002\u0002\u0002RP\u0003\u0002\u0002\u0002",
  87  "So\u0005\n\u0006\u0002To\u0007\b\u0002\u0002Uo\u0007\t\u0002\u0002V",
  88  "o\u0007\u0005\u0002\u0002Wo\u0007\u0006\u0002\u0002XY\u0007\n\u0002",
  89  "\u0002YZ\u0005\u0006\u0004\u0002Z[\u0007\u000b\u0002\u0002[o\u0003\u0002",
  90  "\u0002\u0002\\]\u0005 \u0011\u0002]^\u0007\n\u0002\u0002^_\u0005\u001c",
  91  "\u000f\u0002_`\u0007\u000b\u0002\u0002`o\u0003\u0002\u0002\u0002aj\u0007",
  92  "\f\u0002\u0002bg\u0005\u0006\u0004\u0002cd\t\u0004\u0002\u0002df\u0005",
  93  "\u0006\u0004\u0002ec\u0003\u0002\u0002\u0002fi\u0003\u0002\u0002\u0002",
  94  "ge\u0003\u0002\u0002\u0002gh\u0003\u0002\u0002\u0002hk\u0003\u0002\u0002",
  95  "\u0002ig\u0003\u0002\u0002\u0002jb\u0003\u0002\u0002\u0002jk\u0003\u0002",
  96  "\u0002\u0002kl\u0003\u0002\u0002\u0002lo\u0007\r\u0002\u0002mo\u0005",
  97  " \u0011\u0002nS\u0003\u0002\u0002\u0002nT\u0003\u0002\u0002\u0002nU",
  98  "\u0003\u0002\u0002\u0002nV\u0003\u0002\u0002\u0002nW\u0003\u0002\u0002",
  99  "\u0002nX\u0003\u0002\u0002\u0002n\\\u0003\u0002\u0002\u0002na\u0003",
 100  "\u0002\u0002\u0002nm\u0003\u0002\u0002\u0002o\t\u0003\u0002\u0002\u0002",
 101  "py\u0005\f\u0007\u0002qy\u0005\u000e\b\u0002ry\u0005\u0010\t\u0002s",
 102  "y\u0005\u0012\n\u0002ty\u0005\u0014\u000b\u0002uy\u0005\u0016\f\u0002",
 103  "vy\u0005\u0018\r\u0002wy\u0005\u001a\u000e\u0002xp\u0003\u0002\u0002",
 104  "\u0002xq\u0003\u0002\u0002\u0002xr\u0003\u0002\u0002\u0002xs\u0003\u0002",
 105  "\u0002\u0002xt\u0003\u0002\u0002\u0002xu\u0003\u0002\u0002\u0002xv\u0003",
 106  "\u0002\u0002\u0002xw\u0003\u0002\u0002\u0002y\u000b\u0003\u0002\u0002",
 107  "\u0002z{\u0005\u001e\u0010\u0002{|\u0007\u0011\u0002\u0002|~\u0003\u0002",
 108  "\u0002\u0002}z\u0003\u0002\u0002\u0002}~\u0003\u0002\u0002\u0002~\u0080",
 109  "\u0003\u0002\u0002\u0002\u007f\u0081\u0007\u001f\u0002\u0002\u0080\u007f",
 110  "\u0003\u0002\u0002\u0002\u0080\u0081\u0003\u0002\u0002\u0002\u0081\u0082",
 111  "\u0003\u0002\u0002\u0002\u0082\u0084\u0007\u0003\u0002\u0002\u0083\u0085",
 112  "\u0007\u001f\u0002\u0002\u0084\u0083\u0003\u0002\u0002\u0002\u0084\u0085",
 113  "\u0003\u0002\u0002\u0002\u0085\u0086\u0003\u0002\u0002\u0002\u0086\u0087",
 114  "\u0007\u0005\u0002\u0002\u0087\u0089\u0007\u000f\u0002\u0002\u0088\u008a",
 115  "\u0007\u001f\u0002\u0002\u0089\u0088\u0003\u0002\u0002\u0002\u0089\u008a",
 116  "\u0003\u0002\u0002\u0002\u008a\u008b\u0003\u0002\u0002\u0002\u008b\u008d",
 117  "\u0007\u0003\u0002\u0002\u008c\u008e\u0007\u001f\u0002\u0002\u008d\u008c",
 118  "\u0003\u0002\u0002\u0002\u008d\u008e\u0003\u0002\u0002\u0002\u008e\u008f",
 119  "\u0003\u0002\u0002\u0002\u008f\u0090\u0007\u0005\u0002\u0002\u0090\r",
 120  "\u0003\u0002\u0002\u0002\u0091\u0092\u0005\u001e\u0010\u0002\u0092\u0093",
 121  "\u0007\u0011\u0002\u0002\u0093\u0095\u0003\u0002\u0002\u0002\u0094\u0091",
 122  "\u0003\u0002\u0002\u0002\u0094\u0095\u0003\u0002\u0002\u0002\u0095\u0097",
 123  "\u0003\u0002\u0002\u0002\u0096\u0098\u0007\u001f\u0002\u0002\u0097\u0096",
 124  "\u0003\u0002\u0002\u0002\u0097\u0098\u0003\u0002\u0002\u0002\u0098\u0099",
 125  "\u0003\u0002\u0002\u0002\u0099\u009b\u0007\u0003\u0002\u0002\u009a\u009c",
 126  "\u0007\u001f\u0002\u0002\u009b\u009a\u0003\u0002\u0002\u0002\u009b\u009c",
 127  "\u0003\u0002\u0002\u0002\u009c\u009d\u0003\u0002\u0002\u0002\u009d\u009e",
 128  "\u0007\u0005\u0002\u0002\u009e\u000f\u0003\u0002\u0002\u0002\u009f\u00a0",
 129  "\u0005\u001e\u0010\u0002\u00a0\u00a1\u0007\u0011\u0002\u0002\u00a1\u00a3",
 130  "\u0003\u0002\u0002\u0002\u00a2\u009f\u0003\u0002\u0002\u0002\u00a2\u00a3",
 131  "\u0003\u0002\u0002\u0002\u00a3\u00a5\u0003\u0002\u0002\u0002\u00a4\u00a6",
 132  "\u0007\u001f\u0002\u0002\u00a5\u00a4\u0003\u0002\u0002\u0002\u00a5\u00a6",
 133  "\u0003\u0002\u0002\u0002\u00a6\u00a7\u0003\u0002\u0002\u0002\u00a7\u00a8",
 134  "\u0007\u0003\u0002\u0002\u00a8\u00aa\u0007\u000f\u0002\u0002\u00a9\u00ab",
 135  "\u0007\u001f\u0002\u0002\u00aa\u00a9\u0003\u0002\u0002\u0002\u00aa\u00ab",
 136  "\u0003\u0002\u0002\u0002\u00ab\u00ac\u0003\u0002\u0002\u0002\u00ac\u00ad",
 137  "\u0007\u0003\u0002\u0002\u00ad\u0011\u0003\u0002\u0002\u0002\u00ae\u00af",
 138  "\u0005\u001e\u0010\u0002\u00af\u00b0\u0007\u0011\u0002\u0002\u00b0\u00b2",
 139  "\u0003\u0002\u0002\u0002\u00b1\u00ae\u0003\u0002\u0002\u0002\u00b1\u00b2",
 140  "\u0003\u0002\u0002\u0002\u00b2\u00b4\u0003\u0002\u0002\u0002\u00b3\u00b5",
 141  "\u0007\u001f\u0002\u0002\u00b4\u00b3\u0003\u0002\u0002\u0002\u00b4\u00b5",
 142  "\u0003\u0002\u0002\u0002\u00b5\u00b6\u0003\u0002\u0002\u0002\u00b6\u00b8",
 143  "\u0007\u0003\u0002\u0002\u00b7\u00b9\u0007\u001f\u0002\u0002\u00b8\u00b7",
 144  "\u0003\u0002\u0002\u0002\u00b8\u00b9\u0003\u0002\u0002\u0002\u00b9\u00ba",
 145  "\u0003\u0002\u0002\u0002\u00ba\u00bb\u0007\u0005\u0002\u0002\u00bb\u00bd",
 146  "\u0007\u000f\u0002\u0002\u00bc\u00be\u0007\u001f\u0002\u0002\u00bd\u00bc",
 147  "\u0003\u0002\u0002\u0002\u00bd\u00be\u0003\u0002\u0002\u0002\u00be\u00bf",
 148  "\u0003\u0002\u0002\u0002\u00bf\u00c0\u0007\u0003\u0002\u0002\u00c0\u0013",
 149  "\u0003\u0002\u0002\u0002\u00c1\u00c2\u0005\u001e\u0010\u0002\u00c2\u00c3",
 150  "\u0007\u0011\u0002\u0002\u00c3\u00c5\u0003\u0002\u0002\u0002\u00c4\u00c1",
 151  "\u0003\u0002\u0002\u0002\u00c4\u00c5\u0003\u0002\u0002\u0002\u00c5\u00c7",
 152  "\u0003\u0002\u0002\u0002\u00c6\u00c8\u0007\u001f\u0002\u0002\u00c7\u00c6",
 153  "\u0003\u0002\u0002\u0002\u00c7\u00c8\u0003\u0002\u0002\u0002\u00c8\u00c9",
 154  "\u0003\u0002\u0002\u0002\u00c9\u00ca\u0007\u0003\u0002\u0002\u00ca\u00cc",
 155  "\u0007\u000f\u0002\u0002\u00cb\u00cd\u0007\u001f\u0002\u0002\u00cc\u00cb",
 156  "\u0003\u0002\u0002\u0002\u00cc\u00cd\u0003\u0002\u0002\u0002\u00cd\u00ce",
 157  "\u0003\u0002\u0002\u0002\u00ce\u00d0\u0007\u0003\u0002\u0002\u00cf\u00d1",
 158  "\u0007\u001f\u0002\u0002\u00d0\u00cf\u0003\u0002\u0002\u0002\u00d0\u00d1",
 159  "\u0003\u0002\u0002\u0002\u00d1\u00d2\u0003\u0002\u0002\u0002\u00d2\u00d3",
 160  "\u0007\u0005\u0002\u0002\u00d3\u0015\u0003\u0002\u0002\u0002\u00d4\u00d5",
 161  "\u0005\u001e\u0010\u0002\u00d5\u00d6\u0007\u0011\u0002\u0002\u00d6\u00d8",
 162  "\u0003\u0002\u0002\u0002\u00d7\u00d4\u0003\u0002\u0002\u0002\u00d7\u00d8",
 163  "\u0003\u0002\u0002\u0002\u00d8\u00da\u0003\u0002\u0002\u0002\u00d9\u00db",
 164  "\u0007\u001f\u0002\u0002\u00da\u00d9\u0003\u0002\u0002\u0002\u00da\u00db",
 165  "\u0003\u0002\u0002\u0002\u00db\u00dc\u0003\u0002\u0002\u0002\u00dc\u00dd",
 166  "\u0007\u0005\u0002\u0002\u00dd\u00df\u0007\u000f\u0002\u0002\u00de\u00e0",
 167  "\u0007\u001f\u0002\u0002\u00df\u00de\u0003\u0002\u0002\u0002\u00df\u00e0",
 168  "\u0003\u0002\u0002\u0002\u00e0\u00e1\u0003\u0002\u0002\u0002\u00e1\u00e2",
 169  "\u0007\u0005\u0002\u0002\u00e2\u0017\u0003\u0002\u0002\u0002\u00e3\u00e4",
 170  "\u0005\u001e\u0010\u0002\u00e4\u00e5\u0007\u0011\u0002\u0002\u00e5\u00e7",
 171  "\u0003\u0002\u0002\u0002\u00e6\u00e3\u0003\u0002\u0002\u0002\u00e6\u00e7",
 172  "\u0003\u0002\u0002\u0002\u00e7\u00e9\u0003\u0002\u0002\u0002\u00e8\u00ea",
 173  "\u0007\u001f\u0002\u0002\u00e9\u00e8\u0003\u0002\u0002\u0002\u00e9\u00ea",
 174  "\u0003\u0002\u0002\u0002\u00ea\u00eb\u0003\u0002\u0002\u0002\u00eb\u00ed",
 175  "\u0007\u0003\u0002\u0002\u00ec\u00ee\u0007\u001f\u0002\u0002\u00ed\u00ec",
 176  "\u0003\u0002\u0002\u0002\u00ed\u00ee\u0003\u0002\u0002\u0002\u00ee\u00ef",
 177  "\u0003\u0002\u0002\u0002\u00ef\u00f0\u0007\u0005\u0002\u0002\u00f0\u00f2",
 178  "\u0007\u000f\u0002\u0002\u00f1\u00f3\u0007\u001f\u0002\u0002\u00f2\u00f1",
 179  "\u0003\u0002\u0002\u0002\u00f2\u00f3\u0003\u0002\u0002\u0002\u00f3\u00f4",
 180  "\u0003\u0002\u0002\u0002\u00f4\u00f5\u0007\u0005\u0002\u0002\u00f5\u0019",
 181  "\u0003\u0002\u0002\u0002\u00f6\u00f7\u0005\u001e\u0010\u0002\u00f7\u00f8",
 182  "\u0007\u0011\u0002\u0002\u00f8\u00fa\u0003\u0002\u0002\u0002\u00f9\u00f6",
 183  "\u0003\u0002\u0002\u0002\u00f9\u00fa\u0003\u0002\u0002\u0002\u00fa\u00fc",
 184  "\u0003\u0002\u0002\u0002\u00fb\u00fd\u0007\u001f\u0002\u0002\u00fc\u00fb",
 185  "\u0003\u0002\u0002\u0002\u00fc\u00fd\u0003\u0002\u0002\u0002\u00fd\u00fe",
 186  "\u0003\u0002\u0002\u0002\u00fe\u00ff\u0007\u0005\u0002\u0002\u00ff\u0101",
 187  "\u0007\u000f\u0002\u0002\u0100\u0102\u0007\u001f\u0002\u0002\u0101\u0100",
 188  "\u0003\u0002\u0002\u0002\u0101\u0102\u0003\u0002\u0002\u0002\u0102\u0103",
 189  "\u0003\u0002\u0002\u0002\u0103\u0105\u0007\u0003\u0002\u0002\u0104\u0106",
 190  "\u0007\u001f\u0002\u0002\u0105\u0104\u0003\u0002\u0002\u0002\u0105\u0106",
 191  "\u0003\u0002\u0002\u0002\u0106\u0107\u0003\u0002\u0002\u0002\u0107\u0108",
 192  "\u0007\u0005\u0002\u0002\u0108\u001b\u0003\u0002\u0002\u0002\u0109\u010e",
 193  "\u0005\u0006\u0004\u0002\u010a\u010b\u0007\u000e\u0002\u0002\u010b\u010d",
 194  "\u0005\u0006\u0004\u0002\u010c\u010a\u0003\u0002\u0002\u0002\u010d\u0110",
 195  "\u0003\u0002\u0002\u0002\u010e\u010c\u0003\u0002\u0002\u0002\u010e\u010f",
 196  "\u0003\u0002\u0002\u0002\u010f\u0112\u0003\u0002\u0002\u0002\u0110\u010e",
 197  "\u0003\u0002\u0002\u0002\u0111\u0109\u0003\u0002\u0002\u0002\u0111\u0112",
 198  "\u0003\u0002\u0002\u0002\u0112\u001d\u0003\u0002\u0002\u0002\u0113\u0116",
 199  "\u0007\u0007\u0002\u0002\u0114\u0116\u0005 \u0011\u0002\u0115\u0113",
 200  "\u0003\u0002\u0002\u0002\u0115\u0114\u0003\u0002\u0002\u0002\u0116\u001f",
 201  "\u0003\u0002\u0002\u0002\u0117\u011b\u0007\u0003\u0002\u0002\u0118\u011a",
 202  "\t\u0005\u0002\u0002\u0119\u0118\u0003\u0002\u0002\u0002\u011a\u011d",
 203  "\u0003\u0002\u0002\u0002\u011b\u0119\u0003\u0002\u0002\u0002\u011b\u011c",
 204  "\u0003\u0002\u0002\u0002\u011c!\u0003\u0002\u0002\u0002\u011d\u011b",
 205  "\u0003\u0002\u0002\u0002\u011e\u011f\t\u0006\u0002\u0002\u011f#\u0003",
 206  "\u0002\u0002\u0002-46LNPgjnx}\u0080\u0084\u0089\u008d\u0094\u0097\u009b",
 207  "\u00a2\u00a5\u00aa\u00b1\u00b4\u00b8\u00bd\u00c4\u00c7\u00cc\u00d0\u00d7",
 208  "\u00da\u00df\u00e6\u00e9\u00ed\u00f2\u00f9\u00fc\u0101\u0105\u010e\u0111",
 209  "\u0115\u011b",
 210].join("");
 211
 212var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);
 213
 214var decisionsToDFA = atn.decisionToState.map(function (ds, index) {
 215  return new antlr4.dfa.DFA(ds, index);
 216});
 217
 218var sharedContextCache = new antlr4.PredictionContextCache();
 219
 220var literalNames = [null, null, "'.'"];
 221
 222var symbolicNames = [
 223  null,
 224  "NCharacters",
 225  "Dot",
 226  "Int",
 227  "Number",
 228  "SingleQuoteString",
 229  "String",
 230  "Error",
 231  "LeftParen",
 232  "RightParen",
 233  "LeftBrace",
 234  "RightBrace",
 235  "Comma",
 236  "Colon",
 237  "SemiColon",
 238  "Bang",
 239  "Plus",
 240  "Minus",
 241  "Percent",
 242  "Power",
 243  "Divide",
 244  "Multiply",
 245  "GreaterThan",
 246  "GreaterThanOrEqualTo",
 247  "LessThan",
 248  "LessThanOrEqualTO",
 249  "Equal",
 250  "NotEqual",
 251  "Ampersand",
 252  "Dollar",
 253  "Underscore",
 254  "WS",
 255];
 256
 257var ruleNames = [
 258  "start",
 259  "block",
 260  "expression",
 261  "atom",
 262  "range",
 263  "biRange",
 264  "uniRange",
 265  "columnWiseBiRange",
 266  "columnWiseWithRowOffsetFirstBiRange",
 267  "columnWiseWithRowOffsetLastBiRange",
 268  "rowWiseBiRange",
 269  "rowWiseWithColumnOffsetFirstBiRange",
 270  "rowWiseWithColumnOffsetLastBiRange",
 271  "arguments",
 272  "gridName",
 273  "identifier",
 274  "comparisonOperator",
 275];
 276
 277function F7Parser(input) {
 278  antlr4.Parser.call(this, input);
 279  this._interp = new antlr4.atn.ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache);
 280  this.ruleNames = ruleNames;
 281  this.literalNames = literalNames;
 282  this.symbolicNames = symbolicNames;
 283  return this;
 284}
 285
 286F7Parser.prototype = Object.create(antlr4.Parser.prototype);
 287F7Parser.prototype.constructor = F7Parser;
 288
 289Object.defineProperty(F7Parser.prototype, "atn", {
 290  get: function () {
 291    return atn;
 292  },
 293});
 294
 295F7Parser.EOF = antlr4.Token.EOF;
 296F7Parser.NCharacters = 1;
 297F7Parser.Dot = 2;
 298F7Parser.Int = 3;
 299F7Parser.Number = 4;
 300F7Parser.SingleQuoteString = 5;
 301F7Parser.String = 6;
 302F7Parser.Error = 7;
 303F7Parser.LeftParen = 8;
 304F7Parser.RightParen = 9;
 305F7Parser.LeftBrace = 10;
 306F7Parser.RightBrace = 11;
 307F7Parser.Comma = 12;
 308F7Parser.Colon = 13;
 309F7Parser.SemiColon = 14;
 310F7Parser.Bang = 15;
 311F7Parser.Plus = 16;
 312F7Parser.Minus = 17;
 313F7Parser.Percent = 18;
 314F7Parser.Power = 19;
 315F7Parser.Divide = 20;
 316F7Parser.Multiply = 21;
 317F7Parser.GreaterThan = 22;
 318F7Parser.GreaterThanOrEqualTo = 23;
 319F7Parser.LessThan = 24;
 320F7Parser.LessThanOrEqualTO = 25;
 321F7Parser.Equal = 26;
 322F7Parser.NotEqual = 27;
 323F7Parser.Ampersand = 28;
 324F7Parser.Dollar = 29;
 325F7Parser.Underscore = 30;
 326F7Parser.WS = 31;
 327
 328F7Parser.RULE_start = 0;
 329F7Parser.RULE_block = 1;
 330F7Parser.RULE_expression = 2;
 331F7Parser.RULE_atom = 3;
 332F7Parser.RULE_range = 4;
 333F7Parser.RULE_biRange = 5;
 334F7Parser.RULE_uniRange = 6;
 335F7Parser.RULE_columnWiseBiRange = 7;
 336F7Parser.RULE_columnWiseWithRowOffsetFirstBiRange = 8;
 337F7Parser.RULE_columnWiseWithRowOffsetLastBiRange = 9;
 338F7Parser.RULE_rowWiseBiRange = 10;
 339F7Parser.RULE_rowWiseWithColumnOffsetFirstBiRange = 11;
 340F7Parser.RULE_rowWiseWithColumnOffsetLastBiRange = 12;
 341F7Parser.RULE_arguments = 13;
 342F7Parser.RULE_gridName = 14;
 343F7Parser.RULE_identifier = 15;
 344F7Parser.RULE_comparisonOperator = 16;
 345
 346function StartContext(parser, parent, invokingState) {
 347  if (parent === undefined) {
 348    parent = null;
 349  }
 350  if (invokingState === undefined || invokingState === null) {
 351    invokingState = -1;
 352  }
 353  antlr4.ParserRuleContext.call(this, parent, invokingState);
 354  this.parser = parser;
 355  this.ruleIndex = F7Parser.RULE_start;
 356  return this;
 357}
 358
 359StartContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
 360StartContext.prototype.constructor = StartContext;
 361
 362StartContext.prototype.block = function () {
 363  return this.getTypedRuleContext(BlockContext, 0);
 364};
 365
 366StartContext.prototype.EOF = function () {
 367  return this.getToken(F7Parser.EOF, 0);
 368};
 369
 370StartContext.prototype.enterRule = function (listener) {
 371  if (listener instanceof F7Listener) {
 372    listener.enterStart(this);
 373  }
 374};
 375
 376StartContext.prototype.exitRule = function (listener) {
 377  if (listener instanceof F7Listener) {
 378    listener.exitStart(this);
 379  }
 380};
 381
 382StartContext.prototype.accept = function (visitor) {
 383  if (visitor instanceof F7Visitor) {
 384    return visitor.visitStart(this);
 385  } else {
 386    return visitor.visitChildren(this);
 387  }
 388};
 389
 390F7Parser.StartContext = StartContext;
 391
 392F7Parser.prototype.start = function () {
 393  var localctx = new StartContext(this, this._ctx, this.state);
 394  this.enterRule(localctx, 0, F7Parser.RULE_start);
 395  try {
 396    this.enterOuterAlt(localctx, 1);
 397    this.state = 34;
 398    this.block();
 399    this.state = 35;
 400    this.match(F7Parser.EOF);
 401  } catch (re) {
 402    if (re instanceof antlr4.error.RecognitionException) {
 403      localctx.exception = re;
 404      this._errHandler.reportError(this, re);
 405      this._errHandler.recover(this, re);
 406    } else {
 407      throw re;
 408    }
 409  } finally {
 410    this.exitRule();
 411  }
 412  return localctx;
 413};
 414
 415function BlockContext(parser, parent, invokingState) {
 416  if (parent === undefined) {
 417    parent = null;
 418  }
 419  if (invokingState === undefined || invokingState === null) {
 420    invokingState = -1;
 421  }
 422  antlr4.ParserRuleContext.call(this, parent, invokingState);
 423  this.parser = parser;
 424  this.ruleIndex = F7Parser.RULE_block;
 425  return this;
 426}
 427
 428BlockContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
 429BlockContext.prototype.constructor = BlockContext;
 430
 431BlockContext.prototype.expression = function () {
 432  return this.getTypedRuleContext(ExpressionContext, 0);
 433};
 434
 435BlockContext.prototype.enterRule = function (listener) {
 436  if (listener instanceof F7Listener) {
 437    listener.enterBlock(this);
 438  }
 439};
 440
 441BlockContext.prototype.exitRule = function (listener) {
 442  if (listener instanceof F7Listener) {
 443    listener.exitBlock(this);
 444  }
 445};
 446
 447BlockContext.prototype.accept = function (visitor) {
 448  if (visitor instanceof F7Visitor) {
 449    return visitor.visitBlock(this);
 450  } else {
 451    return visitor.visitChildren(this);
 452  }
 453};
 454
 455F7Parser.BlockContext = BlockContext;
 456
 457F7Parser.prototype.block = function () {
 458  var localctx = new BlockContext(this, this._ctx, this.state);
 459  this.enterRule(localctx, 2, F7Parser.RULE_block);
 460  try {
 461    this.enterOuterAlt(localctx, 1);
 462    this.state = 37;
 463    this.expression(0);
 464  } catch (re) {
 465    if (re instanceof antlr4.error.RecognitionException) {
 466      localctx.exception = re;
 467      this._errHandler.reportError(this, re);
 468      this._errHandler.recover(this, re);
 469    } else {
 470      throw re;
 471    }
 472  } finally {
 473    this.exitRule();
 474  }
 475  return localctx;
 476};
 477
 478function ExpressionContext(parser, parent, invokingState) {
 479  if (parent === undefined) {
 480    parent = null;
 481  }
 482  if (invokingState === undefined || invokingState === null) {
 483    invokingState = -1;
 484  }
 485  antlr4.ParserRuleContext.call(this, parent, invokingState);
 486  this.parser = parser;
 487  this.ruleIndex = F7Parser.RULE_expression;
 488  return this;
 489}
 490
 491ExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
 492ExpressionContext.prototype.constructor = ExpressionContext;
 493
 494ExpressionContext.prototype.copyFrom = function (ctx) {
 495  antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
 496};
 497
 498function UnaryPercentExpressionContext(parser, ctx) {
 499  ExpressionContext.call(this, parser);
 500  ExpressionContext.prototype.copyFrom.call(this, ctx);
 501  return this;
 502}
 503
 504UnaryPercentExpressionContext.prototype = Object.create(ExpressionContext.prototype);
 505UnaryPercentExpressionContext.prototype.constructor = UnaryPercentExpressionContext;
 506
 507F7Parser.UnaryPercentExpressionContext = UnaryPercentExpressionContext;
 508
 509UnaryPercentExpressionContext.prototype.expression = function () {
 510  return this.getTypedRuleContext(ExpressionContext, 0);
 511};
 512
 513UnaryPercentExpressionContext.prototype.Percent = function (i) {
 514  if (i === undefined) {
 515    i = null;
 516  }
 517  if (i === null) {
 518    return this.getTokens(F7Parser.Percent);
 519  } else {
 520    return this.getToken(F7Parser.Percent, i);
 521  }
 522};
 523
 524UnaryPercentExpressionContext.prototype.enterRule = function (listener) {
 525  if (listener instanceof F7Listener) {
 526    listener.enterUnaryPercentExpression(this);
 527  }
 528};
 529
 530UnaryPercentExpressionContext.prototype.exitRule = function (listener) {
 531  if (listener instanceof F7Listener) {
 532    listener.exitUnaryPercentExpression(this);
 533  }
 534};
 535
 536UnaryPercentExpressionContext.prototype.accept = function (visitor) {
 537  if (visitor instanceof F7Visitor) {
 538    return visitor.visitUnaryPercentExpression(this);
 539  } else {
 540    return visitor.visitChildren(this);
 541  }
 542};
 543
 544function UnaryMinusExpressionContext(parser, ctx) {
 545  ExpressionContext.call(this, parser);
 546  ExpressionContext.prototype.copyFrom.call(this, ctx);
 547  return this;
 548}
 549
 550UnaryMinusExpressionContext.prototype = Object.create(ExpressionContext.prototype);
 551UnaryMinusExpressionContext.prototype.constructor = UnaryMinusExpressionContext;
 552
 553F7Parser.UnaryMinusExpressionContext = UnaryMinusExpressionContext;
 554
 555UnaryMinusExpressionContext.prototype.Minus = function () {
 556  return this.getToken(F7Parser.Minus, 0);
 557};
 558
 559UnaryMinusExpressionContext.prototype.expression = function () {
 560  return this.getTypedRuleContext(ExpressionContext, 0);
 561};
 562UnaryMinusExpressionContext.prototype.enterRule = function (listener) {
 563  if (listener instanceof F7Listener) {
 564    listener.enterUnaryMinusExpression(this);
 565  }
 566};
 567
 568UnaryMinusExpressionContext.prototype.exitRule = function (listener) {
 569  if (listener instanceof F7Listener) {
 570    listener.exitUnaryMinusExpression(this);
 571  }
 572};
 573
 574UnaryMinusExpressionContext.prototype.accept = function (visitor) {
 575  if (visitor instanceof F7Visitor) {
 576    return visitor.visitUnaryMinusExpression(this);
 577  } else {
 578    return visitor.visitChildren(this);
 579  }
 580};
 581
 582function PowerExpressionContext(parser, ctx) {
 583  ExpressionContext.call(this, parser);
 584  this.left = null; // ExpressionContext;
 585  this.op = null; // Token;
 586  this.right = null; // ExpressionContext;
 587  ExpressionContext.prototype.copyFrom.call(this, ctx);
 588  return this;
 589}
 590
 591PowerExpressionContext.prototype = Object.create(ExpressionContext.prototype);
 592PowerExpressionContext.prototype.constructor = PowerExpressionContext;
 593
 594F7Parser.PowerExpressionContext = PowerExpressionContext;
 595
 596PowerExpressionContext.prototype.expression = function (i) {
 597  if (i === undefined) {
 598    i = null;
 599  }
 600  if (i === null) {
 601    return this.getTypedRuleContexts(ExpressionContext);
 602  } else {
 603    return this.getTypedRuleContext(ExpressionContext, i);
 604  }
 605};
 606
 607PowerExpressionContext.prototype.Power = function () {
 608  return this.getToken(F7Parser.Power, 0);
 609};
 610PowerExpressionContext.prototype.enterRule = function (listener) {
 611  if (listener instanceof F7Listener) {
 612    listener.enterPowerExpression(this);
 613  }
 614};
 615
 616PowerExpressionContext.prototype.exitRule = function (listener) {
 617  if (listener instanceof F7Listener) {
 618    listener.exitPowerExpression(this);
 619  }
 620};
 621
 622PowerExpressionContext.prototype.accept = function (visitor) {
 623  if (visitor instanceof F7Visitor) {
 624    return visitor.visitPowerExpression(this);
 625  } else {
 626    return visitor.visitChildren(this);
 627  }
 628};
 629
 630function UnaryPlusExpressionContext(parser, ctx) {
 631  ExpressionContext.call(this, parser);
 632  ExpressionContext.prototype.copyFrom.call(this, ctx);
 633  return this;
 634}
 635
 636UnaryPlusExpressionContext.prototype = Object.create(ExpressionContext.prototype);
 637UnaryPlusExpressionContext.prototype.constructor = UnaryPlusExpressionContext;
 638
 639F7Parser.UnaryPlusExpressionContext = UnaryPlusExpressionContext;
 640
 641UnaryPlusExpressionContext.prototype.Plus = function () {
 642  return this.getToken(F7Parser.Plus, 0);
 643};
 644
 645UnaryPlusExpressionContext.prototype.expression = function () {
 646  return this.getTypedRuleContext(ExpressionContext, 0);
 647};
 648UnaryPlusExpressionContext.prototype.enterRule = function (listener) {
 649  if (listener instanceof F7Listener) {
 650    listener.enterUnaryPlusExpression(this);
 651  }
 652};
 653
 654UnaryPlusExpressionContext.prototype.exitRule = function (listener) {
 655  if (listener instanceof F7Listener) {
 656    listener.exitUnaryPlusExpression(this);
 657  }
 658};
 659
 660UnaryPlusExpressionContext.prototype.accept = function (visitor) {
 661  if (visitor instanceof F7Visitor) {
 662    return visitor.visitUnaryPlusExpression(this);
 663  } else {
 664    return visitor.visitChildren(this);
 665  }
 666};
 667
 668function AtomExpressionContext(parser, ctx) {
 669  ExpressionContext.call(this, parser);
 670  ExpressionContext.prototype.copyFrom.call(this, ctx);
 671  return this;
 672}
 673
 674AtomExpressionContext.prototype = Object.create(ExpressionContext.prototype);
 675AtomExpressionContext.prototype.constructor = AtomExpressionContext;
 676
 677F7Parser.AtomExpressionContext = AtomExpressionContext;
 678
 679AtomExpressionContext.prototype.atom = function () {
 680  return this.getTypedRuleContext(AtomContext, 0);
 681};
 682AtomExpressionContext.prototype.enterRule = function (listener) {
 683  if (listener instanceof F7Listener) {
 684    listener.enterAtomExpression(this);
 685  }
 686};
 687
 688AtomExpressionContext.prototype.exitRule = function (listener) {
 689  if (listener instanceof F7Listener) {
 690    listener.exitAtomExpression(this);
 691  }
 692};
 693
 694AtomExpressionContext.prototype.accept = function (visitor) {
 695  if (visitor instanceof F7Visitor) {
 696    return visitor.visitAtomExpression(this);
 697  } else {
 698    return visitor.visitChildren(this);
 699  }
 700};
 701
 702function AdditiveExpressionContext(parser, ctx) {
 703  ExpressionContext.call(this, parser);
 704  this.left = null; // ExpressionContext;
 705  this.op = null; // Token;
 706  this.right = null; // ExpressionContext;
 707  ExpressionContext.prototype.copyFrom.call(this, ctx);
 708  return this;
 709}
 710
 711AdditiveExpressionContext.prototype = Object.create(ExpressionContext.prototype);
 712AdditiveExpressionContext.prototype.constructor = AdditiveExpressionContext;
 713
 714F7Parser.AdditiveExpressionContext = AdditiveExpressionContext;
 715
 716AdditiveExpressionContext.prototype.expression = function (i) {
 717  if (i === undefined) {
 718    i = null;
 719  }
 720  if (i === null) {
 721    return this.getTypedRuleContexts(ExpressionContext);
 722  } else {
 723    return this.getTypedRuleContext(ExpressionContext, i);
 724  }
 725};
 726
 727AdditiveExpressionContext.prototype.Plus = function () {
 728  return this.getToken(F7Parser.Plus, 0);
 729};
 730
 731AdditiveExpressionContext.prototype.Minus = function () {
 732  return this.getToken(F7Parser.Minus, 0);
 733};
 734AdditiveExpressionContext.prototype.enterRule = function (listener) {
 735  if (listener instanceof F7Listener) {
 736    listener.enterAdditiveExpression(this);
 737  }
 738};
 739
 740AdditiveExpressionContext.prototype.exitRule = function (listener) {
 741  if (listener instanceof F7Listener) {
 742    listener.exitAdditiveExpression(this);
 743  }
 744};
 745
 746AdditiveExpressionContext.prototype.accept = function (visitor) {
 747  if (visitor instanceof F7Visitor) {
 748    return visitor.visitAdditiveExpression(this);
 749  } else {
 750    return visitor.visitChildren(this);
 751  }
 752};
 753
 754function RelationalExpressionContext(parser, ctx) {
 755  ExpressionContext.call(this, parser);
 756  this.left = null; // ExpressionContext;
 757  this.op = null; // ComparisonOperatorContext;
 758  this.right = null; // ExpressionContext;
 759  ExpressionContext.prototype.copyFrom.call(this, ctx);
 760  return this;
 761}
 762
 763RelationalExpressionContext.prototype = Object.create(ExpressionContext.prototype);
 764RelationalExpressionContext.prototype.constructor = RelationalExpressionContext;
 765
 766F7Parser.RelationalExpressionContext = RelationalExpressionContext;
 767
 768RelationalExpressionContext.prototype.expression = function (i) {
 769  if (i === undefined) {
 770    i = null;
 771  }
 772  if (i === null) {
 773    return this.getTypedRuleContexts(ExpressionContext);
 774  } else {
 775    return this.getTypedRuleContext(ExpressionContext, i);
 776  }
 777};
 778
 779RelationalExpressionContext.prototype.comparisonOperator = function () {
 780  return this.getTypedRuleContext(ComparisonOperatorContext, 0);
 781};
 782RelationalExpressionContext.prototype.enterRule = function (listener) {
 783  if (listener instanceof F7Listener) {
 784    listener.enterRelationalExpression(this);
 785  }
 786};
 787
 788RelationalExpressionContext.prototype.exitRule = function (listener) {
 789  if (listener instanceof F7Listener) {
 790    listener.exitRelationalExpression(this);
 791  }
 792};
 793
 794RelationalExpressionContext.prototype.accept = function (visitor) {
 795  if (visitor instanceof F7Visitor) {
 796    return visitor.visitRelationalExpression(this);
 797  } else {
 798    return visitor.visitChildren(this);
 799  }
 800};
 801
 802function RangeExpressionContext(parser, ctx) {
 803  ExpressionContext.call(this, parser);
 804  this.separator = null; // Token;
 805  ExpressionContext.prototype.copyFrom.call(this, ctx);
 806  return this;
 807}
 808
 809RangeExpressionContext.prototype = Object.create(ExpressionContext.prototype);
 810RangeExpressionContext.prototype.constructor = RangeExpressionContext;
 811
 812F7Parser.RangeExpressionContext = RangeExpressionContext;
 813
 814RangeExpressionContext.prototype.atom = function (i) {
 815  if (i === undefined) {
 816    i = null;
 817  }
 818  if (i === null) {
 819    return this.getTypedRuleContexts(AtomContext);
 820  } else {
 821    return this.getTypedRuleContext(AtomContext, i);
 822  }
 823};
 824
 825RangeExpressionContext.prototype.Colon = function (i) {
 826  if (i === undefined) {
 827    i = null;
 828  }
 829  if (i === null) {
 830    return this.getTokens(F7Parser.Colon);
 831  } else {
 832    return this.getToken(F7Parser.Colon, i);
 833  }
 834};
 835
 836RangeExpressionContext.prototype.enterRule = function (listener) {
 837  if (listener instanceof F7Listener) {
 838    listener.enterRangeExpression(this);
 839  }
 840};
 841
 842RangeExpressionContext.prototype.exitRule = function (listener) {
 843  if (listener instanceof F7Listener) {
 844    listener.exitRangeExpression(this);
 845  }
 846};
 847
 848RangeExpressionContext.prototype.accept = function (visitor) {
 849  if (visitor instanceof F7Visitor) {
 850    return visitor.visitRangeExpression(this);
 851  } else {
 852    return visitor.visitChildren(this);
 853  }
 854};
 855
 856function MultiplicationExpressionContext(parser, ctx) {
 857  ExpressionContext.call(this, parser);
 858  this.left = null; // ExpressionContext;
 859  this.op = null; // Token;
 860  this.right = null; // ExpressionContext;
 861  ExpressionContext.prototype.copyFrom.call(this, ctx);
 862  return this;
 863}
 864
 865MultiplicationExpressionContext.prototype = Object.create(ExpressionContext.prototype);
 866MultiplicationExpressionContext.prototype.constructor = MultiplicationExpressionContext;
 867
 868F7Parser.MultiplicationExpressionContext = MultiplicationExpressionContext;
 869
 870MultiplicationExpressionContext.prototype.expression = function (i) {
 871  if (i === undefined) {
 872    i = null;
 873  }
 874  if (i === null) {
 875    return this.getTypedRuleContexts(ExpressionContext);
 876  } else {
 877    return this.getTypedRuleContext(ExpressionContext, i);
 878  }
 879};
 880
 881MultiplicationExpressionContext.prototype.Multiply = function () {
 882  return this.getToken(F7Parser.Multiply, 0);
 883};
 884
 885MultiplicationExpressionContext.prototype.Divide = function () {
 886  return this.getToken(F7Parser.Divide, 0);
 887};
 888MultiplicationExpressionContext.prototype.enterRule = function (listener) {
 889  if (listener instanceof F7Listener) {
 890    listener.enterMultiplicationExpression(this);
 891  }
 892};
 893
 894MultiplicationExpressionContext.prototype.exitRule = function (listener) {
 895  if (listener instanceof F7Listener) {
 896    listener.exitMultiplicationExpression(this);
 897  }
 898};
 899
 900MultiplicationExpressionContext.prototype.accept = function (visitor) {
 901  if (visitor instanceof F7Visitor) {
 902    return visitor.visitMultiplicationExpression(this);
 903  } else {
 904    return visitor.visitChildren(this);
 905  }
 906};
 907
 908function ConcatExpressionContext(parser, ctx) {
 909  ExpressionContext.call(this, parser);
 910  this.left = null; // ExpressionContext;
 911  this.op = null; // Token;
 912  this.right = null; // ExpressionContext;
 913  ExpressionContext.prototype.copyFrom.call(this, ctx);
 914  return this;
 915}
 916
 917ConcatExpressionContext.prototype = Object.create(ExpressionContext.prototype);
 918ConcatExpressionContext.prototype.constructor = ConcatExpressionContext;
 919
 920F7Parser.ConcatExpressionContext = ConcatExpressionContext;
 921
 922ConcatExpressionContext.prototype.expression = function (i) {
 923  if (i === undefined) {
 924    i = null;
 925  }
 926  if (i === null) {
 927    return this.getTypedRuleContexts(ExpressionContext);
 928  } else {
 929    return this.getTypedRuleContext(ExpressionContext, i);
 930  }
 931};
 932
 933ConcatExpressionContext.prototype.Ampersand = function () {
 934  return this.getToken(F7Parser.Ampersand, 0);
 935};
 936ConcatExpressionContext.prototype.enterRule = function (listener) {
 937  if (listener instanceof F7Listener) {
 938    listener.enterConcatExpression(this);
 939  }
 940};
 941
 942ConcatExpressionContext.prototype.exitRule = function (listener) {
 943  if (listener instanceof F7Listener) {
 944    listener.exitConcatExpression(this);
 945  }
 946};
 947
 948ConcatExpressionContext.prototype.accept = function (visitor) {
 949  if (visitor instanceof F7Visitor) {
 950    return visitor.visitConcatExpression(this);
 951  } else {
 952    return visitor.visitChildren(this);
 953  }
 954};
 955
 956F7Parser.prototype.expression = function (_p) {
 957  if (_p === undefined) {
 958    _p = 0;
 959  }
 960  var _parentctx = this._ctx;
 961  var _parentState = this.state;
 962  var localctx = new ExpressionContext(this, this._ctx, _parentState);
 963  var _prevctx = localctx;
 964  var _startState = 4;
 965  this.enterRecursionRule(localctx, 4, F7Parser.RULE_expression, _p);
 966  var _la = 0; // Token type
 967  try {
 968    this.enterOuterAlt(localctx, 1);
 969    this.state = 52;
 970    this._errHandler.sync(this);
 971    var la_ = this._interp.adaptivePredict(this._input, 1, this._ctx);
 972    switch (la_) {
 973      case 1:
 974        localctx = new UnaryMinusExpressionContext(this, localctx);
 975        this._ctx = localctx;
 976        _prevctx = localctx;
 977
 978        this.state = 40;
 979        this.match(F7Parser.Minus);
 980        this.state = 41;
 981        this.expression(10);
 982        break;
 983
 984      case 2:
 985        localctx = new UnaryPlusExpressionContext(this, localctx);
 986        this._ctx = localctx;
 987        _prevctx = localctx;
 988        this.state = 42;
 989        this.match(F7Parser.Plus);
 990        this.state = 43;
 991        this.expression(9);
 992        break;
 993
 994      case 3:
 995        localctx = new AtomExpressionContext(this, localctx);
 996        this._ctx = localctx;
 997        _prevctx = localctx;
 998        this.state = 44;
 999        this.atom();
1000        break;
1001
1002      case 4:
1003        localctx = new RangeExpressionContext(this, localctx);
1004        this._ctx = localctx;
1005        _prevctx = localctx;
1006        this.state = 45;
1007        this.atom();
1008        this.state = 48;
1009        this._errHandler.sync(this);
1010        var _alt = 1;
1011        do {
1012          switch (_alt) {
1013            case 1:
1014              this.state = 46;
1015              localctx.separator = this.match(F7Parser.Colon);
1016              this.state = 47;
1017              this.atom();
1018              break;
1019            default:
1020              throw new antlr4.error.NoViableAltException(this);
1021          }
1022          this.state = 50;
1023          this._errHandler.sync(this);
1024          _alt = this._interp.adaptivePredict(this._input, 0, this._ctx);
1025        } while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER);
1026        break;
1027    }
1028    this._ctx.stop = this._input.LT(-1);
1029    this.state = 78;
1030    this._errHandler.sync(this);
1031    var _alt = this._interp.adaptivePredict(this._input, 4, this._ctx);
1032    while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) {
1033      if (_alt === 1) {
1034        if (this._parseListeners !== null) {
1035          this.triggerExitRuleEvent();
1036        }
1037        _prevctx = localctx;
1038        this.state = 76;
1039        this._errHandler.sync(this);
1040        var la_ = this._interp.adaptivePredict(this._input, 3, this._ctx);
1041        switch (la_) {
1042          case 1:
1043            localctx = new PowerExpressionContext(
1044              this,
1045              new ExpressionContext(this, _parentctx, _parentState)
1046            );
1047            localctx.left = _prevctx;
1048            this.pushNewRecursionContext(localctx, _startState, F7Parser.RULE_expression);
1049            this.state = 54;
1050            if (!this.precpred(this._ctx, 7)) {
1051              throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 7)");
1052            }
1053            this.state = 55;
1054            localctx.op = this.match(F7Parser.Power);
1055            this.state = 56;
1056            localctx.right = this.expression(8);
1057            break;
1058
1059          case 2:
1060            localctx = new MultiplicationExpressionContext(
1061              this,
1062              new ExpressionContext(this, _parentctx, _parentState)
1063            );
1064            localctx.left = _prevctx;
1065            this.pushNewRecursionContext(localctx, _startState, F7Parser.RULE_expression);
1066            this.state = 57;
1067            if (!this.precpred(this._ctx, 6)) {
1068              throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 6)");
1069            }
1070            this.state = 58;
1071            localctx.op = this._input.LT(1);
1072            _la = this._input.LA(1);
1073            if (!(_la === F7Parser.Divide || _la === F7Parser.Multiply)) {
1074              localctx.op = this._errHandler.recoverInline(this);
1075            } else {
1076              this._errHandler.reportMatch(this);
1077              this.consume();
1078            }
1079            this.state = 59;
1080            localctx.right = this.expression(7);
1081            break;
1082
1083          case 3:
1084            localctx = new AdditiveExpressionContext(
1085              this,
1086              new ExpressionContext(this, _parentctx, _parentState)
1087            );
1088            localctx.left = _prevctx;
1089            this.pushNewRecursionContext(localctx, _startState, F7Parser.RULE_expression);
1090            this.state = 60;
1091            if (!this.precpred(this._ctx, 5)) {
1092              throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 5)");
1093            }
1094            this.state = 61;
1095            localctx.op = this._input.LT(1);
1096            _la = this._input.LA(1);
1097            if (!(_la === F7Parser.Plus || _la === F7Parser.Minus)) {
1098              localctx.op = this._errHandler.recoverInline(this);
1099            } else {
1100              this._errHandler.reportMatch(this);
1101              this.consume();
1102            }
1103            this.state = 62;
1104            localctx.right = this.expression(6);
1105            break;
1106
1107          case 4:
1108            localctx = new RelationalExpressionContext(
1109              this,
1110              new ExpressionContext(this, _parentctx, _parentState)
1111            );
1112            localctx.left = _prevctx;
1113            this.pushNewRecursionContext(localctx, _startState, F7Parser.RULE_expression);
1114            this.state = 63;
1115            if (!this.precpred(this._ctx, 4)) {
1116              throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 4)");
1117            }
1118            this.state = 64;
1119            localctx.op = this.comparisonOperator();
1120            this.state = 65;
1121            localctx.right = this.expression(5);
1122            break;
1123
1124          case 5:
1125            localctx = new ConcatExpressionContext(
1126              this,
1127              new ExpressionContext(this, _parentctx, _parentState)
1128            );
1129            localctx.left = _prevctx;
1130            this.pushNewRecursionContext(localctx, _startState, F7Parser.RULE_expression);
1131            this.state = 67;
1132            if (!this.precpred(this._ctx, 3)) {
1133              throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 3)");
1134            }
1135            this.state = 68;
1136            localctx.op = this.match(F7Parser.Ampersand);
1137            this.state = 69;
1138            localctx.right = this.expression(4);
1139            break;
1140
1141          case 6:
1142            localctx = new UnaryPercentExpressionContext(
1143              this,
1144              new ExpressionContext(this, _parentctx, _parentState)
1145            );
1146            this.pushNewRecursionContext(localctx, _startState, F7Parser.RULE_expression);
1147            this.state = 70;
1148            if (!this.precpred(this._ctx, 8)) {
1149              throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 8)");
1150            }
1151            this.state = 72;
1152            this._errHandler.sync(this);
1153            var _alt = 1;
1154            do {
1155              switch (_alt) {
1156                case 1:
1157                  this.state = 71;
1158                  this.match(F7Parser.Percent);
1159                  break;
1160                default:
1161                  throw new antlr4.error.NoViableAltException(this);
1162              }
1163              this.state = 74;
1164              this._errHandler.sync(this);
1165              _alt = this._interp.adaptivePredict(this._input, 2, this._ctx);
1166            } while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER);
1167            break;
1168        }
1169      }
1170      this.state = 80;
1171      this._errHandler.sync(this);
1172      _alt = this._interp.adaptivePredict(this._input, 4, this._ctx);
1173    }
1174  } catch (error) {
1175    if (error instanceof antlr4.error.RecognitionException) {
1176      localctx.exception = error;
1177      this._errHandler.reportError(this, error);
1178      this._errHandler.recover(this, error);
1179    } else {
1180      throw error;
1181    }
1182  } finally {
1183    this.unrollRecursionContexts(_parentctx);
1184  }
1185  return localctx;
1186};
1187
1188function AtomContext(parser, parent, invokingState) {
1189  if (parent === undefined) {
1190    parent = null;
1191  }
1192  if (invokingState === undefined || invokingState === null) {
1193    invokingState = -1;
1194  }
1195  antlr4.ParserRuleContext.call(this, parent, invokingState);
1196  this.parser = parser;
1197  this.ruleIndex = F7Parser.RULE_atom;
1198  return this;
1199}
1200
1201AtomContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
1202AtomContext.prototype.constructor = AtomContext;
1203
1204AtomContext.prototype.copyFrom = function (ctx) {
1205  antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);
1206};
1207
1208function NamedAtomContext(parser, ctx) {
1209  AtomContext.call(this, parser);
1210  AtomContext.prototype.copyFrom.call(this, ctx);
1211  return this;
1212}
1213
1214NamedAtomContext.prototype = Object.create(AtomContext.prototype);
1215NamedAtomContext.prototype.constructor = NamedAtomContext;
1216
1217F7Parser.NamedAtomContext = NamedAtomContext;
1218
1219NamedAtomContext.prototype.identifier = function () {
1220  return this.getTypedRuleContext(IdentifierContext, 0);
1221};
1222NamedAtomContext.prototype.enterRule = function (listener) {
1223  if (listener instanceof F7Listener) {
1224    listener.enterNamedAtom(this);
1225  }
1226};
1227
1228NamedAtomContext.prototype.exitRule = function (listener) {
1229  if (listener instanceof F7Listener) {
1230    listener.exitNamedAtom(this);
1231  }
1232};
1233
1234NamedAtomContext.prototype.accept = function (visitor) {
1235  if (visitor instanceof F7Visitor) {
1236    return visitor.visitNamedAtom(this);
1237  } else {
1238    return visitor.visitChildren(this);
1239  }
1240};
1241
1242function ErrorAtomContext(parser, ctx) {
1243  AtomContext.call(this, parser);
1244  AtomContext.prototype.copyFrom.call(this, ctx);
1245  return this;
1246}
1247
1248ErrorAtomContext.prototype = Object.create(AtomContext.prototype);
1249ErrorAtomContext.prototype.constructor = ErrorAtomContext;
1250
1251F7Parser.ErrorAtomContext = ErrorAtomContext;
1252
1253ErrorAtomContext.prototype.Error = function () {
1254  return this.getToken(F7Parser.Error, 0);
1255};
1256ErrorAtomContext.prototype.enterRule = function (listener) {
1257  if (listener instanceof F7Listener) {
1258    listener.enterErrorAtom(this);
1259  }
1260};
1261
1262ErrorAtomContext.prototype.exitRule = function (listener) {
1263  if (listener instanceof F7Listener) {
1264    listener.exitErrorAtom(this);
1265  }
1266};
1267
1268ErrorAtomContext.prototype.accept = function (visitor) {
1269  if (visitor instanceof F7Visitor) {
1270    return visitor.visitErrorAtom(this);
1271  } else {
1272    return visitor.visitChildren(this);
1273  }
1274};
1275
1276function ListAtomContext(parser, ctx) {
1277  AtomContext.call(this, parser);
1278  this.separator = null; // Token;
1279  AtomContext.prototype.copyFrom.call(this, ctx);
1280  return this;
1281}
1282
1283ListAtomContext.prototype = Object.create(AtomContext.prototype);
1284ListAtomContext.prototype.constructor = ListAtomContext;
1285
1286F7Parser.ListAtomContext = ListAtomContext;
1287
1288ListAtomContext.prototype.LeftBrace = function () {
1289  return this.getToken(F7Parser.LeftBrace, 0);
1290};
1291
1292ListAtomContext.prototype.RightBrace = function () {
1293  return this.getToken(F7Parser.RightBrace, 0);
1294};
1295
1296ListAtomContext.prototype.expression = function (i) {
1297  if (i === undefined) {
1298    i = null;
1299  }
1300  if (i === null) {
1301    return this.getTypedRuleContexts(ExpressionContext);
1302  } else {
1303    return this.getTypedRuleContext(ExpressionContext, i);
1304  }
1305};
1306
1307ListAtomContext.prototype.Comma = function (i) {
1308  if (i === undefined) {
1309    i = null;
1310  }
1311  if (i === null) {
1312    return this.getTokens(F7Parser.Comma);
1313  } else {
1314    return this.getToken(F7Parser.Comma, i);
1315  }
1316};
1317
1318ListAtomContext.prototype.SemiColon = function (i) {
1319  if (i === undefined) {
1320    i = null;
1321  }
1322  if (i === null) {
1323    return this.getTokens(F7Parser.SemiColon);
1324  } else {
1325    return this.getToken(F7Parser.SemiColon, i);
1326  }
1327};
1328
1329ListAtomContext.prototype.enterRule = function (listener) {
1330  if (listener instanceof F7Listener) {
1331    listener.enterListAtom(this);
1332  }
1333};
1334
1335ListAtomContext.prototype.exitRule = function (listener) {
1336  if (listener instanceof F7Listener) {
1337    listener.exitListAtom(this);
1338  }
1339};
1340
1341ListAtomContext.prototype.accept = function (visitor) {
1342  if (visitor instanceof F7Visitor) {
1343    return visitor.visitListAtom(this);
1344  } else {
1345    return visitor.visitChildren(this);
1346  }
1347};
1348
1349function ParentheticalAtomContext(parser, ctx) {
1350  AtomContext.call(this, parser);
1351  AtomContext.prototype.copyFrom.call(this, ctx);
1352  return this;
1353}
1354
1355ParentheticalAtomContext.prototype = Object.create(AtomContext.prototype);
1356ParentheticalAtomContext.prototype.constructor = ParentheticalAtomContext;
1357
1358F7Parser.ParentheticalAtomContext = ParentheticalAtomContext;
1359
1360ParentheticalAtomContext.prototype.LeftParen = function () {
1361  return this.getToken(F7Parser.LeftParen, 0);
1362};
1363
1364ParentheticalAtomContext.prototype.expression = function () {
1365  return this.getTypedRuleContext(ExpressionContext, 0);
1366};
1367
1368ParentheticalAtomContext.prototype.RightParen = function () {
1369  return this.getToken(F7Parser.RightParen, 0);
1370};
1371ParentheticalAtomContext.prototype.enterRule = function (listener) {
1372  if (listener instanceof F7Listener) {
1373    listener.enterParentheticalAtom(this);
1374  }
1375};
1376
1377ParentheticalAtomContext.prototype.exitRule = function (listener) {
1378  if (listener instanceof F7Listener) {
1379    listener.exitParentheticalAtom(this);
1380  }
1381};
1382
1383ParentheticalAtomContext.prototype.accept = function (visitor) {
1384  if (visitor instanceof F7Visitor) {
1385    return visitor.visitParentheticalAtom(this);
1386  } else {
1387    return visitor.visitChildren(this);
1388  }
1389};
1390
1391function CellAtomContext(parser, ctx) {
1392  AtomContext.call(this, parser);
1393  AtomContext.prototype.copyFrom.call(this, ctx);
1394  return this;
1395}
1396
1397CellAtomContext.prototype = Object.create(AtomContext.prototype);
1398CellAtomContext.prototype.constructor = CellAtomContext;
1399
1400F7Parser.CellAtomContext = CellAtomContext;
1401
1402CellAtomContext.prototype.range = function () {
1403  return this.getTypedRuleContext(RangeContext, 0);
1404};
1405CellAtomContext.prototype.enterRule = function (listener) {
1406  if (listener instanceof F7Listener) {
1407    listener.enterCellAtom(this);
1408  }
1409};
1410
1411CellAtomContext.prototype.exitRule = function (listener) {
1412  if (listener instanceof F7Listener) {
1413    listener.exitCellAtom(this);
1414  }
1415};
1416
1417CellAtomContext.prototype.accept = function (visitor) {
1418  if (visitor instanceof F7Visitor) {
1419    return visitor.visitCellAtom(this);
1420  } else {
1421    return visitor.visitChildren(this);
1422  }
1423};
1424
1425function StringAtomContext(parser, ctx) {
1426  AtomContext.call(this, parser);
1427  AtomContext.prototype.copyFrom.call(this, ctx);
1428  return this;
1429}
1430
1431StringAtomContext.prototype = Object.create(AtomContext.prototype);
1432StringAtomContext.prototype.constructor = StringAtomContext;
1433
1434F7Parser.StringAtomContext = StringAtomContext;
1435
1436StringAtomContext.prototype.String = function () {
1437  return this.getToken(F7Parser.String, 0);
1438};
1439StringAtomContext.prototype.enterRule = function (listener) {
1440  if (listener instanceof F7Listener) {
1441    listener.enterStringAtom(this);
1442  }
1443};
1444
1445StringAtomContext.prototype.exitRule = function (listener) {
1446  if (listener instanceof F7Listener) {
1447    listener.exitStringAtom(this);
1448  }
1449};
1450
1451StringAtomContext.prototype.accept = function (visitor) {
1452  if (visitor instanceof F7Visitor) {
1453    return visitor.visitStringAtom(this);
1454  } else {
1455    return visitor.visitChildren(this);
1456  }
1457};
1458
1459function FormulaAtomContext(parser, ctx) {
1460  AtomContext.call(this, parser);
1461  this.name = null; // IdentifierContext;
1462  AtomContext.prototype.copyFrom.call(this, ctx);
1463  return this;
1464}
1465
1466FormulaAtomContext.prototype = Object.create(AtomContext.prototype);
1467FormulaAtomContext.prototype.constructor = FormulaAtomContext;
1468
1469F7Parser.FormulaAtomContext = FormulaAtomContext;
1470
1471FormulaAtomContext.prototype.LeftParen = function () {
1472  return this.getToken(F7Parser.LeftParen, 0);
1473};
1474
1475FormulaAtomContext.prototype.arguments = function () {
1476  return this.getTypedRuleContext(ArgumentsContext, 0);
1477};
1478
1479FormulaAtomContext.prototype.RightParen = function () {
1480  return this.getToken(F7Parser.RightParen, 0);
1481};
1482
1483FormulaAtomContext.prototype.identifier = function () {
1484  return this.getTypedRuleContext(IdentifierContext, 0);
1485};
1486FormulaAtomContext.prototype.enterRule = function (listener) {
1487  if (listener instanceof F7Listener) {
1488    listener.enterFormulaAtom(this);
1489  }
1490};
1491
1492FormulaAtomContext.prototype.exitRule = function (listener) {
1493  if (listener instanceof F7Listener) {
1494    listener.exitFormulaAtom(this);
1495  }
1496};
1497
1498FormulaAtomContext.prototype.accept = function (visitor) {
1499  if (visitor instanceof F7Visitor) {
1500    return visitor.visitFormulaAtom(this);
1501  } else {
1502    return visitor.visitChildren(this);
1503  }
1504};
1505
1506function NumberAtomContext(parser, ctx) {
1507  AtomContext.call(this, parser);
1508  AtomContext.prototype.copyFrom.call(this, ctx);
1509  return this;
1510}
1511
1512NumberAtomContext.prototype = Object.create(AtomContext.prototype);
1513NumberAtomContext.prototype.constructor = NumberAtomContext;
1514
1515F7Parser.NumberAtomContext = NumberAtomContext;
1516
1517NumberAtomContext.prototype.Int = function () {
1518  return this.getToken(F7Parser.Int, 0);
1519};
1520
1521NumberAtomContext.prototype.Number = function () {
1522  return this.getToken(F7Parser.Number, 0);
1523};
1524NumberAtomContext.prototype.enterRule = function (listener) {
1525  if (listener instanceof F7Listener) {
1526    listener.enterNumberAtom(this);
1527  }
1528};
1529
1530NumberAtomContext.prototype.exitRule = function (listener) {
1531  if (listener instanceof F7Listener) {
1532    listener.exitNumberAtom(this);
1533  }
1534};
1535
1536NumberAtomContext.prototype.accept = function (visitor) {
1537  if (visitor instanceof F7Visitor) {
1538    return visitor.visitNumberAtom(this);
1539  } else {
1540    return visitor.visitChildren(this);
1541  }
1542};
1543
1544F7Parser.AtomContext = AtomContext;
1545
1546F7Parser.prototype.atom = function () {
1547  var localctx = new AtomContext(this, this._ctx, this.state);
1548  this.enterRule(localctx, 6, F7Parser.RULE_atom);
1549  var _la = 0; // Token type
1550  try {
1551    this.state = 108;
1552    this._errHandler.sync(this);
1553    var la_ = this._interp.adaptivePredict(this._input, 7, this._ctx);
1554    switch (la_) {
1555      case 1:
1556        localctx = new CellAtomContext(this, localctx);
1557        this.enterOuterAlt(localctx, 1);
1558        this.state = 81;
1559        this.range();
1560        break;
1561
1562      case 2:
1563        localctx = new StringAtomContext(this, localctx);
1564        this.enterOuterAlt(localctx, 2);
1565        this.state = 82;
1566        this.match(F7Parser.String);
1567        break;
1568
1569      case 3:
1570        localctx = new ErrorAtomContext(this, localctx);
1571        this.enterOuterAlt(localctx, 3);
1572        this.state = 83;
1573        this.match(F7Parser.Error);
1574        break;
1575
1576      case 4:
1577        localctx = new NumberAtomContext(this, localctx);
1578        this.enterOuterAlt(localctx, 4);
1579        this.state = 84;
1580        this.match(F7Parser.Int);
1581        break;
1582
1583      case 5:
1584        localctx = new NumberAtomContext(this, localctx);
1585        this.enterOuterAlt(localctx, 5);
1586        this.state = 85;
1587        this.match(F7Parser.Number);
1588        break;
1589
1590      case 6:
1591        localctx = new ParentheticalAtomContext(this, localctx);
1592        this.enterOuterAlt(localctx, 6);
1593        this.state = 86;
1594        this.match(F7Parser.LeftParen);
1595        this.state = 87;
1596        this.expression(0);
1597        this.state = 88;
1598        this.match(F7Parser.RightParen);
1599        break;
1600
1601      case 7:
1602        localctx = new FormulaAtomContext(this, localctx);
1603        this.enterOuterAlt(localctx, 7);
1604        this.state = 90;
1605        localctx.name = this.identifier();
1606        this.state = 91;
1607        this.match(F7Parser.LeftParen);
1608        this.state = 92;
1609        this.arguments();
1610        this.state = 93;
1611        this.match(F7Parser.RightParen);
1612        break;
1613
1614      case 8:
1615        localctx = new ListAtomContext(this, localctx);
1616        this.enterOuterAlt(localctx, 8);
1617        this.state = 95;
1618        this.match(F7Parser.LeftBrace);
1619        this.state = 104;
1620        this._errHandler.sync(this);
1621        _la = this._input.LA(1);
1622        if (
1623          (_la & ~0x1f) == 0 &&
1624          ((1 << _la) &
1625            ((1 << F7Parser.NCharacters) |
1626              (1 << F7Parser.Int) |
1627              (1 << F7Parser.Number) |
1628              (1 << F7Parser.SingleQuoteString) |
1629              (1 << F7Parser.String) |
1630              (1 << F7Parser.Error) |
1631              (1 << F7Parser.LeftParen) |
1632              (1 << F7Parser.LeftBrace) |
1633              (1 << F7Parser.Plus) |
1634              (1 << F7Parser.Minus) |
1635              (1 << F7Parser.Dollar))) !==
1636            0
1637        ) {
1638          this.state = 96;
1639          this.expression(0);
1640          this.state = 101;
1641          this._errHandler.sync(this);
1642          _la = this._input.LA(1);
1643          while (_la === F7Parser.Comma || _la === F7Parser.SemiColon) {
1644            this.state = 97;
1645            localctx.separator = this._input.LT(1);
1646            _la = this._input.LA(1);
1647            if (!(_la === F7Parser.Comma || _la === F7Parser.SemiColon)) {
1648              localctx.separator = this._errHandler.recoverInline(this);
1649            } else {
1650              this._errHandler.reportMatch(this);
1651              this.consume();
1652            }
1653            this.state = 98;
1654            this.expression(0);
1655            this.state = 103;
1656            this._errHandler.sync(this);
1657            _la = this._input.LA(1);
1658          }
1659        }
1660
1661        this.state = 106;
1662        this.match(F7Parser.RightBrace);
1663        break;
1664
1665      case 9:
1666        localctx = new NamedAtomContext(this, localctx);
1667        this.enterOuterAlt(localctx, 9);
1668        this.state = 107;
1669        this.identifier();
1670        break;
1671    }
1672  } catch (re) {
1673    if (re instanceof antlr4.error.RecognitionException) {
1674      localctx.exception = re;
1675      this._errHandler.reportError(this, re);
1676      this._errHandler.recover(this, re);
1677    } else {
1678      throw re;
1679    }
1680  } finally {
1681    this.exitRule();
1682  }
1683  return localctx;
1684};
1685
1686function RangeContext(parser, parent, invokingState) {
1687  if (parent === undefined) {
1688    parent = null;
1689  }
1690  if (invokingState === undefined || invokingState === null) {
1691    invokingState = -1;
1692  }
1693  antlr4.ParserRuleContext.call(this, parent, invokingState);
1694  this.parser = parser;
1695  this.ruleIndex = F7Parser.RULE_range;
1696  return this;
1697}
1698
1699RangeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
1700RangeContext.prototype.constructor = RangeContext;
1701
1702RangeContext.prototype.biRange = function () {
1703  return this.getTypedRuleContext(BiRangeContext, 0);
1704};
1705
1706RangeContext.prototype.uniRange = function () {
1707  return this.getTypedRuleContext(UniRangeContext, 0);
1708};
1709
1710RangeContext.prototype.columnWiseBiRange = function () {
1711  return this.getTypedRuleContext(ColumnWiseBiRangeContext, 0);
1712};
1713
1714RangeContext.prototype.columnWiseWithRowOffsetFirstBiRange = function () {
1715  return this.getTypedRuleContext(ColumnWiseWithRowOffsetFirstBiRangeContext, 0);
1716};
1717
1718RangeContext.prototype.columnWiseWithRowOffsetLastBiRange = function () {
1719  return this.getTypedRuleContext(ColumnWiseWithRowOffsetLastBiRangeContext, 0);
1720};
1721
1722RangeContext.prototype.rowWiseBiRange = function () {
1723  return this.getTypedRuleContext(RowWiseBiRangeContext, 0);
1724};
1725
1726RangeContext.prototype.rowWiseWithColumnOffsetFirstBiRange = function () {
1727  return this.getTypedRuleContext(RowWiseWithColumnOffsetFirstBiRangeContext, 0);
1728};
1729
1730RangeContext.prototype.rowWiseWithColumnOffsetLastBiRange = function () {
1731  return this.getTypedRuleContext(RowWiseWithColumnOffsetLastBiRangeContext, 0);
1732};
1733
1734RangeContext.prototype.enterRule = function (listener) {
1735  if (listener instanceof F7Listener) {
1736    listener.enterRange(this);
1737  }
1738};
1739
1740RangeContext.prototype.exitRule = function (listener) {
1741  if (listener instanceof F7Listener) {
1742    listener.exitRange(this);
1743  }
1744};
1745
1746RangeContext.prototype.accept = function (visitor) {
1747  if (visitor instanceof F7Visitor) {
1748    return visitor.visitRange(this);
1749  } else {
1750    return visitor.visitChildren(this);
1751  }
1752};
1753
1754F7Parser.RangeContext = RangeContext;
1755
1756F7Parser.prototype.range = function () {
1757  var localctx = new RangeContext(this, this._ctx, this.state);
1758  this.enterRule(localctx, 8, F7Parser.RULE_range);
1759  try {
1760    this.state = 118;
1761    this._errHandler.sync(this);
1762    var la_ = this._interp.adaptivePredict(this._input, 8, this._ctx);
1763    switch (la_) {
1764      case 1:
1765        this.enterOuterAlt(localctx, 1);
1766        this.state = 110;
1767        this.biRange();
1768        break;
1769
1770      case 2:
1771        this.enterOuterAlt(localctx, 2);
1772        this.state = 111;
1773        this.uniRange();
1774        break;
1775
1776      case 3:
1777        this.enterOuterAlt(localctx, 3);
1778        this.state = 112;
1779        this.columnWiseBiRange();
1780        break;
1781
1782      case 4:
1783        this.enterOuterAlt(localctx, 4);
1784        this.state = 113;
1785        this.columnWiseWithRowOffsetFirstBiRange();
1786        break;
1787
1788      case 5:
1789        this.enterOuterAlt(localctx, 5);
1790        this.state = 114;
1791        this.columnWiseWithRowOffsetLastBiRange();
1792        break;
1793
1794      case 6:
1795        this.enterOuterAlt(localctx, 6);
1796        this.state = 115;
1797        this.rowWiseBiRange();
1798        break;
1799
1800      case 7:
1801        this.enterOuterAlt(localctx, 7);
1802        this.state = 116;
1803        this.rowWiseWithColumnOffsetFirstBiRange();
1804        break;
1805
1806      case 8:
1807        this.enterOuterAlt(localctx, 8);
1808        this.state = 117;
1809        this.rowWiseWithColumnOffsetLastBiRange();
1810        break;
1811    }
1812  } catch (re) {
1813    if (re instanceof antlr4.error.RecognitionException) {
1814      localctx.exception = re;
1815      this._errHandler.reportError(this, re);
1816      this._errHandler.recover(this, re);
1817    } else {
1818      throw re;
1819    }
1820  } finally {
1821    this.exitRule();
1822  }
1823  return localctx;
1824};
1825
1826function BiRangeContext(parser, parent, invokingState) {
1827  if (parent === undefined) {
1828    parent = null;
1829  }
1830  if (invokingState === undefined || invokingState === null) {
1831    invokingState = -1;
1832  }
1833  antlr4.ParserRuleContext.call(this, parent, invokingState);
1834  this.parser = parser;
1835  this.ruleIndex = F7Parser.RULE_biRange;
1836  this.grid = null; // GridNameContext
1837  this.absoFirstColumn = null; // Token
1838  this.firstColumn = null; // Token
1839  this.absoRow = null; // Token
1840  this.firstRow = null; // Token
1841  this.absoLastColumn = null; // Token
1842  this.lastColumn = null; // Token
1843  this.absoLastRow = null; // Token
1844  this.lastRow = null; // Token
1845  return this;
1846}
1847
1848BiRangeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
1849BiRangeContext.prototype.constructor = BiRangeContext;
1850
1851BiRangeContext.prototype.Colon = function () {
1852  return this.getToken(F7Parser.Colon, 0);
1853};
1854
1855BiRangeContext.prototype.NCharacters = function (i) {
1856  if (i === undefined) {
1857    i = null;
1858  }
1859  if (i === null) {
1860    return this.getTokens(F7Parser.NCharacters);
1861  } else {
1862    return this.getToken(F7Parser.NCharacters, i);
1863  }
1864};
1865
1866BiRangeContext.prototype.Int = function (i) {
1867  if (i === undefined) {
1868    i = null;
1869  }
1870  if (i === null) {
1871    return this.getTokens(F7Parser.Int);
1872  } else {
1873    return this.getToken(F7Parser.Int, i);
1874  }
1875};
1876
1877BiRangeContext.prototype.Bang = function () {
1878  return this.getToken(F7Parser.Bang, 0);
1879};
1880
1881BiRangeContext.prototype.gridName = function () {
1882  return this.getTypedRuleContext(GridNameContext, 0);
1883};
1884
1885BiRangeContext.prototype.Dollar = function (i) {
1886  if (i === undefined) {
1887    i = null;
1888  }
1889  if (i === null) {
1890    return this.getTokens(F7Parser.Dollar);
1891  } else {
1892    return this.getToken(F7Parser.Dollar, i);
1893  }
1894};
1895
1896BiRangeContext.prototype.enterRule = function (listener) {
1897  if (listener instanceof F7Listener) {
1898    listener.enterBiRange(this);
1899  }
1900};
1901
1902BiRangeContext.prototype.exitRule = function (listener) {
1903  if (listener instanceof F7Listener) {
1904    listener.exitBiRange(this);
1905  }
1906};
1907
1908BiRangeContext.prototype.accept = function (visitor) {
1909  if (visitor instanceof F7Visitor) {
1910    return visitor.visitBiRange(this);
1911  } else {
1912    return visitor.visitChildren(this);
1913  }
1914};
1915
1916F7Parser.BiRangeContext = BiRangeContext;
1917
1918F7Parser.prototype.biRange = function () {
1919  var localctx = new BiRangeContext(this, this._ctx, this.state);
1920  this.enterRule(localctx, 10, F7Parser.RULE_biRange);
1921  var _la = 0; // Token type
1922  try {
1923    this.enterOuterAlt(localctx, 1);
1924    this.state = 123;
1925    this._errHandler.sync(this);
1926    var la_ = this._interp.adaptivePredict(this._input, 9, this._ctx);
1927    if (la_ === 1) {
1928      this.state = 120;
1929      localctx.grid = this.gridName();
1930      this.state = 121;
1931      this.match(F7Parser.Bang);
1932    }
1933    this.state = 126;
1934    this._errHandler.sync(this);
1935    _la = this._input.LA(1);
1936    if (_la === F7Parser.Dollar) {
1937      this.state = 125;
1938      localctx.absoFirstColumn = this.match(F7Parser.Dollar);
1939    }
1940
1941    this.state = 128;
1942    localctx.firstColumn = this.match(F7Parser.NCharacters);
1943    this.state = 130;
1944    this._errHandler.sync(this);
1945    _la = this._input.LA(1);
1946    if (_la === F7Parser.Dollar) {
1947      this.state = 129;
1948      localctx.absoRow = this.match(F7Parser.Dollar);
1949    }
1950
1951    this.state = 132;
1952    localctx.firstRow = this.match(F7Parser.Int);
1953    this.state = 133;
1954    this.match(F7Parser.Colon);
1955    this.state = 135;
1956    this._errHandler.sync(this);
1957    _la = this._input.LA(1);
1958    if (_la === F7Parser.Dollar) {
1959      this.state = 134;
1960      localctx.absoLastColumn = this.match(F7Parser.Dollar);
1961    }
1962
1963    this.state = 137;
1964    localctx.lastColumn = this.match(F7Parser.NCharacters);
1965    this.state = 139;
1966    this._errHandler.sync(this);
1967    _la = this._input.LA(1);
1968    if (_la === F7Parser.Dollar) {
1969      this.state = 138;
1970      localctx.absoLastRow = this.match(F7Parser.Dollar);
1971    }
1972
1973    this.state = 141;
1974    localctx.lastRow = this.match(F7Parser.Int);
1975  } catch (re) {
1976    if (re instanceof antlr4.error.RecognitionException) {
1977      localctx.exception = re;
1978      this._errHandler.reportError(this, re);
1979      this._errHandler.recover(this, re);
1980    } else {
1981      throw re;
1982    }
1983  } finally {
1984    this.exitRule();
1985  }
1986  return localctx;
1987};
1988
1989function UniRangeContext(parser, parent, invokingState) {
1990  if (parent === undefined) {
1991    parent = null;
1992  }
1993  if (invokingState === undefined || invokingState === null) {
1994    invokingState = -1;
1995  }
1996  antlr4.ParserRuleContext.call(this, parent, invokingState);
1997  this.parser = parser;
1998  this.ruleIndex = F7Parser.RULE_uniRange;
1999  this.grid = null; // GridNameContext
2000  this.absoFirstColumn = null; // Token
2001  this.firstColumn = null; // Token
2002  this.absoFirstRow = null; // Token
2003  this.firstRow = null; // Token
2004  return this;
2005}
2006
2007UniRangeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
2008UniRangeContext.prototype.constructor = UniRangeContext;
2009
2010UniRangeContext.prototype.NCharacters = function () {
2011  return this.getToken(F7Parser.NCharacters, 0);
2012};
2013
2014UniRangeContext.prototype.Int = function () {
2015  return this.getToken(F7Parser.Int, 0);
2016};
2017
2018UniRangeContext.prototype.Bang = function () {
2019  return this.getToken(F7Parser.Bang, 0);
2020};
2021
2022UniRangeContext.prototype.gridName = function () {
2023  return this.getTypedRuleContext(GridNameContext, 0);
2024};
2025
2026UniRangeContext.prototype.Dollar = function (i) {
2027  if (i === undefined) {
2028    i = null;
2029  }
2030  if (i === null) {
2031    return this.getTokens(F7Parser.Dollar);
2032  } else {
2033    return this.getToken(F7Parser.Dollar, i);
2034  }
2035};
2036
2037UniRangeContext.prototype.enterRule = function (listener) {
2038  if (listener instanceof F7Listener) {
2039    listener.enterUniRange(this);
2040  }
2041};
2042
2043UniRangeContext.prototype.exitRule = function (listener) {
2044  if (listener instanceof F7Listener) {
2045    listener.exitUniRange(this);
2046  }
2047};
2048
2049UniRangeContext.prototype.accept = function (visitor) {
2050  if (visitor instanceof F7Visitor) {
2051    return visitor.visitUniRange(this);
2052  } else {
2053    return visitor.visitChildren(this);
2054  }
2055};
2056
2057F7Parser.UniRangeContext = UniRangeContext;
2058
2059F7Parser.prototype.uniRange = function () {
2060  var localctx = new UniRangeContext(this, this._ctx, this.state);
2061  this.enterRule(localctx, 12, F7Parser.RULE_uniRange);
2062  var _la = 0; // Token type
2063  try {
2064    this.enterOuterAlt(localctx, 1);
2065    this.state = 146;
2066    this._errHandler.sync(this);
2067    var la_ = this._interp.adaptivePredict(this._input, 14, this._ctx);
2068    if (la_ === 1) {
2069      this.state = 143;
2070      localctx.grid = this.gridName();
2071      this.state = 144;
2072      this.match(F7Parser.Bang);
2073    }
2074    this.state = 149;
2075    this._errHandler.sync(this);
2076    _la = this._input.LA(1);
2077    if (_la === F7Parser.Dollar) {
2078      this.state = 148;
2079      localctx.absoFirstColumn = this.match(F7Parser.Dollar);
2080    }
2081
2082    this.state = 151;
2083    localctx.firstColumn = this.match(F7Parser.NCharacters);
2084    this.state = 153;
2085    this._errHandler.sync(this);
2086    _la = this._input.LA(1);
2087    if (_la === F7Parser.Dollar) {
2088      this.state = 152;
2089      localctx.absoFirstRow = this.match(F7Parser.Dollar);
2090    }
2091
2092    this.state = 155;
2093    localctx.firstRow = this.match(F7Parser.Int);
2094  } catch (re) {
2095    if (re instanceof antlr4.error.RecognitionException) {
2096      localctx.exception = re;
2097      this._errHandler.reportError(this, re);
2098      this._errHandler.recover(this, re);
2099    } else {
2100      throw re;
2101    }
2102  } finally {
2103    this.exitRule();
2104  }
2105  return localctx;
2106};
2107
2108function ColumnWiseBiRangeContext(parser, parent, invokingState) {
2109  if (parent === undefined) {
2110    parent = null;
2111  }
2112  if (invokingState === undefined || invokingState === null) {
2113    invokingState = -1;
2114  }
2115  antlr4.ParserRuleContext.call(this, parent, invokingState);
2116  this.parser = parser;
2117  this.ruleIndex = F7Parser.RULE_columnWiseBiRange;
2118  this.grid = null; // GridNameContext
2119  this.absoFirstColumn = null; // Token
2120  this.firstColumn = null; // Token
2121  this.absoLastColumn = null; // Token
2122  this.lastColumn = null; // Token
2123  return this;
2124}
2125
2126ColumnWiseBiRangeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
2127ColumnWiseBiRangeContext.prototype.constructor = ColumnWiseBiRangeContext;
2128
2129ColumnWiseBiRangeContext.prototype.Colon = function () {
2130  return this.getToken(F7Parser.Colon, 0);
2131};
2132
2133ColumnWiseBiRangeContext.prototype.NCharacters = function (i) {
2134  if (i === undefined) {
2135    i = null;
2136  }
2137  if (i === null) {
2138    return this.getTokens(F7Parser.NCharacters);
2139  } else {
2140    return this.getToken(F7Parser.NCharacters, i);
2141  }
2142};
2143
2144ColumnWiseBiRangeContext.prototype.Bang = function () {
2145  return this.getToken(F7Parser.Bang, 0);
2146};
2147
2148ColumnWiseBiRangeContext.prototype.gridName = function () {
2149  return this.getTypedRuleContext(GridNameContext, 0);
2150};
2151
2152ColumnWiseBiRangeContext.prototype.Dollar = function (i) {
2153  if (i === undefined) {
2154    i = null;
2155  }
2156  if (i === null) {
2157    return this.getTokens(F7Parser.Dollar);
2158  } else {
2159    return this.getToken(F7Parser.Dollar, i);
2160  }
2161};
2162
2163ColumnWiseBiRangeContext.prototype.enterRule = function (listener) {
2164  if (listener instanceof F7Listener) {
2165    listener.enterColumnWiseBiRange(this);
2166  }
2167};
2168
2169ColumnWiseBiRangeContext.prototype.exitRule = function (listener) {
2170  if (listener instanceof F7Listener) {
2171    listener.exitColumnWiseBiRange(this);
2172  }
2173};
2174
2175ColumnWiseBiRangeContext.prototype.accept = function (visitor) {
2176  if (visitor instanceof F7Visitor) {
2177    return visitor.visitColumnWiseBiRange(this);
2178  } else {
2179    return visitor.visitChildren(this);
2180  }
2181};
2182
2183F7Parser.ColumnWiseBiRangeContext = ColumnWiseBiRangeContext;
2184
2185F7Parser.prototype.columnWiseBiRange = function () {
2186  var localctx = new ColumnWiseBiRangeContext(this, this._ctx, this.state);
2187  this.enterRule(localctx, 14, F7Parser.RULE_columnWiseBiRange);
2188  var _la = 0; // Token type
2189  try {
2190    this.enterOuterAlt(localctx, 1);
2191    this.state = 160;
2192    this._errHandler.sync(this);
2193    var la_ = this._interp.adaptivePredict(this._input, 17, this._ctx);
2194    if (la_ === 1) {
2195      this.state = 157;
2196      localctx.grid = this.gridName();
2197      this.state = 158;
2198      this.match(F7Parser.Bang);
2199    }
2200    this.state = 163;
2201    this._errHandler.sync(this);
2202    _la = this._input.LA(1);
2203    if (_la === F7Parser.Dollar) {
2204      this.state = 162;
2205      localctx.absoFirstColumn = this.match(F7Parser.Dollar);
2206    }
2207
2208    this.state = 165;
2209    localctx.firstColumn = this.match(F7Parser.NCharacters);
2210    this.state = 166;
2211    this.match(F7Parser.Colon);
2212    this.state = 168;
2213    this._errHandler.sync(this);
2214    _la = this._input.LA(1);
2215    if (_la === F7Parser.Dollar) {
2216      this.state = 167;
2217      localctx.absoLastColumn = this.match(F7Parser.Dollar);
2218    }
2219
2220    this.state = 170;
2221    localctx.lastColumn = this.match(F7Parser.NCharacters);
2222  } catch (re) {
2223    if (re instanceof antlr4.error.RecognitionException) {
2224      localctx.exception = re;
2225      this._errHandler.reportError(this, re);
2226      this._errHandler.recover(this, re);
2227    } else {
2228      throw re;
2229    }
2230  } finally {
2231    this.exitRule();
2232  }
2233  return localctx;
2234};
2235
2236function ColumnWiseWithRowOffsetFirstBiRangeContext(parser, parent, invokingState) {
2237  if (parent === undefined) {
2238    parent = null;
2239  }
2240  if (invokingState === undefined || invokingState === null) {
2241    invokingState = -1;
2242  }
2243  antlr4.ParserRuleContext.call(this, parent, invokingState);
2244  this.parser = parser;
2245  this.ruleIndex = F7Parser.RULE_columnWiseWithRowOffsetFirstBiRange;
2246  this.grid = null; // GridNameContext
2247  this.absoFirstColumn = null; // Token
2248  this.firstColumn = null; // Token
2249  this.absoFirstRow = null; // Token
2250  this.firstRow = null; // Token
2251  this.absoLastColumn = null; // Token
2252  this.lastColumn = null; // Token
2253  return this;
2254}
2255
2256ColumnWiseWithRowOffsetFirstBiRangeContext.prototype = Object.create(
2257  antlr4.ParserRuleContext.prototype
2258);
2259ColumnWiseWithRowOffsetFirstBiRangeContext.prototype.constructor =
2260  ColumnWiseWithRowOffsetFirstBiRangeContext;
2261
2262ColumnWiseWithRowOffsetFirstBiRangeContext.prototype.Colon = function () {
2263  return this.getToken(F7Parser.Colon, 0);
2264};
2265
2266ColumnWiseWithRowOffsetFirstBiRangeContext.prototype.NCharacters = function (i) {
2267  if (i === undefined) {
2268    i = null;
2269  }
2270  if (i === null) {
2271    return this.getTokens(F7Parser.NCharacters);
2272  } else {
2273    return this.getToken(F7Parser.NCharacters, i);
2274  }
2275};
2276
2277ColumnWiseWithRowOffsetFirstBiRangeContext.prototype.Int = function () {
2278  return this.getToken(F7Parser.Int, 0);
2279};
2280
2281ColumnWiseWithRowOffsetFirstBiRangeContext.prototype.Bang = function () {
2282  return this.getToken(F7Parser.Bang, 0);
2283};
2284
2285ColumnWiseWithRowOffsetFirstBiRangeContext.prototype.gridName = function () {
2286  return this.getTypedRuleContext(GridNameContext, 0);
2287};
2288
2289ColumnWiseWithRowOffsetFirstBiRangeContext.prototype.Dollar = function (i) {
2290  if (i === undefined) {
2291    i = null;
2292  }
2293  if (i === null) {
2294    return this.getTokens(F7Parser.Dollar);
2295  } else {
2296    return this.getToken(F7Parser.Dollar, i);
2297  }
2298};
2299
2300ColumnWiseWithRowOffsetFirstBiRangeContext.prototype.enterRule = function (listener) {
2301  if (listener instanceof F7Listener) {
2302    listener.enterColumnWiseWithRowOffsetFirstBiRange(this);
2303  }
2304};
2305
2306ColumnWiseWithRowOffsetFirstBiRangeContext.prototype.exitRule = function (listener) {
2307  if (listener instanceof F7Listener) {
2308    listener.exitColumnWiseWithRowOffsetFirstBiRange(this);
2309  }
2310};
2311
2312ColumnWiseWithRowOffsetFirstBiRangeContext.prototype.accept = function (visitor) {
2313  if (visitor instanceof F7Visitor) {
2314    return visitor.visitColumnWiseWithRowOffsetFirstBiRange(this);
2315  } else {
2316    return visitor.visitChildren(this);
2317  }
2318};
2319
2320F7Parser.ColumnWiseWithRowOffsetFirstBiRangeContext = ColumnWiseWithRowOffsetFirstBiRangeContext;
2321
2322F7Parser.prototype.columnWiseWithRowOffsetFirstBiRange = function () {
2323  var localctx = new ColumnWiseWithRowOffsetFirstBiRangeContext(this, this._ctx, this.state);
2324  this.enterRule(localctx, 16, F7Parser.RULE_columnWiseWithRowOffsetFirstBiRange);
2325  var _la = 0; // Token type
2326  try {
2327    this.enterOuterAlt(localctx, 1);
2328    this.state = 175;
2329    this._errHandler.sync(this);
2330    var la_ = this._interp.adaptivePredict(this._input, 20, this._ctx);
2331    if (la_ === 1) {
2332      this.state = 172;
2333      localctx.grid = this.gridName();
2334      this.state = 173;
2335      this.match(F7Parser.Bang);
2336    }
2337    this.state = 178;
2338    this._errHandler.sync(this);
2339    _la = this._input.LA(1);
2340    if (_la === F7Parser.Dollar) {
2341      this.state = 177;
2342      localctx.absoFirstColumn = this.match(F7Parser.Dollar);
2343    }
2344
2345    this.state = 180;
2346    localctx.firstColumn = this.match(F7Parser.NCharacters);
2347    this.state = 182;
2348    this._errHandler.sync(this);
2349    _la = this._input.LA(1);
2350    if (_la === F7Parser.Dollar) {
2351      this.state = 181;
2352      localctx.absoFirstRow = this.match(F7Parser.Dollar);
2353    }
2354
2355    this.state = 184;
2356    localctx.firstRow = this.match(F7Parser.Int);
2357    this.state = 185;
2358    this.match(F7Parser.Colon);
2359    this.state = 187;
2360    this._errHandler.sync(this);
2361    _la = this._input.LA(1);
2362    if (_la === F7Parser.Dollar) {
2363      this.state = 186;
2364      localctx.absoLastColumn = this.match(F7Parser.Dollar);
2365    }
2366
2367    this.state = 189;
2368    localctx.lastColumn = this.match(F7Parser.NCharacters);
2369  } catch (re) {
2370    if (re instanceof antlr4.error.RecognitionException) {
2371      localctx.exception = re;
2372      this._errHandler.reportError(this, re);
2373      this._errHandler.recover(this, re);
2374    } else {
2375      throw re;
2376    }
2377  } finally {
2378    this.exitRule();
2379  }
2380  return localctx;
2381};
2382
2383function ColumnWiseWithRowOffsetLastBiRangeContext(parser, parent, invokingState) {
2384  if (parent === undefined) {
2385    parent = null;
2386  }
2387  if (invokingState === undefined || invokingState === null) {
2388    invokingState = -1;
2389  }
2390  antlr4.ParserRuleContext.call(this, parent, invokingState);
2391  this.parser = parser;
2392  this.ruleIndex = F7Parser.RULE_columnWiseWithRowOffsetLastBiRange;
2393  this.grid = null; // GridNameContext
2394  this.absoFirstColumn = null; // Token
2395  this.firstColumn = null; // Token
2396  this.absoLastColumn = null; // Token
2397  this.lastColumn = null; // Token
2398  this.absoLastRow = null; // Token
2399  this.lastRow = null; // Token
2400  return this;
2401}
2402
2403ColumnWiseWithRowOffsetLastBiRangeContext.prototype = Object.create(
2404  antlr4.ParserRuleContext.prototype
2405);
2406ColumnWiseWithRowOffsetLastBiRangeContext.prototype.constructor =
2407  ColumnWiseWithRowOffsetLastBiRangeContext;
2408
2409ColumnWiseWithRowOffsetLastBiRangeContext.prototype.Colon = function () {
2410  return this.getToken(F7Parser.Colon, 0);
2411};
2412
2413ColumnWiseWithRowOffsetLastBiRangeContext.prototype.NCharacters = function (i) {
2414  if (i === undefined) {
2415    i = null;
2416  }
2417  if (i === null) {
2418    return this.getTokens(F7Parser.NCharacters);
2419  } else {
2420    return this.getToken(F7Parser.NCharacters, i);
2421  }
2422};
2423
2424ColumnWiseWithRowOffsetLastBiRangeContext.prototype.Int = function () {
2425  return this.getToken(F7Parser.Int, 0);
2426};
2427
2428ColumnWiseWithRowOffsetLastBiRangeContext.prototype.Bang = function () {
2429  return this.getToken(F7Parser.Bang, 0);
2430};
2431
2432ColumnWiseWithRowOffsetLastBiRangeContext.prototype.gridName = function () {
2433  return this.getTypedRuleContext(GridNameContext, 0);
2434};
2435
2436ColumnWiseWithRowOffsetLastBiRangeContext.prototype.Dollar = function (i) {
2437  if (i === undefined) {
2438    i = null;
2439  }
2440  if (i === null) {
2441    return this.getTokens(F7Parser.Dollar);
2442  } else {
2443    return this.getToken(F7Parser.Dollar, i);
2444  }
2445};
2446
2447ColumnWiseWithRowOffsetLastBiRangeContext.prototype.enterRule = function (listener) {
2448  if (listener instanceof F7Listener) {
2449    listener.enterColumnWiseWithRowOffsetLastBiRange(this);
2450  }
2451};
2452
2453ColumnWiseWithRowOffsetLastBiRangeContext.prototype.exitRule = function (listener) {
2454  if (listener instanceof F7Listener) {
2455    listener.exitColumnWiseWithRowOffsetLastBiRange(this);
2456  }
2457};
2458
2459ColumnWiseWithRowOffsetLastBiRangeContext.prototype.accept = function (visitor) {
2460  if (visitor instanceof F7Visitor) {
2461    return visitor.visitColumnWiseWithRowOffsetLastBiRange(this);
2462  } else {
2463    return visitor.visitChildren(this);
2464  }
2465};
2466
2467F7Parser.ColumnWiseWithRowOffsetLastBiRangeContext = ColumnWiseWithRowOffsetLastBiRangeContext;
2468
2469F7Parser.prototype.columnWiseWithRowOffsetLastBiRange = function () {
2470  var localctx = new ColumnWiseWithRowOffsetLastBiRangeContext(this, this._ctx, this.state);
2471  this.enterRule(localctx, 18, F7Parser.RULE_columnWiseWithRowOffsetLastBiRange);
2472  var _la = 0; // Token type
2473  try {
2474    this.enterOuterAlt(localctx, 1);
2475    this.state = 194;
2476    this._errHandler.sync(this);
2477    var la_ = this._interp.adaptivePredict(this._input, 24, this._ctx);
2478    if (la_ === 1) {
2479      this.state = 191;
2480      localctx.grid = this.gridName();
2481      this.state = 192;
2482      this.match(F7Parser.Bang);
2483    }
2484    this.state = 197;
2485    this._errHandler.sync(this);
2486    _la = this._input.LA(1);
2487    if (_la === F7Parser.Dollar) {
2488      this.state = 196;
2489      localctx.absoFirstColumn = this.match(F7Parser.Dollar);
2490    }
2491
2492    this.state = 199;
2493    localctx.firstColumn = this.match(F7Parser.NCharacters);
2494    this.state = 200;
2495    this.match(F7Parser.Colon);
2496    this.state = 202;
2497    this._errHandler.sync(this);
2498    _la = this._input.LA(1);
2499    if (_la === F7Parser.Dollar) {
2500      this.state = 201;
2501      localctx.absoLastColumn = this.match(F7Parser.Dollar);
2502    }
2503
2504    this.state = 204;
2505    localctx.lastColumn = this.match(F7Parser.NCharacters);
2506    this.state = 206;
2507    this._errHandler.sync(this);
2508    _la = this._input.LA(1);
2509    if (_la === F7Parser.Dollar) {
2510      this.state = 205;
2511      localctx.absoLastRow = this.match(F7Parser.Dollar);
2512    }
2513
2514    this.state = 208;
2515    localctx.lastRow = this.match(F7Parser.Int);
2516  } catch (re) {
2517    if (re instanceof antlr4.error.RecognitionException) {
2518      localctx.exception = re;
2519      this._errHandler.reportError(this, re);
2520      this._errHandler.recover(this, re);
2521    } else {
2522      throw re;
2523    }
2524  } finally {
2525    this.exitRule();
2526  }
2527  return localctx;
2528};
2529
2530function RowWiseBiRangeContext(parser, parent, invokingState) {
2531  if (parent === undefined) {
2532    parent = null;
2533  }
2534  if (invokingState === undefined || invokingState === null) {
2535    invokingState = -1;
2536  }
2537  antlr4.ParserRuleContext.call(this, parent, invokingState);
2538  this.parser = parser;
2539  this.ruleIndex = F7Parser.RULE_rowWiseBiRange;
2540  this.grid = null; // GridNameContext
2541  this.absoFirstRow = null; // Token
2542  this.firstRow = null; // Token
2543  this.absoLastRow = null; // Token
2544  this.lastRow = null; // Token
2545  return this;
2546}
2547
2548RowWiseBiRangeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
2549RowWiseBiRangeContext.prototype.constructor = RowWiseBiRangeContext;
2550
2551RowWiseBiRangeContext.prototype.Colon = function () {
2552  return this.getToken(F7Parser.Colon, 0);
2553};
2554
2555RowWiseBiRangeContext.prototype.Int = function (i) {
2556  if (i === undefined) {
2557    i = null;
2558  }
2559  if (i === null) {
2560    return this.getTokens(F7Parser.Int);
2561  } else {
2562    return this.getToken(F7Parser.Int, i);
2563  }
2564};
2565
2566RowWiseBiRangeContext.prototype.Bang = function () {
2567  return this.getToken(F7Parser.Bang, 0);
2568};
2569
2570RowWiseBiRangeContext.prototype.gridName = function () {
2571  return this.getTypedRuleContext(GridNameContext, 0);
2572};
2573
2574RowWiseBiRangeContext.prototype.Dollar = function (i) {
2575  if (i === undefined) {
2576    i = null;
2577  }
2578  if (i === null) {
2579    return this.getTokens(F7Parser.Dollar);
2580  } else {
2581    return this.getToken(F7Parser.Dollar, i);
2582  }
2583};
2584
2585RowWiseBiRangeContext.prototype.enterRule = function (listener) {
2586  if (listener instanceof F7Listener) {
2587    listener.enterRowWiseBiRange(this);
2588  }
2589};
2590
2591RowWiseBiRangeContext.prototype.exitRule = function (listener) {
2592  if (listener instanceof F7Listener) {
2593    listener.exitRowWiseBiRange(this);
2594  }
2595};
2596
2597RowWiseBiRangeContext.prototype.accept = function (visitor) {
2598  if (visitor instanceof F7Visitor) {
2599    return visitor.visitRowWiseBiRange(this);
2600  } else {
2601    return visitor.visitChildren(this);
2602  }
2603};
2604
2605F7Parser.RowWiseBiRangeContext = RowWiseBiRangeContext;
2606
2607F7Parser.prototype.rowWiseBiRange = function () {
2608  var localctx = new RowWiseBiRangeContext(this, this._ctx, this.state);
2609  this.enterRule(localctx, 20, F7Parser.RULE_rowWiseBiRange);
2610  var _la = 0; // Token type
2611  try {
2612    this.enterOuterAlt(localctx, 1);
2613    this.state = 213;
2614    this._errHandler.sync(this);
2615    _la = this._input.LA(1);
2616    if (_la === F7Parser.NCharacters || _la === F7Parser.SingleQuoteString) {
2617      this.state = 210;
2618      localctx.grid = this.gridName();
2619      this.state = 211;
2620      this.match(F7Parser.Bang);
2621    }
2622
2623    this.state = 216;
2624    this._errHandler.sync(this);
2625    _la = this._input.LA(1);
2626    if (_la === F7Parser.Dollar) {
2627      this.state = 215;
2628      localctx.absoFirstRow = this.match(F7Parser.Dollar);
2629    }
2630
2631    this.state = 218;
2632    localctx.firstRow = this.match(F7Parser.Int);
2633    this.state = 219;
2634    this.match(F7Parser.Colon);
2635    this.state = 221;
2636    this._errHandler.sync(this);
2637    _la = this._input.LA(1);
2638    if (_la === F7Parser.Dollar) {
2639      this.state = 220;
2640      localctx.absoLastRow = this.match(F7Parser.Dollar);
2641    }
2642
2643    this.state = 223;
2644    localctx.lastRow = this.match(F7Parser.Int);
2645  } catch (re) {
2646    if (re instanceof antlr4.error.RecognitionException) {
2647      localctx.exception = re;
2648      this._errHandler.reportError(this, re);
2649      this._errHandler.recover(this, re);
2650    } else {
2651      throw re;
2652    }
2653  } finally {
2654    this.exitRule();
2655  }
2656  return localctx;
2657};
2658
2659function RowWiseWithColumnOffsetFirstBiRangeContext(parser, parent, invokingState) {
2660  if (parent === undefined) {
2661    parent = null;
2662  }
2663  if (invokingState === undefined || invokingState === null) {
2664    invokingState = -1;
2665  }
2666  antlr4.ParserRuleContext.call(this, parent, invokingState);
2667  this.parser = parser;
2668  this.ruleIndex = F7Parser.RULE_rowWiseWithColumnOffsetFirstBiRange;
2669  this.grid = null; // GridNameContext
2670  this.absoFirstColumn = null; // Token
2671  this.firstColumn = null; // Token
2672  this.absoFirstRow = null; // Token
2673  this.firstRow = null; // Token
2674  this.absoLastRow = null; // Token
2675  this.lastRow = null; // Token
2676  return this;
2677}
2678
2679RowWiseWithColumnOffsetFirstBiRangeContext.prototype = Object.create(
2680  antlr4.ParserRuleContext.prototype
2681);
2682RowWiseWithColumnOffsetFirstBiRangeContext.prototype.constructor =
2683  RowWiseWithColumnOffsetFirstBiRangeContext;
2684
2685RowWiseWithColumnOffsetFirstBiRangeContext.prototype.Colon = function () {
2686  return this.getToken(F7Parser.Colon, 0);
2687};
2688
2689RowWiseWithColumnOffsetFirstBiRangeContext.prototype.NCharacters = function () {
2690  return this.getToken(F7Parser.NCharacters, 0);
2691};
2692
2693RowWiseWithColumnOffsetFirstBiRangeContext.prototype.Int = function (i) {
2694  if (i === undefined) {
2695    i = null;
2696  }
2697  if (i === null) {
2698    return this.getTokens(F7Parser.Int);
2699  } else {
2700    return this.getToken(F7Parser.Int, i);
2701  }
2702};
2703
2704RowWiseWithColumnOffsetFirstBiRangeContext.prototype.Bang = function () {
2705  return this.getToken(F7Parser.Bang, 0);
2706};
2707
2708RowWiseWithColumnOffsetFirstBiRangeContext.prototype.gridName = function () {
2709  return this.getTypedRuleContext(GridNameContext, 0);
2710};
2711
2712RowWiseWithColumnOffsetFirstBiRangeContext.prototype.Dollar = function (i) {
2713  if (i === undefined) {
2714    i = null;
2715  }
2716  if (i === null) {
2717    return this.getTokens(F7Parser.Dollar);
2718  } else {
2719    return this.getToken(F7Parser.Dollar, i);
2720  }
2721};
2722
2723RowWiseWithColumnOffsetFirstBiRangeContext.prototype.enterRule = function (listener) {
2724  if (listener instanceof F7Listener) {
2725    listener.enterRowWiseWithColumnOffsetFirstBiRange(this);
2726  }
2727};
2728
2729RowWiseWithColumnOffsetFirstBiRangeContext.prototype.exitRule = function (listener) {
2730  if (listener instanceof F7Listener) {
2731    listener.exitRowWiseWithColumnOffsetFirstBiRange(this);
2732  }
2733};
2734
2735RowWiseWithColumnOffsetFirstBiRangeContext.prototype.accept = function (visitor) {
2736  if (visitor instanceof F7Visitor) {
2737    return visitor.visitRowWiseWithColumnOffsetFirstBiRange(this);
2738  } else {
2739    return visitor.visitChildren(this);
2740  }
2741};
2742
2743F7Parser.RowWiseWithColumnOffsetFirstBiRangeContext = RowWiseWithColumnOffsetFirstBiRangeContext;
2744
2745F7Parser.prototype.rowWiseWithColumnOffsetFirstBiRange = function () {
2746  var localctx = new RowWiseWithColumnOffsetFirstBiRangeContext(this, this._ctx, this.state);
2747  this.enterRule(localctx, 22, F7Parser.RULE_rowWiseWithColumnOffsetFirstBiRange);
2748  var _la = 0; // Token type
2749  try {
2750    this.enterOuterAlt(localctx, 1);
2751    this.state = 228;
2752    this._errHandler.sync(this);
2753    var la_ = this._interp.adaptivePredict(this._input, 31, this._ctx);
2754    if (la_ === 1) {
2755      this.state = 225;
2756      localctx.grid = this.gridName();
2757      this.state = 226;
2758      this.match(F7Parser.Bang);
2759    }
2760    this.state = 231;
2761    this._errHandler.sync(this);
2762    _la = this._input.LA(1);
2763    if (_la === F7Parser.Dollar) {
2764      this.state = 230;
2765      localctx.absoFirstColumn = this.match(F7Parser.Dollar);
2766    }
2767
2768    this.state = 233;
2769    localctx.firstColumn = this.match(F7Parser.NCharacters);
2770    this.state = 235;
2771    this._errHandler.sync(this);
2772    _la = this._input.LA(1);
2773    if (_la === F7Parser.Dollar) {
2774      this.state = 234;
2775      localctx.absoFirstRow = this.match(F7Parser.Dollar);
2776    }
2777
2778    this.state = 237;
2779    localctx.firstRow = this.match(F7Parser.Int);
2780    this.state = 238;
2781    this.match(F7Parser.Colon);
2782    this.state = 240;
2783    this._errHandler.sync(this);
2784    _la = this._input.LA(1);
2785    if (_la === F7Parser.Dollar) {
2786      this.state = 239;
2787      localctx.absoLastRow = this.match(F7Parser.Dollar);
2788    }
2789
2790    this.state = 242;
2791    localctx.lastRow = this.match(F7Parser.Int);
2792  } catch (re) {
2793    if (re instanceof antlr4.error.RecognitionException) {
2794      localctx.exception = re;
2795      this._errHandler.reportError(this, re);
2796      this._errHandler.recover(this, re);
2797    } else {
2798      throw re;
2799    }
2800  } finally {
2801    this.exitRule();
2802  }
2803  return localctx;
2804};
2805
2806function RowWiseWithColumnOffsetLastBiRangeContext(parser, parent, invokingState) {
2807  if (parent === undefined) {
2808    parent = null;
2809  }
2810  if (invokingState === undefined || invokingState === null) {
2811    invokingState = -1;
2812  }
2813  antlr4.ParserRuleContext.call(this, parent, invokingState);
2814  this.parser = parser;
2815  this.ruleIndex = F7Parser.RULE_rowWiseWithColumnOffsetLastBiRange;
2816  this.grid = null; // GridNameContext
2817  this.absoFirstRow = null; // Token
2818  this.firstRow = null; // Token
2819  this.absLastColumn = null; // Token
2820  this.lastColumn = null; // Token
2821  this.absoLastRow = null; // Token
2822  this.lastRow = null; // Token
2823  return this;
2824}
2825
2826RowWiseWithColumnOffsetLastBiRangeContext.prototype = Object.create(
2827  antlr4.ParserRuleContext.prototype
2828);
2829RowWiseWithColumnOffsetLastBiRangeContext.prototype.constructor =
2830  RowWiseWithColumnOffsetLastBiRangeContext;
2831
2832RowWiseWithColumnOffsetLastBiRangeContext.prototype.Colon = function () {
2833  return this.getToken(F7Parser.Colon, 0);
2834};
2835
2836RowWiseWithColumnOffsetLastBiRangeContext.prototype.Int = function (i) {
2837  if (i === undefined) {
2838    i = null;
2839  }
2840  if (i === null) {
2841    return this.getTokens(F7Parser.Int);
2842  } else {
2843    return this.getToken(F7Parser.Int, i);
2844  }
2845};
2846
2847RowWiseWithColumnOffsetLastBiRangeContext.prototype.NCharacters = function () {
2848  return this.getToken(F7Parser.NCharacters, 0);
2849};
2850
2851RowWiseWithColumnOffsetLastBiRangeContext.prototype.Bang = function () {
2852  return this.getToken(F7Parser.Bang, 0);
2853};
2854
2855RowWiseWithColumnOffsetLastBiRangeContext.prototype.gridName = function () {
2856  return this.getTypedRuleContext(GridNameContext, 0);
2857};
2858
2859RowWiseWithColumnOffsetLastBiRangeContext.prototype.Dollar = function (i) {
2860  if (i === undefined) {
2861    i = null;
2862  }
2863  if (i === null) {
2864    return this.getTokens(F7Parser.Dollar);
2865  } else {
2866    return this.getToken(F7Parser.Dollar, i);
2867  }
2868};
2869
2870RowWiseWithColumnOffsetLastBiRangeContext.prototype.enterRule = function (listener) {
2871  if (listener instanceof F7Listener) {
2872    listener.enterRowWiseWithColumnOffsetLastBiRange(this);
2873  }
2874};
2875
2876RowWiseWithColumnOffsetLastBiRangeContext.prototype.exitRule = function (listener) {
2877  if (listener instanceof F7Listener) {
2878    listener.exitRowWiseWithColumnOffsetLastBiRange(this);
2879  }
2880};
2881
2882RowWiseWithColumnOffsetLastBiRangeContext.prototype.accept = function (visitor) {
2883  if (visitor instanceof F7Visitor) {
2884    return visitor.visitRowWiseWithColumnOffsetLastBiRange(this);
2885  } else {
2886    return visitor.visitChildren(this);
2887  }
2888};
2889
2890F7Parser.RowWiseWithColumnOffsetLastBiRangeContext = RowWiseWithColumnOffsetLastBiRangeContext;
2891
2892F7Parser.prototype.rowWiseWithColumnOffsetLastBiRange = function () {
2893  var localctx = new RowWiseWithColumnOffsetLastBiRangeContext(this, this._ctx, this.state);
2894  this.enterRule(localctx, 24, F7Parser.RULE_rowWiseWithColumnOffsetLastBiRange);
2895  var _la = 0; // Token type
2896  try {
2897    this.enterOuterAlt(localctx, 1);
2898    this.state = 247;
2899    this._errHandler.sync(this);
2900    _la = this._input.LA(1);
2901    if (_la === F7Parser.NCharacters || _la === F7Parser.SingleQuoteString) {
2902      this.state = 244;
2903      localctx.grid = this.gridName();
2904      this.state = 245;
2905      this.match(F7Parser.Bang);
2906    }
2907
2908    this.state = 250;
2909    this._errHandler.sync(this);
2910    _la = this._input.LA(1);
2911    if (_la === F7Parser.Dollar) {
2912      this.state = 249;
2913      localctx.absoFirstRow = this.match(F7Parser.Dollar);
2914    }
2915
2916    this.state = 252;
2917    localctx.firstRow = this.match(F7Parser.Int);
2918    this.state = 253;
2919    this.match(F7Parser.Colon);
2920    this.state = 255;
2921    this._errHandler.sync(this);
2922    _la = this._input.LA(1);
2923    if (_la === F7Parser.Dollar) {
2924      this.state = 254;
2925      localctx.absLastColumn = this.match(F7Parser.Dollar);
2926    }
2927
2928    this.state = 257;
2929    localctx.lastColumn = this.match(F7Parser.NCharacters);
2930    this.state = 259;
2931    this._errHandler.sync(this);
2932    _la = this._input.LA(1);
2933    if (_la === F7Parser.Dollar) {
2934      this.state = 258;
2935      localctx.absoLastRow = this.match(F7Parser.Dollar);
2936    }
2937
2938    this.state = 261;
2939    localctx.lastRow = this.match(F7Parser.Int);
2940  } catch (re) {
2941    if (re instanceof antlr4.error.RecognitionException) {
2942      localctx.exception = re;
2943      this._errHandler.reportError(this, re);
2944      this._errHandler.recover(this, re);
2945    } else {
2946      throw re;
2947    }
2948  } finally {
2949    this.exitRule();
2950  }
2951  return localctx;
2952};
2953
2954function ArgumentsContext(parser, parent, invokingState) {
2955  if (parent === undefined) {
2956    parent = null;
2957  }
2958  if (invokingState === undefined || invokingState === null) {
2959    invokingState = -1;
2960  }
2961  antlr4.ParserRuleContext.call(this, parent, invokingState);
2962  this.parser = parser;
2963  this.ruleIndex = F7Parser.RULE_arguments;
2964  return this;
2965}
2966
2967ArgumentsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
2968ArgumentsContext.prototype.constructor = ArgumentsContext;
2969
2970ArgumentsContext.prototype.expression = function (i) {
2971  if (i === undefined) {
2972    i = null;
2973  }
2974  if (i === null) {
2975    return this.getTypedRuleContexts(ExpressionContext);
2976  } else {
2977    return this.getTypedRuleContext(ExpressionContext, i);
2978  }
2979};
2980
2981ArgumentsContext.prototype.Comma = function (i) {
2982  if (i === undefined) {
2983    i = null;
2984  }
2985  if (i === null) {
2986    return this.getTokens(F7Parser.Comma);
2987  } else {
2988    return this.getToken(F7Parser.Comma, i);
2989  }
2990};
2991
2992ArgumentsContext.prototype.enterRule = function (listener) {
2993  if (listener instanceof F7Listener) {
2994    listener.enterArguments(this);
2995  }
2996};
2997
2998ArgumentsContext.prototype.exitRule = function (listener) {
2999  if (listener instanceof F7Listener) {
3000    listener.exitArguments(this);
3001  }
3002};
3003
3004ArgumentsContext.prototype.accept = function (visitor) {
3005  if (visitor instanceof F7Visitor) {
3006    return visitor.visitArguments(this);
3007  } else {
3008    return visitor.visitChildren(this);
3009  }
3010};
3011
3012F7Parser.ArgumentsContext = ArgumentsContext;
3013
3014F7Parser.prototype.arguments = function () {
3015  var localctx = new ArgumentsContext(this, this._ctx, this.state);
3016  this.enterRule(localctx, 26, F7Parser.RULE_arguments);
3017  var _la = 0; // Token type
3018  try {
3019    this.enterOuterAlt(localctx, 1);
3020    this.state = 271;
3021    this._errHandler.sync(this);
3022    _la = this._input.LA(1);
3023    if (
3024      (_la & ~0x1f) == 0 &&
3025      ((1 << _la) &
3026        ((1 << F7Parser.NCharacters) |
3027          (1 << F7Parser.Int) |
3028          (1 << F7Parser.Number) |
3029          (1 << F7Parser.SingleQuoteString) |
3030          (1 << F7Parser.String) |
3031          (1 << F7Parser.Error) |
3032          (1 << F7Parser.LeftParen) |
3033          (1 << F7Parser.LeftBrace) |
3034          (1 << F7Parser.Plus) |
3035          (1 << F7Parser.Minus) |
3036          (1 << F7Parser.Dollar))) !==
3037        0
3038    ) {
3039      this.state = 263;
3040      this.expression(0);
3041      this.state = 268;
3042      this._errHandler.sync(this);
3043      _la = this._input.LA(1);
3044      while (_la === F7Parser.Comma) {
3045        this.state = 264;
3046        this.match(F7Parser.Comma);
3047        this.state = 265;
3048        this.expression(0);
3049        this.state = 270;
3050        this._errHandler.sync(this);
3051        _la = this._input.LA(1);
3052      }
3053    }
3054  } catch (re) {
3055    if (re instanceof antlr4.error.RecognitionException) {
3056      localctx.exception = re;
3057      this._errHandler.reportError(this, re);
3058      this._errHandler.recover(this, re);
3059    } else {
3060      throw re;
3061    }
3062  } finally {
3063    this.exitRule();
3064  }
3065  return localctx;
3066};
3067
3068function GridNameContext(parser, parent, invokingState) {
3069  if (parent === undefined) {
3070    parent = null;
3071  }
3072  if (invokingState === undefined || invokingState === null) {
3073    invokingState = -1;
3074  }
3075  antlr4.ParserRuleContext.call(this, parent, invokingState);
3076  this.parser = parser;
3077  this.ruleIndex = F7Parser.RULE_gridName;
3078  return this;
3079}
3080
3081GridNameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
3082GridNameContext.prototype.constructor = GridNameContext;
3083
3084GridNameContext.prototype.SingleQuoteString = function () {
3085  return this.getToken(F7Parser.SingleQuoteString, 0);
3086};
3087
3088GridNameContext.prototype.identifier = function () {
3089  return this.getTypedRuleContext(IdentifierContext, 0);
3090};
3091
3092GridNameContext.prototype.enterRule = function (listener) {
3093  if (listener instanceof F7Listener) {
3094    listener.enterGridName(this);
3095  }
3096};
3097
3098GridNameContext.prototype.exitRule = function (listener) {
3099  if (listener instanceof F7Listener) {
3100    listener.exitGridName(this);
3101  }
3102};
3103
3104GridNameContext.prototype.accept = function (visitor) {
3105  if (visitor instanceof F7Visitor) {
3106    return visitor.visitGridName(this);
3107  } else {
3108    return visitor.visitChildren(this);
3109  }
3110};
3111
3112F7Parser.GridNameContext = GridNameContext;
3113
3114F7Parser.prototype.gridName = function () {
3115  var localctx = new GridNameContext(this, this._ctx, this.state);
3116  this.enterRule(localctx, 28, F7Parser.RULE_gridName);
3117  try {
3118    this.state = 275;
3119    this._errHandler.sync(this);
3120    switch (this._input.LA(1)) {
3121      case F7Parser.SingleQuoteString:
3122        this.enterOuterAlt(localctx, 1);
3123        this.state = 273;
3124        this.match(F7Parser.SingleQuoteString);
3125        break;
3126      case F7Parser.NCharacters:
3127        this.enterOuterAlt(localctx, 2);
3128        this.state = 274;
3129        this.identifier();
3130        break;
3131      default:
3132        throw new antlr4.error.NoViableAltException(this);
3133    }
3134  } catch (re) {
3135    if (re instanceof antlr4.error.RecognitionException) {
3136      localctx.exception = re;
3137      this._errHandler.reportError(this, re);
3138      this._errHandler.recover(this, re);
3139    } else {
3140      throw re;
3141    }
3142  } finally {
3143    this.exitRule();
3144  }
3145  return localctx;
3146};
3147
3148function IdentifierContext(parser, parent, invokingState) {
3149  if (parent === undefined) {
3150    parent = null;
3151  }
3152  if (invokingState === undefined || invokingState === null) {
3153    invokingState = -1;
3154  }
3155  antlr4.ParserRuleContext.call(this, parent, invokingState);
3156  this.parser = parser;
3157  this.ruleIndex = F7Parser.RULE_identifier;
3158  return this;
3159}
3160
3161IdentifierContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
3162IdentifierContext.prototype.constructor = IdentifierContext;
3163
3164IdentifierContext.prototype.NCharacters = function (i) {
3165  if (i === undefined) {
3166    i = null;
3167  }
3168  if (i === null) {
3169    return this.getTokens(F7Parser.NCharacters);
3170  } else {
3171    return this.getToken(F7Parser.NCharacters, i);
3172  }
3173};
3174
3175IdentifierContext.prototype.Dot = function (i) {
3176  if (i === undefined) {
3177    i = null;
3178  }
3179  if (i === null) {
3180    return this.getTokens(F7Parser.Dot);
3181  } else {
3182    return this.getToken(F7Parser.Dot, i);
3183  }
3184};
3185
3186IdentifierContext.prototype.Underscore = function (i) {
3187  if (i === undefined) {
3188    i = null;
3189  }
3190  if (i === null) {
3191    return this.getTokens(F7Parser.Underscore);
3192  } else {
3193    return this.getToken(F7Parser.Underscore, i);
3194  }
3195};
3196
3197IdentifierContext.prototype.Int = function (i) {
3198  if (i === undefined) {
3199    i = null;
3200  }
3201  if (i === null) {
3202    return this.getTokens(F7Parser.Int);
3203  } else {
3204    return this.getToken(F7Parser.Int, i);
3205  }
3206};
3207
3208IdentifierContext.prototype.enterRule = function (listener) {
3209  if (listener instanceof F7Listener) {
3210    listener.enterIdentifier(this);
3211  }
3212};
3213
3214IdentifierContext.prototype.exitRule = function (listener) {
3215  if (listener instanceof F7Listener) {
3216    listener.exitIdentifier(this);
3217  }
3218};
3219
3220IdentifierContext.prototype.accept = function (visitor) {
3221  if (visitor instanceof F7Visitor) {
3222    return visitor.visitIdentifier(this);
3223  } else {
3224    return visitor.visitChildren(this);
3225  }
3226};
3227
3228F7Parser.IdentifierContext = IdentifierContext;
3229
3230F7Parser.prototype.identifier = function () {
3231  var localctx = new IdentifierContext(this, this._ctx, this.state);
3232  this.enterRule(localctx, 30, F7Parser.RULE_identifier);
3233  var _la = 0; // Token type
3234  try {
3235    this.enterOuterAlt(localctx, 1);
3236    this.state = 277;
3237    this.match(F7Parser.NCharacters);
3238    this.state = 281;
3239    this._errHandler.sync(this);
3240    var _alt = this._interp.adaptivePredict(this._input, 42, this._ctx);
3241    while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) {
3242      if (_alt === 1) {
3243        this.state = 278;
3244        _la = this._input.LA(1);
3245        if (
3246          !(
3247            (_la & ~0x1f) == 0 &&
3248            ((1 << _la) &
3249              ((1 << F7Parser.NCharacters) |
3250                (1 << F7Parser.Dot) |
3251                (1 << F7Parser.Int) |
3252                (1 << F7Parser.Underscore))) !==
3253              0
3254          )
3255        ) {
3256          this._errHandler.recoverInline(this);
3257        } else {
3258          this._errHandler.reportMatch(this);
3259          this.consume();
3260        }
3261      }
3262      this.state = 283;
3263      this._errHandler.sync(this);
3264      _alt = this._interp.adaptivePredict(this._input, 42, this._ctx);
3265    }
3266  } catch (re) {
3267    if (re instanceof antlr4.error.RecognitionException) {
3268      localctx.exception = re;
3269      this._errHandler.reportError(this, re);
3270      this._errHandler.recover(this, re);
3271    } else {
3272      throw re;
3273    }
3274  } finally {
3275    this.exitRule();
3276  }
3277  return localctx;
3278};
3279
3280function ComparisonOperatorContext(parser, parent, invokingState) {
3281  if (parent === undefined) {
3282    parent = null;
3283  }
3284  if (invokingState === undefined || invokingState === null) {
3285    invokingState = -1;
3286  }
3287  antlr4.ParserRuleContext.call(this, parent, invokingState);
3288  this.parser = parser;
3289  this.ruleIndex = F7Parser.RULE_comparisonOperator;
3290  return this;
3291}
3292
3293ComparisonOperatorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
3294ComparisonOperatorContext.prototype.constructor = ComparisonOperatorContext;
3295
3296ComparisonOperatorContext.prototype.LessThanOrEqualTO = function () {
3297  return this.getToken(F7Parser.LessThanOrEqualTO, 0);
3298};
3299
3300ComparisonOperatorContext.prototype.GreaterThanOrEqualTo = function () {
3301  return this.getToken(F7Parser.GreaterThanOrEqualTo, 0);
3302};
3303
3304ComparisonOperatorContext.prototype.LessThan = function () {
3305  return this.getToken(F7Parser.LessThan, 0);
3306};
3307
3308ComparisonOperatorContext.prototype.GreaterThan = function () {
3309  return this.getToken(F7Parser.GreaterThan, 0);
3310};
3311
3312ComparisonOperatorContext.prototype.Equal = function () {
3313  return this.getToken(F7Parser.Equal, 0);
3314};
3315
3316ComparisonOperatorContext.prototype.NotEqual = function () {
3317  return this.getToken(F7Parser.NotEqual, 0);
3318};
3319
3320ComparisonOperatorContext.prototype.enterRule = function (listener) {
3321  if (listener instanceof F7Listener) {
3322    listener.enterComparisonOperator(this);
3323  }
3324};
3325
3326ComparisonOperatorContext.prototype.exitRule = function (listener) {
3327  if (listener instanceof F7Listener) {
3328    listener.exitComparisonOperator(this);
3329  }
3330};
3331
3332ComparisonOperatorContext.prototype.accept = function (visitor) {
3333  if (visitor instanceof F7Visitor) {
3334    return visitor.visitComparisonOperator(this);
3335  } else {
3336    return visitor.visitChildren(this);
3337  }
3338};
3339
3340F7Parser.ComparisonOperatorContext = ComparisonOperatorContext;
3341
3342F7Parser.prototype.comparisonOperator = function () {
3343  var localctx = new ComparisonOperatorContext(this, this._ctx, this.state);
3344  this.enterRule(localctx, 32, F7Parser.RULE_comparisonOperator);
3345  var _la = 0; // Token type
3346  try {
3347    this.enterOuterAlt(localctx, 1);
3348    this.state = 284;
3349    _la = this._input.LA(1);
3350    if (
3351      !(
3352        (_la & ~0x1f) == 0 &&
3353        ((1 << _la) &
3354          ((1 << F7Parser.GreaterThan) |
3355            (1 << F7Parser.GreaterThanOrEqualTo) |
3356            (1 << F7Parser.LessThan) |
3357            (1 << F7Parser.LessThanOrEqualTO) |
3358            (1 << F7Parser.Equal) |
3359            (1 << F7Parser.NotEqual))) !==
3360          0
3361      )
3362    ) {
3363      this._errHandler.recoverInline(this);
3364    } else {
3365      this._errHandler.reportMatch(this);
3366      this.consume();
3367    }
3368  } catch (re) {
3369    if (re instanceof antlr4.error.RecognitionException) {
3370      localctx.exception = re;
3371      this._errHandler.reportError(this, re);
3372      this._errHandler.recover(this, re);
3373    } else {
3374      throw re;
3375    }
3376  } finally {
3377    this.exitRule();
3378  }
3379  return localctx;
3380};
3381
3382F7Parser.prototype.sempred = function (localctx, ruleIndex, predIndex) {
3383  switch (ruleIndex) {
3384    case 2:
3385      return this.expression_sempred(localctx, predIndex);
3386    default:
3387      throw "No predicate with index:" + ruleIndex;
3388  }
3389};
3390
3391F7Parser.prototype.expression_sempred = function (localctx, predIndex) {
3392  switch (predIndex) {
3393    case 0:
3394      return this.precpred(this._ctx, 7);
3395    case 1:
3396      return this.precpred(this._ctx, 6);
3397    case 2:
3398      return this.precpred(this._ctx, 5);
3399    case 3:
3400      return this.precpred(this._ctx, 4);
3401    case 4:
3402      return this.precpred(this._ctx, 3);
3403    case 5:
3404      return this.precpred(this._ctx, 8);
3405    default:
3406      throw "No predicate with index:" + predIndex;
3407  }
3408};
3409
3410exports.F7Parser = F7Parser;