From 4541dee9e19416523ad42f45d1bae16bb7a0d318 Mon Sep 17 00:00:00 2001 From: kay delaney <45561153+kaydelaney@users.noreply.github.com> Date: Thu, 21 May 2020 15:18:09 +0100 Subject: [PATCH] Datasource/CloudWatch: Better handling of stats grouping (#24789) * Datasource/CloudWatch: Better handling of stats grouping (cherry picked from commit e1f4287f70d4169fb25723a8b70e9ebf8de9c1e2) --- package.json | 2 + pkg/tsdb/cloudwatch/cloudwatch.go | 84 +- pkg/tsdb/cloudwatch/log_actions.go | 27 +- pkg/tsdb/cloudwatch/log_query.go | 12 + pkg/tsdb/cloudwatch/sort_frame.go | 41 + pkg/tsdb/cloudwatch/sort_frame_test.go | 57 + .../cloudwatch/components/LogsQueryField.tsx | 2 + .../datasource/cloudwatch/datasource.ts | 47 +- .../plugins/datasource/cloudwatch/types.ts | 1 + .../cloudwatch/utils/query/ScrollQLLexer.js | 1390 +++ .../cloudwatch/utils/query/ScrollQLParser.js | 8603 +++++++++++++++++ .../utils/query/ScrollQLParserListener.js | 566 ++ .../utils/query/getStatsGroups.test.ts | 69 + .../cloudwatch/utils/query/getStatsGroups.ts | 41 + yarn.lock | 10 + 15 files changed, 10840 insertions(+), 112 deletions(-) create mode 100644 pkg/tsdb/cloudwatch/sort_frame.go create mode 100644 pkg/tsdb/cloudwatch/sort_frame_test.go create mode 100644 public/app/plugins/datasource/cloudwatch/utils/query/ScrollQLLexer.js create mode 100644 public/app/plugins/datasource/cloudwatch/utils/query/ScrollQLParser.js create mode 100644 public/app/plugins/datasource/cloudwatch/utils/query/ScrollQLParserListener.js create mode 100644 public/app/plugins/datasource/cloudwatch/utils/query/getStatsGroups.test.ts create mode 100644 public/app/plugins/datasource/cloudwatch/utils/query/getStatsGroups.ts diff --git a/package.json b/package.json index a93e34488b7..5647f97ee5f 100644 --- a/package.json +++ b/package.json @@ -208,6 +208,7 @@ "@grafana/slate-react": "0.22.9-grafana", "@reduxjs/toolkit": "1.3.4", "@torkelo/react-select": "3.0.8", + "@types/antlr4": "^4.7.1", "@types/braintree__sanitize-url": "4.0.0", "@types/common-tags": "^1.8.0", "@types/jsurl": "^1.2.28", @@ -221,6 +222,7 @@ "angular-native-dragdrop": "1.2.2", "angular-route": "1.6.6", "angular-sanitize": "1.6.6", + "antlr4": "^4.8.0", "baron": "3.0.3", "brace": "0.11.1", "calculate-size": "1.1.1", diff --git a/pkg/tsdb/cloudwatch/cloudwatch.go b/pkg/tsdb/cloudwatch/cloudwatch.go index 3c4ccd43a15..6fb43858cbe 100644 --- a/pkg/tsdb/cloudwatch/cloudwatch.go +++ b/pkg/tsdb/cloudwatch/cloudwatch.go @@ -4,14 +4,12 @@ import ( "context" "fmt" "regexp" - "strconv" "sync" "time" "github.com/aws/aws-sdk-go/service/cloudwatchlogs" "github.com/aws/aws-sdk-go/service/ec2/ec2iface" "github.com/aws/aws-sdk-go/service/resourcegroupstaggingapi/resourcegroupstaggingapiiface" - "github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/models" @@ -139,7 +137,7 @@ func (e *CloudWatchExecutor) Query(ctx context.Context, dsInfo *models.DataSourc */ queryParams := queryContext.Queries[0].Model _, fromAlert := queryContext.Headers["FromAlert"] - isLogAlertQuery := fromAlert && queryParams.Get("mode").MustString("") == "Logs" + isLogAlertQuery := fromAlert && queryParams.Get("queryMode").MustString("") == "Logs" if isLogAlertQuery { return e.executeLogAlertQuery(ctx, queryContext) @@ -193,11 +191,39 @@ func (e *CloudWatchExecutor) executeLogAlertQuery(ctx context.Context, queryCont return nil, err } - dataframe, err := queryResultsToDataframe(getQueryResultsOutput) + dataframe, err := logsResultsToDataframes(getQueryResultsOutput) if err != nil { return nil, err } + statsGroups := queryParams.Get("statsGroups").MustStringArray() + if len(statsGroups) > 0 && len(dataframe.Fields) > 0 { + groupedFrames, err := groupResults(dataframe, statsGroups) + if err != nil { + return nil, err + } + + encodedFrames := make([][]byte, 0) + for _, frame := range groupedFrames { + dataframeEnc, err := frame.MarshalArrow() + if err != nil { + return nil, err + } + encodedFrames = append(encodedFrames, dataframeEnc) + } + + response := &tsdb.Response{ + Results: make(map[string]*tsdb.QueryResult), + } + + response.Results["A"] = &tsdb.QueryResult{ + RefId: "A", + Dataframes: encodedFrames, + } + + return response, nil + } + dataframeEnc, err := dataframe.MarshalArrow() if err != nil { return nil, err @@ -215,56 +241,6 @@ func (e *CloudWatchExecutor) executeLogAlertQuery(ctx context.Context, queryCont return response, nil } -func queryResultsToDataframe(results *cloudwatchlogs.GetQueryResultsOutput) (*data.Frame, error) { - rowCount := len(results.Results) - fieldValues := make(map[string]interface{}) - for i, row := range results.Results { - for _, resultField := range row { - // Strip @ptr field from results as it's not needed - if *resultField.Field == "@ptr" { - continue - } - - if _, exists := fieldValues[*resultField.Field]; !exists { - if _, err := time.Parse(cloudWatchTSFormat, *resultField.Value); err == nil { - fieldValues[*resultField.Field] = make([]*time.Time, rowCount) - } else if _, err := strconv.ParseFloat(*resultField.Value, 64); err == nil { - fieldValues[*resultField.Field] = make([]*float64, rowCount) - } else { - continue - } - } - - if timeField, ok := fieldValues[*resultField.Field].([]*time.Time); ok { - parsedTime, err := time.Parse(cloudWatchTSFormat, *resultField.Value) - if err != nil { - return nil, err - } - - timeField[i] = &parsedTime - } else if numericField, ok := fieldValues[*resultField.Field].([]*float64); ok { - parsedFloat, err := strconv.ParseFloat(*resultField.Value, 64) - if err != nil { - return nil, err - } - numericField[i] = &parsedFloat - } - } - } - - newFields := make([]*data.Field, 0) - for fieldName, vals := range fieldValues { - newFields = append(newFields, data.NewField(fieldName, nil, vals)) - - if fieldName == "@timestamp" { - newFields[len(newFields)-1].SetConfig(&data.FieldConfig{Title: "Time"}) - } - } - - frame := data.NewFrame("CloudWatchLogsResponse", newFields...) - return frame, nil -} - func isTerminated(queryStatus string) bool { return queryStatus == "Complete" || queryStatus == "Cancelled" || queryStatus == "Failed" || queryStatus == "Timeout" } diff --git a/pkg/tsdb/cloudwatch/log_actions.go b/pkg/tsdb/cloudwatch/log_actions.go index 6c29b321e25..ed7ba58fcf7 100644 --- a/pkg/tsdb/cloudwatch/log_actions.go +++ b/pkg/tsdb/cloudwatch/log_actions.go @@ -4,7 +4,6 @@ import ( "context" "fmt" "sort" - "strconv" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" @@ -34,12 +33,11 @@ func (e *CloudWatchExecutor) executeLogActions(ctx context.Context, queryContext // the query response is in, there does not seem to be a way to tell // by the response alone if/how the results should be grouped. // Because of this, if the frontend sees that a "stats ... by ..." query is being made - // the "groupResults" parameter is sent along with the query to the backend so that we + // the "statsGroups" parameter is sent along with the query to the backend so that we // can correctly group the CloudWatch logs response. - if query.Model.Get("groupResults").MustBool() && len(dataframe.Fields) > 0 { - groupingFields := findGroupingFields(dataframe.Fields) - - groupedFrames, err := groupResults(dataframe, groupingFields) + statsGroups := query.Model.Get("statsGroups").MustStringArray() + if len(statsGroups) > 0 && len(dataframe.Fields) > 0 { + groupedFrames, err := groupResults(dataframe, statsGroups) if err != nil { return err } @@ -84,23 +82,6 @@ func (e *CloudWatchExecutor) executeLogActions(ctx context.Context, queryContext return response, nil } -func findGroupingFields(fields []*data.Field) []string { - groupingFields := make([]string, 0) - for _, field := range fields { - if field.Type().Numeric() || field.Type() == data.FieldTypeNullableTime || field.Type() == data.FieldTypeTime { - continue - } - - if _, err := strconv.ParseFloat(*field.At(0).(*string), 64); err == nil { - continue - } - - groupingFields = append(groupingFields, field.Name) - } - - return groupingFields -} - func (e *CloudWatchExecutor) executeLogAction(ctx context.Context, queryContext *tsdb.TsdbQuery, query *tsdb.Query) (*data.Frame, error) { parameters := query.Model subType := query.Model.Get("subtype").MustString() diff --git a/pkg/tsdb/cloudwatch/log_query.go b/pkg/tsdb/cloudwatch/log_query.go index b068b874aad..f19516a432f 100644 --- a/pkg/tsdb/cloudwatch/log_query.go +++ b/pkg/tsdb/cloudwatch/log_query.go @@ -1,6 +1,8 @@ package cloudwatch import ( + "sort" + "strconv" "time" "github.com/aws/aws-sdk-go/service/cloudwatchlogs" @@ -47,6 +49,8 @@ func logsResultsToDataframes(response *cloudwatchlogs.GetQueryResultsOutput) (*d // Check if field is time field if _, err := time.Parse(cloudWatchTSFormat, *resultField.Value); err == nil { fieldValues[*resultField.Field] = make([]*time.Time, rowCount) + } else if _, err := strconv.ParseFloat(*resultField.Value, 64); err == nil { + fieldValues[*resultField.Field] = make([]*float64, rowCount) } else { fieldValues[*resultField.Field] = make([]*string, rowCount) } @@ -59,6 +63,12 @@ func logsResultsToDataframes(response *cloudwatchlogs.GetQueryResultsOutput) (*d } timeField[i] = &parsedTime + } else if numericField, ok := fieldValues[*resultField.Field].([]*float64); ok { + parsedFloat, err := strconv.ParseFloat(*resultField.Value, 64) + if err != nil { + return nil, err + } + numericField[i] = &parsedFloat } else { fieldValues[*resultField.Field].([]*string)[i] = resultField.Value } @@ -90,6 +100,8 @@ func logsResultsToDataframes(response *cloudwatchlogs.GetQueryResultsOutput) (*d }, } + // Results aren't guaranteed to come ordered by time (ascending), so we need to sort + sort.Sort(ByTime(*frame)) return frame, nil } diff --git a/pkg/tsdb/cloudwatch/sort_frame.go b/pkg/tsdb/cloudwatch/sort_frame.go new file mode 100644 index 00000000000..757f55ef802 --- /dev/null +++ b/pkg/tsdb/cloudwatch/sort_frame.go @@ -0,0 +1,41 @@ +package cloudwatch + +import ( + "time" + + "github.com/grafana/grafana-plugin-sdk-go/data" +) + +// ByTime implements sort.Interface for data.Frame based on the frame's time field +type ByTime data.Frame + +func (a ByTime) Len() int { + if len(a.Fields) > 0 { + return a.Fields[0].Len() + } + + return 0 +} + +func (a ByTime) Swap(i, j int) { + for _, field := range a.Fields { + temp := field.At(i) + field.Set(i, field.At(j)) + field.Set(j, temp) + } +} +func (a ByTime) Less(i, j int) bool { + var timeField *data.Field = nil + for _, field := range a.Fields { + if field.Type() == data.FieldTypeNullableTime { + timeField = field + break + } + } + + if timeField == nil { + return false + } + + return (timeField.At(i).(*time.Time)).Before(*timeField.At(j).(*time.Time)) +} diff --git a/pkg/tsdb/cloudwatch/sort_frame_test.go b/pkg/tsdb/cloudwatch/sort_frame_test.go new file mode 100644 index 00000000000..076059c25be --- /dev/null +++ b/pkg/tsdb/cloudwatch/sort_frame_test.go @@ -0,0 +1,57 @@ +package cloudwatch + +import ( + "sort" + "testing" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/grafana/grafana-plugin-sdk-go/data" + + "github.com/stretchr/testify/assert" +) + +func TestFrameSort(t *testing.T) { + timeA, _ := time.Parse("2006-01-02 15:04:05.000", "2020-03-02 17:04:05.000") + timeB, _ := time.Parse("2006-01-02 15:04:05.000", "2020-03-02 16:04:05.000") + timeC, _ := time.Parse("2006-01-02 15:04:05.000", "2020-03-02 15:04:05.000") + timeVals := []*time.Time{ + &timeA, &timeB, &timeC, + } + timeField := data.NewField("@timestamp", nil, timeVals) + + stringField := data.NewField("line", nil, []*string{ + aws.String("test message 1"), + aws.String("test message 2"), + aws.String("test message 3"), + }) + + numberField := data.NewField("nums", nil, []*float64{ + aws.Float64(20.0), + aws.Float64(50.0), + aws.Float64(17.0), + }) + + expectedDataframe := &data.Frame{ + Name: "CloudWatchLogsResponse", + Fields: []*data.Field{ + timeField, + stringField, + numberField, + }, + } + + sort.Sort(ByTime(*expectedDataframe)) + + for i := 1; i < timeField.Len(); i++ { + assert.True(t, timeField.At(i).(*time.Time).After(*(timeField.At(i - 1).(*time.Time)))) + } + + assert.Equal(t, *stringField.At(0).(*string), "test message 3") + assert.Equal(t, *stringField.At(1).(*string), "test message 2") + assert.Equal(t, *stringField.At(2).(*string), "test message 1") + + assert.Equal(t, *numberField.At(0).(*float64), 17.0) + assert.Equal(t, *numberField.At(1).(*float64), 50.0) + assert.Equal(t, *numberField.At(2).(*float64), 20.0) +} diff --git a/public/app/plugins/datasource/cloudwatch/components/LogsQueryField.tsx b/public/app/plugins/datasource/cloudwatch/components/LogsQueryField.tsx index a15d1f44f03..734c3aee5a8 100644 --- a/public/app/plugins/datasource/cloudwatch/components/LogsQueryField.tsx +++ b/public/app/plugins/datasource/cloudwatch/components/LogsQueryField.tsx @@ -33,6 +33,7 @@ import { dispatch } from 'app/store/store'; import { changeModeAction } from 'app/features/explore/state/actionTypes'; import { appEvents } from 'app/core/core'; import { InputActionMeta } from '@grafana/ui/src/components/Select/types'; +import { getStatsGroups } from '../utils/query/getStatsGroups'; export interface CloudWatchLogsQueryFieldProps extends ExploreQueryFieldProps { absoluteRange: AbsoluteTimeRange; @@ -193,6 +194,7 @@ export class CloudWatchLogsQueryField extends React.PureComponent logGroupName.value!) ?? [], region: selectedRegion.value ?? 'default', + statsGroups: getStatsGroups(value), }; onChange(nextQuery); } diff --git a/public/app/plugins/datasource/cloudwatch/datasource.ts b/public/app/plugins/datasource/cloudwatch/datasource.ts index 67e707e5022..0385af5cf96 100644 --- a/public/app/plugins/datasource/cloudwatch/datasource.ts +++ b/public/app/plugins/datasource/cloudwatch/datasource.ts @@ -17,8 +17,6 @@ import { DataQueryResponse, LoadingState, toDataFrame, - guessFieldTypes, - FieldType, LogRowModel, } from '@grafana/data'; import { getBackendSrv, toDataQueryResponse } from '@grafana/runtime'; @@ -137,9 +135,8 @@ export class CloudWatchDatasource extends DataSourceApi target.refId === dataFrame.refId)!.expression - ), + statsGroups: (options.targets.find(target => target.refId === dataFrame.refId)! as CloudWatchLogsQuery) + .statsGroups, })) ) ), @@ -205,7 +202,7 @@ export class CloudWatchDatasource extends DataSourceApi + queryParams: Array<{ queryId: string; refId: string; limit?: number; region: string; statsGroups?: string[] }> ): Observable { this.logQueries = {}; queryParams.forEach(param => { @@ -257,19 +254,15 @@ export class CloudWatchDatasource extends DataSourceApi { - const correctedFrames = dataFrames.map(frame => correctFrameTypes(frame)); - - return { - data: correctedFrames, - key: 'test-key', - state: correctedFrames.every( - dataFrame => dataFrame.meta?.custom?.['Status'] === CloudWatchLogsQueryStatus.Complete - ) - ? LoadingState.Done - : LoadingState.Loading, - }; - }) + map(dataFrames => ({ + data: dataFrames, + key: 'test-key', + state: dataFrames.every( + dataFrame => dataFrame.meta?.custom?.['Status'] === CloudWatchLogsQueryStatus.Complete + ) + ? LoadingState.Done + : LoadingState.Loading, + })) ), () => this.stopQueries() ); @@ -925,22 +918,6 @@ function withTeardown(observable: Observable, onUnsubscribe: () => v }); } -function correctFrameTypes(frame: DataFrame): DataFrame { - frame.fields.forEach(field => { - if (field.type === FieldType.string) { - field.type = FieldType.other; - } - }); - - const correctedFrame = guessFieldTypes(frame); - // const timeField = correctedFrame.fields.find(field => field.name === '@timestamp'); - // if (timeField) { - // timeField.type = FieldType.time; - // } - - return correctedFrame; -} - function parseLogGroupName(logIdentifier: string): string { const colonIndex = logIdentifier.lastIndexOf(':'); return logIdentifier.substr(colonIndex + 1); diff --git a/public/app/plugins/datasource/cloudwatch/types.ts b/public/app/plugins/datasource/cloudwatch/types.ts index 3016917cf91..8bbb9bf911d 100644 --- a/public/app/plugins/datasource/cloudwatch/types.ts +++ b/public/app/plugins/datasource/cloudwatch/types.ts @@ -43,6 +43,7 @@ export interface CloudWatchLogsQuery extends DataQuery { namespace: string; expression: string; logGroupNames: string[]; + statsGroups?: string[]; } export type CloudWatchQuery = CloudWatchMetricsQuery | CloudWatchLogsQuery; diff --git a/public/app/plugins/datasource/cloudwatch/utils/query/ScrollQLLexer.js b/public/app/plugins/datasource/cloudwatch/utils/query/ScrollQLLexer.js new file mode 100644 index 00000000000..3d2233024dc --- /dev/null +++ b/public/app/plugins/datasource/cloudwatch/utils/query/ScrollQLLexer.js @@ -0,0 +1,1390 @@ +// Generated from ScrollQLLexer.g4 by ANTLR 4.8 +// jshint ignore: start +// @ts-nocheck +var antlr4 = require('antlr4/index'); + +var serializedATN = [ + '\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964', + '\u0002r\u04b0\b\u0001\b\u0001\b\u0001\u0004\u0002\t\u0002\u0004\u0003', + '\t\u0003\u0004\u0004\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006', + '\u0004\u0007\t\u0007\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b', + '\t\u000b\u0004\f\t\f\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f', + '\u0004\u0010\t\u0010\u0004\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013', + '\t\u0013\u0004\u0014\t\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016', + '\u0004\u0017\t\u0017\u0004\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a', + '\t\u001a\u0004\u001b\t\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d', + '\u0004\u001e\t\u001e\u0004\u001f\t\u001f\u0004 \t \u0004!\t!\u0004"', + "\t\"\u0004#\t#\u0004$\t$\u0004%\t%\u0004&\t&\u0004'\t'\u0004(\t(\u0004", + ')\t)\u0004*\t*\u0004+\t+\u0004,\t,\u0004-\t-\u0004.\t.\u0004/\t/\u0004', + '0\t0\u00041\t1\u00042\t2\u00043\t3\u00044\t4\u00045\t5\u00046\t6\u0004', + '7\t7\u00048\t8\u00049\t9\u0004:\t:\u0004;\t;\u0004<\t<\u0004=\t=\u0004', + '>\t>\u0004?\t?\u0004@\t@\u0004A\tA\u0004B\tB\u0004C\tC\u0004D\tD\u0004', + 'E\tE\u0004F\tF\u0004G\tG\u0004H\tH\u0004I\tI\u0004J\tJ\u0004K\tK\u0004', + 'L\tL\u0004M\tM\u0004N\tN\u0004O\tO\u0004P\tP\u0004Q\tQ\u0004R\tR\u0004', + 'S\tS\u0004T\tT\u0004U\tU\u0004V\tV\u0004W\tW\u0004X\tX\u0004Y\tY\u0004', + 'Z\tZ\u0004[\t[\u0004\\\t\\\u0004]\t]\u0004^\t^\u0004_\t_\u0004`\t`\u0004', + 'a\ta\u0004b\tb\u0004c\tc\u0004d\td\u0004e\te\u0004f\tf\u0004g\tg\u0004', + 'h\th\u0004i\ti\u0004j\tj\u0004k\tk\u0004l\tl\u0004m\tm\u0004n\tn\u0004', + 'o\to\u0004p\tp\u0004q\tq\u0004r\tr\u0004s\ts\u0004t\tt\u0004u\tu\u0004', + 'v\tv\u0004w\tw\u0004x\tx\u0004y\ty\u0004z\tz\u0004{\t{\u0004|\t|\u0004', + '}\t}\u0004~\t~\u0004\u007f\t\u007f\u0004\u0080\t\u0080\u0004\u0081\t', + '\u0081\u0004\u0082\t\u0082\u0004\u0083\t\u0083\u0004\u0084\t\u0084\u0004', + '\u0085\t\u0085\u0004\u0086\t\u0086\u0004\u0087\t\u0087\u0004\u0088\t', + '\u0088\u0004\u0089\t\u0089\u0004\u008a\t\u008a\u0004\u008b\t\u008b\u0004', + '\u008c\t\u008c\u0004\u008d\t\u008d\u0004\u008e\t\u008e\u0004\u008f\t', + '\u008f\u0004\u0090\t\u0090\u0004\u0091\t\u0091\u0004\u0092\t\u0092\u0004', + '\u0093\t\u0093\u0004\u0094\t\u0094\u0004\u0095\t\u0095\u0004\u0096\t', + '\u0096\u0004\u0097\t\u0097\u0004\u0098\t\u0098\u0004\u0099\t\u0099\u0004', + '\u009a\t\u009a\u0004\u009b\t\u009b\u0004\u009c\t\u009c\u0004\u009d\t', + '\u009d\u0004\u009e\t\u009e\u0004\u009f\t\u009f\u0004\u00a0\t\u00a0\u0004', + '\u00a1\t\u00a1\u0004\u00a2\t\u00a2\u0004\u00a3\t\u00a3\u0004\u00a4\t', + '\u00a4\u0004\u00a5\t\u00a5\u0003\u0002\u0006\u0002\u014f\n\u0002\r\u0002', + '\u000e\u0002\u0150\u0003\u0002\u0003\u0002\u0003\u0003\u0003\u0003\u0007', + '\u0003\u0157\n\u0003\f\u0003\u000e\u0003\u015a\u000b\u0003\u0003\u0003', + '\u0003\u0003\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004', + '\u0003\u0004\u0003\u0004\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005', + '\u0003\u0005\u0003\u0005\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006', + '\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\b\u0003\b\u0003', + '\b\u0003\b\u0003\b\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t\u0003', + '\t\u0003\t\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003', + '\n\u0003\n\u0003\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003\u000b', + '\u0003\u000b\u0005\u000b\u018f\n\u000b\u0003\f\u0003\f\u0003\f\u0003', + '\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003\r\u0003\r\u0003\r\u0003\r\u0003', + '\r\u0003\r\u0003\r\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003', + '\u000e\u0005\u000e\u01a5\n\u000e\u0003\u000f\u0003\u000f\u0003\u000f', + '\u0003\u000f\u0003\u000f\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010', + '\u0003\u0010\u0003\u0010\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011', + '\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0013', + '\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0014\u0003\u0014', + '\u0003\u0014\u0003\u0014\u0003\u0014\u0003\u0014\u0003\u0015\u0003\u0015', + '\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0016\u0003\u0016\u0003\u0016', + '\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0017\u0003\u0017\u0003\u0017', + '\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018', + '\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u001a\u0003\u001a\u0003\u001a', + '\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001c\u0003\u001c', + '\u0003\u001c\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001e', + '\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e', + '\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f', + '\u0003\u001f\u0003\u001f\u0003 \u0003 \u0003 \u0003!\u0003!\u0003!\u0003', + '!\u0003!\u0005!\u0202\n!\u0003"\u0003"\u0003"\u0003"\u0003"\u0003', + '"\u0003"\u0003"\u0003"\u0003"\u0003"\u0003"\u0005"\u0210\n"', + '\u0003#\u0003#\u0003$\u0003$\u0003$\u0003$\u0005$\u0218\n$\u0003%\u0003', + '%\u0003%\u0003%\u0003%\u0003%\u0003%\u0005%\u0221\n%\u0003&\u0003&\u0003', + "'\u0003'\u0003'\u0003'\u0005'\u0229\n'\u0003(\u0003(\u0003(\u0003", + '(\u0003(\u0003(\u0003(\u0005(\u0232\n(\u0003)\u0003)\u0003*\u0003*\u0003', + '*\u0005*\u0239\n*\u0003+\u0003+\u0003+\u0003+\u0003+\u0005+\u0240\n', + '+\u0003,\u0003,\u0003-\u0003-\u0003-\u0003-\u0005-\u0248\n-\u0003.\u0003', + '.\u0003/\u0003/\u0003/\u0003/\u0003/\u0005/\u0251\n/\u00030\u00030\u0003', + '0\u00050\u0256\n0\u00031\u00031\u00031\u00031\u00051\u025c\n1\u0003', + '2\u00032\u00032\u00032\u00032\u00032\u00052\u0264\n2\u00033\u00033\u0003', + '4\u00034\u00034\u00034\u00054\u026c\n4\u00035\u00035\u00035\u00035\u0003', + '5\u00035\u00035\u00035\u00055\u0276\n5\u00036\u00036\u00037\u00037\u0003', + '7\u00057\u027d\n7\u00038\u00038\u00038\u00038\u00038\u00058\u0284\n', + '8\u00039\u00039\u00079\u0288\n9\f9\u000e9\u028b\u000b9\u0003:\u0003', + ':\u0003;\u0003;\u0003;\u0006;\u0292\n;\r;\u000e;\u0293\u0003;\u0005', + ';\u0297\n;\u0003;\u0005;\u029a\n;\u0003<\u0006<\u029d\n<\r<\u000e<\u029e', + '\u0003=\u0003=\u0005=\u02a3\n=\u0003=\u0003=\u0003>\u0003>\u0003>\u0007', + '>\u02aa\n>\f>\u000e>\u02ad\u000b>\u0003>\u0003>\u0003?\u0003?\u0003', + '?\u0003@\u0003@\u0003@\u0007@\u02b7\n@\f@\u000e@\u02ba\u000b@\u0003', + '@\u0003@\u0003A\u0003A\u0003A\u0003B\u0003B\u0003B\u0003B\u0003B\u0003', + 'B\u0007B\u02c7\nB\fB\u000eB\u02ca\u000bB\u0003B\u0003B\u0003B\u0003', + 'B\u0003C\u0003C\u0003C\u0003C\u0003C\u0003D\u0003D\u0003D\u0003D\u0003', + 'D\u0003D\u0007D\u02db\nD\fD\u000eD\u02de\u000bD\u0003D\u0003D\u0003', + 'D\u0003D\u0003E\u0003E\u0003E\u0003E\u0003E\u0003F\u0003F\u0003F\u0007', + 'F\u02ec\nF\fF\u000eF\u02ef\u000bF\u0003F\u0003F\u0003G\u0003G\u0003', + 'G\u0003H\u0003H\u0003H\u0003H\u0003H\u0003I\u0003I\u0003I\u0003I\u0003', + 'I\u0003J\u0003J\u0003K\u0003K\u0003L\u0003L\u0003M\u0003M\u0003N\u0003', + 'N\u0003N\u0003N\u0003N\u0005N\u030d\nN\u0003O\u0003O\u0003O\u0003P\u0003', + 'P\u0003Q\u0003Q\u0003R\u0003R\u0003S\u0003S\u0003T\u0003T\u0003U\u0003', + 'U\u0003V\u0003V\u0003W\u0003W\u0003X\u0003X\u0003Y\u0003Y\u0003Z\u0003', + 'Z\u0003[\u0003[\u0003[\u0003\\\u0003\\\u0003\\\u0003]\u0003]\u0003^', + '\u0003^\u0003^\u0003_\u0003_\u0003`\u0003`\u0003a\u0003a\u0003b\u0003', + 'b\u0003c\u0003c\u0003d\u0003d\u0003e\u0003e\u0003f\u0003f\u0003g\u0003', + 'g\u0003h\u0003h\u0003i\u0003i\u0003j\u0003j\u0003k\u0003k\u0003l\u0003', + 'l\u0003m\u0003m\u0003n\u0003n\u0003o\u0003o\u0003p\u0003p\u0003q\u0003', + 'q\u0003r\u0003r\u0003s\u0003s\u0003t\u0003t\u0003u\u0003u\u0003v\u0003', + 'v\u0003w\u0003w\u0003x\u0003x\u0003y\u0003y\u0003z\u0003z\u0003{\u0003', + '{\u0003{\u0003{\u0003{\u0003|\u0006|\u0371\n|\r|\u000e|\u0372\u0003', + '|\u0003|\u0003}\u0003}\u0007}\u0379\n}\f}\u000e}\u037c\u000b}\u0003', + '}\u0003}\u0003~\u0003~\u0003~\u0007~\u0383\n~\f~\u000e~\u0386\u000b', + '~\u0003~\u0003~\u0003~\u0003~\u0003\u007f\u0003\u007f\u0003\u007f\u0007', + '\u007f\u038f\n\u007f\f\u007f\u000e\u007f\u0392\u000b\u007f\u0003\u007f', + '\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u0080\u0003\u0080\u0003\u0080', + '\u0003\u0081\u0003\u0081\u0003\u0081\u0007\u0081\u039e\n\u0081\f\u0081', + '\u000e\u0081\u03a1\u000b\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003', + '\u0081\u0003\u0082\u0003\u0082\u0003\u0082\u0003\u0083\u0003\u0083\u0003', + '\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0007\u0083\u03b0\n\u0083', + '\f\u0083\u000e\u0083\u03b3\u000b\u0083\u0003\u0083\u0003\u0083\u0003', + '\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0084\u0003\u0084\u0003', + '\u0084\u0003\u0084\u0003\u0084\u0003\u0085\u0003\u0085\u0003\u0085\u0003', + '\u0085\u0003\u0085\u0003\u0085\u0007\u0085\u03c6\n\u0085\f\u0085\u000e', + '\u0085\u03c9\u000b\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085', + '\u0003\u0085\u0003\u0085\u0003\u0086\u0003\u0086\u0003\u0086\u0003\u0086', + '\u0003\u0086\u0003\u0087\u0003\u0087\u0007\u0087\u03d8\n\u0087\f\u0087', + '\u000e\u0087\u03db\u000b\u0087\u0003\u0088\u0003\u0088\u0003\u0089\u0003', + '\u0089\u0003\u0089\u0007\u0089\u03e2\n\u0089\f\u0089\u000e\u0089\u03e5', + '\u000b\u0089\u0003\u0089\u0003\u0089\u0003\u008a\u0003\u008a\u0003\u008a', + '\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008c\u0006\u008c\u03f0\n', + '\u008c\r\u008c\u000e\u008c\u03f1\u0003\u008c\u0003\u008c\u0003\u008d', + '\u0003\u008d\u0007\u008d\u03f8\n\u008d\f\u008d\u000e\u008d\u03fb\u000b', + '\u008d\u0003\u008d\u0003\u008d\u0003\u008e\u0003\u008e\u0003\u008e\u0003', + '\u008e\u0003\u008e\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003', + '\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003', + '\u008f\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003', + '\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0091\u0003', + '\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003', + '\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0005', + '\u0092\u0426\n\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0093', + '\u0003\u0093\u0003\u0093\u0003\u0093\u0003\u0093\u0003\u0093\u0003\u0093', + '\u0003\u0093\u0003\u0093\u0003\u0093\u0003\u0093\u0003\u0094\u0003\u0094', + '\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094', + '\u0003\u0094\u0003\u0094\u0003\u0095\u0003\u0095\u0003\u0095\u0003\u0095', + '\u0003\u0095\u0005\u0095\u0445\n\u0095\u0003\u0095\u0003\u0095\u0003', + '\u0095\u0003\u0096\u0003\u0096\u0003\u0096\u0003\u0096\u0003\u0096\u0003', + '\u0096\u0003\u0096\u0003\u0096\u0003\u0097\u0003\u0097\u0003\u0097\u0003', + '\u0097\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0097\u0003', + '\u0098\u0003\u0098\u0003\u0099\u0003\u0099\u0003\u009a\u0003\u009a\u0003', + '\u009a\u0003\u009a\u0003\u009b\u0003\u009b\u0003\u009b\u0003\u009c\u0003', + '\u009c\u0003\u009c\u0003\u009c\u0003\u009d\u0003\u009d\u0003\u009d\u0007', + '\u009d\u046d\n\u009d\f\u009d\u000e\u009d\u0470\u000b\u009d\u0003\u009d', + '\u0003\u009d\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009f\u0003\u009f', + '\u0003\u009f\u0007\u009f\u047a\n\u009f\f\u009f\u000e\u009f\u047d\u000b', + '\u009f\u0003\u009f\u0003\u009f\u0003\u00a0\u0003\u00a0\u0003\u00a0\u0003', + '\u00a1\u0003\u00a1\u0003\u00a1\u0003\u00a1\u0003\u00a1\u0003\u00a1\u0007', + '\u00a1\u048a\n\u00a1\f\u00a1\u000e\u00a1\u048d\u000b\u00a1\u0003\u00a1', + '\u0003\u00a1\u0003\u00a1\u0003\u00a1\u0003\u00a2\u0003\u00a2\u0003\u00a2', + '\u0003\u00a2\u0003\u00a2\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3', + '\u0003\u00a3\u0003\u00a3\u0007\u00a3\u049e\n\u00a3\f\u00a3\u000e\u00a3', + '\u04a1\u000b\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003', + '\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a5\u0006', + '\u00a5\u04ad\n\u00a5\r\u00a5\u000e\u00a5\u04ae\u0011\u02ab\u02b8\u02c8', + '\u02dc\u02ed\u0384\u0390\u039f\u03b1\u03c7\u03e3\u046e\u047b\u048b\u049f', + '\u0002\u00a6\u0005\u0003\u0007\u0004\t\u0005\u000b\u0006\r\u0007\u000f', + '\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019\r\u001b\u000e\u001d\u000f', + "\u001f\u0010!\u0011#\u0012%\u0013'\u0014)\u0015+\u0016-\u0017/\u0018", + '1\u00193\u001a5\u001b7\u001c9\u001d;\u001e=\u001f? A!C"E#G$I%K&M\'', + 'O(Q)S*U+W,Y-[.]/_0a1c2e3g4i5k6m7o8q9s:u;w\u0083\u0002\u0085?\u0087\u0002\u0089@\u008b\u0002\u008dA\u008f', + '\u0002\u0091B\u0093C\u0095D\u0097E\u0099F\u009bG\u009dH\u009fI\u00a1', + 'J\u00a3K\u00a5L\u00a7M\u00a9N\u00abO\u00adP\u00afQ\u00b1R\u00b3S\u00b5', + 'T\u00b7U\u00b9V\u00bbW\u00bdX\u00bfY\u00c1Z\u00c3\u0002\u00c5\u0002', + '\u00c7\u0002\u00c9\u0002\u00cb\u0002\u00cd\u0002\u00cf\u0002\u00d1\u0002', + '\u00d3\u0002\u00d5\u0002\u00d7\u0002\u00d9\u0002\u00db\u0002\u00dd\u0002', + '\u00df\u0002\u00e1\u0002\u00e3\u0002\u00e5\u0002\u00e7\u0002\u00e9\u0002', + '\u00eb\u0002\u00ed\u0002\u00ef\u0002\u00f1\u0002\u00f3\u0002\u00f5\u0002', + '\u00f7\u0002\u00f9[\u00fb\\\u00fd]\u00ff^\u0101\u0002\u0103_\u0105\u0002', + '\u0107`\u0109\u0002\u010ba\u010d\u0002\u010fb\u0111c\u0113d\u0115\u0002', + '\u0117\u0002\u0119e\u011bf\u011dr\u011f\u0002\u0121\u0002\u0123g\u0125', + '\u0002\u0127\u0002\u0129\u0002\u012b\u0002\u012d\u0002\u012f\u0002\u0131', + 'h\u0133i\u0135j\u0137k\u0139l\u013bm\u013d\u0002\u013fn\u0141\u0002', + '\u0143o\u0145\u0002\u0147p\u0149\u0002\u014bq\u0005\u0002\u0003\u0004', + '#\u0005\u0002\u000b\f\u000e\u000f""\u0004\u0002\f\f\u000f\u000f\u0005', + '\u0002C\\aac|\u0007\u0002002;C\\aac|\u0003\u00022;\u0004\u0002GGgg\u0004', + '\u0002--//\u0004\u0002CCcc\u0004\u0002DDdd\u0004\u0002EEee\u0004\u0002', + 'FFff\u0004\u0002HHhh\u0004\u0002IIii\u0004\u0002JJjj\u0004\u0002KKk', + 'k\u0004\u0002LLll\u0004\u0002MMmm\u0004\u0002NNnn\u0004\u0002OOoo\u0004', + '\u0002PPpp\u0004\u0002QQqq\u0004\u0002RRrr\u0004\u0002SSss\u0004\u0002', + 'TTtt\u0004\u0002UUuu\u0004\u0002VVvv\u0004\u0002WWww\u0004\u0002XXx', + 'x\u0004\u0002YYyy\u0004\u0002ZZzz\u0004\u0002[[{{\u0004\u0002\\\\||', + '\u0006\u0002\u000b\f\u000e\u000f""*+\u0002\u04c4\u0002\u0005\u0003', + '\u0002\u0002\u0002\u0002\u0007\u0003\u0002\u0002\u0002\u0002\t\u0003', + '\u0002\u0002\u0002\u0002\u000b\u0003\u0002\u0002\u0002\u0002\r\u0003', + '\u0002\u0002\u0002\u0002\u000f\u0003\u0002\u0002\u0002\u0002\u0011\u0003', + '\u0002\u0002\u0002\u0002\u0013\u0003\u0002\u0002\u0002\u0002\u0015\u0003', + '\u0002\u0002\u0002\u0002\u0017\u0003\u0002\u0002\u0002\u0002\u0019\u0003', + '\u0002\u0002\u0002\u0002\u001b\u0003\u0002\u0002\u0002\u0002\u001d\u0003', + '\u0002\u0002\u0002\u0002\u001f\u0003\u0002\u0002\u0002\u0002!\u0003', + '\u0002\u0002\u0002\u0002#\u0003\u0002\u0002\u0002\u0002%\u0003\u0002', + "\u0002\u0002\u0002'\u0003\u0002\u0002\u0002\u0002)\u0003\u0002\u0002", + '\u0002\u0002+\u0003\u0002\u0002\u0002\u0002-\u0003\u0002\u0002\u0002', + '\u0002/\u0003\u0002\u0002\u0002\u00021\u0003\u0002\u0002\u0002\u0002', + '3\u0003\u0002\u0002\u0002\u00025\u0003\u0002\u0002\u0002\u00027\u0003', + '\u0002\u0002\u0002\u00029\u0003\u0002\u0002\u0002\u0002;\u0003\u0002', + '\u0002\u0002\u0002=\u0003\u0002\u0002\u0002\u0002?\u0003\u0002\u0002', + '\u0002\u0002A\u0003\u0002\u0002\u0002\u0002C\u0003\u0002\u0002\u0002', + '\u0002E\u0003\u0002\u0002\u0002\u0002G\u0003\u0002\u0002\u0002\u0002', + 'I\u0003\u0002\u0002\u0002\u0002K\u0003\u0002\u0002\u0002\u0002M\u0003', + '\u0002\u0002\u0002\u0002O\u0003\u0002\u0002\u0002\u0002Q\u0003\u0002', + '\u0002\u0002\u0002S\u0003\u0002\u0002\u0002\u0002U\u0003\u0002\u0002', + '\u0002\u0002W\u0003\u0002\u0002\u0002\u0002Y\u0003\u0002\u0002\u0002', + '\u0002[\u0003\u0002\u0002\u0002\u0002]\u0003\u0002\u0002\u0002\u0002', + '_\u0003\u0002\u0002\u0002\u0002a\u0003\u0002\u0002\u0002\u0002c\u0003', + '\u0002\u0002\u0002\u0002e\u0003\u0002\u0002\u0002\u0002g\u0003\u0002', + '\u0002\u0002\u0002i\u0003\u0002\u0002\u0002\u0002k\u0003\u0002\u0002', + '\u0002\u0002m\u0003\u0002\u0002\u0002\u0002o\u0003\u0002\u0002\u0002', + '\u0002q\u0003\u0002\u0002\u0002\u0002s\u0003\u0002\u0002\u0002\u0002', + 'u\u0003\u0002\u0002\u0002\u0002w\u0003\u0002\u0002\u0002\u0002}\u0003', + '\u0002\u0002\u0002\u0002\u0081\u0003\u0002\u0002\u0002\u0002\u0085\u0003', + '\u0002\u0002\u0002\u0002\u0089\u0003\u0002\u0002\u0002\u0002\u008d\u0003', + '\u0002\u0002\u0002\u0002\u0091\u0003\u0002\u0002\u0002\u0002\u0093\u0003', + '\u0002\u0002\u0002\u0002\u0095\u0003\u0002\u0002\u0002\u0002\u0097\u0003', + '\u0002\u0002\u0002\u0002\u0099\u0003\u0002\u0002\u0002\u0002\u009b\u0003', + '\u0002\u0002\u0002\u0002\u009d\u0003\u0002\u0002\u0002\u0002\u009f\u0003', + '\u0002\u0002\u0002\u0002\u00a1\u0003\u0002\u0002\u0002\u0002\u00a3\u0003', + '\u0002\u0002\u0002\u0002\u00a5\u0003\u0002\u0002\u0002\u0002\u00a7\u0003', + '\u0002\u0002\u0002\u0002\u00a9\u0003\u0002\u0002\u0002\u0002\u00ab\u0003', + '\u0002\u0002\u0002\u0002\u00ad\u0003\u0002\u0002\u0002\u0002\u00af\u0003', + '\u0002\u0002\u0002\u0002\u00b1\u0003\u0002\u0002\u0002\u0002\u00b3\u0003', + '\u0002\u0002\u0002\u0002\u00b5\u0003\u0002\u0002\u0002\u0002\u00b7\u0003', + '\u0002\u0002\u0002\u0002\u00b9\u0003\u0002\u0002\u0002\u0002\u00bb\u0003', + '\u0002\u0002\u0002\u0002\u00bd\u0003\u0002\u0002\u0002\u0002\u00bf\u0003', + '\u0002\u0002\u0002\u0002\u00c1\u0003\u0002\u0002\u0002\u0003\u00f7\u0003', + '\u0002\u0002\u0002\u0003\u00f9\u0003\u0002\u0002\u0002\u0003\u00fb\u0003', + '\u0002\u0002\u0002\u0003\u00fd\u0003\u0002\u0002\u0002\u0003\u00ff\u0003', + '\u0002\u0002\u0002\u0003\u0103\u0003\u0002\u0002\u0002\u0003\u0107\u0003', + '\u0002\u0002\u0002\u0003\u010b\u0003\u0002\u0002\u0002\u0003\u010f\u0003', + '\u0002\u0002\u0002\u0003\u0111\u0003\u0002\u0002\u0002\u0003\u0113\u0003', + '\u0002\u0002\u0002\u0004\u0119\u0003\u0002\u0002\u0002\u0004\u011b\u0003', + '\u0002\u0002\u0002\u0004\u011d\u0003\u0002\u0002\u0002\u0004\u011f\u0003', + '\u0002\u0002\u0002\u0004\u0121\u0003\u0002\u0002\u0002\u0004\u0123\u0003', + '\u0002\u0002\u0002\u0004\u0125\u0003\u0002\u0002\u0002\u0004\u0127\u0003', + '\u0002\u0002\u0002\u0004\u0129\u0003\u0002\u0002\u0002\u0004\u012b\u0003', + '\u0002\u0002\u0002\u0004\u012d\u0003\u0002\u0002\u0002\u0004\u012f\u0003', + '\u0002\u0002\u0002\u0004\u0131\u0003\u0002\u0002\u0002\u0004\u0133\u0003', + '\u0002\u0002\u0002\u0004\u0135\u0003\u0002\u0002\u0002\u0004\u0137\u0003', + '\u0002\u0002\u0002\u0004\u0139\u0003\u0002\u0002\u0002\u0004\u013b\u0003', + '\u0002\u0002\u0002\u0004\u013f\u0003\u0002\u0002\u0002\u0004\u0143\u0003', + '\u0002\u0002\u0002\u0004\u0147\u0003\u0002\u0002\u0002\u0004\u014b\u0003', + '\u0002\u0002\u0002\u0005\u014e\u0003\u0002\u0002\u0002\u0007\u0154\u0003', + '\u0002\u0002\u0002\t\u015d\u0003\u0002\u0002\u0002\u000b\u0164\u0003', + '\u0002\u0002\u0002\r\u016a\u0003\u0002\u0002\u0002\u000f\u016e\u0003', + '\u0002\u0002\u0002\u0011\u0172\u0003\u0002\u0002\u0002\u0013\u0177\u0003', + '\u0002\u0002\u0002\u0015\u017f\u0003\u0002\u0002\u0002\u0017\u0188\u0003', + '\u0002\u0002\u0002\u0019\u0190\u0003\u0002\u0002\u0002\u001b\u0198\u0003', + '\u0002\u0002\u0002\u001d\u019f\u0003\u0002\u0002\u0002\u001f\u01a6\u0003', + '\u0002\u0002\u0002!\u01ab\u0003\u0002\u0002\u0002#\u01b1\u0003\u0002', + "\u0002\u0002%\u01b5\u0003\u0002\u0002\u0002'\u01ba\u0003\u0002\u0002", + '\u0002)\u01bf\u0003\u0002\u0002\u0002+\u01c5\u0003\u0002\u0002\u0002', + '-\u01ca\u0003\u0002\u0002\u0002/\u01d0\u0003\u0002\u0002\u00021\u01d3', + '\u0003\u0002\u0002\u00023\u01d9\u0003\u0002\u0002\u00025\u01dc\u0003', + '\u0002\u0002\u00027\u01df\u0003\u0002\u0002\u00029\u01e3\u0003\u0002', + '\u0002\u0002;\u01e6\u0003\u0002\u0002\u0002=\u01ea\u0003\u0002\u0002', + '\u0002?\u01f1\u0003\u0002\u0002\u0002A\u01f9\u0003\u0002\u0002\u0002', + 'C\u01fc\u0003\u0002\u0002\u0002E\u0203\u0003\u0002\u0002\u0002G\u0211', + '\u0003\u0002\u0002\u0002I\u0213\u0003\u0002\u0002\u0002K\u0219\u0003', + '\u0002\u0002\u0002M\u0222\u0003\u0002\u0002\u0002O\u0224\u0003\u0002', + '\u0002\u0002Q\u022a\u0003\u0002\u0002\u0002S\u0233\u0003\u0002\u0002', + '\u0002U\u0235\u0003\u0002\u0002\u0002W\u023a\u0003\u0002\u0002\u0002', + 'Y\u0241\u0003\u0002\u0002\u0002[\u0243\u0003\u0002\u0002\u0002]\u0249', + '\u0003\u0002\u0002\u0002_\u024b\u0003\u0002\u0002\u0002a\u0252\u0003', + '\u0002\u0002\u0002c\u0257\u0003\u0002\u0002\u0002e\u025d\u0003\u0002', + '\u0002\u0002g\u0265\u0003\u0002\u0002\u0002i\u0267\u0003\u0002\u0002', + '\u0002k\u026d\u0003\u0002\u0002\u0002m\u0277\u0003\u0002\u0002\u0002', + 'o\u0279\u0003\u0002\u0002\u0002q\u027e\u0003\u0002\u0002\u0002s\u0285', + '\u0003\u0002\u0002\u0002u\u028c\u0003\u0002\u0002\u0002w\u0299\u0003', + '\u0002\u0002\u0002y\u029c\u0003\u0002\u0002\u0002{\u02a0\u0003\u0002', + '\u0002\u0002}\u02a6\u0003\u0002\u0002\u0002\u007f\u02b0\u0003\u0002', + '\u0002\u0002\u0081\u02b3\u0003\u0002\u0002\u0002\u0083\u02bd\u0003\u0002', + '\u0002\u0002\u0085\u02c0\u0003\u0002\u0002\u0002\u0087\u02cf\u0003\u0002', + '\u0002\u0002\u0089\u02d4\u0003\u0002\u0002\u0002\u008b\u02e3\u0003\u0002', + '\u0002\u0002\u008d\u02e8\u0003\u0002\u0002\u0002\u008f\u02f2\u0003\u0002', + '\u0002\u0002\u0091\u02f5\u0003\u0002\u0002\u0002\u0093\u02fa\u0003\u0002', + '\u0002\u0002\u0095\u02ff\u0003\u0002\u0002\u0002\u0097\u0301\u0003\u0002', + '\u0002\u0002\u0099\u0303\u0003\u0002\u0002\u0002\u009b\u0305\u0003\u0002', + '\u0002\u0002\u009d\u030c\u0003\u0002\u0002\u0002\u009f\u030e\u0003\u0002', + '\u0002\u0002\u00a1\u0311\u0003\u0002\u0002\u0002\u00a3\u0313\u0003\u0002', + '\u0002\u0002\u00a5\u0315\u0003\u0002\u0002\u0002\u00a7\u0317\u0003\u0002', + '\u0002\u0002\u00a9\u0319\u0003\u0002\u0002\u0002\u00ab\u031b\u0003\u0002', + '\u0002\u0002\u00ad\u031d\u0003\u0002\u0002\u0002\u00af\u031f\u0003\u0002', + '\u0002\u0002\u00b1\u0321\u0003\u0002\u0002\u0002\u00b3\u0323\u0003\u0002', + '\u0002\u0002\u00b5\u0325\u0003\u0002\u0002\u0002\u00b7\u0327\u0003\u0002', + '\u0002\u0002\u00b9\u032a\u0003\u0002\u0002\u0002\u00bb\u032d\u0003\u0002', + '\u0002\u0002\u00bd\u032f\u0003\u0002\u0002\u0002\u00bf\u0332\u0003\u0002', + '\u0002\u0002\u00c1\u0334\u0003\u0002\u0002\u0002\u00c3\u0336\u0003\u0002', + '\u0002\u0002\u00c5\u0338\u0003\u0002\u0002\u0002\u00c7\u033a\u0003\u0002', + '\u0002\u0002\u00c9\u033c\u0003\u0002\u0002\u0002\u00cb\u033e\u0003\u0002', + '\u0002\u0002\u00cd\u0340\u0003\u0002\u0002\u0002\u00cf\u0342\u0003\u0002', + '\u0002\u0002\u00d1\u0344\u0003\u0002\u0002\u0002\u00d3\u0346\u0003\u0002', + '\u0002\u0002\u00d5\u0348\u0003\u0002\u0002\u0002\u00d7\u034a\u0003\u0002', + '\u0002\u0002\u00d9\u034c\u0003\u0002\u0002\u0002\u00db\u034e\u0003\u0002', + '\u0002\u0002\u00dd\u0350\u0003\u0002\u0002\u0002\u00df\u0352\u0003\u0002', + '\u0002\u0002\u00e1\u0354\u0003\u0002\u0002\u0002\u00e3\u0356\u0003\u0002', + '\u0002\u0002\u00e5\u0358\u0003\u0002\u0002\u0002\u00e7\u035a\u0003\u0002', + '\u0002\u0002\u00e9\u035c\u0003\u0002\u0002\u0002\u00eb\u035e\u0003\u0002', + '\u0002\u0002\u00ed\u0360\u0003\u0002\u0002\u0002\u00ef\u0362\u0003\u0002', + '\u0002\u0002\u00f1\u0364\u0003\u0002\u0002\u0002\u00f3\u0366\u0003\u0002', + '\u0002\u0002\u00f5\u0368\u0003\u0002\u0002\u0002\u00f7\u036a\u0003\u0002', + '\u0002\u0002\u00f9\u0370\u0003\u0002\u0002\u0002\u00fb\u0376\u0003\u0002', + '\u0002\u0002\u00fd\u037f\u0003\u0002\u0002\u0002\u00ff\u038b\u0003\u0002', + '\u0002\u0002\u0101\u0397\u0003\u0002\u0002\u0002\u0103\u039a\u0003\u0002', + '\u0002\u0002\u0105\u03a6\u0003\u0002\u0002\u0002\u0107\u03a9\u0003\u0002', + '\u0002\u0002\u0109\u03ba\u0003\u0002\u0002\u0002\u010b\u03bf\u0003\u0002', + '\u0002\u0002\u010d\u03d0\u0003\u0002\u0002\u0002\u010f\u03d5\u0003\u0002', + '\u0002\u0002\u0111\u03dc\u0003\u0002\u0002\u0002\u0113\u03de\u0003\u0002', + '\u0002\u0002\u0115\u03e8\u0003\u0002\u0002\u0002\u0117\u03eb\u0003\u0002', + '\u0002\u0002\u0119\u03ef\u0003\u0002\u0002\u0002\u011b\u03f5\u0003\u0002', + '\u0002\u0002\u011d\u03fe\u0003\u0002\u0002\u0002\u011f\u0403\u0003\u0002', + '\u0002\u0002\u0121\u040e\u0003\u0002\u0002\u0002\u0123\u0418\u0003\u0002', + '\u0002\u0002\u0125\u041f\u0003\u0002\u0002\u0002\u0127\u042a\u0003\u0002', + '\u0002\u0002\u0129\u0435\u0003\u0002\u0002\u0002\u012b\u043f\u0003\u0002', + '\u0002\u0002\u012d\u0449\u0003\u0002\u0002\u0002\u012f\u0451\u0003\u0002', + '\u0002\u0002\u0131\u045a\u0003\u0002\u0002\u0002\u0133\u045c\u0003\u0002', + '\u0002\u0002\u0135\u045e\u0003\u0002\u0002\u0002\u0137\u0462\u0003\u0002', + '\u0002\u0002\u0139\u0465\u0003\u0002\u0002\u0002\u013b\u0469\u0003\u0002', + '\u0002\u0002\u013d\u0473\u0003\u0002\u0002\u0002\u013f\u0476\u0003\u0002', + '\u0002\u0002\u0141\u0480\u0003\u0002\u0002\u0002\u0143\u0483\u0003\u0002', + '\u0002\u0002\u0145\u0492\u0003\u0002\u0002\u0002\u0147\u0497\u0003\u0002', + '\u0002\u0002\u0149\u04a6\u0003\u0002\u0002\u0002\u014b\u04ac\u0003\u0002', + '\u0002\u0002\u014d\u014f\t\u0002\u0002\u0002\u014e\u014d\u0003\u0002', + '\u0002\u0002\u014f\u0150\u0003\u0002\u0002\u0002\u0150\u014e\u0003\u0002', + '\u0002\u0002\u0150\u0151\u0003\u0002\u0002\u0002\u0151\u0152\u0003\u0002', + '\u0002\u0002\u0152\u0153\b\u0002\u0002\u0002\u0153\u0006\u0003\u0002', + '\u0002\u0002\u0154\u0158\u0007%\u0002\u0002\u0155\u0157\n\u0003\u0002', + '\u0002\u0156\u0155\u0003\u0002\u0002\u0002\u0157\u015a\u0003\u0002\u0002', + '\u0002\u0158\u0156\u0003\u0002\u0002\u0002\u0158\u0159\u0003\u0002\u0002', + '\u0002\u0159\u015b\u0003\u0002\u0002\u0002\u015a\u0158\u0003\u0002\u0002', + '\u0002\u015b\u015c\b\u0003\u0003\u0002\u015c\b\u0003\u0002\u0002\u0002', + '\u015d\u015e\u0005\u00e7s\u0002\u015e\u015f\u0005\u00dfo\u0002\u015f', + '\u0160\u0005\u00ebu\u0002\u0160\u0161\u0005\u00e5r\u0002\u0161\u0162', + '\u0005\u00c7c\u0002\u0162\u0163\u0005\u00cbe\u0002\u0163\n\u0003\u0002', + '\u0002\u0002\u0164\u0165\u0005\u00e7s\u0002\u0165\u0166\u0005\u00e9', + 't\u0002\u0166\u0167\u0005\u00c3a\u0002\u0167\u0168\u0005\u00e5r\u0002', + '\u0168\u0169\u0005\u00e9t\u0002\u0169\f\u0003\u0002\u0002\u0002\u016a', + '\u016b\u0005\u00cbe\u0002\u016b\u016c\u0005\u00ddn\u0002\u016c\u016d', + '\u0005\u00c9d\u0002\u016d\u000e\u0003\u0002\u0002\u0002\u016e\u016f', + '\u0005\u00ddn\u0002\u016f\u0170\u0005\u00dfo\u0002\u0170\u0171\u0005', + '\u00efw\u0002\u0171\u0010\u0003\u0002\u0002\u0002\u0172\u0173\u0005', + '\u00d9l\u0002\u0173\u0174\u0005\u00d3i\u0002\u0174\u0175\u0005\u00ed', + 'v\u0002\u0175\u0176\u0005\u00cbe\u0002\u0176\u0012\u0003\u0002\u0002', + '\u0002\u0177\u0178\u0005\u00e1p\u0002\u0178\u0179\u0005\u00c3a\u0002', + '\u0179\u017a\u0005\u00e5r\u0002\u017a\u017b\u0005\u00e7s\u0002\u017b', + '\u017c\u0005\u00cbe\u0002\u017c\u017d\u0003\u0002\u0002\u0002\u017d', + '\u017e\b\t\u0004\u0002\u017e\u0014\u0003\u0002\u0002\u0002\u017f\u0180', + '\u0005\u00e7s\u0002\u0180\u0181\u0005\u00cbe\u0002\u0181\u0182\u0005', + '\u00c3a\u0002\u0182\u0183\u0005\u00e5r\u0002\u0183\u0184\u0005\u00c7', + 'c\u0002\u0184\u0185\u0005\u00d1h\u0002\u0185\u0186\u0003\u0002\u0002', + '\u0002\u0186\u0187\b\n\u0005\u0002\u0187\u0016\u0003\u0002\u0002\u0002', + '\u0188\u0189\u0005\u00cdf\u0002\u0189\u018a\u0005\u00d3i\u0002\u018a', + '\u018b\u0005\u00cbe\u0002\u018b\u018c\u0005\u00d9l\u0002\u018c\u018e', + '\u0005\u00c9d\u0002\u018d\u018f\u0005\u00e7s\u0002\u018e\u018d\u0003', + '\u0002\u0002\u0002\u018e\u018f\u0003\u0002\u0002\u0002\u018f\u0018\u0003', + '\u0002\u0002\u0002\u0190\u0191\u0005\u00c9d\u0002\u0191\u0192\u0005', + '\u00d3i\u0002\u0192\u0193\u0005\u00e7s\u0002\u0193\u0194\u0005\u00e1', + 'p\u0002\u0194\u0195\u0005\u00d9l\u0002\u0195\u0196\u0005\u00c3a\u0002', + '\u0196\u0197\u0005\u00f3y\u0002\u0197\u001a\u0003\u0002\u0002\u0002', + '\u0198\u0199\u0005\u00cdf\u0002\u0199\u019a\u0005\u00d3i\u0002\u019a', + '\u019b\u0005\u00d9l\u0002\u019b\u019c\u0005\u00e9t\u0002\u019c\u019d', + '\u0005\u00cbe\u0002\u019d\u019e\u0005\u00e5r\u0002\u019e\u001c\u0003', + '\u0002\u0002\u0002\u019f\u01a0\u0005\u00e7s\u0002\u01a0\u01a1\u0005', + '\u00e9t\u0002\u01a1\u01a2\u0005\u00c3a\u0002\u01a2\u01a4\u0005\u00e9', + 't\u0002\u01a3\u01a5\u0005\u00e7s\u0002\u01a4\u01a3\u0003\u0002\u0002', + '\u0002\u01a4\u01a5\u0003\u0002\u0002\u0002\u01a5\u001e\u0003\u0002\u0002', + '\u0002\u01a6\u01a7\u0005\u00e7s\u0002\u01a7\u01a8\u0005\u00dfo\u0002', + '\u01a8\u01a9\u0005\u00e5r\u0002\u01a9\u01aa\u0005\u00e9t\u0002\u01aa', + ' \u0003\u0002\u0002\u0002\u01ab\u01ac\u0005\u00dfo\u0002\u01ac\u01ad', + '\u0005\u00e5r\u0002\u01ad\u01ae\u0005\u00c9d\u0002\u01ae\u01af\u0005', + '\u00cbe\u0002\u01af\u01b0\u0005\u00e5r\u0002\u01b0"\u0003\u0002\u0002', + '\u0002\u01b1\u01b2\u0005\u00c3a\u0002\u01b2\u01b3\u0005\u00e7s\u0002', + '\u01b3\u01b4\u0005\u00c7c\u0002\u01b4$\u0003\u0002\u0002\u0002\u01b5', + '\u01b6\u0005\u00c9d\u0002\u01b6\u01b7\u0005\u00cbe\u0002\u01b7\u01b8', + '\u0005\u00e7s\u0002\u01b8\u01b9\u0005\u00c7c\u0002\u01b9&\u0003\u0002', + '\u0002\u0002\u01ba\u01bb\u0005\u00d1h\u0002\u01bb\u01bc\u0005\u00cb', + 'e\u0002\u01bc\u01bd\u0005\u00c3a\u0002\u01bd\u01be\u0005\u00c9d\u0002', + '\u01be(\u0003\u0002\u0002\u0002\u01bf\u01c0\u0005\u00d9l\u0002\u01c0', + '\u01c1\u0005\u00d3i\u0002\u01c1\u01c2\u0005\u00dbm\u0002\u01c2\u01c3', + '\u0005\u00d3i\u0002\u01c3\u01c4\u0005\u00e9t\u0002\u01c4*\u0003\u0002', + '\u0002\u0002\u01c5\u01c6\u0005\u00e9t\u0002\u01c6\u01c7\u0005\u00c3', + 'a\u0002\u01c7\u01c8\u0005\u00d3i\u0002\u01c8\u01c9\u0005\u00d9l\u0002', + '\u01c9,\u0003\u0002\u0002\u0002\u01ca\u01cb\u0005\u00e5r\u0002\u01cb', + '\u01cc\u0005\u00cbe\u0002\u01cc\u01cd\u0005\u00cfg\u0002\u01cd\u01ce', + '\u0005\u00cbe\u0002\u01ce\u01cf\u0005\u00f1x\u0002\u01cf.\u0003\u0002', + '\u0002\u0002\u01d0\u01d1\u0005\u00d3i\u0002\u01d1\u01d2\u0005\u00dd', + 'n\u0002\u01d20\u0003\u0002\u0002\u0002\u01d3\u01d4\u0005\u00cfg\u0002', + '\u01d4\u01d5\u0005\u00e5r\u0002\u01d5\u01d6\u0005\u00dfo\u0002\u01d6', + '\u01d7\u0005\u00ebu\u0002\u01d7\u01d8\u0005\u00e1p\u0002\u01d82\u0003', + '\u0002\u0002\u0002\u01d9\u01da\u0005\u00c5b\u0002\u01da\u01db\u0005', + '\u00f3y\u0002\u01db4\u0003\u0002\u0002\u0002\u01dc\u01dd\u0005\u00c3', + 'a\u0002\u01dd\u01de\u0005\u00e7s\u0002\u01de6\u0003\u0002\u0002\u0002', + '\u01df\u01e0\u0005\u00c3a\u0002\u01e0\u01e1\u0005\u00ddn\u0002\u01e1', + '\u01e2\u0005\u00c9d\u0002\u01e28\u0003\u0002\u0002\u0002\u01e3\u01e4', + '\u0005\u00dfo\u0002\u01e4\u01e5\u0005\u00e5r\u0002\u01e5:\u0003\u0002', + '\u0002\u0002\u01e6\u01e7\u0005\u00ddn\u0002\u01e7\u01e8\u0005\u00df', + 'o\u0002\u01e8\u01e9\u0005\u00e9t\u0002\u01e9<\u0003\u0002\u0002\u0002', + '\u01ea\u01eb\u0005\u00d9l\u0002\u01eb\u01ec\u0005\u00d3i\u0002\u01ec', + '\u01ed\u0005\u00d7k\u0002\u01ed\u01ee\u0005\u00cbe\u0002\u01ee\u01ef', + '\u0003\u0002\u0002\u0002\u01ef\u01f0\b\u001e\u0004\u0002\u01f0>\u0003', + '\u0002\u0002\u0002\u01f1\u01f2\u0005\u00dbm\u0002\u01f2\u01f3\u0005', + '\u00c3a\u0002\u01f3\u01f4\u0005\u00e9t\u0002\u01f4\u01f5\u0005\u00c7', + 'c\u0002\u01f5\u01f6\u0005\u00d1h\u0002\u01f6\u01f7\u0005\u00cbe\u0002', + '\u01f7\u01f8\u0005\u00e7s\u0002\u01f8@\u0003\u0002\u0002\u0002\u01f9', + '\u01fa\u0005\u00dbm\u0002\u01fa\u01fb\u0005\u00e7s\u0002\u01fbB\u0003', + '\u0002\u0002\u0002\u01fc\u01fd\u0005\u00dbm\u0002\u01fd\u01fe\u0005', + '\u00e7s\u0002\u01fe\u01ff\u0005\u00cbe\u0002\u01ff\u0201\u0005\u00c7', + 'c\u0002\u0200\u0202\u0005\u00e7s\u0002\u0201\u0200\u0003\u0002\u0002', + '\u0002\u0201\u0202\u0003\u0002\u0002\u0002\u0202D\u0003\u0002\u0002', + '\u0002\u0203\u0204\u0005\u00dbm\u0002\u0204\u0205\u0005\u00d3i\u0002', + '\u0205\u0206\u0005\u00d9l\u0002\u0206\u0207\u0005\u00d9l\u0002\u0207', + '\u0208\u0005\u00d3i\u0002\u0208\u0209\u0005\u00e7s\u0002\u0209\u020a', + '\u0005\u00cbe\u0002\u020a\u020b\u0005\u00c7c\u0002\u020b\u020c\u0005', + '\u00dfo\u0002\u020c\u020d\u0005\u00ddn\u0002\u020d\u020f\u0005\u00c9', + 'd\u0002\u020e\u0210\u0005\u00e7s\u0002\u020f\u020e\u0003\u0002\u0002', + '\u0002\u020f\u0210\u0003\u0002\u0002\u0002\u0210F\u0003\u0002\u0002', + '\u0002\u0211\u0212\u0005\u00e7s\u0002\u0212H\u0003\u0002\u0002\u0002', + '\u0213\u0214\u0005\u00e7s\u0002\u0214\u0215\u0005\u00cbe\u0002\u0215', + '\u0217\u0005\u00c7c\u0002\u0216\u0218\u0005\u00e7s\u0002\u0217\u0216', + '\u0003\u0002\u0002\u0002\u0217\u0218\u0003\u0002\u0002\u0002\u0218J', + '\u0003\u0002\u0002\u0002\u0219\u021a\u0005\u00e7s\u0002\u021a\u021b', + '\u0005\u00cbe\u0002\u021b\u021c\u0005\u00c7c\u0002\u021c\u021d\u0005', + '\u00dfo\u0002\u021d\u021e\u0005\u00ddn\u0002\u021e\u0220\u0005\u00c9', + 'd\u0002\u021f\u0221\u0005\u00e7s\u0002\u0220\u021f\u0003\u0002\u0002', + '\u0002\u0220\u0221\u0003\u0002\u0002\u0002\u0221L\u0003\u0002\u0002', + '\u0002\u0222\u0223\u0005\u00dbm\u0002\u0223N\u0003\u0002\u0002\u0002', + '\u0224\u0225\u0005\u00dbm\u0002\u0225\u0226\u0005\u00d3i\u0002\u0226', + '\u0228\u0005\u00ddn\u0002\u0227\u0229\u0005\u00e7s\u0002\u0228\u0227', + '\u0003\u0002\u0002\u0002\u0228\u0229\u0003\u0002\u0002\u0002\u0229P', + '\u0003\u0002\u0002\u0002\u022a\u022b\u0005\u00dbm\u0002\u022b\u022c', + '\u0005\u00d3i\u0002\u022c\u022d\u0005\u00ddn\u0002\u022d\u022e\u0005', + '\u00ebu\u0002\u022e\u022f\u0005\u00e9t\u0002\u022f\u0231\u0005\u00cb', + 'e\u0002\u0230\u0232\u0005\u00e7s\u0002\u0231\u0230\u0003\u0002\u0002', + '\u0002\u0231\u0232\u0003\u0002\u0002\u0002\u0232R\u0003\u0002\u0002', + '\u0002\u0233\u0234\u0005\u00d1h\u0002\u0234T\u0003\u0002\u0002\u0002', + '\u0235\u0236\u0005\u00d1h\u0002\u0236\u0238\u0005\u00e5r\u0002\u0237', + '\u0239\u0005\u00e7s\u0002\u0238\u0237\u0003\u0002\u0002\u0002\u0238', + '\u0239\u0003\u0002\u0002\u0002\u0239V\u0003\u0002\u0002\u0002\u023a', + '\u023b\u0005\u00d1h\u0002\u023b\u023c\u0005\u00dfo\u0002\u023c\u023d', + '\u0005\u00ebu\u0002\u023d\u023f\u0005\u00e5r\u0002\u023e\u0240\u0005', + '\u00e7s\u0002\u023f\u023e\u0003\u0002\u0002\u0002\u023f\u0240\u0003', + '\u0002\u0002\u0002\u0240X\u0003\u0002\u0002\u0002\u0241\u0242\u0005', + '\u00c9d\u0002\u0242Z\u0003\u0002\u0002\u0002\u0243\u0244\u0005\u00c9', + 'd\u0002\u0244\u0245\u0005\u00c3a\u0002\u0245\u0247\u0005\u00f3y\u0002', + '\u0246\u0248\u0005\u00e7s\u0002\u0247\u0246\u0003\u0002\u0002\u0002', + '\u0247\u0248\u0003\u0002\u0002\u0002\u0248\\\u0003\u0002\u0002\u0002', + '\u0249\u024a\u0005\u00efw\u0002\u024a^\u0003\u0002\u0002\u0002\u024b', + '\u024c\u0005\u00efw\u0002\u024c\u024d\u0005\u00cbe\u0002\u024d\u024e', + '\u0005\u00cbe\u0002\u024e\u0250\u0005\u00d7k\u0002\u024f\u0251\u0005', + '\u00e7s\u0002\u0250\u024f\u0003\u0002\u0002\u0002\u0250\u0251\u0003', + '\u0002\u0002\u0002\u0251`\u0003\u0002\u0002\u0002\u0252\u0253\u0005', + '\u00dbm\u0002\u0253\u0255\u0005\u00dfo\u0002\u0254\u0256\u0005\u00e7', + 's\u0002\u0255\u0254\u0003\u0002\u0002\u0002\u0255\u0256\u0003\u0002', + '\u0002\u0002\u0256b\u0003\u0002\u0002\u0002\u0257\u0258\u0005\u00db', + 'm\u0002\u0258\u0259\u0005\u00dfo\u0002\u0259\u025b\u0005\u00ddn\u0002', + '\u025a\u025c\u0005\u00e7s\u0002\u025b\u025a\u0003\u0002\u0002\u0002', + '\u025b\u025c\u0003\u0002\u0002\u0002\u025cd\u0003\u0002\u0002\u0002', + '\u025d\u025e\u0005\u00dbm\u0002\u025e\u025f\u0005\u00dfo\u0002\u025f', + '\u0260\u0005\u00ddn\u0002\u0260\u0261\u0005\u00e9t\u0002\u0261\u0263', + '\u0005\u00d1h\u0002\u0262\u0264\u0005\u00e7s\u0002\u0263\u0262\u0003', + '\u0002\u0002\u0002\u0263\u0264\u0003\u0002\u0002\u0002\u0264f\u0003', + '\u0002\u0002\u0002\u0265\u0266\u0005\u00e3q\u0002\u0266h\u0003\u0002', + '\u0002\u0002\u0267\u0268\u0005\u00e3q\u0002\u0268\u0269\u0005\u00e9', + 't\u0002\u0269\u026b\u0005\u00e5r\u0002\u026a\u026c\u0005\u00e7s\u0002', + '\u026b\u026a\u0003\u0002\u0002\u0002\u026b\u026c\u0003\u0002\u0002\u0002', + '\u026cj\u0003\u0002\u0002\u0002\u026d\u026e\u0005\u00e3q\u0002\u026e', + '\u026f\u0005\u00ebu\u0002\u026f\u0270\u0005\u00c3a\u0002\u0270\u0271', + '\u0005\u00e5r\u0002\u0271\u0272\u0005\u00e9t\u0002\u0272\u0273\u0005', + '\u00cbe\u0002\u0273\u0275\u0005\u00e5r\u0002\u0274\u0276\u0005\u00e7', + 's\u0002\u0275\u0274\u0003\u0002\u0002\u0002\u0275\u0276\u0003\u0002', + '\u0002\u0002\u0276l\u0003\u0002\u0002\u0002\u0277\u0278\u0005\u00f3', + 'y\u0002\u0278n\u0003\u0002\u0002\u0002\u0279\u027a\u0005\u00f3y\u0002', + '\u027a\u027c\u0005\u00e5r\u0002\u027b\u027d\u0005\u00e7s\u0002\u027c', + '\u027b\u0003\u0002\u0002\u0002\u027c\u027d\u0003\u0002\u0002\u0002\u027d', + 'p\u0003\u0002\u0002\u0002\u027e\u027f\u0005\u00f3y\u0002\u027f\u0280', + '\u0005\u00cbe\u0002\u0280\u0281\u0005\u00c3a\u0002\u0281\u0283\u0005', + '\u00e5r\u0002\u0282\u0284\u0005\u00e7s\u0002\u0283\u0282\u0003\u0002', + '\u0002\u0002\u0283\u0284\u0003\u0002\u0002\u0002\u0284r\u0003\u0002', + '\u0002\u0002\u0285\u0289\t\u0004\u0002\u0002\u0286\u0288\t\u0005\u0002', + '\u0002\u0287\u0286\u0003\u0002\u0002\u0002\u0288\u028b\u0003\u0002\u0002', + '\u0002\u0289\u0287\u0003\u0002\u0002\u0002\u0289\u028a\u0003\u0002\u0002', + '\u0002\u028at\u0003\u0002\u0002\u0002\u028b\u0289\u0003\u0002\u0002', + '\u0002\u028c\u028d\u0005y<\u0002\u028dv\u0003\u0002\u0002\u0002\u028e', + '\u028f\u0005y<\u0002\u028f\u0291\u00070\u0002\u0002\u0290\u0292\t\u0006', + '\u0002\u0002\u0291\u0290\u0003\u0002\u0002\u0002\u0292\u0293\u0003\u0002', + '\u0002\u0002\u0293\u0291\u0003\u0002\u0002\u0002\u0293\u0294\u0003\u0002', + '\u0002\u0002\u0294\u0296\u0003\u0002\u0002\u0002\u0295\u0297\u0005{', + '=\u0002\u0296\u0295\u0003\u0002\u0002\u0002\u0296\u0297\u0003\u0002', + '\u0002\u0002\u0297\u029a\u0003\u0002\u0002\u0002\u0298\u029a\u0005y', + '<\u0002\u0299\u028e\u0003\u0002\u0002\u0002\u0299\u0298\u0003\u0002', + '\u0002\u0002\u029ax\u0003\u0002\u0002\u0002\u029b\u029d\t\u0006\u0002', + '\u0002\u029c\u029b\u0003\u0002\u0002\u0002\u029d\u029e\u0003\u0002\u0002', + '\u0002\u029e\u029c\u0003\u0002\u0002\u0002\u029e\u029f\u0003\u0002\u0002', + '\u0002\u029fz\u0003\u0002\u0002\u0002\u02a0\u02a2\t\u0007\u0002\u0002', + '\u02a1\u02a3\t\b\u0002\u0002\u02a2\u02a1\u0003\u0002\u0002\u0002\u02a2', + '\u02a3\u0003\u0002\u0002\u0002\u02a3\u02a4\u0003\u0002\u0002\u0002\u02a4', + '\u02a5\u0005y<\u0002\u02a5|\u0003\u0002\u0002\u0002\u02a6\u02ab\u0007', + '$\u0002\u0002\u02a7\u02aa\u0005\u007f?\u0002\u02a8\u02aa\u000b\u0002', + '\u0002\u0002\u02a9\u02a7\u0003\u0002\u0002\u0002\u02a9\u02a8\u0003\u0002', + '\u0002\u0002\u02aa\u02ad\u0003\u0002\u0002\u0002\u02ab\u02ac\u0003\u0002', + '\u0002\u0002\u02ab\u02a9\u0003\u0002\u0002\u0002\u02ac\u02ae\u0003\u0002', + '\u0002\u0002\u02ad\u02ab\u0003\u0002\u0002\u0002\u02ae\u02af\u0007$', + '\u0002\u0002\u02af~\u0003\u0002\u0002\u0002\u02b0\u02b1\u0007^\u0002', + '\u0002\u02b1\u02b2\u0007$\u0002\u0002\u02b2\u0080\u0003\u0002\u0002', + '\u0002\u02b3\u02b8\u0007)\u0002\u0002\u02b4\u02b7\u0005\u0083A\u0002', + '\u02b5\u02b7\u000b\u0002\u0002\u0002\u02b6\u02b4\u0003\u0002\u0002\u0002', + '\u02b6\u02b5\u0003\u0002\u0002\u0002\u02b7\u02ba\u0003\u0002\u0002\u0002', + '\u02b8\u02b9\u0003\u0002\u0002\u0002\u02b8\u02b6\u0003\u0002\u0002\u0002', + '\u02b9\u02bb\u0003\u0002\u0002\u0002\u02ba\u02b8\u0003\u0002\u0002\u0002', + '\u02bb\u02bc\u0007)\u0002\u0002\u02bc\u0082\u0003\u0002\u0002\u0002', + '\u02bd\u02be\u0007^\u0002\u0002\u02be\u02bf\u0007)\u0002\u0002\u02bf', + '\u0084\u0003\u0002\u0002\u0002\u02c0\u02c1\u0007\u00e4\u0002\u0002\u02c1', + '\u02c2\u0007\u20ae\u0002\u0002\u02c2\u02c3\u0007\u0155\u0002\u0002\u02c3', + '\u02c8\u0003\u0002\u0002\u0002\u02c4\u02c7\u0005\u0087C\u0002\u02c5', + '\u02c7\u000b\u0002\u0002\u0002\u02c6\u02c4\u0003\u0002\u0002\u0002\u02c6', + '\u02c5\u0003\u0002\u0002\u0002\u02c7\u02ca\u0003\u0002\u0002\u0002\u02c8', + '\u02c9\u0003\u0002\u0002\u0002\u02c8\u02c6\u0003\u0002\u0002\u0002\u02c9', + '\u02cb\u0003\u0002\u0002\u0002\u02ca\u02c8\u0003\u0002\u0002\u0002\u02cb', + '\u02cc\u0007\u00e4\u0002\u0002\u02cc\u02cd\u0007\u20ae\u0002\u0002\u02cd', + '\u02ce\u0007\u009f\u0002\u0002\u02ce\u0086\u0003\u0002\u0002\u0002\u02cf', + '\u02d0\u0007^\u0002\u0002\u02d0\u02d1\u0007\u00e4\u0002\u0002\u02d1', + '\u02d2\u0007\u20ae\u0002\u0002\u02d2\u02d3\u0007\u009f\u0002\u0002\u02d3', + '\u0088\u0003\u0002\u0002\u0002\u02d4\u02d5\u0007\u00e4\u0002\u0002\u02d5', + '\u02d6\u0007\u20ae\u0002\u0002\u02d6\u02d7\u0007\u02de\u0002\u0002\u02d7', + '\u02dc\u0003\u0002\u0002\u0002\u02d8\u02db\u0005\u008bE\u0002\u02d9', + '\u02db\u000b\u0002\u0002\u0002\u02da\u02d8\u0003\u0002\u0002\u0002\u02da', + '\u02d9\u0003\u0002\u0002\u0002\u02db\u02de\u0003\u0002\u0002\u0002\u02dc', + '\u02dd\u0003\u0002\u0002\u0002\u02dc\u02da\u0003\u0002\u0002\u0002\u02dd', + '\u02df\u0003\u0002\u0002\u0002\u02de\u02dc\u0003\u0002\u0002\u0002\u02df', + '\u02e0\u0007\u00e4\u0002\u0002\u02e0\u02e1\u0007\u20ae\u0002\u0002\u02e1', + '\u02e2\u0007\u2124\u0002\u0002\u02e2\u008a\u0003\u0002\u0002\u0002\u02e3', + '\u02e4\u0007^\u0002\u0002\u02e4\u02e5\u0007\u00e4\u0002\u0002\u02e5', + '\u02e6\u0007\u20ae\u0002\u0002\u02e6\u02e7\u0007\u2124\u0002\u0002\u02e7', + '\u008c\u0003\u0002\u0002\u0002\u02e8\u02ed\u0007b\u0002\u0002\u02e9', + '\u02ec\u0005\u008fG\u0002\u02ea\u02ec\u000b\u0002\u0002\u0002\u02eb', + '\u02e9\u0003\u0002\u0002\u0002\u02eb\u02ea\u0003\u0002\u0002\u0002\u02ec', + '\u02ef\u0003\u0002\u0002\u0002\u02ed\u02ee\u0003\u0002\u0002\u0002\u02ed', + '\u02eb\u0003\u0002\u0002\u0002\u02ee\u02f0\u0003\u0002\u0002\u0002\u02ef', + '\u02ed\u0003\u0002\u0002\u0002\u02f0\u02f1\u0007b\u0002\u0002\u02f1', + '\u008e\u0003\u0002\u0002\u0002\u02f2\u02f3\u0007^\u0002\u0002\u02f3', + '\u02f4\u0007b\u0002\u0002\u02f4\u0090\u0003\u0002\u0002\u0002\u02f5', + '\u02f6\u0007?\u0002\u0002\u02f6\u02f7\u0007\u0080\u0002\u0002\u02f7', + '\u02f8\u0003\u0002\u0002\u0002\u02f8\u02f9\bH\u0004\u0002\u02f9\u0092', + '\u0003\u0002\u0002\u0002\u02fa\u02fb\u0007\u0080\u0002\u0002\u02fb\u02fc', + '\u0007?\u0002\u0002\u02fc\u02fd\u0003\u0002\u0002\u0002\u02fd\u02fe', + '\bI\u0004\u0002\u02fe\u0094\u0003\u0002\u0002\u0002\u02ff\u0300\u0007', + 'B\u0002\u0002\u0300\u0096\u0003\u0002\u0002\u0002\u0301\u0302\u0007', + '.\u0002\u0002\u0302\u0098\u0003\u0002\u0002\u0002\u0303\u0304\u0007', + '*\u0002\u0002\u0304\u009a\u0003\u0002\u0002\u0002\u0305\u0306\u0007', + '+\u0002\u0002\u0306\u009c\u0003\u0002\u0002\u0002\u0307\u0308\u0006', + 'N\u0002\u0002\u0308\u0309\u0007~\u0002\u0002\u0309\u030d\bN\u0006\u0002', + '\u030a\u030b\u0006N\u0003\u0002\u030b\u030d\u0007~\u0002\u0002\u030c', + '\u0307\u0003\u0002\u0002\u0002\u030c\u030a\u0003\u0002\u0002\u0002\u030d', + '\u009e\u0003\u0002\u0002\u0002\u030e\u030f\u0007~\u0002\u0002\u030f', + '\u0310\u0007@\u0002\u0002\u0310\u00a0\u0003\u0002\u0002\u0002\u0311', + '\u0312\u0007<\u0002\u0002\u0312\u00a2\u0003\u0002\u0002\u0002\u0313', + '\u0314\u0007`\u0002\u0002\u0314\u00a4\u0003\u0002\u0002\u0002\u0315', + '\u0316\u0007#\u0002\u0002\u0316\u00a6\u0003\u0002\u0002\u0002\u0317', + '\u0318\u0007,\u0002\u0002\u0318\u00a8\u0003\u0002\u0002\u0002\u0319', + '\u031a\u00071\u0002\u0002\u031a\u00aa\u0003\u0002\u0002\u0002\u031b', + "\u031c\u0007'\u0002\u0002\u031c\u00ac\u0003\u0002\u0002\u0002\u031d", + '\u031e\u0007-\u0002\u0002\u031e\u00ae\u0003\u0002\u0002\u0002\u031f', + '\u0320\u0007/\u0002\u0002\u0320\u00b0\u0003\u0002\u0002\u0002\u0321', + '\u0322\u0007\u0080\u0002\u0002\u0322\u00b2\u0003\u0002\u0002\u0002\u0323', + '\u0324\u0007>\u0002\u0002\u0324\u00b4\u0003\u0002\u0002\u0002\u0325', + '\u0326\u0007@\u0002\u0002\u0326\u00b6\u0003\u0002\u0002\u0002\u0327', + '\u0328\u0007>\u0002\u0002\u0328\u0329\u0007?\u0002\u0002\u0329\u00b8', + '\u0003\u0002\u0002\u0002\u032a\u032b\u0007@\u0002\u0002\u032b\u032c', + '\u0007?\u0002\u0002\u032c\u00ba\u0003\u0002\u0002\u0002\u032d\u032e', + '\u0007?\u0002\u0002\u032e\u00bc\u0003\u0002\u0002\u0002\u032f\u0330', + '\u0007#\u0002\u0002\u0330\u0331\u0007?\u0002\u0002\u0331\u00be\u0003', + '\u0002\u0002\u0002\u0332\u0333\u0007]\u0002\u0002\u0333\u00c0\u0003', + '\u0002\u0002\u0002\u0334\u0335\u0007_\u0002\u0002\u0335\u00c2\u0003', + '\u0002\u0002\u0002\u0336\u0337\t\t\u0002\u0002\u0337\u00c4\u0003\u0002', + '\u0002\u0002\u0338\u0339\t\n\u0002\u0002\u0339\u00c6\u0003\u0002\u0002', + '\u0002\u033a\u033b\t\u000b\u0002\u0002\u033b\u00c8\u0003\u0002\u0002', + '\u0002\u033c\u033d\t\f\u0002\u0002\u033d\u00ca\u0003\u0002\u0002\u0002', + '\u033e\u033f\t\u0007\u0002\u0002\u033f\u00cc\u0003\u0002\u0002\u0002', + '\u0340\u0341\t\r\u0002\u0002\u0341\u00ce\u0003\u0002\u0002\u0002\u0342', + '\u0343\t\u000e\u0002\u0002\u0343\u00d0\u0003\u0002\u0002\u0002\u0344', + '\u0345\t\u000f\u0002\u0002\u0345\u00d2\u0003\u0002\u0002\u0002\u0346', + '\u0347\t\u0010\u0002\u0002\u0347\u00d4\u0003\u0002\u0002\u0002\u0348', + '\u0349\t\u0011\u0002\u0002\u0349\u00d6\u0003\u0002\u0002\u0002\u034a', + '\u034b\t\u0012\u0002\u0002\u034b\u00d8\u0003\u0002\u0002\u0002\u034c', + '\u034d\t\u0013\u0002\u0002\u034d\u00da\u0003\u0002\u0002\u0002\u034e', + '\u034f\t\u0014\u0002\u0002\u034f\u00dc\u0003\u0002\u0002\u0002\u0350', + '\u0351\t\u0015\u0002\u0002\u0351\u00de\u0003\u0002\u0002\u0002\u0352', + '\u0353\t\u0016\u0002\u0002\u0353\u00e0\u0003\u0002\u0002\u0002\u0354', + '\u0355\t\u0017\u0002\u0002\u0355\u00e2\u0003\u0002\u0002\u0002\u0356', + '\u0357\t\u0018\u0002\u0002\u0357\u00e4\u0003\u0002\u0002\u0002\u0358', + '\u0359\t\u0019\u0002\u0002\u0359\u00e6\u0003\u0002\u0002\u0002\u035a', + '\u035b\t\u001a\u0002\u0002\u035b\u00e8\u0003\u0002\u0002\u0002\u035c', + '\u035d\t\u001b\u0002\u0002\u035d\u00ea\u0003\u0002\u0002\u0002\u035e', + '\u035f\t\u001c\u0002\u0002\u035f\u00ec\u0003\u0002\u0002\u0002\u0360', + '\u0361\t\u001d\u0002\u0002\u0361\u00ee\u0003\u0002\u0002\u0002\u0362', + '\u0363\t\u001e\u0002\u0002\u0363\u00f0\u0003\u0002\u0002\u0002\u0364', + '\u0365\t\u001f\u0002\u0002\u0365\u00f2\u0003\u0002\u0002\u0002\u0366', + '\u0367\t \u0002\u0002\u0367\u00f4\u0003\u0002\u0002\u0002\u0368\u0369', + '\t!\u0002\u0002\u0369\u00f6\u0003\u0002\u0002\u0002\u036a\u036b\u0007', + '.\u0002\u0002\u036b\u036c\u0003\u0002\u0002\u0002\u036c\u036d\b{\u0007', + '\u0002\u036d\u036e\b{\b\u0002\u036e\u00f8\u0003\u0002\u0002\u0002\u036f', + '\u0371\t\u0002\u0002\u0002\u0370\u036f\u0003\u0002\u0002\u0002\u0371', + '\u0372\u0003\u0002\u0002\u0002\u0372\u0370\u0003\u0002\u0002\u0002\u0372', + '\u0373\u0003\u0002\u0002\u0002\u0373\u0374\u0003\u0002\u0002\u0002\u0374', + '\u0375\b|\t\u0002\u0375\u00fa\u0003\u0002\u0002\u0002\u0376\u037a\u0007', + '%\u0002\u0002\u0377\u0379\n\u0003\u0002\u0002\u0378\u0377\u0003\u0002', + '\u0002\u0002\u0379\u037c\u0003\u0002\u0002\u0002\u037a\u0378\u0003\u0002', + '\u0002\u0002\u037a\u037b\u0003\u0002\u0002\u0002\u037b\u037d\u0003\u0002', + '\u0002\u0002\u037c\u037a\u0003\u0002\u0002\u0002\u037d\u037e\b}\u0003', + '\u0002\u037e\u00fc\u0003\u0002\u0002\u0002\u037f\u0384\u00071\u0002', + '\u0002\u0380\u0383\u0005\u0117\u008b\u0002\u0381\u0383\u000b\u0002\u0002', + '\u0002\u0382\u0380\u0003\u0002\u0002\u0002\u0382\u0381\u0003\u0002\u0002', + '\u0002\u0383\u0386\u0003\u0002\u0002\u0002\u0384\u0385\u0003\u0002\u0002', + '\u0002\u0384\u0382\u0003\u0002\u0002\u0002\u0385\u0387\u0003\u0002\u0002', + '\u0002\u0386\u0384\u0003\u0002\u0002\u0002\u0387\u0388\u00071\u0002', + '\u0002\u0388\u0389\u0003\u0002\u0002\u0002\u0389\u038a\b~\b\u0002\u038a', + '\u00fe\u0003\u0002\u0002\u0002\u038b\u0390\u0007$\u0002\u0002\u038c', + '\u038f\u0005\u0101\u0080\u0002\u038d\u038f\u000b\u0002\u0002\u0002\u038e', + '\u038c\u0003\u0002\u0002\u0002\u038e\u038d\u0003\u0002\u0002\u0002\u038f', + '\u0392\u0003\u0002\u0002\u0002\u0390\u0391\u0003\u0002\u0002\u0002\u0390', + '\u038e\u0003\u0002\u0002\u0002\u0391\u0393\u0003\u0002\u0002\u0002\u0392', + '\u0390\u0003\u0002\u0002\u0002\u0393\u0394\u0007$\u0002\u0002\u0394', + '\u0395\u0003\u0002\u0002\u0002\u0395\u0396\b\u007f\b\u0002\u0396\u0100', + '\u0003\u0002\u0002\u0002\u0397\u0398\u0007^\u0002\u0002\u0398\u0399', + '\u0007$\u0002\u0002\u0399\u0102\u0003\u0002\u0002\u0002\u039a\u039f', + '\u0007)\u0002\u0002\u039b\u039e\u0005\u0105\u0082\u0002\u039c\u039e', + '\u000b\u0002\u0002\u0002\u039d\u039b\u0003\u0002\u0002\u0002\u039d\u039c', + '\u0003\u0002\u0002\u0002\u039e\u03a1\u0003\u0002\u0002\u0002\u039f\u03a0', + '\u0003\u0002\u0002\u0002\u039f\u039d\u0003\u0002\u0002\u0002\u03a0\u03a2', + '\u0003\u0002\u0002\u0002\u03a1\u039f\u0003\u0002\u0002\u0002\u03a2\u03a3', + '\u0007)\u0002\u0002\u03a3\u03a4\u0003\u0002\u0002\u0002\u03a4\u03a5', + '\b\u0081\b\u0002\u03a5\u0104\u0003\u0002\u0002\u0002\u03a6\u03a7\u0007', + '^\u0002\u0002\u03a7\u03a8\u0007)\u0002\u0002\u03a8\u0106\u0003\u0002', + '\u0002\u0002\u03a9\u03aa\u0007\u00e4\u0002\u0002\u03aa\u03ab\u0007\u20ae', + '\u0002\u0002\u03ab\u03ac\u0007\u0155\u0002\u0002\u03ac\u03b1\u0003\u0002', + '\u0002\u0002\u03ad\u03b0\u0005\u0109\u0084\u0002\u03ae\u03b0\u000b\u0002', + '\u0002\u0002\u03af\u03ad\u0003\u0002\u0002\u0002\u03af\u03ae\u0003\u0002', + '\u0002\u0002\u03b0\u03b3\u0003\u0002\u0002\u0002\u03b1\u03b2\u0003\u0002', + '\u0002\u0002\u03b1\u03af\u0003\u0002\u0002\u0002\u03b2\u03b4\u0003\u0002', + '\u0002\u0002\u03b3\u03b1\u0003\u0002\u0002\u0002\u03b4\u03b5\u0007\u00e4', + '\u0002\u0002\u03b5\u03b6\u0007\u20ae\u0002\u0002\u03b6\u03b7\u0007\u009f', + '\u0002\u0002\u03b7\u03b8\u0003\u0002\u0002\u0002\u03b8\u03b9\b\u0083', + '\b\u0002\u03b9\u0108\u0003\u0002\u0002\u0002\u03ba\u03bb\u0007^\u0002', + '\u0002\u03bb\u03bc\u0007\u00e4\u0002\u0002\u03bc\u03bd\u0007\u20ae\u0002', + '\u0002\u03bd\u03be\u0007\u009f\u0002\u0002\u03be\u010a\u0003\u0002\u0002', + '\u0002\u03bf\u03c0\u0007\u00e4\u0002\u0002\u03c0\u03c1\u0007\u20ae\u0002', + '\u0002\u03c1\u03c2\u0007\u02de\u0002\u0002\u03c2\u03c7\u0003\u0002\u0002', + '\u0002\u03c3\u03c6\u0005\u010d\u0086\u0002\u03c4\u03c6\u000b\u0002\u0002', + '\u0002\u03c5\u03c3\u0003\u0002\u0002\u0002\u03c5\u03c4\u0003\u0002\u0002', + '\u0002\u03c6\u03c9\u0003\u0002\u0002\u0002\u03c7\u03c8\u0003\u0002\u0002', + '\u0002\u03c7\u03c5\u0003\u0002\u0002\u0002\u03c8\u03ca\u0003\u0002\u0002', + '\u0002\u03c9\u03c7\u0003\u0002\u0002\u0002\u03ca\u03cb\u0007\u00e4\u0002', + '\u0002\u03cb\u03cc\u0007\u20ae\u0002\u0002\u03cc\u03cd\u0007\u2124\u0002', + '\u0002\u03cd\u03ce\u0003\u0002\u0002\u0002\u03ce\u03cf\b\u0085\b\u0002', + '\u03cf\u010c\u0003\u0002\u0002\u0002\u03d0\u03d1\u0007^\u0002\u0002', + '\u03d1\u03d2\u0007\u00e4\u0002\u0002\u03d2\u03d3\u0007\u20ae\u0002\u0002', + '\u03d3\u03d4\u0007\u2124\u0002\u0002\u03d4\u010e\u0003\u0002\u0002\u0002', + '\u03d5\u03d9\t\u0004\u0002\u0002\u03d6\u03d8\t\u0005\u0002\u0002\u03d7', + '\u03d6\u0003\u0002\u0002\u0002\u03d8\u03db\u0003\u0002\u0002\u0002\u03d9', + '\u03d7\u0003\u0002\u0002\u0002\u03d9\u03da\u0003\u0002\u0002\u0002\u03da', + '\u0110\u0003\u0002\u0002\u0002\u03db\u03d9\u0003\u0002\u0002\u0002\u03dc', + '\u03dd\u0007B\u0002\u0002\u03dd\u0112\u0003\u0002\u0002\u0002\u03de', + '\u03e3\u0007b\u0002\u0002\u03df\u03e2\u0005\u0115\u008a\u0002\u03e0', + '\u03e2\u000b\u0002\u0002\u0002\u03e1\u03df\u0003\u0002\u0002\u0002\u03e1', + '\u03e0\u0003\u0002\u0002\u0002\u03e2\u03e5\u0003\u0002\u0002\u0002\u03e3', + '\u03e4\u0003\u0002\u0002\u0002\u03e3\u03e1\u0003\u0002\u0002\u0002\u03e4', + '\u03e6\u0003\u0002\u0002\u0002\u03e5\u03e3\u0003\u0002\u0002\u0002\u03e6', + '\u03e7\u0007b\u0002\u0002\u03e7\u0114\u0003\u0002\u0002\u0002\u03e8', + '\u03e9\u0007^\u0002\u0002\u03e9\u03ea\u0007b\u0002\u0002\u03ea\u0116', + '\u0003\u0002\u0002\u0002\u03eb\u03ec\u0007^\u0002\u0002\u03ec\u03ed', + '\u00071\u0002\u0002\u03ed\u0118\u0003\u0002\u0002\u0002\u03ee\u03f0', + '\t\u0002\u0002\u0002\u03ef\u03ee\u0003\u0002\u0002\u0002\u03f0\u03f1', + '\u0003\u0002\u0002\u0002\u03f1\u03ef\u0003\u0002\u0002\u0002\u03f1\u03f2', + '\u0003\u0002\u0002\u0002\u03f2\u03f3\u0003\u0002\u0002\u0002\u03f3\u03f4', + '\b\u008c\t\u0002\u03f4\u011a\u0003\u0002\u0002\u0002\u03f5\u03f9\u0007', + '%\u0002\u0002\u03f6\u03f8\n\u0003\u0002\u0002\u03f7\u03f6\u0003\u0002', + '\u0002\u0002\u03f8\u03fb\u0003\u0002\u0002\u0002\u03f9\u03f7\u0003\u0002', + '\u0002\u0002\u03f9\u03fa\u0003\u0002\u0002\u0002\u03fa\u03fc\u0003\u0002', + '\u0002\u0002\u03fb\u03f9\u0003\u0002\u0002\u0002\u03fc\u03fd\b\u008d', + '\u0003\u0002\u03fd\u011c\u0003\u0002\u0002\u0002\u03fe\u03ff\u0007~', + '\u0002\u0002\u03ff\u0400\u0003\u0002\u0002\u0002\u0400\u0401\b\u008e', + '\n\u0002\u0401\u0402\b\u008e\b\u0002\u0402\u011e\u0003\u0002\u0002\u0002', + '\u0403\u0404\u0005\u00e7s\u0002\u0404\u0405\u0005\u00dfo\u0002\u0405', + '\u0406\u0005\u00ebu\u0002\u0406\u0407\u0005\u00e5r\u0002\u0407\u0408', + '\u0005\u00c7c\u0002\u0408\u0409\u0005\u00cbe\u0002\u0409\u040a\b\u008f', + '\u000b\u0002\u040a\u040b\u0003\u0002\u0002\u0002\u040b\u040c\b\u008f', + '\f\u0002\u040c\u040d\b\u008f\b\u0002\u040d\u0120\u0003\u0002\u0002\u0002', + '\u040e\u040f\u0005\u00e1p\u0002\u040f\u0410\u0005\u00c3a\u0002\u0410', + '\u0411\u0005\u00e5r\u0002\u0411\u0412\u0005\u00e7s\u0002\u0412\u0413', + '\u0005\u00cbe\u0002\u0413\u0414\u0003\u0002\u0002\u0002\u0414\u0415', + '\b\u0090\r\u0002\u0415\u0416\b\u0090\b\u0002\u0416\u0417\b\u0090\u0004', + '\u0002\u0417\u0122\u0003\u0002\u0002\u0002\u0418\u0419\u0005\u00e7s', + '\u0002\u0419\u041a\u0005\u00cbe\u0002\u041a\u041b\u0005\u00c3a\u0002', + '\u041b\u041c\u0005\u00e5r\u0002\u041c\u041d\u0005\u00c7c\u0002\u041d', + '\u041e\u0005\u00d1h\u0002\u041e\u0124\u0003\u0002\u0002\u0002\u041f', + '\u0420\u0005\u00cdf\u0002\u0420\u0421\u0005\u00d3i\u0002\u0421\u0422', + '\u0005\u00cbe\u0002\u0422\u0423\u0005\u00d9l\u0002\u0423\u0425\u0005', + '\u00c9d\u0002\u0424\u0426\u0005\u00e7s\u0002\u0425\u0424\u0003\u0002', + '\u0002\u0002\u0425\u0426\u0003\u0002\u0002\u0002\u0426\u0427\u0003\u0002', + '\u0002\u0002\u0427\u0428\b\u0092\u000e\u0002\u0428\u0429\b\u0092\b\u0002', + '\u0429\u0126\u0003\u0002\u0002\u0002\u042a\u042b\u0005\u00c9d\u0002', + '\u042b\u042c\u0005\u00d3i\u0002\u042c\u042d\u0005\u00e7s\u0002\u042d', + '\u042e\u0005\u00e1p\u0002\u042e\u042f\u0005\u00d9l\u0002\u042f\u0430', + '\u0005\u00c3a\u0002\u0430\u0431\u0005\u00f3y\u0002\u0431\u0432\u0003', + '\u0002\u0002\u0002\u0432\u0433\b\u0093\u000f\u0002\u0433\u0434\b\u0093', + '\b\u0002\u0434\u0128\u0003\u0002\u0002\u0002\u0435\u0436\u0005\u00cd', + 'f\u0002\u0436\u0437\u0005\u00d3i\u0002\u0437\u0438\u0005\u00d9l\u0002', + '\u0438\u0439\u0005\u00e9t\u0002\u0439\u043a\u0005\u00cbe\u0002\u043a', + '\u043b\u0005\u00e5r\u0002\u043b\u043c\u0003\u0002\u0002\u0002\u043c', + '\u043d\b\u0094\u0010\u0002\u043d\u043e\b\u0094\b\u0002\u043e\u012a\u0003', + '\u0002\u0002\u0002\u043f\u0440\u0005\u00e7s\u0002\u0440\u0441\u0005', + '\u00e9t\u0002\u0441\u0442\u0005\u00c3a\u0002\u0442\u0444\u0005\u00e9', + 't\u0002\u0443\u0445\u0005\u00e7s\u0002\u0444\u0443\u0003\u0002\u0002', + '\u0002\u0444\u0445\u0003\u0002\u0002\u0002\u0445\u0446\u0003\u0002\u0002', + '\u0002\u0446\u0447\b\u0095\u0011\u0002\u0447\u0448\b\u0095\b\u0002\u0448', + '\u012c\u0003\u0002\u0002\u0002\u0449\u044a\u0005\u00e7s\u0002\u044a', + '\u044b\u0005\u00dfo\u0002\u044b\u044c\u0005\u00e5r\u0002\u044c\u044d', + '\u0005\u00e9t\u0002\u044d\u044e\u0003\u0002\u0002\u0002\u044e\u044f', + '\b\u0096\u0012\u0002\u044f\u0450\b\u0096\b\u0002\u0450\u012e\u0003\u0002', + '\u0002\u0002\u0451\u0452\u0005\u00d9l\u0002\u0452\u0453\u0005\u00d3', + 'i\u0002\u0453\u0454\u0005\u00dbm\u0002\u0454\u0455\u0005\u00d3i\u0002', + '\u0455\u0456\u0005\u00e9t\u0002\u0456\u0457\u0003\u0002\u0002\u0002', + '\u0457\u0458\b\u0097\u0013\u0002\u0458\u0459\b\u0097\b\u0002\u0459\u0130', + '\u0003\u0002\u0002\u0002\u045a\u045b\u0007*\u0002\u0002\u045b\u0132', + '\u0003\u0002\u0002\u0002\u045c\u045d\u0007+\u0002\u0002\u045d\u0134', + '\u0003\u0002\u0002\u0002\u045e\u045f\u0005\u00c3a\u0002\u045f\u0460', + '\u0005\u00ddn\u0002\u0460\u0461\u0005\u00c9d\u0002\u0461\u0136\u0003', + '\u0002\u0002\u0002\u0462\u0463\u0005\u00dfo\u0002\u0463\u0464\u0005', + '\u00e5r\u0002\u0464\u0138\u0003\u0002\u0002\u0002\u0465\u0466\u0005', + '\u00ddn\u0002\u0466\u0467\u0005\u00dfo\u0002\u0467\u0468\u0005\u00e9', + 't\u0002\u0468\u013a\u0003\u0002\u0002\u0002\u0469\u046e\u0007$\u0002', + '\u0002\u046a\u046d\u0005\u013d\u009e\u0002\u046b\u046d\u000b\u0002\u0002', + '\u0002\u046c\u046a\u0003\u0002\u0002\u0002\u046c\u046b\u0003\u0002\u0002', + '\u0002\u046d\u0470\u0003\u0002\u0002\u0002\u046e\u046f\u0003\u0002\u0002', + '\u0002\u046e\u046c\u0003\u0002\u0002\u0002\u046f\u0471\u0003\u0002\u0002', + '\u0002\u0470\u046e\u0003\u0002\u0002\u0002\u0471\u0472\u0007$\u0002', + '\u0002\u0472\u013c\u0003\u0002\u0002\u0002\u0473\u0474\u0007^\u0002', + '\u0002\u0474\u0475\u0007$\u0002\u0002\u0475\u013e\u0003\u0002\u0002', + '\u0002\u0476\u047b\u0007)\u0002\u0002\u0477\u047a\u0005\u0141\u00a0', + '\u0002\u0478\u047a\u000b\u0002\u0002\u0002\u0479\u0477\u0003\u0002\u0002', + '\u0002\u0479\u0478\u0003\u0002\u0002\u0002\u047a\u047d\u0003\u0002\u0002', + '\u0002\u047b\u047c\u0003\u0002\u0002\u0002\u047b\u0479\u0003\u0002\u0002', + '\u0002\u047c\u047e\u0003\u0002\u0002\u0002\u047d\u047b\u0003\u0002\u0002', + '\u0002\u047e\u047f\u0007)\u0002\u0002\u047f\u0140\u0003\u0002\u0002', + '\u0002\u0480\u0481\u0007^\u0002\u0002\u0481\u0482\u0007)\u0002\u0002', + '\u0482\u0142\u0003\u0002\u0002\u0002\u0483\u0484\u0007\u00e4\u0002\u0002', + '\u0484\u0485\u0007\u20ae\u0002\u0002\u0485\u0486\u0007\u0155\u0002\u0002', + '\u0486\u048b\u0003\u0002\u0002\u0002\u0487\u048a\u0005\u0145\u00a2\u0002', + '\u0488\u048a\u000b\u0002\u0002\u0002\u0489\u0487\u0003\u0002\u0002\u0002', + '\u0489\u0488\u0003\u0002\u0002\u0002\u048a\u048d\u0003\u0002\u0002\u0002', + '\u048b\u048c\u0003\u0002\u0002\u0002\u048b\u0489\u0003\u0002\u0002\u0002', + '\u048c\u048e\u0003\u0002\u0002\u0002\u048d\u048b\u0003\u0002\u0002\u0002', + '\u048e\u048f\u0007\u00e4\u0002\u0002\u048f\u0490\u0007\u20ae\u0002\u0002', + '\u0490\u0491\u0007\u009f\u0002\u0002\u0491\u0144\u0003\u0002\u0002\u0002', + '\u0492\u0493\u0007^\u0002\u0002\u0493\u0494\u0007\u00e4\u0002\u0002', + '\u0494\u0495\u0007\u20ae\u0002\u0002\u0495\u0496\u0007\u009f\u0002\u0002', + '\u0496\u0146\u0003\u0002\u0002\u0002\u0497\u0498\u0007\u00e4\u0002\u0002', + '\u0498\u0499\u0007\u20ae\u0002\u0002\u0499\u049a\u0007\u02de\u0002\u0002', + '\u049a\u049f\u0003\u0002\u0002\u0002\u049b\u049e\u0005\u0149\u00a4\u0002', + '\u049c\u049e\u000b\u0002\u0002\u0002\u049d\u049b\u0003\u0002\u0002\u0002', + '\u049d\u049c\u0003\u0002\u0002\u0002\u049e\u04a1\u0003\u0002\u0002\u0002', + '\u049f\u04a0\u0003\u0002\u0002\u0002\u049f\u049d\u0003\u0002\u0002\u0002', + '\u04a0\u04a2\u0003\u0002\u0002\u0002\u04a1\u049f\u0003\u0002\u0002\u0002', + '\u04a2\u04a3\u0007\u00e4\u0002\u0002\u04a3\u04a4\u0007\u20ae\u0002\u0002', + '\u04a4\u04a5\u0007\u2124\u0002\u0002\u04a5\u0148\u0003\u0002\u0002\u0002', + '\u04a6\u04a7\u0007^\u0002\u0002\u04a7\u04a8\u0007\u00e4\u0002\u0002', + '\u04a8\u04a9\u0007\u20ae\u0002\u0002\u04a9\u04aa\u0007\u2124\u0002\u0002', + '\u04aa\u014a\u0003\u0002\u0002\u0002\u04ab\u04ad\n"\u0002\u0002\u04ac', + '\u04ab\u0003\u0002\u0002\u0002\u04ad\u04ae\u0003\u0002\u0002\u0002\u04ae', + '\u04ac\u0003\u0002\u0002\u0002\u04ae\u04af\u0003\u0002\u0002\u0002\u04af', + '\u014c\u0003\u0002\u0002\u0002G\u0002\u0003\u0004\u0150\u0158\u018e', + '\u01a4\u0201\u020f\u0217\u0220\u0228\u0231\u0238\u023f\u0247\u0250\u0255', + '\u025b\u0263\u026b\u0275\u027c\u0283\u0289\u0293\u0296\u0299\u029e\u02a2', + '\u02a9\u02ab\u02b6\u02b8\u02c6\u02c8\u02da\u02dc\u02eb\u02ed\u030c\u0372', + '\u037a\u0382\u0384\u038e\u0390\u039d\u039f\u03af\u03b1\u03c5\u03c7\u03d9', + '\u03e1\u03e3\u03f1\u03f9\u0425\u0444\u046c\u046e\u0479\u047b\u0489\u048b', + '\u049d\u049f\u04ae\u0014\u0002\u0004\u0002\u0002\u0005\u0002\u0007\u0003', + '\u0002\u0007\u0004\u0002\u0003N\u0002\tE\u0002\u0006\u0002\u0002\u0002', + '\u0003\u0002\tH\u0002\u0003\u008f\u0003\t\u0005\u0002\t\n\u0002\t\f', + '\u0002\t\r\u0002\t\u000e\u0002\t\u000f\u0002\t\u0010\u0002\t\u0015\u0002', +].join(''); + +var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN); + +var decisionsToDFA = atn.decisionToState.map(function(ds, index) { + return new antlr4.dfa.DFA(ds, index); +}); + +function ScrollQLLexer(input) { + antlr4.Lexer.call(this, input); + this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache()); + + this.isFirstPipe = true; + + return this; +} + +ScrollQLLexer.prototype = Object.create(antlr4.Lexer.prototype); +ScrollQLLexer.prototype.constructor = ScrollQLLexer; + +Object.defineProperty(ScrollQLLexer.prototype, 'atn', { + get: function() { + return atn; + }, +}); + +ScrollQLLexer.EOF = antlr4.Token.EOF; +ScrollQLLexer.WS = 1; +ScrollQLLexer.COMMENT = 2; +ScrollQLLexer.K_SOURCE = 3; +ScrollQLLexer.K_START = 4; +ScrollQLLexer.K_END = 5; +ScrollQLLexer.K_NOW = 6; +ScrollQLLexer.K_LIVE = 7; +ScrollQLLexer.K_PARSE = 8; +ScrollQLLexer.K_SEARCH = 9; +ScrollQLLexer.K_FIELDS = 10; +ScrollQLLexer.K_DISPLAY = 11; +ScrollQLLexer.K_FILTER = 12; +ScrollQLLexer.K_STATS = 13; +ScrollQLLexer.K_SORT = 14; +ScrollQLLexer.K_ORDER = 15; +ScrollQLLexer.K_ASC = 16; +ScrollQLLexer.K_DESC = 17; +ScrollQLLexer.K_HEAD = 18; +ScrollQLLexer.K_LIMIT = 19; +ScrollQLLexer.K_TAIL = 20; +ScrollQLLexer.K_REGEX = 21; +ScrollQLLexer.K_IN = 22; +ScrollQLLexer.K_GROUP = 23; +ScrollQLLexer.K_BY = 24; +ScrollQLLexer.K_AS = 25; +ScrollQLLexer.K_AND = 26; +ScrollQLLexer.K_OR = 27; +ScrollQLLexer.K_NOT = 28; +ScrollQLLexer.K_LIKE = 29; +ScrollQLLexer.K_MATCHES = 30; +ScrollQLLexer.K_TU_MS = 31; +ScrollQLLexer.K_TU_MSEC = 32; +ScrollQLLexer.K_TU_MSECOND = 33; +ScrollQLLexer.K_TU_S = 34; +ScrollQLLexer.K_TU_SEC = 35; +ScrollQLLexer.K_TU_SECOND = 36; +ScrollQLLexer.K_TU_M = 37; +ScrollQLLexer.K_TU_MIN = 38; +ScrollQLLexer.K_TU_MINUTE = 39; +ScrollQLLexer.K_TU_H = 40; +ScrollQLLexer.K_TU_HR = 41; +ScrollQLLexer.K_TU_HOUR = 42; +ScrollQLLexer.K_TU_D = 43; +ScrollQLLexer.K_TU_DAY = 44; +ScrollQLLexer.K_TU_W = 45; +ScrollQLLexer.K_TU_WEEK = 46; +ScrollQLLexer.K_TU_MO = 47; +ScrollQLLexer.K_TU_MON = 48; +ScrollQLLexer.K_TU_MONTH = 49; +ScrollQLLexer.K_TU_Q = 50; +ScrollQLLexer.K_TU_QTR = 51; +ScrollQLLexer.K_TU_QUARTER = 52; +ScrollQLLexer.K_TU_Y = 53; +ScrollQLLexer.K_TU_YR = 54; +ScrollQLLexer.K_TU_YEAR = 55; +ScrollQLLexer.RAW_ID = 56; +ScrollQLLexer.LIT_INTEGER = 57; +ScrollQLLexer.LIT_NUMBER = 58; +ScrollQLLexer.SDQUOTED_STRING = 59; +ScrollQLLexer.SSQUOTED_STRING = 60; +ScrollQLLexer.CDQUOTED_STRING = 61; +ScrollQLLexer.CSQUOTED_STRING = 62; +ScrollQLLexer.QUOTED_IDENT = 63; +ScrollQLLexer.SYM_EQTILDE = 64; +ScrollQLLexer.SYM_TILDEEQ = 65; +ScrollQLLexer.SYM_AT = 66; +ScrollQLLexer.SYM_COMMA = 67; +ScrollQLLexer.SYM_LPAREN = 68; +ScrollQLLexer.SYM_RPAREN = 69; +ScrollQLLexer.SYM_PIPE = 70; +ScrollQLLexer.SYM_WRITE = 71; +ScrollQLLexer.SYM_COLON = 72; +ScrollQLLexer.SYM_CARET = 73; +ScrollQLLexer.SYM_NOT = 74; +ScrollQLLexer.SYM_MUL = 75; +ScrollQLLexer.SYM_DIV = 76; +ScrollQLLexer.SYM_MOD = 77; +ScrollQLLexer.SYM_PLUS = 78; +ScrollQLLexer.SYM_MINUS = 79; +ScrollQLLexer.SYM_TILDE = 80; +ScrollQLLexer.SYM_LT = 81; +ScrollQLLexer.SYM_GT = 82; +ScrollQLLexer.SYM_LTEQ = 83; +ScrollQLLexer.SYM_GTEQ = 84; +ScrollQLLexer.SYM_EQ = 85; +ScrollQLLexer.SYM_NEQ = 86; +ScrollQLLexer.SYM_LBRACKET = 87; +ScrollQLLexer.SYM_RBRACKET = 88; +ScrollQLLexer.REGEX_WS = 89; +ScrollQLLexer.REGEX_COMMENT = 90; +ScrollQLLexer.REGEX = 91; +ScrollQLLexer.RE_SDQUOTED_STRING = 92; +ScrollQLLexer.RE_SSQUOTED_STRING = 93; +ScrollQLLexer.RE_CDQUOTED_STRING = 94; +ScrollQLLexer.RE_CSQUOTED_STRING = 95; +ScrollQLLexer.RE_RAW_ID = 96; +ScrollQLLexer.RE_SYM_AT = 97; +ScrollQLLexer.RE_QUOTED_IDENT = 98; +ScrollQLLexer.SE_WS = 99; +ScrollQLLexer.SE_COMMENT = 100; +ScrollQLLexer.SE_K_SEARCH = 101; +ScrollQLLexer.SE_SYM_LPAREN = 102; +ScrollQLLexer.SE_SYM_RPAREN = 103; +ScrollQLLexer.SE_K_AND = 104; +ScrollQLLexer.SE_K_OR = 105; +ScrollQLLexer.SE_K_NOT = 106; +ScrollQLLexer.SE_SDQUOTED_STRING = 107; +ScrollQLLexer.SE_SSQUOTED_STRING = 108; +ScrollQLLexer.SE_CDQUOTED_STRING = 109; +ScrollQLLexer.SE_CSQUOTED_STRING = 110; +ScrollQLLexer.SE_UNQUOTED_STRING = 111; +ScrollQLLexer.SE_PIPE = 112; + +ScrollQLLexer.WHITESPACE = 2; +ScrollQLLexer.COMMENTS = 3; + +ScrollQLLexer.REGEX_VALUE = 1; +ScrollQLLexer.SEARCH_VALUE = 2; + +ScrollQLLexer.prototype.channelNames = ['DEFAULT_TOKEN_CHANNEL', 'HIDDEN', 'WHITESPACE', 'COMMENTS']; + +ScrollQLLexer.prototype.modeNames = ['DEFAULT_MODE', 'REGEX_VALUE', 'SEARCH_VALUE']; + +ScrollQLLexer.prototype.literalNames = [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + "'=~'", + "'~='", + null, + null, + null, + null, + null, + "'|>'", + "':'", + "'^'", + "'!'", + "'*'", + "'/'", + "'%'", + "'+'", + "'-'", + "'~'", + "'<'", + "'>'", + "'<='", + "'>='", + "'='", + "'!='", + "'['", + "']'", + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + "'|'", +]; + +ScrollQLLexer.prototype.symbolicNames = [ + null, + 'WS', + 'COMMENT', + 'K_SOURCE', + 'K_START', + 'K_END', + 'K_NOW', + 'K_LIVE', + 'K_PARSE', + 'K_SEARCH', + 'K_FIELDS', + 'K_DISPLAY', + 'K_FILTER', + 'K_STATS', + 'K_SORT', + 'K_ORDER', + 'K_ASC', + 'K_DESC', + 'K_HEAD', + 'K_LIMIT', + 'K_TAIL', + 'K_REGEX', + 'K_IN', + 'K_GROUP', + 'K_BY', + 'K_AS', + 'K_AND', + 'K_OR', + 'K_NOT', + 'K_LIKE', + 'K_MATCHES', + 'K_TU_MS', + 'K_TU_MSEC', + 'K_TU_MSECOND', + 'K_TU_S', + 'K_TU_SEC', + 'K_TU_SECOND', + 'K_TU_M', + 'K_TU_MIN', + 'K_TU_MINUTE', + 'K_TU_H', + 'K_TU_HR', + 'K_TU_HOUR', + 'K_TU_D', + 'K_TU_DAY', + 'K_TU_W', + 'K_TU_WEEK', + 'K_TU_MO', + 'K_TU_MON', + 'K_TU_MONTH', + 'K_TU_Q', + 'K_TU_QTR', + 'K_TU_QUARTER', + 'K_TU_Y', + 'K_TU_YR', + 'K_TU_YEAR', + 'RAW_ID', + 'LIT_INTEGER', + 'LIT_NUMBER', + 'SDQUOTED_STRING', + 'SSQUOTED_STRING', + 'CDQUOTED_STRING', + 'CSQUOTED_STRING', + 'QUOTED_IDENT', + 'SYM_EQTILDE', + 'SYM_TILDEEQ', + 'SYM_AT', + 'SYM_COMMA', + 'SYM_LPAREN', + 'SYM_RPAREN', + 'SYM_PIPE', + 'SYM_WRITE', + 'SYM_COLON', + 'SYM_CARET', + 'SYM_NOT', + 'SYM_MUL', + 'SYM_DIV', + 'SYM_MOD', + 'SYM_PLUS', + 'SYM_MINUS', + 'SYM_TILDE', + 'SYM_LT', + 'SYM_GT', + 'SYM_LTEQ', + 'SYM_GTEQ', + 'SYM_EQ', + 'SYM_NEQ', + 'SYM_LBRACKET', + 'SYM_RBRACKET', + 'REGEX_WS', + 'REGEX_COMMENT', + 'REGEX', + 'RE_SDQUOTED_STRING', + 'RE_SSQUOTED_STRING', + 'RE_CDQUOTED_STRING', + 'RE_CSQUOTED_STRING', + 'RE_RAW_ID', + 'RE_SYM_AT', + 'RE_QUOTED_IDENT', + 'SE_WS', + 'SE_COMMENT', + 'SE_K_SEARCH', + 'SE_SYM_LPAREN', + 'SE_SYM_RPAREN', + 'SE_K_AND', + 'SE_K_OR', + 'SE_K_NOT', + 'SE_SDQUOTED_STRING', + 'SE_SSQUOTED_STRING', + 'SE_CDQUOTED_STRING', + 'SE_CSQUOTED_STRING', + 'SE_UNQUOTED_STRING', + 'SE_PIPE', +]; + +ScrollQLLexer.prototype.ruleNames = [ + 'WS', + 'COMMENT', + 'K_SOURCE', + 'K_START', + 'K_END', + 'K_NOW', + 'K_LIVE', + 'K_PARSE', + 'K_SEARCH', + 'K_FIELDS', + 'K_DISPLAY', + 'K_FILTER', + 'K_STATS', + 'K_SORT', + 'K_ORDER', + 'K_ASC', + 'K_DESC', + 'K_HEAD', + 'K_LIMIT', + 'K_TAIL', + 'K_REGEX', + 'K_IN', + 'K_GROUP', + 'K_BY', + 'K_AS', + 'K_AND', + 'K_OR', + 'K_NOT', + 'K_LIKE', + 'K_MATCHES', + 'K_TU_MS', + 'K_TU_MSEC', + 'K_TU_MSECOND', + 'K_TU_S', + 'K_TU_SEC', + 'K_TU_SECOND', + 'K_TU_M', + 'K_TU_MIN', + 'K_TU_MINUTE', + 'K_TU_H', + 'K_TU_HR', + 'K_TU_HOUR', + 'K_TU_D', + 'K_TU_DAY', + 'K_TU_W', + 'K_TU_WEEK', + 'K_TU_MO', + 'K_TU_MON', + 'K_TU_MONTH', + 'K_TU_Q', + 'K_TU_QTR', + 'K_TU_QUARTER', + 'K_TU_Y', + 'K_TU_YR', + 'K_TU_YEAR', + 'RAW_ID', + 'LIT_INTEGER', + 'LIT_NUMBER', + 'INT', + 'EXP', + 'SDQUOTED_STRING', + 'SDQ_ESC_STRING', + 'SSQUOTED_STRING', + 'SSQ_ESC_STRING', + 'CDQUOTED_STRING', + 'CDQ_ESC_STRING', + 'CSQUOTED_STRING', + 'CSQ_ESC_STRING', + 'QUOTED_IDENT', + 'ESC_IDENT', + 'SYM_EQTILDE', + 'SYM_TILDEEQ', + 'SYM_AT', + 'SYM_COMMA', + 'SYM_LPAREN', + 'SYM_RPAREN', + 'SYM_PIPE', + 'SYM_WRITE', + 'SYM_COLON', + 'SYM_CARET', + 'SYM_NOT', + 'SYM_MUL', + 'SYM_DIV', + 'SYM_MOD', + 'SYM_PLUS', + 'SYM_MINUS', + 'SYM_TILDE', + 'SYM_LT', + 'SYM_GT', + 'SYM_LTEQ', + 'SYM_GTEQ', + 'SYM_EQ', + 'SYM_NEQ', + 'SYM_LBRACKET', + 'SYM_RBRACKET', + 'A', + 'B', + 'C', + 'D', + 'E', + 'F', + 'G', + 'H', + 'I', + 'J', + 'K', + 'L', + 'M', + 'N', + 'O', + 'P', + 'Q', + 'R', + 'S', + 'T', + 'U', + 'V', + 'W', + 'X', + 'Y', + 'Z', + 'RE_UNRECOGNIZED', + 'REGEX_WS', + 'REGEX_COMMENT', + 'REGEX', + 'RE_SDQUOTED_STRING', + 'RE_SDQ_ESC_STRING', + 'RE_SSQUOTED_STRING', + 'RE_SSQ_ESC_STRING', + 'RE_CDQUOTED_STRING', + 'RE_CDQ_ESC_STRING', + 'RE_CSQUOTED_STRING', + 'RE_CSQ_ESC_STRING', + 'RE_RAW_ID', + 'RE_SYM_AT', + 'RE_QUOTED_IDENT', + 'RE_ESC_IDENT', + 'RE_ESC_REGEX', + 'SE_WS', + 'SE_COMMENT', + 'SE_PIPE', + 'SE_K_SOURCE', + 'SE_K_PARSE', + 'SE_K_SEARCH', + 'SE_K_FIELDS', + 'SE_K_DISPLAY', + 'SE_K_FILTER', + 'SE_K_STATS', + 'SE_K_SORT', + 'SE_K_LIMIT', + 'SE_SYM_LPAREN', + 'SE_SYM_RPAREN', + 'SE_K_AND', + 'SE_K_OR', + 'SE_K_NOT', + 'SE_SDQUOTED_STRING', + 'SE_SDQ_ESC_STRING', + 'SE_SSQUOTED_STRING', + 'SE_SSQ_ESC_STRING', + 'SE_CDQUOTED_STRING', + 'SE_CDQ_ESC_STRING', + 'SE_CSQUOTED_STRING', + 'SE_CSQ_ESC_STRING', + 'SE_UNQUOTED_STRING', +]; + +ScrollQLLexer.prototype.grammarFileName = 'ScrollQLLexer.g4'; + +ScrollQLLexer.prototype.action = function(localctx, ruleIndex, actionIndex) { + switch (ruleIndex) { + case 76: + this.SYM_PIPE_action(localctx, actionIndex); + break; + case 141: + this.SE_K_SOURCE_action(localctx, actionIndex); + break; + default: + throw 'No registered action for:' + ruleIndex; + } +}; + +ScrollQLLexer.prototype.SYM_PIPE_action = function(localctx, actionIndex) { + switch (actionIndex) { + case 0: + this.isFirstPipe = false; + this.pushMode(ScrollQLLexer.SEARCH_VALUE); + break; + default: + throw 'No registered action for:' + actionIndex; + } +}; + +ScrollQLLexer.prototype.SE_K_SOURCE_action = function(localctx, actionIndex) { + switch (actionIndex) { + case 1: + this.isFirstPipe = true; + break; + default: + throw 'No registered action for:' + actionIndex; + } +}; +ScrollQLLexer.prototype.sempred = function(localctx, ruleIndex, predIndex) { + switch (ruleIndex) { + case 76: + return this.SYM_PIPE_sempred(localctx, predIndex); + default: + throw 'No registered predicate for:' + ruleIndex; + } +}; + +ScrollQLLexer.prototype.SYM_PIPE_sempred = function(localctx, predIndex) { + switch (predIndex) { + case 0: + return this.isFirstPipe; + case 1: + return !this.isFirstPipe; + default: + throw 'No predicate with index:' + predIndex; + } +}; + +exports.ScrollQLLexer = ScrollQLLexer; diff --git a/public/app/plugins/datasource/cloudwatch/utils/query/ScrollQLParser.js b/public/app/plugins/datasource/cloudwatch/utils/query/ScrollQLParser.js new file mode 100644 index 00000000000..a6412434e52 --- /dev/null +++ b/public/app/plugins/datasource/cloudwatch/utils/query/ScrollQLParser.js @@ -0,0 +1,8603 @@ +// Generated from ScrollQLParser.g4 by ANTLR 4.8 +// jshint ignore: start +// @ts-nocheck +var antlr4 = require('antlr4/index'); +var ScrollQLParserListener = require('./ScrollQLParserListener').ScrollQLParserListener; +var grammarFileName = 'ScrollQLParser.g4'; + +var serializedATN = [ + '\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964', + '\u0003r\u0244\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004\u0004\t', + '\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t\u0007\u0004', + '\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004\f\t\f\u0004', + '\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010\t\u0010\u0004', + '\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013\u0004\u0014\t', + '\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017\t\u0017\u0004', + '\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a\u0004\u001b\t', + '\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e\t\u001e\u0004', + '\u001f\t\u001f\u0004 \t \u0004!\t!\u0004"\t"\u0004#\t#\u0004$\t$\u0004', + "%\t%\u0004&\t&\u0004'\t'\u0004(\t(\u0004)\t)\u0004*\t*\u0004+\t+\u0004", + ',\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u00041\t1\u00042\t2\u0004', + '3\t3\u00044\t4\u00045\t5\u00046\t6\u00047\t7\u00048\t8\u00049\t9\u0004', + ':\t:\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0003\u0003\u0003\u0003', + '\u0003\u0005\u0003{\n\u0003\u0003\u0003\u0003\u0003\u0005\u0003\u007f', + '\n\u0003\u0003\u0004\u0003\u0004\u0003\u0004\u0007\u0004\u0084\n\u0004', + '\f\u0004\u000e\u0004\u0087\u000b\u0004\u0003\u0005\u0003\u0005\u0003', + '\u0005\u0007\u0005\u008c\n\u0005\f\u0005\u000e\u0005\u008f\u000b\u0005', + '\u0003\u0005\u0003\u0005\u0005\u0005\u0093\n\u0005\u0003\u0005\u0003', + '\u0005\u0007\u0005\u0097\n\u0005\f\u0005\u000e\u0005\u009a\u000b\u0005', + '\u0003\u0006\u0003\u0006\u0003\u0006\u0007\u0006\u009f\n\u0006\f\u0006', + '\u000e\u0006\u00a2\u000b\u0006\u0003\u0007\u0003\u0007\u0003\u0007\u0003', + '\u0007\u0003\u0007\u0003\u0007\u0005\u0007\u00aa\n\u0007\u0003\b\u0003', + '\b\u0003\b\u0003\b\u0003\b\u0005\b\u00b1\n\b\u0007\b\u00b3\n\b\f\b\u000e', + '\b\u00b6\u000b\b\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t\u0003', + '\t\u0003\t\u0003\t\u0003\n\u0003\n\u0003\n\u0003\n\u0005\n\u00c5\n\n', + '\u0003\u000b\u0003\u000b\u0003\f\u0003\f\u0005\f\u00cb\n\f\u0003\f\u0003', + '\f\u0005\f\u00cf\n\f\u0003\f\u0005\f\u00d2\n\f\u0003\f\u0005\f\u00d5', + '\n\f\u0003\r\u0003\r\u0005\r\u00d9\n\r\u0003\u000e\u0003\u000e\u0003', + '\u000f\u0007\u000f\u00de\n\u000f\f\u000f\u000e\u000f\u00e1\u000b\u000f', + '\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0007\u0010\u00e7\n', + '\u0010\f\u0010\u000e\u0010\u00ea\u000b\u0010\u0003\u0010\u0005\u0010', + '\u00ed\n\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0007', + '\u0010\u00f3\n\u0010\f\u0010\u000e\u0010\u00f6\u000b\u0010\u0005\u0010', + '\u00f8\n\u0010\u0003\u0011\u0003\u0011\u0003\u0011\u0005\u0011\u00fd', + '\n\u0011\u0003\u0012\u0003\u0012\u0005\u0012\u0101\n\u0012\u0003\u0013', + '\u0003\u0013\u0003\u0013\u0003\u0013\u0007\u0013\u0107\n\u0013\f\u0013', + '\u000e\u0013\u010a\u000b\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003', + '\u0013\u0007\u0013\u0110\n\u0013\f\u0013\u000e\u0013\u0113\u000b\u0013', + '\u0005\u0013\u0115\n\u0013\u0003\u0014\u0003\u0014\u0003\u0014\u0005', + '\u0014\u011a\n\u0014\u0003\u0015\u0003\u0015\u0005\u0015\u011e\n\u0015', + '\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0007\u0015', + '\u0125\n\u0015\f\u0015\u000e\u0015\u0128\u000b\u0015\u0003\u0015\u0003', + '\u0015\u0005\u0015\u012c\n\u0015\u0003\u0015\u0005\u0015\u012f\n\u0015', + '\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0017\u0005\u0017\u0135\n', + '\u0017\u0003\u0017\u0003\u0017\u0003\u0018\u0003\u0018\u0003\u0018\u0003', + '\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0005\u0018\u0141', + '\n\u0018\u0003\u0018\u0003\u0018\u0005\u0018\u0145\n\u0018\u0003\u0018', + '\u0003\u0018\u0003\u0018\u0003\u0018\u0007\u0018\u014b\n\u0018\f\u0018', + '\u000e\u0018\u014e\u000b\u0018\u0003\u0019\u0003\u0019\u0003\u0019\u0003', + '\u0019\u0003\u0019\u0005\u0019\u0155\n\u0019\u0003\u001a\u0003\u001a', + '\u0003\u001a\u0003\u001b\u0003\u001b\u0005\u001b\u015c\n\u001b\u0003', + '\u001b\u0003\u001b\u0003\u001b\u0007\u001b\u0161\n\u001b\f\u001b\u000e', + '\u001b\u0164\u000b\u001b\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c', + '\u0003\u001c\u0005\u001c\u016b\n\u001c\u0005\u001c\u016d\n\u001c\u0003', + '\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0005\u001d\u0173\n\u001d', + '\u0003\u001e\u0003\u001e\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f', + '\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f', + '\u0003\u001f\u0003\u001f\u0005\u001f\u0183\n\u001f\u0003\u001f\u0003', + '\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003', + '\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003', + '\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0005\u001f\u0196\n\u001f', + '\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f', + '\u0003\u001f\u0003\u001f\u0003\u001f\u0005\u001f\u01a1\n\u001f\u0003', + '\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0005\u001f\u01a7\n\u001f', + '\u0003\u001f\u0003\u001f\u0007\u001f\u01ab\n\u001f\f\u001f\u000e\u001f', + '\u01ae\u000b\u001f\u0003 \u0003 \u0003 \u0003 \u0005 \u01b4\n \u0003', + '!\u0003!\u0005!\u01b8\n!\u0003"\u0003"\u0003"\u0003"\u0003"\u0007', + '"\u01bf\n"\f"\u000e"\u01c2\u000b"\u0003"\u0003"\u0003"\u0003', + '"\u0003"\u0005"\u01c9\n"\u0003"\u0003"\u0005"\u01cd\n"\u0003', + '#\u0003#\u0005#\u01d1\n#\u0003$\u0003$\u0003$\u0003$\u0007$\u01d7\n', + '$\f$\u000e$\u01da\u000b$\u0003$\u0003$\u0003$\u0003$\u0005$\u01e0\n', + '$\u0003%\u0003%\u0005%\u01e4\n%\u0003&\u0003&\u0005&\u01e8\n&\u0003', + "'\u0003'\u0003'\u0003'\u0005'\u01ee\n'\u0003(\u0003(\u0003(\u0003", + '(\u0003(\u0005(\u01f5\n(\u0003)\u0003)\u0003*\u0003*\u0003*\u0003*\u0005', + '*\u01fd\n*\u0003+\u0003+\u0003+\u0003+\u0003+\u0003+\u0003+\u0005+\u0206', + '\n+\u0003,\u0003,\u0005,\u020a\n,\u0003-\u0003-\u0005-\u020e\n-\u0003', + '.\u0003.\u0005.\u0212\n.\u0003/\u0003/\u0005/\u0216\n/\u00030\u0003', + '0\u00060\u021a\n0\r0\u000e0\u021b\u00030\u00030\u00031\u00031\u0003', + '2\u00032\u00033\u00033\u00053\u0226\n3\u00034\u00034\u00034\u00035\u0003', + '5\u00035\u00036\u00036\u00037\u00037\u00038\u00038\u00038\u00058\u0235', + '\n8\u00039\u00039\u0003:\u0003:\u0003:\u0003:\u0003:\u0003:\u0003:\u0003', + ':\u0003:\u0005:\u0242\n:\u0003:\u0002\u0004.<;\u0002\u0004\u0006\b\n', + '\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e "$&(*,.02', + '468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnpr\u0002\u001c\u0003\u0002;<\u0005\u0002', + ':>__\u0004\u0002??``\u0004\u0002', + '@@aa\u0004\u0002DDcc\u0004\u0002AAdd\u0004\u0002::bb\u0003\u0002\u0005', + " \u0003\u0002!#\u0003\u0002$&\u0003\u0002')\u0003\u0002*,\u0003\u0002", + '-.\u0003\u0002/0\u0003\u000213\u0003\u000246\u0003\u000279\u0002\u027b', + '\u0002t\u0003\u0002\u0002\u0002\u0004w\u0003\u0002\u0002\u0002\u0006', + '\u0080\u0003\u0002\u0002\u0002\b\u0088\u0003\u0002\u0002\u0002\n\u009b', + '\u0003\u0002\u0002\u0002\f\u00a9\u0003\u0002\u0002\u0002\u000e\u00ab', + '\u0003\u0002\u0002\u0002\u0010\u00b7\u0003\u0002\u0002\u0002\u0012\u00c4', + '\u0003\u0002\u0002\u0002\u0014\u00c6\u0003\u0002\u0002\u0002\u0016\u00d4', + '\u0003\u0002\u0002\u0002\u0018\u00d8\u0003\u0002\u0002\u0002\u001a\u00da', + '\u0003\u0002\u0002\u0002\u001c\u00df\u0003\u0002\u0002\u0002\u001e\u00e2', + '\u0003\u0002\u0002\u0002 \u00f9\u0003\u0002\u0002\u0002"\u0100\u0003', + '\u0002\u0002\u0002$\u0114\u0003\u0002\u0002\u0002&\u0116\u0003\u0002', + '\u0002\u0002(\u012e\u0003\u0002\u0002\u0002*\u0130\u0003\u0002\u0002', + '\u0002,\u0134\u0003\u0002\u0002\u0002.\u0140\u0003\u0002\u0002\u0002', + '0\u0154\u0003\u0002\u0002\u00022\u0156\u0003\u0002\u0002\u00024\u0159', + '\u0003\u0002\u0002\u00026\u016c\u0003\u0002\u0002\u00028\u0172\u0003', + '\u0002\u0002\u0002:\u0174\u0003\u0002\u0002\u0002<\u0182\u0003\u0002', + '\u0002\u0002>\u01b3\u0003\u0002\u0002\u0002@\u01b7\u0003\u0002\u0002', + '\u0002B\u01cc\u0003\u0002\u0002\u0002D\u01d0\u0003\u0002\u0002\u0002', + 'F\u01df\u0003\u0002\u0002\u0002H\u01e3\u0003\u0002\u0002\u0002J\u01e7', + '\u0003\u0002\u0002\u0002L\u01ed\u0003\u0002\u0002\u0002N\u01f4\u0003', + '\u0002\u0002\u0002P\u01f6\u0003\u0002\u0002\u0002R\u01fc\u0003\u0002', + '\u0002\u0002T\u0205\u0003\u0002\u0002\u0002V\u0209\u0003\u0002\u0002', + '\u0002X\u020d\u0003\u0002\u0002\u0002Z\u0211\u0003\u0002\u0002\u0002', + '\\\u0215\u0003\u0002\u0002\u0002^\u0217\u0003\u0002\u0002\u0002`\u021f', + '\u0003\u0002\u0002\u0002b\u0221\u0003\u0002\u0002\u0002d\u0225\u0003', + '\u0002\u0002\u0002f\u0227\u0003\u0002\u0002\u0002h\u022a\u0003\u0002', + '\u0002\u0002j\u022d\u0003\u0002\u0002\u0002l\u022f\u0003\u0002\u0002', + '\u0002n\u0234\u0003\u0002\u0002\u0002p\u0236\u0003\u0002\u0002\u0002', + 'r\u0241\u0003\u0002\u0002\u0002tu\u0005\u0004\u0003\u0002uv\u0007\u0002', + '\u0002\u0003v\u0003\u0003\u0002\u0002\u0002wz\u0005\b\u0005\u0002xy', + '\u0007H\u0002\u0002y{\u0005\n\u0006\u0002zx\u0003\u0002\u0002\u0002', + 'z{\u0003\u0002\u0002\u0002{~\u0003\u0002\u0002\u0002|}\u0007I\u0002', + '\u0002}\u007f\u0005j6\u0002~|\u0003\u0002\u0002\u0002~\u007f\u0003\u0002', + '\u0002\u0002\u007f\u0005\u0003\u0002\u0002\u0002\u0080\u0085\u0005j', + '6\u0002\u0081\u0082\u0007H\u0002\u0002\u0082\u0084\u0005\u000e\b\u0002', + '\u0083\u0081\u0003\u0002\u0002\u0002\u0084\u0087\u0003\u0002\u0002\u0002', + '\u0085\u0083\u0003\u0002\u0002\u0002\u0085\u0086\u0003\u0002\u0002\u0002', + '\u0086\u0007\u0003\u0002\u0002\u0002\u0087\u0085\u0003\u0002\u0002\u0002', + '\u0088\u008d\u0005\u0010\t\u0002\u0089\u008a\u0007H\u0002\u0002\u008a', + '\u008c\u0005\u0010\t\u0002\u008b\u0089\u0003\u0002\u0002\u0002\u008c', + '\u008f\u0003\u0002\u0002\u0002\u008d\u008b\u0003\u0002\u0002\u0002\u008d', + '\u008e\u0003\u0002\u0002\u0002\u008e\u0092\u0003\u0002\u0002\u0002\u008f', + '\u008d\u0003\u0002\u0002\u0002\u0090\u0091\u0007H\u0002\u0002\u0091', + '\u0093\u0005,\u0017\u0002\u0092\u0090\u0003\u0002\u0002\u0002\u0092', + '\u0093\u0003\u0002\u0002\u0002\u0093\u0098\u0003\u0002\u0002\u0002\u0094', + '\u0095\u0007H\u0002\u0002\u0095\u0097\u0005\f\u0007\u0002\u0096\u0094', + '\u0003\u0002\u0002\u0002\u0097\u009a\u0003\u0002\u0002\u0002\u0098\u0096', + '\u0003\u0002\u0002\u0002\u0098\u0099\u0003\u0002\u0002\u0002\u0099\t', + '\u0003\u0002\u0002\u0002\u009a\u0098\u0003\u0002\u0002\u0002\u009b\u00a0', + '\u0005\u001e\u0010\u0002\u009c\u009d\u0007H\u0002\u0002\u009d\u009f', + '\u0005\f\u0007\u0002\u009e\u009c\u0003\u0002\u0002\u0002\u009f\u00a2', + '\u0003\u0002\u0002\u0002\u00a0\u009e\u0003\u0002\u0002\u0002\u00a0\u00a1', + '\u0003\u0002\u0002\u0002\u00a1\u000b\u0003\u0002\u0002\u0002\u00a2\u00a0', + '\u0003\u0002\u0002\u0002\u00a3\u00aa\u0005$\u0013\u0002\u00a4\u00aa', + '\u0005(\u0015\u0002\u00a5\u00aa\u00052\u001a\u0002\u00a6\u00aa\u0005', + '*\u0016\u0002\u00a7\u00aa\u00054\u001b\u0002\u00a8\u00aa\u00058\u001d', + '\u0002\u00a9\u00a3\u0003\u0002\u0002\u0002\u00a9\u00a4\u0003\u0002\u0002', + '\u0002\u00a9\u00a5\u0003\u0002\u0002\u0002\u00a9\u00a6\u0003\u0002\u0002', + '\u0002\u00a9\u00a7\u0003\u0002\u0002\u0002\u00a9\u00a8\u0003\u0002\u0002', + '\u0002\u00aa\r\u0003\u0002\u0002\u0002\u00ab\u00b4\u0005l7\u0002\u00ac', + '\u00ad\u0005n8\u0002\u00ad\u00ae\u0007W\u0002\u0002\u00ae\u00b0\u0005', + 'V,\u0002\u00af\u00b1\u0007E\u0002\u0002\u00b0\u00af\u0003\u0002\u0002', + '\u0002\u00b0\u00b1\u0003\u0002\u0002\u0002\u00b1\u00b3\u0003\u0002\u0002', + '\u0002\u00b2\u00ac\u0003\u0002\u0002\u0002\u00b3\u00b6\u0003\u0002\u0002', + '\u0002\u00b4\u00b2\u0003\u0002\u0002\u0002\u00b4\u00b5\u0003\u0002\u0002', + '\u0002\u00b5\u000f\u0003\u0002\u0002\u0002\u00b6\u00b4\u0003\u0002\u0002', + '\u0002\u00b7\u00b8\u0007\u0005\u0002\u0002\u00b8\u00b9\u0005T+\u0002', + '\u00b9\u00ba\u0007\u0006\u0002\u0002\u00ba\u00bb\u0007W\u0002\u0002', + '\u00bb\u00bc\u0005\u0012\n\u0002\u00bc\u00bd\u0007\u0007\u0002\u0002', + '\u00bd\u00be\u0007W\u0002\u0002\u00be\u00bf\u0005\u0012\n\u0002\u00bf', + '\u0011\u0003\u0002\u0002\u0002\u00c0\u00c5\u0005\u0014\u000b\u0002\u00c1', + '\u00c5\u0005\u0016\f\u0002\u00c2\u00c5\u0005\u001a\u000e\u0002\u00c3', + '\u00c5\u0005\u0018\r\u0002\u00c4\u00c0\u0003\u0002\u0002\u0002\u00c4', + '\u00c1\u0003\u0002\u0002\u0002\u00c4\u00c2\u0003\u0002\u0002\u0002\u00c4', + '\u00c3\u0003\u0002\u0002\u0002\u00c5\u0013\u0003\u0002\u0002\u0002\u00c6', + '\u00c7\u0007\b\u0002\u0002\u00c7\u0015\u0003\u0002\u0002\u0002\u00c8', + '\u00ca\u0007Q\u0002\u0002\u00c9\u00cb\t\u0002\u0002\u0002\u00ca\u00c9', + '\u0003\u0002\u0002\u0002\u00ca\u00cb\u0003\u0002\u0002\u0002\u00cb\u00cc', + '\u0003\u0002\u0002\u0002\u00cc\u00d5\u0005r:\u0002\u00cd\u00cf\u0007', + 'P\u0002\u0002\u00ce\u00cd\u0003\u0002\u0002\u0002\u00ce\u00cf\u0003', + '\u0002\u0002\u0002\u00cf\u00d1\u0003\u0002\u0002\u0002\u00d0\u00d2\t', + '\u0002\u0002\u0002\u00d1\u00d0\u0003\u0002\u0002\u0002\u00d1\u00d2\u0003', + '\u0002\u0002\u0002\u00d2\u00d3\u0003\u0002\u0002\u0002\u00d3\u00d5\u0005', + 'r:\u0002\u00d4\u00c8\u0003\u0002\u0002\u0002\u00d4\u00ce\u0003\u0002', + '\u0002\u0002\u00d5\u0017\u0003\u0002\u0002\u0002\u00d6\u00d9\u0005N', + '(\u0002\u00d7\u00d9\u0005\u001c\u000f\u0002\u00d8\u00d6\u0003\u0002', + '\u0002\u0002\u00d8\u00d7\u0003\u0002\u0002\u0002\u00d9\u0019\u0003\u0002', + '\u0002\u0002\u00da\u00db\t\u0002\u0002\u0002\u00db\u001b\u0003\u0002', + '\u0002\u0002\u00dc\u00de\t\u0003\u0002\u0002\u00dd\u00dc\u0003\u0002', + '\u0002\u0002\u00de\u00e1\u0003\u0002\u0002\u0002\u00df\u00dd\u0003\u0002', + '\u0002\u0002\u00df\u00e0\u0003\u0002\u0002\u0002\u00e0\u001d\u0003\u0002', + '\u0002\u0002\u00e1\u00df\u0003\u0002\u0002\u0002\u00e2\u00e3\u0007\u000f', + '\u0002\u0002\u00e3\u00e8\u0005 \u0011\u0002\u00e4\u00e5\u0007E\u0002', + '\u0002\u00e5\u00e7\u0005 \u0011\u0002\u00e6\u00e4\u0003\u0002\u0002', + '\u0002\u00e7\u00ea\u0003\u0002\u0002\u0002\u00e8\u00e6\u0003\u0002\u0002', + '\u0002\u00e8\u00e9\u0003\u0002\u0002\u0002\u00e9\u00f7\u0003\u0002\u0002', + '\u0002\u00ea\u00e8\u0003\u0002\u0002\u0002\u00eb\u00ed\u0007\u0019\u0002', + '\u0002\u00ec\u00eb\u0003\u0002\u0002\u0002\u00ec\u00ed\u0003\u0002\u0002', + '\u0002\u00ed\u00ee\u0003\u0002\u0002\u0002\u00ee\u00ef\u0007\u001a\u0002', + '\u0002\u00ef\u00f4\u0005"\u0012\u0002\u00f0\u00f1\u0007E\u0002\u0002', + '\u00f1\u00f3\u0005"\u0012\u0002\u00f2\u00f0\u0003\u0002\u0002\u0002', + '\u00f3\u00f6\u0003\u0002\u0002\u0002\u00f4\u00f2\u0003\u0002\u0002\u0002', + '\u00f4\u00f5\u0003\u0002\u0002\u0002\u00f5\u00f8\u0003\u0002\u0002\u0002', + '\u00f6\u00f4\u0003\u0002\u0002\u0002\u00f7\u00ec\u0003\u0002\u0002\u0002', + '\u00f7\u00f8\u0003\u0002\u0002\u0002\u00f8\u001f\u0003\u0002\u0002\u0002', + '\u00f9\u00fc\u0005:\u001e\u0002\u00fa\u00fb\u0007\u001b\u0002\u0002', + '\u00fb\u00fd\u0005X-\u0002\u00fc\u00fa\u0003\u0002\u0002\u0002\u00fc', + '\u00fd\u0003\u0002\u0002\u0002\u00fd!\u0003\u0002\u0002\u0002\u00fe', + '\u0101\u0005V,\u0002\u00ff\u0101\u0005&\u0014\u0002\u0100\u00fe\u0003', + '\u0002\u0002\u0002\u0100\u00ff\u0003\u0002\u0002\u0002\u0101#\u0003', + '\u0002\u0002\u0002\u0102\u0103\u0007\f\u0002\u0002\u0103\u0108\u0005', + '&\u0014\u0002\u0104\u0105\u0007E\u0002\u0002\u0105\u0107\u0005&\u0014', + '\u0002\u0106\u0104\u0003\u0002\u0002\u0002\u0107\u010a\u0003\u0002\u0002', + '\u0002\u0108\u0106\u0003\u0002\u0002\u0002\u0108\u0109\u0003\u0002\u0002', + '\u0002\u0109\u0115\u0003\u0002\u0002\u0002\u010a\u0108\u0003\u0002\u0002', + '\u0002\u010b\u010c\u0007\r\u0002\u0002\u010c\u0111\u0005&\u0014\u0002', + '\u010d\u010e\u0007E\u0002\u0002\u010e\u0110\u0005&\u0014\u0002\u010f', + '\u010d\u0003\u0002\u0002\u0002\u0110\u0113\u0003\u0002\u0002\u0002\u0111', + '\u010f\u0003\u0002\u0002\u0002\u0111\u0112\u0003\u0002\u0002\u0002\u0112', + '\u0115\u0003\u0002\u0002\u0002\u0113\u0111\u0003\u0002\u0002\u0002\u0114', + '\u0102\u0003\u0002\u0002\u0002\u0114\u010b\u0003\u0002\u0002\u0002\u0115', + '%\u0003\u0002\u0002\u0002\u0116\u0119\u0005:\u001e\u0002\u0117\u0118', + '\u0007\u001b\u0002\u0002\u0118\u011a\u0005X-\u0002\u0119\u0117\u0003', + "\u0002\u0002\u0002\u0119\u011a\u0003\u0002\u0002\u0002\u011a'\u0003", + '\u0002\u0002\u0002\u011b\u011d\u0007\n\u0002\u0002\u011c\u011e\u0005', + 'V,\u0002\u011d\u011c\u0003\u0002\u0002\u0002\u011d\u011e\u0003\u0002', + '\u0002\u0002\u011e\u011f\u0003\u0002\u0002\u0002\u011f\u0120\u0005L', + "'\u0002\u0120\u0121\u0007\u001b\u0002\u0002\u0121\u0126\u0005X-\u0002", + '\u0122\u0123\u0007E\u0002\u0002\u0123\u0125\u0005X-\u0002\u0124\u0122', + '\u0003\u0002\u0002\u0002\u0125\u0128\u0003\u0002\u0002\u0002\u0126\u0124', + '\u0003\u0002\u0002\u0002\u0126\u0127\u0003\u0002\u0002\u0002\u0127\u012f', + '\u0003\u0002\u0002\u0002\u0128\u0126\u0003\u0002\u0002\u0002\u0129\u012b', + '\u0007\n\u0002\u0002\u012a\u012c\u0005V,\u0002\u012b\u012a\u0003\u0002', + '\u0002\u0002\u012b\u012c\u0003\u0002\u0002\u0002\u012c\u012d\u0003\u0002', + '\u0002\u0002\u012d\u012f\u0005P)\u0002\u012e\u011b\u0003\u0002\u0002', + '\u0002\u012e\u0129\u0003\u0002\u0002\u0002\u012f)\u0003\u0002\u0002', + '\u0002\u0130\u0131\u0007\u000b\u0002\u0002\u0131\u0132\u0005.\u0018', + '\u0002\u0132+\u0003\u0002\u0002\u0002\u0133\u0135\u0007g\u0002\u0002', + '\u0134\u0133\u0003\u0002\u0002\u0002\u0134\u0135\u0003\u0002\u0002\u0002', + '\u0135\u0136\u0003\u0002\u0002\u0002\u0136\u0137\u0005.\u0018\u0002', + '\u0137-\u0003\u0002\u0002\u0002\u0138\u0139\b\u0018\u0001\u0002\u0139', + '\u013a\u0007l\u0002\u0002\u013a\u0141\u0005.\u0018\u0007\u013b\u013c', + '\u0007h\u0002\u0002\u013c\u013d\u0005.\u0018\u0002\u013d\u013e\u0007', + 'i\u0002\u0002\u013e\u0141\u0003\u0002\u0002\u0002\u013f\u0141\u0005', + '0\u0019\u0002\u0140\u0138\u0003\u0002\u0002\u0002\u0140\u013b\u0003', + '\u0002\u0002\u0002\u0140\u013f\u0003\u0002\u0002\u0002\u0141\u014c\u0003', + '\u0002\u0002\u0002\u0142\u0144\f\u0005\u0002\u0002\u0143\u0145\u0007', + 'j\u0002\u0002\u0144\u0143\u0003\u0002\u0002\u0002\u0144\u0145\u0003', + '\u0002\u0002\u0002\u0145\u0146\u0003\u0002\u0002\u0002\u0146\u014b\u0005', + '.\u0018\u0006\u0147\u0148\f\u0004\u0002\u0002\u0148\u0149\u0007k\u0002', + '\u0002\u0149\u014b\u0005.\u0018\u0005\u014a\u0142\u0003\u0002\u0002', + '\u0002\u014a\u0147\u0003\u0002\u0002\u0002\u014b\u014e\u0003\u0002\u0002', + '\u0002\u014c\u014a\u0003\u0002\u0002\u0002\u014c\u014d\u0003\u0002\u0002', + '\u0002\u014d/\u0003\u0002\u0002\u0002\u014e\u014c\u0003\u0002\u0002', + '\u0002\u014f\u0155\u0007q\u0002\u0002\u0150\u0155\u0007m\u0002\u0002', + '\u0151\u0155\u0007n\u0002\u0002\u0152\u0155\u0007o\u0002\u0002\u0153', + '\u0155\u0007p\u0002\u0002\u0154\u014f\u0003\u0002\u0002\u0002\u0154', + '\u0150\u0003\u0002\u0002\u0002\u0154\u0151\u0003\u0002\u0002\u0002\u0154', + '\u0152\u0003\u0002\u0002\u0002\u0154\u0153\u0003\u0002\u0002\u0002\u0155', + '1\u0003\u0002\u0002\u0002\u0156\u0157\u0007\u000e\u0002\u0002\u0157', + '\u0158\u0005:\u001e\u0002\u01583\u0003\u0002\u0002\u0002\u0159\u015b', + '\t\u0004\u0002\u0002\u015a\u015c\u0007\u001a\u0002\u0002\u015b\u015a', + '\u0003\u0002\u0002\u0002\u015b\u015c\u0003\u0002\u0002\u0002\u015c\u015d', + '\u0003\u0002\u0002\u0002\u015d\u0162\u00056\u001c\u0002\u015e\u015f', + '\u0007E\u0002\u0002\u015f\u0161\u00056\u001c\u0002\u0160\u015e\u0003', + '\u0002\u0002\u0002\u0161\u0164\u0003\u0002\u0002\u0002\u0162\u0160\u0003', + '\u0002\u0002\u0002\u0162\u0163\u0003\u0002\u0002\u0002\u01635\u0003', + '\u0002\u0002\u0002\u0164\u0162\u0003\u0002\u0002\u0002\u0165\u0166\u0005', + 'V,\u0002\u0166\u0167\u0007\u0013\u0002\u0002\u0167\u016d\u0003\u0002', + '\u0002\u0002\u0168\u016a\u0005V,\u0002\u0169\u016b\u0007\u0012\u0002', + '\u0002\u016a\u0169\u0003\u0002\u0002\u0002\u016a\u016b\u0003\u0002\u0002', + '\u0002\u016b\u016d\u0003\u0002\u0002\u0002\u016c\u0165\u0003\u0002\u0002', + '\u0002\u016c\u0168\u0003\u0002\u0002\u0002\u016d7\u0003\u0002\u0002', + '\u0002\u016e\u016f\t\u0005\u0002\u0002\u016f\u0173\u0007;\u0002\u0002', + '\u0170\u0171\u0007\u0016\u0002\u0002\u0171\u0173\u0007;\u0002\u0002', + '\u0172\u016e\u0003\u0002\u0002\u0002\u0172\u0170\u0003\u0002\u0002\u0002', + '\u01739\u0003\u0002\u0002\u0002\u0174\u0175\u0005<\u001f\u0002\u0175', + ';\u0003\u0002\u0002\u0002\u0176\u0177\b\u001f\u0001\u0002\u0177\u0178', + '\u0007F\u0002\u0002\u0178\u0179\u0005<\u001f\u0002\u0179\u017a\u0007', + 'G\u0002\u0002\u017a\u0183\u0003\u0002\u0002\u0002\u017b\u017c\t\u0006', + '\u0002\u0002\u017c\u0183\u0005<\u001f\u000e\u017d\u017e\u0007Q\u0002', + '\u0002\u017e\u0183\u0005<\u001f\r\u017f\u0180\u0007P\u0002\u0002\u0180', + '\u0183\u0005<\u001f\f\u0181\u0183\u0005> \u0002\u0182\u0176\u0003\u0002', + '\u0002\u0002\u0182\u017b\u0003\u0002\u0002\u0002\u0182\u017d\u0003\u0002', + '\u0002\u0002\u0182\u017f\u0003\u0002\u0002\u0002\u0182\u0181\u0003\u0002', + '\u0002\u0002\u0183\u01ac\u0003\u0002\u0002\u0002\u0184\u0185\f\u000f', + '\u0002\u0002\u0185\u0186\u0007K\u0002\u0002\u0186\u01ab\u0005<\u001f', + '\u000f\u0187\u0188\f\u000b\u0002\u0002\u0188\u0189\t\u0007\u0002\u0002', + '\u0189\u01ab\u0005<\u001f\f\u018a\u018b\f\n\u0002\u0002\u018b\u018c', + '\t\b\u0002\u0002\u018c\u01ab\u0005<\u001f\u000b\u018d\u018e\f\t\u0002', + '\u0002\u018e\u018f\t\t\u0002\u0002\u018f\u01ab\u0005<\u001f\n\u0190', + '\u0195\f\b\u0002\u0002\u0191\u0192\u0007W\u0002\u0002\u0192\u0196\u0007', + 'W\u0002\u0002\u0193\u0196\u0007W\u0002\u0002\u0194\u0196\u0007X\u0002', + '\u0002\u0195\u0191\u0003\u0002\u0002\u0002\u0195\u0193\u0003\u0002\u0002', + '\u0002\u0195\u0194\u0003\u0002\u0002\u0002\u0196\u0197\u0003\u0002\u0002', + '\u0002\u0197\u01ab\u0005<\u001f\t\u0198\u0199\f\u0005\u0002\u0002\u0199', + '\u019a\u0007\u001c\u0002\u0002\u019a\u01ab\u0005<\u001f\u0006\u019b', + '\u019c\f\u0004\u0002\u0002\u019c\u019d\u0007\u001d\u0002\u0002\u019d', + '\u01ab\u0005<\u001f\u0005\u019e\u01a0\f\u0007\u0002\u0002\u019f\u01a1', + '\u0007\u001e\u0002\u0002\u01a0\u019f\u0003\u0002\u0002\u0002\u01a0\u01a1', + '\u0003\u0002\u0002\u0002\u01a1\u01a2\u0003\u0002\u0002\u0002\u01a2\u01a3', + '\t\n\u0002\u0002\u01a3\u01ab\u0005@!\u0002\u01a4\u01a6\f\u0006\u0002', + '\u0002\u01a5\u01a7\u0007\u001e\u0002\u0002\u01a6\u01a5\u0003\u0002\u0002', + '\u0002\u01a6\u01a7\u0003\u0002\u0002\u0002\u01a7\u01a8\u0003\u0002\u0002', + '\u0002\u01a8\u01a9\u0007\u0018\u0002\u0002\u01a9\u01ab\u0005F$\u0002', + '\u01aa\u0184\u0003\u0002\u0002\u0002\u01aa\u0187\u0003\u0002\u0002\u0002', + '\u01aa\u018a\u0003\u0002\u0002\u0002\u01aa\u018d\u0003\u0002\u0002\u0002', + '\u01aa\u0190\u0003\u0002\u0002\u0002\u01aa\u0198\u0003\u0002\u0002\u0002', + '\u01aa\u019b\u0003\u0002\u0002\u0002\u01aa\u019e\u0003\u0002\u0002\u0002', + '\u01aa\u01a4\u0003\u0002\u0002\u0002\u01ab\u01ae\u0003\u0002\u0002\u0002', + '\u01ac\u01aa\u0003\u0002\u0002\u0002\u01ac\u01ad\u0003\u0002\u0002\u0002', + '\u01ad=\u0003\u0002\u0002\u0002\u01ae\u01ac\u0003\u0002\u0002\u0002', + '\u01af\u01b4\u0005V,\u0002\u01b0\u01b4\u0005J&\u0002\u01b1\u01b4\u0005', + 'N(\u0002\u01b2\u01b4\u0005B"\u0002\u01b3\u01af\u0003\u0002\u0002\u0002', + '\u01b3\u01b0\u0003\u0002\u0002\u0002\u01b3\u01b1\u0003\u0002\u0002\u0002', + '\u01b3\u01b2\u0003\u0002\u0002\u0002\u01b4?\u0003\u0002\u0002\u0002', + '\u01b5\u01b8\u0005P)\u0002\u01b6\u01b8\u0005R*\u0002\u01b7\u01b5\u0003', + '\u0002\u0002\u0002\u01b7\u01b6\u0003\u0002\u0002\u0002\u01b8A\u0003', + '\u0002\u0002\u0002\u01b9\u01ba\u0005l7\u0002\u01ba\u01bb\u0007F\u0002', + '\u0002\u01bb\u01c0\u0005D#\u0002\u01bc\u01bd\u0007E\u0002\u0002\u01bd', + '\u01bf\u0005D#\u0002\u01be\u01bc\u0003\u0002\u0002\u0002\u01bf\u01c2', + '\u0003\u0002\u0002\u0002\u01c0\u01be\u0003\u0002\u0002\u0002\u01c0\u01c1', + '\u0003\u0002\u0002\u0002\u01c1\u01c3\u0003\u0002\u0002\u0002\u01c2\u01c0', + '\u0003\u0002\u0002\u0002\u01c3\u01c4\u0007G\u0002\u0002\u01c4\u01cd', + '\u0003\u0002\u0002\u0002\u01c5\u01c6\u0005l7\u0002\u01c6\u01c8\u0007', + 'F\u0002\u0002\u01c7\u01c9\u0007M\u0002\u0002\u01c8\u01c7\u0003\u0002', + '\u0002\u0002\u01c8\u01c9\u0003\u0002\u0002\u0002\u01c9\u01ca\u0003\u0002', + '\u0002\u0002\u01ca\u01cb\u0007G\u0002\u0002\u01cb\u01cd\u0003\u0002', + '\u0002\u0002\u01cc\u01b9\u0003\u0002\u0002\u0002\u01cc\u01c5\u0003\u0002', + '\u0002\u0002\u01cdC\u0003\u0002\u0002\u0002\u01ce\u01d1\u0005\u0016', + '\f\u0002\u01cf\u01d1\u0005<\u001f\u0002\u01d0\u01ce\u0003\u0002\u0002', + '\u0002\u01d0\u01cf\u0003\u0002\u0002\u0002\u01d1E\u0003\u0002\u0002', + '\u0002\u01d2\u01d3\u0007Y\u0002\u0002\u01d3\u01d8\u0005H%\u0002\u01d4', + '\u01d5\u0007E\u0002\u0002\u01d5\u01d7\u0005H%\u0002\u01d6\u01d4\u0003', + '\u0002\u0002\u0002\u01d7\u01da\u0003\u0002\u0002\u0002\u01d8\u01d6\u0003', + '\u0002\u0002\u0002\u01d8\u01d9\u0003\u0002\u0002\u0002\u01d9\u01db\u0003', + '\u0002\u0002\u0002\u01da\u01d8\u0003\u0002\u0002\u0002\u01db\u01dc\u0007', + 'Z\u0002\u0002\u01dc\u01e0\u0003\u0002\u0002\u0002\u01dd\u01de\u0007', + 'Y\u0002\u0002\u01de\u01e0\u0007Z\u0002\u0002\u01df\u01d2\u0003\u0002', + '\u0002\u0002\u01df\u01dd\u0003\u0002\u0002\u0002\u01e0G\u0003\u0002', + "\u0002\u0002\u01e1\u01e4\u0005L'\u0002\u01e2\u01e4\u0005J&\u0002\u01e3", + '\u01e1\u0003\u0002\u0002\u0002\u01e3\u01e2\u0003\u0002\u0002\u0002\u01e4', + 'I\u0003\u0002\u0002\u0002\u01e5\u01e8\u0007<\u0002\u0002\u01e6\u01e8', + '\u0007;\u0002\u0002\u01e7\u01e5\u0003\u0002\u0002\u0002\u01e7\u01e6', + '\u0003\u0002\u0002\u0002\u01e8K\u0003\u0002\u0002\u0002\u01e9\u01ee', + '\t\u000b\u0002\u0002\u01ea\u01ee\t\f\u0002\u0002\u01eb\u01ee\t\r\u0002', + '\u0002\u01ec\u01ee\t\u000e\u0002\u0002\u01ed\u01e9\u0003\u0002\u0002', + '\u0002\u01ed\u01ea\u0003\u0002\u0002\u0002\u01ed\u01eb\u0003\u0002\u0002', + '\u0002\u01ed\u01ec\u0003\u0002\u0002\u0002\u01eeM\u0003\u0002\u0002', + '\u0002\u01ef\u01f5\t\u000b\u0002\u0002\u01f0\u01f5\t\f\u0002\u0002\u01f1', + '\u01f5\t\r\u0002\u0002\u01f2\u01f5\t\u000e\u0002\u0002\u01f3\u01f5\u0007', + ':\u0002\u0002\u01f4\u01ef\u0003\u0002\u0002\u0002\u01f4\u01f0\u0003', + '\u0002\u0002\u0002\u01f4\u01f1\u0003\u0002\u0002\u0002\u01f4\u01f2\u0003', + '\u0002\u0002\u0002\u01f4\u01f3\u0003\u0002\u0002\u0002\u01f5O\u0003', + '\u0002\u0002\u0002\u01f6\u01f7\u0007]\u0002\u0002\u01f7Q\u0003\u0002', + '\u0002\u0002\u01f8\u01fd\u0007^\u0002\u0002\u01f9\u01fd\u0007_\u0002', + '\u0002\u01fa\u01fd\u0007`\u0002\u0002\u01fb\u01fd\u0007a\u0002\u0002', + '\u01fc\u01f8\u0003\u0002\u0002\u0002\u01fc\u01f9\u0003\u0002\u0002\u0002', + '\u01fc\u01fa\u0003\u0002\u0002\u0002\u01fc\u01fb\u0003\u0002\u0002\u0002', + '\u01fdS\u0003\u0002\u0002\u0002\u01fe\u0206\u0007:\u0002\u0002\u01ff', + '\u0206\u0005p9\u0002\u0200\u0206\u0005r:\u0002\u0201\u0206\t\u000b\u0002', + '\u0002\u0202\u0206\t\f\u0002\u0002\u0203\u0206\t\r\u0002\u0002\u0204', + '\u0206\t\u000e\u0002\u0002\u0205\u01fe\u0003\u0002\u0002\u0002\u0205', + '\u01ff\u0003\u0002\u0002\u0002\u0205\u0200\u0003\u0002\u0002\u0002\u0205', + '\u0201\u0003\u0002\u0002\u0002\u0205\u0202\u0003\u0002\u0002\u0002\u0205', + '\u0203\u0003\u0002\u0002\u0002\u0205\u0204\u0003\u0002\u0002\u0002\u0206', + 'U\u0003\u0002\u0002\u0002\u0207\u020a\u0005Z.\u0002\u0208\u020a\u0005', + 'd3\u0002\u0209\u0207\u0003\u0002\u0002\u0002\u0209\u0208\u0003\u0002', + '\u0002\u0002\u020aW\u0003\u0002\u0002\u0002\u020b\u020e\u0005Z.\u0002', + '\u020c\u020e\u0005d3\u0002\u020d\u020b\u0003\u0002\u0002\u0002\u020d', + '\u020c\u0003\u0002\u0002\u0002\u020eY\u0003\u0002\u0002\u0002\u020f', + '\u0212\u0005\\/\u0002\u0210\u0212\u0005b2\u0002\u0211\u020f\u0003\u0002', + '\u0002\u0002\u0211\u0210\u0003\u0002\u0002\u0002\u0212[\u0003\u0002', + '\u0002\u0002\u0213\u0216\u0005`1\u0002\u0214\u0216\u0005^0\u0002\u0215', + '\u0213\u0003\u0002\u0002\u0002\u0215\u0214\u0003\u0002\u0002\u0002\u0216', + ']\u0003\u0002\u0002\u0002\u0217\u0219\t\u000f\u0002\u0002\u0218\u021a', + '\t\u000f\u0002\u0002\u0219\u0218\u0003\u0002\u0002\u0002\u021a\u021b', + '\u0003\u0002\u0002\u0002\u021b\u0219\u0003\u0002\u0002\u0002\u021b\u021c', + '\u0003\u0002\u0002\u0002\u021c\u021d\u0003\u0002\u0002\u0002\u021d\u021e', + '\u0005n8\u0002\u021e_\u0003\u0002\u0002\u0002\u021f\u0220\u0005n8\u0002', + '\u0220a\u0003\u0002\u0002\u0002\u0221\u0222\t\u0010\u0002\u0002\u0222', + 'c\u0003\u0002\u0002\u0002\u0223\u0226\u0005f4\u0002\u0224\u0226\u0005', + 'h5\u0002\u0225\u0223\u0003\u0002\u0002\u0002\u0225\u0224\u0003\u0002', + '\u0002\u0002\u0226e\u0003\u0002\u0002\u0002\u0227\u0228\t\u000f\u0002', + '\u0002\u0228\u0229\u0005n8\u0002\u0229g\u0003\u0002\u0002\u0002\u022a', + '\u022b\t\u000f\u0002\u0002\u022b\u022c\t\u0010\u0002\u0002\u022ci\u0003', + '\u0002\u0002\u0002\u022d\u022e\u0005n8\u0002\u022ek\u0003\u0002\u0002', + '\u0002\u022f\u0230\u0005n8\u0002\u0230m\u0003\u0002\u0002\u0002\u0231', + '\u0235\t\u0011\u0002\u0002\u0232\u0235\u0005p9\u0002\u0233\u0235\u0005', + 'r:\u0002\u0234\u0231\u0003\u0002\u0002\u0002\u0234\u0232\u0003\u0002', + '\u0002\u0002\u0234\u0233\u0003\u0002\u0002\u0002\u0235o\u0003\u0002', + '\u0002\u0002\u0236\u0237\t\u0012\u0002\u0002\u0237q\u0003\u0002\u0002', + '\u0002\u0238\u0242\t\u0013\u0002\u0002\u0239\u0242\t\u0014\u0002\u0002', + '\u023a\u0242\t\u0015\u0002\u0002\u023b\u0242\t\u0016\u0002\u0002\u023c', + '\u0242\t\u0017\u0002\u0002\u023d\u0242\t\u0018\u0002\u0002\u023e\u0242', + '\t\u0019\u0002\u0002\u023f\u0242\t\u001a\u0002\u0002\u0240\u0242\t\u001b', + '\u0002\u0002\u0241\u0238\u0003\u0002\u0002\u0002\u0241\u0239\u0003\u0002', + '\u0002\u0002\u0241\u023a\u0003\u0002\u0002\u0002\u0241\u023b\u0003\u0002', + '\u0002\u0002\u0241\u023c\u0003\u0002\u0002\u0002\u0241\u023d\u0003\u0002', + '\u0002\u0002\u0241\u023e\u0003\u0002\u0002\u0002\u0241\u023f\u0003\u0002', + '\u0002\u0002\u0241\u0240\u0003\u0002\u0002\u0002\u0242s\u0003\u0002', + '\u0002\u0002Hz~\u0085\u008d\u0092\u0098\u00a0\u00a9\u00b0\u00b4\u00c4', + '\u00ca\u00ce\u00d1\u00d4\u00d8\u00df\u00e8\u00ec\u00f4\u00f7\u00fc\u0100', + '\u0108\u0111\u0114\u0119\u011d\u0126\u012b\u012e\u0134\u0140\u0144\u014a', + '\u014c\u0154\u015b\u0162\u016a\u016c\u0172\u0182\u0195\u01a0\u01a6\u01aa', + '\u01ac\u01b3\u01b7\u01c0\u01c8\u01cc\u01d0\u01d8\u01df\u01e3\u01e7\u01ed', + '\u01f4\u01fc\u0205\u0209\u020d\u0211\u0215\u021b\u0225\u0234\u0241', +].join(''); + +var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN); + +var decisionsToDFA = atn.decisionToState.map(function(ds, index) { + return new antlr4.dfa.DFA(ds, index); +}); + +var sharedContextCache = new antlr4.PredictionContextCache(); + +var literalNames = [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + "'=~'", + "'~='", + null, + null, + null, + null, + null, + "'|>'", + "':'", + "'^'", + "'!'", + "'*'", + "'/'", + "'%'", + "'+'", + "'-'", + "'~'", + "'<'", + "'>'", + "'<='", + "'>='", + "'='", + "'!='", + "'['", + "']'", + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + "'|'", +]; + +var symbolicNames = [ + null, + 'WS', + 'COMMENT', + 'K_SOURCE', + 'K_START', + 'K_END', + 'K_NOW', + 'K_LIVE', + 'K_PARSE', + 'K_SEARCH', + 'K_FIELDS', + 'K_DISPLAY', + 'K_FILTER', + 'K_STATS', + 'K_SORT', + 'K_ORDER', + 'K_ASC', + 'K_DESC', + 'K_HEAD', + 'K_LIMIT', + 'K_TAIL', + 'K_REGEX', + 'K_IN', + 'K_GROUP', + 'K_BY', + 'K_AS', + 'K_AND', + 'K_OR', + 'K_NOT', + 'K_LIKE', + 'K_MATCHES', + 'K_TU_MS', + 'K_TU_MSEC', + 'K_TU_MSECOND', + 'K_TU_S', + 'K_TU_SEC', + 'K_TU_SECOND', + 'K_TU_M', + 'K_TU_MIN', + 'K_TU_MINUTE', + 'K_TU_H', + 'K_TU_HR', + 'K_TU_HOUR', + 'K_TU_D', + 'K_TU_DAY', + 'K_TU_W', + 'K_TU_WEEK', + 'K_TU_MO', + 'K_TU_MON', + 'K_TU_MONTH', + 'K_TU_Q', + 'K_TU_QTR', + 'K_TU_QUARTER', + 'K_TU_Y', + 'K_TU_YR', + 'K_TU_YEAR', + 'RAW_ID', + 'LIT_INTEGER', + 'LIT_NUMBER', + 'SDQUOTED_STRING', + 'SSQUOTED_STRING', + 'CDQUOTED_STRING', + 'CSQUOTED_STRING', + 'QUOTED_IDENT', + 'SYM_EQTILDE', + 'SYM_TILDEEQ', + 'SYM_AT', + 'SYM_COMMA', + 'SYM_LPAREN', + 'SYM_RPAREN', + 'SYM_PIPE', + 'SYM_WRITE', + 'SYM_COLON', + 'SYM_CARET', + 'SYM_NOT', + 'SYM_MUL', + 'SYM_DIV', + 'SYM_MOD', + 'SYM_PLUS', + 'SYM_MINUS', + 'SYM_TILDE', + 'SYM_LT', + 'SYM_GT', + 'SYM_LTEQ', + 'SYM_GTEQ', + 'SYM_EQ', + 'SYM_NEQ', + 'SYM_LBRACKET', + 'SYM_RBRACKET', + 'REGEX_WS', + 'REGEX_COMMENT', + 'REGEX', + 'RE_SDQUOTED_STRING', + 'RE_SSQUOTED_STRING', + 'RE_CDQUOTED_STRING', + 'RE_CSQUOTED_STRING', + 'RE_RAW_ID', + 'RE_SYM_AT', + 'RE_QUOTED_IDENT', + 'SE_WS', + 'SE_COMMENT', + 'SE_K_SEARCH', + 'SE_SYM_LPAREN', + 'SE_SYM_RPAREN', + 'SE_K_AND', + 'SE_K_OR', + 'SE_K_NOT', + 'SE_SDQUOTED_STRING', + 'SE_SSQUOTED_STRING', + 'SE_CDQUOTED_STRING', + 'SE_CSQUOTED_STRING', + 'SE_UNQUOTED_STRING', + 'SE_PIPE', +]; + +var ruleNames = [ + 'query', + 'logQuery', + 'logAesthetic', + 'logSourceStage', + 'logStatsStage', + 'logOp', + 'logAestheticOp', + 'logSource', + 'timeExpr', + 'nowTimeExpr', + 'relativeTimeExpr', + 'iso8601TimeExpr', + 'epochTimeExpr', + 'bareSpaceDelimited', + 'logStats', + 'statsExpr', + 'statsGroupField', + 'logOpFields', + 'fieldSpec', + 'logOpParse', + 'logOpSearch', + 'implicitLogOpSearch', + 'searchExpr', + 'searchTerm', + 'logOpFilter', + 'logOpSort', + 'sortExpr', + 'logOpLimit', + 'expressionRoot', + 'expression', + 'term', + 'likeTerm', + 'func', + 'functionArg', + 'array', + 'arrayElem', + 'number', + 'string', + 'stringOrBareString', + 'regex', + 'regexString', + 'logId', + 'fieldId', + 'aliasId', + 'userId', + 'unquotedUserId', + 'unquotedUserAtId', + 'unquotedUserBareId', + 'quotedUserId', + 'systemId', + 'unquotedSystemId', + 'quotedSystemId', + 'resultId', + 'functionId', + 'rawId', + 'keywords', + 'timeUnitKeywords', +]; + +function ScrollQLParser(input) { + antlr4.Parser.call(this, input); + this._interp = new antlr4.atn.ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache); + this.ruleNames = ruleNames; + this.literalNames = literalNames; + this.symbolicNames = symbolicNames; + return this; +} + +ScrollQLParser.prototype = Object.create(antlr4.Parser.prototype); +ScrollQLParser.prototype.constructor = ScrollQLParser; + +Object.defineProperty(ScrollQLParser.prototype, 'atn', { + get: function() { + return atn; + }, +}); + +ScrollQLParser.EOF = antlr4.Token.EOF; +ScrollQLParser.WS = 1; +ScrollQLParser.COMMENT = 2; +ScrollQLParser.K_SOURCE = 3; +ScrollQLParser.K_START = 4; +ScrollQLParser.K_END = 5; +ScrollQLParser.K_NOW = 6; +ScrollQLParser.K_LIVE = 7; +ScrollQLParser.K_PARSE = 8; +ScrollQLParser.K_SEARCH = 9; +ScrollQLParser.K_FIELDS = 10; +ScrollQLParser.K_DISPLAY = 11; +ScrollQLParser.K_FILTER = 12; +ScrollQLParser.K_STATS = 13; +ScrollQLParser.K_SORT = 14; +ScrollQLParser.K_ORDER = 15; +ScrollQLParser.K_ASC = 16; +ScrollQLParser.K_DESC = 17; +ScrollQLParser.K_HEAD = 18; +ScrollQLParser.K_LIMIT = 19; +ScrollQLParser.K_TAIL = 20; +ScrollQLParser.K_REGEX = 21; +ScrollQLParser.K_IN = 22; +ScrollQLParser.K_GROUP = 23; +ScrollQLParser.K_BY = 24; +ScrollQLParser.K_AS = 25; +ScrollQLParser.K_AND = 26; +ScrollQLParser.K_OR = 27; +ScrollQLParser.K_NOT = 28; +ScrollQLParser.K_LIKE = 29; +ScrollQLParser.K_MATCHES = 30; +ScrollQLParser.K_TU_MS = 31; +ScrollQLParser.K_TU_MSEC = 32; +ScrollQLParser.K_TU_MSECOND = 33; +ScrollQLParser.K_TU_S = 34; +ScrollQLParser.K_TU_SEC = 35; +ScrollQLParser.K_TU_SECOND = 36; +ScrollQLParser.K_TU_M = 37; +ScrollQLParser.K_TU_MIN = 38; +ScrollQLParser.K_TU_MINUTE = 39; +ScrollQLParser.K_TU_H = 40; +ScrollQLParser.K_TU_HR = 41; +ScrollQLParser.K_TU_HOUR = 42; +ScrollQLParser.K_TU_D = 43; +ScrollQLParser.K_TU_DAY = 44; +ScrollQLParser.K_TU_W = 45; +ScrollQLParser.K_TU_WEEK = 46; +ScrollQLParser.K_TU_MO = 47; +ScrollQLParser.K_TU_MON = 48; +ScrollQLParser.K_TU_MONTH = 49; +ScrollQLParser.K_TU_Q = 50; +ScrollQLParser.K_TU_QTR = 51; +ScrollQLParser.K_TU_QUARTER = 52; +ScrollQLParser.K_TU_Y = 53; +ScrollQLParser.K_TU_YR = 54; +ScrollQLParser.K_TU_YEAR = 55; +ScrollQLParser.RAW_ID = 56; +ScrollQLParser.LIT_INTEGER = 57; +ScrollQLParser.LIT_NUMBER = 58; +ScrollQLParser.SDQUOTED_STRING = 59; +ScrollQLParser.SSQUOTED_STRING = 60; +ScrollQLParser.CDQUOTED_STRING = 61; +ScrollQLParser.CSQUOTED_STRING = 62; +ScrollQLParser.QUOTED_IDENT = 63; +ScrollQLParser.SYM_EQTILDE = 64; +ScrollQLParser.SYM_TILDEEQ = 65; +ScrollQLParser.SYM_AT = 66; +ScrollQLParser.SYM_COMMA = 67; +ScrollQLParser.SYM_LPAREN = 68; +ScrollQLParser.SYM_RPAREN = 69; +ScrollQLParser.SYM_PIPE = 70; +ScrollQLParser.SYM_WRITE = 71; +ScrollQLParser.SYM_COLON = 72; +ScrollQLParser.SYM_CARET = 73; +ScrollQLParser.SYM_NOT = 74; +ScrollQLParser.SYM_MUL = 75; +ScrollQLParser.SYM_DIV = 76; +ScrollQLParser.SYM_MOD = 77; +ScrollQLParser.SYM_PLUS = 78; +ScrollQLParser.SYM_MINUS = 79; +ScrollQLParser.SYM_TILDE = 80; +ScrollQLParser.SYM_LT = 81; +ScrollQLParser.SYM_GT = 82; +ScrollQLParser.SYM_LTEQ = 83; +ScrollQLParser.SYM_GTEQ = 84; +ScrollQLParser.SYM_EQ = 85; +ScrollQLParser.SYM_NEQ = 86; +ScrollQLParser.SYM_LBRACKET = 87; +ScrollQLParser.SYM_RBRACKET = 88; +ScrollQLParser.REGEX_WS = 89; +ScrollQLParser.REGEX_COMMENT = 90; +ScrollQLParser.REGEX = 91; +ScrollQLParser.RE_SDQUOTED_STRING = 92; +ScrollQLParser.RE_SSQUOTED_STRING = 93; +ScrollQLParser.RE_CDQUOTED_STRING = 94; +ScrollQLParser.RE_CSQUOTED_STRING = 95; +ScrollQLParser.RE_RAW_ID = 96; +ScrollQLParser.RE_SYM_AT = 97; +ScrollQLParser.RE_QUOTED_IDENT = 98; +ScrollQLParser.SE_WS = 99; +ScrollQLParser.SE_COMMENT = 100; +ScrollQLParser.SE_K_SEARCH = 101; +ScrollQLParser.SE_SYM_LPAREN = 102; +ScrollQLParser.SE_SYM_RPAREN = 103; +ScrollQLParser.SE_K_AND = 104; +ScrollQLParser.SE_K_OR = 105; +ScrollQLParser.SE_K_NOT = 106; +ScrollQLParser.SE_SDQUOTED_STRING = 107; +ScrollQLParser.SE_SSQUOTED_STRING = 108; +ScrollQLParser.SE_CDQUOTED_STRING = 109; +ScrollQLParser.SE_CSQUOTED_STRING = 110; +ScrollQLParser.SE_UNQUOTED_STRING = 111; +ScrollQLParser.SE_PIPE = 112; + +ScrollQLParser.RULE_query = 0; +ScrollQLParser.RULE_logQuery = 1; +ScrollQLParser.RULE_logAesthetic = 2; +ScrollQLParser.RULE_logSourceStage = 3; +ScrollQLParser.RULE_logStatsStage = 4; +ScrollQLParser.RULE_logOp = 5; +ScrollQLParser.RULE_logAestheticOp = 6; +ScrollQLParser.RULE_logSource = 7; +ScrollQLParser.RULE_timeExpr = 8; +ScrollQLParser.RULE_nowTimeExpr = 9; +ScrollQLParser.RULE_relativeTimeExpr = 10; +ScrollQLParser.RULE_iso8601TimeExpr = 11; +ScrollQLParser.RULE_epochTimeExpr = 12; +ScrollQLParser.RULE_bareSpaceDelimited = 13; +ScrollQLParser.RULE_logStats = 14; +ScrollQLParser.RULE_statsExpr = 15; +ScrollQLParser.RULE_statsGroupField = 16; +ScrollQLParser.RULE_logOpFields = 17; +ScrollQLParser.RULE_fieldSpec = 18; +ScrollQLParser.RULE_logOpParse = 19; +ScrollQLParser.RULE_logOpSearch = 20; +ScrollQLParser.RULE_implicitLogOpSearch = 21; +ScrollQLParser.RULE_searchExpr = 22; +ScrollQLParser.RULE_searchTerm = 23; +ScrollQLParser.RULE_logOpFilter = 24; +ScrollQLParser.RULE_logOpSort = 25; +ScrollQLParser.RULE_sortExpr = 26; +ScrollQLParser.RULE_logOpLimit = 27; +ScrollQLParser.RULE_expressionRoot = 28; +ScrollQLParser.RULE_expression = 29; +ScrollQLParser.RULE_term = 30; +ScrollQLParser.RULE_likeTerm = 31; +ScrollQLParser.RULE_func = 32; +ScrollQLParser.RULE_functionArg = 33; +ScrollQLParser.RULE_array = 34; +ScrollQLParser.RULE_arrayElem = 35; +ScrollQLParser.RULE_number = 36; +ScrollQLParser.RULE_string = 37; +ScrollQLParser.RULE_stringOrBareString = 38; +ScrollQLParser.RULE_regex = 39; +ScrollQLParser.RULE_regexString = 40; +ScrollQLParser.RULE_logId = 41; +ScrollQLParser.RULE_fieldId = 42; +ScrollQLParser.RULE_aliasId = 43; +ScrollQLParser.RULE_userId = 44; +ScrollQLParser.RULE_unquotedUserId = 45; +ScrollQLParser.RULE_unquotedUserAtId = 46; +ScrollQLParser.RULE_unquotedUserBareId = 47; +ScrollQLParser.RULE_quotedUserId = 48; +ScrollQLParser.RULE_systemId = 49; +ScrollQLParser.RULE_unquotedSystemId = 50; +ScrollQLParser.RULE_quotedSystemId = 51; +ScrollQLParser.RULE_resultId = 52; +ScrollQLParser.RULE_functionId = 53; +ScrollQLParser.RULE_rawId = 54; +ScrollQLParser.RULE_keywords = 55; +ScrollQLParser.RULE_timeUnitKeywords = 56; + +function QueryContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_query; + return this; +} + +QueryContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +QueryContext.prototype.constructor = QueryContext; + +QueryContext.prototype.logQuery = function() { + return this.getTypedRuleContext(LogQueryContext, 0); +}; + +QueryContext.prototype.EOF = function() { + return this.getToken(ScrollQLParser.EOF, 0); +}; + +QueryContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterQuery(this); + } +}; + +QueryContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitQuery(this); + } +}; + +ScrollQLParser.QueryContext = QueryContext; + +ScrollQLParser.prototype.query = function() { + var localctx = new QueryContext(this, this._ctx, this.state); + this.enterRule(localctx, 0, ScrollQLParser.RULE_query); + try { + this.enterOuterAlt(localctx, 1); + this.state = 114; + this.logQuery(); + this.state = 115; + this.match(ScrollQLParser.EOF); + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogQueryContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logQuery; + this.result = null; // ResultIdContext + return this; +} + +LogQueryContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogQueryContext.prototype.constructor = LogQueryContext; + +LogQueryContext.prototype.logSourceStage = function() { + return this.getTypedRuleContext(LogSourceStageContext, 0); +}; + +LogQueryContext.prototype.SYM_PIPE = function() { + return this.getToken(ScrollQLParser.SYM_PIPE, 0); +}; + +LogQueryContext.prototype.logStatsStage = function() { + return this.getTypedRuleContext(LogStatsStageContext, 0); +}; + +LogQueryContext.prototype.SYM_WRITE = function() { + return this.getToken(ScrollQLParser.SYM_WRITE, 0); +}; + +LogQueryContext.prototype.resultId = function() { + return this.getTypedRuleContext(ResultIdContext, 0); +}; + +LogQueryContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogQuery(this); + } +}; + +LogQueryContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogQuery(this); + } +}; + +ScrollQLParser.LogQueryContext = LogQueryContext; + +ScrollQLParser.prototype.logQuery = function() { + var localctx = new LogQueryContext(this, this._ctx, this.state); + this.enterRule(localctx, 2, ScrollQLParser.RULE_logQuery); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 117; + this.logSourceStage(); + this.state = 120; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.SYM_PIPE) { + this.state = 118; + this.match(ScrollQLParser.SYM_PIPE); + this.state = 119; + this.logStatsStage(); + } + + this.state = 124; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.SYM_WRITE) { + this.state = 122; + this.match(ScrollQLParser.SYM_WRITE); + this.state = 123; + localctx.result = this.resultId(); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogAestheticContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logAesthetic; + this.result = null; // ResultIdContext + this._logAestheticOp = null; // LogAestheticOpContext + this.aes = []; // of LogAestheticOpContexts + return this; +} + +LogAestheticContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogAestheticContext.prototype.constructor = LogAestheticContext; + +LogAestheticContext.prototype.resultId = function() { + return this.getTypedRuleContext(ResultIdContext, 0); +}; + +LogAestheticContext.prototype.SYM_PIPE = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_PIPE); + } else { + return this.getToken(ScrollQLParser.SYM_PIPE, i); + } +}; + +LogAestheticContext.prototype.logAestheticOp = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(LogAestheticOpContext); + } else { + return this.getTypedRuleContext(LogAestheticOpContext, i); + } +}; + +LogAestheticContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogAesthetic(this); + } +}; + +LogAestheticContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogAesthetic(this); + } +}; + +ScrollQLParser.LogAestheticContext = LogAestheticContext; + +ScrollQLParser.prototype.logAesthetic = function() { + var localctx = new LogAestheticContext(this, this._ctx, this.state); + this.enterRule(localctx, 4, ScrollQLParser.RULE_logAesthetic); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 126; + localctx.result = this.resultId(); + this.state = 131; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === ScrollQLParser.SYM_PIPE) { + this.state = 127; + this.match(ScrollQLParser.SYM_PIPE); + this.state = 128; + localctx._logAestheticOp = this.logAestheticOp(); + localctx.aes.push(localctx._logAestheticOp); + this.state = 133; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogSourceStageContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logSourceStage; + this._logSource = null; // LogSourceContext + this.source = []; // of LogSourceContexts + return this; +} + +LogSourceStageContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogSourceStageContext.prototype.constructor = LogSourceStageContext; + +LogSourceStageContext.prototype.logSource = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(LogSourceContext); + } else { + return this.getTypedRuleContext(LogSourceContext, i); + } +}; + +LogSourceStageContext.prototype.SYM_PIPE = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_PIPE); + } else { + return this.getToken(ScrollQLParser.SYM_PIPE, i); + } +}; + +LogSourceStageContext.prototype.implicitLogOpSearch = function() { + return this.getTypedRuleContext(ImplicitLogOpSearchContext, 0); +}; + +LogSourceStageContext.prototype.logOp = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(LogOpContext); + } else { + return this.getTypedRuleContext(LogOpContext, i); + } +}; + +LogSourceStageContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogSourceStage(this); + } +}; + +LogSourceStageContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogSourceStage(this); + } +}; + +ScrollQLParser.LogSourceStageContext = LogSourceStageContext; + +ScrollQLParser.prototype.logSourceStage = function() { + var localctx = new LogSourceStageContext(this, this._ctx, this.state); + this.enterRule(localctx, 6, ScrollQLParser.RULE_logSourceStage); + try { + this.enterOuterAlt(localctx, 1); + this.state = 134; + localctx._logSource = this.logSource(); + localctx.source.push(localctx._logSource); + this.state = 139; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input, 3, this._ctx); + while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + this.state = 135; + this.match(ScrollQLParser.SYM_PIPE); + this.state = 136; + localctx._logSource = this.logSource(); + localctx.source.push(localctx._logSource); + } + this.state = 141; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 3, this._ctx); + } + + this.state = 144; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 4, this._ctx); + if (la_ === 1) { + this.state = 142; + this.match(ScrollQLParser.SYM_PIPE); + this.state = 143; + this.implicitLogOpSearch(); + } + this.state = 150; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input, 5, this._ctx); + while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + this.state = 146; + this.match(ScrollQLParser.SYM_PIPE); + this.state = 147; + this.logOp(); + } + this.state = 152; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 5, this._ctx); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogStatsStageContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logStatsStage; + this.stats = null; // LogStatsContext + return this; +} + +LogStatsStageContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogStatsStageContext.prototype.constructor = LogStatsStageContext; + +LogStatsStageContext.prototype.logStats = function() { + return this.getTypedRuleContext(LogStatsContext, 0); +}; + +LogStatsStageContext.prototype.SYM_PIPE = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_PIPE); + } else { + return this.getToken(ScrollQLParser.SYM_PIPE, i); + } +}; + +LogStatsStageContext.prototype.logOp = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(LogOpContext); + } else { + return this.getTypedRuleContext(LogOpContext, i); + } +}; + +LogStatsStageContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogStatsStage(this); + } +}; + +LogStatsStageContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogStatsStage(this); + } +}; + +ScrollQLParser.LogStatsStageContext = LogStatsStageContext; + +ScrollQLParser.prototype.logStatsStage = function() { + var localctx = new LogStatsStageContext(this, this._ctx, this.state); + this.enterRule(localctx, 8, ScrollQLParser.RULE_logStatsStage); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 153; + localctx.stats = this.logStats(); + this.state = 158; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === ScrollQLParser.SYM_PIPE) { + this.state = 154; + this.match(ScrollQLParser.SYM_PIPE); + this.state = 155; + this.logOp(); + this.state = 160; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogOpContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logOp; + return this; +} + +LogOpContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogOpContext.prototype.constructor = LogOpContext; + +LogOpContext.prototype.logOpFields = function() { + return this.getTypedRuleContext(LogOpFieldsContext, 0); +}; + +LogOpContext.prototype.logOpParse = function() { + return this.getTypedRuleContext(LogOpParseContext, 0); +}; + +LogOpContext.prototype.logOpFilter = function() { + return this.getTypedRuleContext(LogOpFilterContext, 0); +}; + +LogOpContext.prototype.logOpSearch = function() { + return this.getTypedRuleContext(LogOpSearchContext, 0); +}; + +LogOpContext.prototype.logOpSort = function() { + return this.getTypedRuleContext(LogOpSortContext, 0); +}; + +LogOpContext.prototype.logOpLimit = function() { + return this.getTypedRuleContext(LogOpLimitContext, 0); +}; + +LogOpContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogOp(this); + } +}; + +LogOpContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogOp(this); + } +}; + +ScrollQLParser.LogOpContext = LogOpContext; + +ScrollQLParser.prototype.logOp = function() { + var localctx = new LogOpContext(this, this._ctx, this.state); + this.enterRule(localctx, 10, ScrollQLParser.RULE_logOp); + try { + this.state = 167; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.K_FIELDS: + case ScrollQLParser.K_DISPLAY: + this.enterOuterAlt(localctx, 1); + this.state = 161; + this.logOpFields(); + break; + case ScrollQLParser.K_PARSE: + this.enterOuterAlt(localctx, 2); + this.state = 162; + this.logOpParse(); + break; + case ScrollQLParser.K_FILTER: + this.enterOuterAlt(localctx, 3); + this.state = 163; + this.logOpFilter(); + break; + case ScrollQLParser.K_SEARCH: + this.enterOuterAlt(localctx, 4); + this.state = 164; + this.logOpSearch(); + break; + case ScrollQLParser.K_SORT: + case ScrollQLParser.K_ORDER: + this.enterOuterAlt(localctx, 5); + this.state = 165; + this.logOpSort(); + break; + case ScrollQLParser.K_HEAD: + case ScrollQLParser.K_LIMIT: + case ScrollQLParser.K_TAIL: + this.enterOuterAlt(localctx, 6); + this.state = 166; + this.logOpLimit(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogAestheticOpContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logAestheticOp; + this.aesFun = null; // FunctionIdContext + this._rawId = null; // RawIdContext + this.params = []; // of RawIdContexts + this._fieldId = null; // FieldIdContext + this.vals = []; // of FieldIdContexts + return this; +} + +LogAestheticOpContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogAestheticOpContext.prototype.constructor = LogAestheticOpContext; + +LogAestheticOpContext.prototype.functionId = function() { + return this.getTypedRuleContext(FunctionIdContext, 0); +}; + +LogAestheticOpContext.prototype.SYM_EQ = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_EQ); + } else { + return this.getToken(ScrollQLParser.SYM_EQ, i); + } +}; + +LogAestheticOpContext.prototype.rawId = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(RawIdContext); + } else { + return this.getTypedRuleContext(RawIdContext, i); + } +}; + +LogAestheticOpContext.prototype.fieldId = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(FieldIdContext); + } else { + return this.getTypedRuleContext(FieldIdContext, i); + } +}; + +LogAestheticOpContext.prototype.SYM_COMMA = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_COMMA); + } else { + return this.getToken(ScrollQLParser.SYM_COMMA, i); + } +}; + +LogAestheticOpContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogAestheticOp(this); + } +}; + +LogAestheticOpContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogAestheticOp(this); + } +}; + +ScrollQLParser.LogAestheticOpContext = LogAestheticOpContext; + +ScrollQLParser.prototype.logAestheticOp = function() { + var localctx = new LogAestheticOpContext(this, this._ctx, this.state); + this.enterRule(localctx, 12, ScrollQLParser.RULE_logAestheticOp); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 169; + localctx.aesFun = this.functionId(); + this.state = 178; + this._errHandler.sync(this); + _la = this._input.LA(1); + while ( + ((_la & ~0x1f) == 0 && + ((1 << _la) & + ((1 << ScrollQLParser.K_SOURCE) | + (1 << ScrollQLParser.K_START) | + (1 << ScrollQLParser.K_END) | + (1 << ScrollQLParser.K_NOW) | + (1 << ScrollQLParser.K_LIVE) | + (1 << ScrollQLParser.K_PARSE) | + (1 << ScrollQLParser.K_SEARCH) | + (1 << ScrollQLParser.K_FIELDS) | + (1 << ScrollQLParser.K_DISPLAY) | + (1 << ScrollQLParser.K_FILTER) | + (1 << ScrollQLParser.K_STATS) | + (1 << ScrollQLParser.K_SORT) | + (1 << ScrollQLParser.K_ORDER) | + (1 << ScrollQLParser.K_ASC) | + (1 << ScrollQLParser.K_DESC) | + (1 << ScrollQLParser.K_HEAD) | + (1 << ScrollQLParser.K_LIMIT) | + (1 << ScrollQLParser.K_TAIL) | + (1 << ScrollQLParser.K_REGEX) | + (1 << ScrollQLParser.K_IN) | + (1 << ScrollQLParser.K_GROUP) | + (1 << ScrollQLParser.K_BY) | + (1 << ScrollQLParser.K_AS) | + (1 << ScrollQLParser.K_AND) | + (1 << ScrollQLParser.K_OR) | + (1 << ScrollQLParser.K_NOT) | + (1 << ScrollQLParser.K_LIKE) | + (1 << ScrollQLParser.K_MATCHES) | + (1 << ScrollQLParser.K_TU_MS))) !== + 0) || + (((_la - 32) & ~0x1f) == 0 && + ((1 << (_la - 32)) & + ((1 << (ScrollQLParser.K_TU_MSEC - 32)) | + (1 << (ScrollQLParser.K_TU_MSECOND - 32)) | + (1 << (ScrollQLParser.K_TU_S - 32)) | + (1 << (ScrollQLParser.K_TU_SEC - 32)) | + (1 << (ScrollQLParser.K_TU_SECOND - 32)) | + (1 << (ScrollQLParser.K_TU_M - 32)) | + (1 << (ScrollQLParser.K_TU_MIN - 32)) | + (1 << (ScrollQLParser.K_TU_MINUTE - 32)) | + (1 << (ScrollQLParser.K_TU_H - 32)) | + (1 << (ScrollQLParser.K_TU_HR - 32)) | + (1 << (ScrollQLParser.K_TU_HOUR - 32)) | + (1 << (ScrollQLParser.K_TU_D - 32)) | + (1 << (ScrollQLParser.K_TU_DAY - 32)) | + (1 << (ScrollQLParser.K_TU_W - 32)) | + (1 << (ScrollQLParser.K_TU_WEEK - 32)) | + (1 << (ScrollQLParser.K_TU_MO - 32)) | + (1 << (ScrollQLParser.K_TU_MON - 32)) | + (1 << (ScrollQLParser.K_TU_MONTH - 32)) | + (1 << (ScrollQLParser.K_TU_Q - 32)) | + (1 << (ScrollQLParser.K_TU_QTR - 32)) | + (1 << (ScrollQLParser.K_TU_QUARTER - 32)) | + (1 << (ScrollQLParser.K_TU_Y - 32)) | + (1 << (ScrollQLParser.K_TU_YR - 32)) | + (1 << (ScrollQLParser.K_TU_YEAR - 32)) | + (1 << (ScrollQLParser.RAW_ID - 32)))) !== + 0) || + _la === ScrollQLParser.RE_RAW_ID + ) { + this.state = 170; + localctx._rawId = this.rawId(); + localctx.params.push(localctx._rawId); + this.state = 171; + this.match(ScrollQLParser.SYM_EQ); + this.state = 172; + localctx._fieldId = this.fieldId(); + localctx.vals.push(localctx._fieldId); + this.state = 174; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.SYM_COMMA) { + this.state = 173; + this.match(ScrollQLParser.SYM_COMMA); + } + + this.state = 180; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogSourceContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logSource; + this.source = null; // LogIdContext + this.start = null; // TimeExprContext + this.end = null; // TimeExprContext + return this; +} + +LogSourceContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogSourceContext.prototype.constructor = LogSourceContext; + +LogSourceContext.prototype.K_SOURCE = function() { + return this.getToken(ScrollQLParser.K_SOURCE, 0); +}; + +LogSourceContext.prototype.K_START = function() { + return this.getToken(ScrollQLParser.K_START, 0); +}; + +LogSourceContext.prototype.SYM_EQ = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_EQ); + } else { + return this.getToken(ScrollQLParser.SYM_EQ, i); + } +}; + +LogSourceContext.prototype.K_END = function() { + return this.getToken(ScrollQLParser.K_END, 0); +}; + +LogSourceContext.prototype.logId = function() { + return this.getTypedRuleContext(LogIdContext, 0); +}; + +LogSourceContext.prototype.timeExpr = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(TimeExprContext); + } else { + return this.getTypedRuleContext(TimeExprContext, i); + } +}; + +LogSourceContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogSource(this); + } +}; + +LogSourceContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogSource(this); + } +}; + +ScrollQLParser.LogSourceContext = LogSourceContext; + +ScrollQLParser.prototype.logSource = function() { + var localctx = new LogSourceContext(this, this._ctx, this.state); + this.enterRule(localctx, 14, ScrollQLParser.RULE_logSource); + try { + this.enterOuterAlt(localctx, 1); + this.state = 181; + this.match(ScrollQLParser.K_SOURCE); + this.state = 182; + localctx.source = this.logId(); + this.state = 183; + this.match(ScrollQLParser.K_START); + this.state = 184; + this.match(ScrollQLParser.SYM_EQ); + this.state = 185; + localctx.start = this.timeExpr(); + this.state = 186; + this.match(ScrollQLParser.K_END); + this.state = 187; + this.match(ScrollQLParser.SYM_EQ); + this.state = 188; + localctx.end = this.timeExpr(); + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function TimeExprContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_timeExpr; + return this; +} + +TimeExprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +TimeExprContext.prototype.constructor = TimeExprContext; + +TimeExprContext.prototype.nowTimeExpr = function() { + return this.getTypedRuleContext(NowTimeExprContext, 0); +}; + +TimeExprContext.prototype.relativeTimeExpr = function() { + return this.getTypedRuleContext(RelativeTimeExprContext, 0); +}; + +TimeExprContext.prototype.epochTimeExpr = function() { + return this.getTypedRuleContext(EpochTimeExprContext, 0); +}; + +TimeExprContext.prototype.iso8601TimeExpr = function() { + return this.getTypedRuleContext(Iso8601TimeExprContext, 0); +}; + +TimeExprContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTimeExpr(this); + } +}; + +TimeExprContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTimeExpr(this); + } +}; + +ScrollQLParser.TimeExprContext = TimeExprContext; + +ScrollQLParser.prototype.timeExpr = function() { + var localctx = new TimeExprContext(this, this._ctx, this.state); + this.enterRule(localctx, 16, ScrollQLParser.RULE_timeExpr); + try { + this.state = 194; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 10, this._ctx); + switch (la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 190; + this.nowTimeExpr(); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 191; + this.relativeTimeExpr(); + break; + + case 3: + this.enterOuterAlt(localctx, 3); + this.state = 192; + this.epochTimeExpr(); + break; + + case 4: + this.enterOuterAlt(localctx, 4); + this.state = 193; + this.iso8601TimeExpr(); + break; + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function NowTimeExprContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_nowTimeExpr; + return this; +} + +NowTimeExprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +NowTimeExprContext.prototype.constructor = NowTimeExprContext; + +NowTimeExprContext.prototype.K_NOW = function() { + return this.getToken(ScrollQLParser.K_NOW, 0); +}; + +NowTimeExprContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterNowTimeExpr(this); + } +}; + +NowTimeExprContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitNowTimeExpr(this); + } +}; + +ScrollQLParser.NowTimeExprContext = NowTimeExprContext; + +ScrollQLParser.prototype.nowTimeExpr = function() { + var localctx = new NowTimeExprContext(this, this._ctx, this.state); + this.enterRule(localctx, 18, ScrollQLParser.RULE_nowTimeExpr); + try { + this.enterOuterAlt(localctx, 1); + this.state = 196; + this.match(ScrollQLParser.K_NOW); + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function RelativeTimeExprContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_relativeTimeExpr; + return this; +} + +RelativeTimeExprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +RelativeTimeExprContext.prototype.constructor = RelativeTimeExprContext; + +RelativeTimeExprContext.prototype.copyFrom = function(ctx) { + antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx); +}; + +function PosRelativeTimeExprContext(parser, ctx) { + RelativeTimeExprContext.call(this, parser); + this.num = null; // Token; + RelativeTimeExprContext.prototype.copyFrom.call(this, ctx); + return this; +} + +PosRelativeTimeExprContext.prototype = Object.create(RelativeTimeExprContext.prototype); +PosRelativeTimeExprContext.prototype.constructor = PosRelativeTimeExprContext; + +ScrollQLParser.PosRelativeTimeExprContext = PosRelativeTimeExprContext; + +PosRelativeTimeExprContext.prototype.timeUnitKeywords = function() { + return this.getTypedRuleContext(TimeUnitKeywordsContext, 0); +}; + +PosRelativeTimeExprContext.prototype.SYM_PLUS = function() { + return this.getToken(ScrollQLParser.SYM_PLUS, 0); +}; + +PosRelativeTimeExprContext.prototype.LIT_INTEGER = function() { + return this.getToken(ScrollQLParser.LIT_INTEGER, 0); +}; + +PosRelativeTimeExprContext.prototype.LIT_NUMBER = function() { + return this.getToken(ScrollQLParser.LIT_NUMBER, 0); +}; +PosRelativeTimeExprContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterPosRelativeTimeExpr(this); + } +}; + +PosRelativeTimeExprContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitPosRelativeTimeExpr(this); + } +}; + +function NegRelativeTimeExprContext(parser, ctx) { + RelativeTimeExprContext.call(this, parser); + this.num = null; // Token; + RelativeTimeExprContext.prototype.copyFrom.call(this, ctx); + return this; +} + +NegRelativeTimeExprContext.prototype = Object.create(RelativeTimeExprContext.prototype); +NegRelativeTimeExprContext.prototype.constructor = NegRelativeTimeExprContext; + +ScrollQLParser.NegRelativeTimeExprContext = NegRelativeTimeExprContext; + +NegRelativeTimeExprContext.prototype.SYM_MINUS = function() { + return this.getToken(ScrollQLParser.SYM_MINUS, 0); +}; + +NegRelativeTimeExprContext.prototype.timeUnitKeywords = function() { + return this.getTypedRuleContext(TimeUnitKeywordsContext, 0); +}; + +NegRelativeTimeExprContext.prototype.LIT_INTEGER = function() { + return this.getToken(ScrollQLParser.LIT_INTEGER, 0); +}; + +NegRelativeTimeExprContext.prototype.LIT_NUMBER = function() { + return this.getToken(ScrollQLParser.LIT_NUMBER, 0); +}; +NegRelativeTimeExprContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterNegRelativeTimeExpr(this); + } +}; + +NegRelativeTimeExprContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitNegRelativeTimeExpr(this); + } +}; + +ScrollQLParser.RelativeTimeExprContext = RelativeTimeExprContext; + +ScrollQLParser.prototype.relativeTimeExpr = function() { + var localctx = new RelativeTimeExprContext(this, this._ctx, this.state); + this.enterRule(localctx, 20, ScrollQLParser.RULE_relativeTimeExpr); + var _la = 0; // Token type + try { + this.state = 210; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.SYM_MINUS: + localctx = new NegRelativeTimeExprContext(this, localctx); + this.enterOuterAlt(localctx, 1); + this.state = 198; + this.match(ScrollQLParser.SYM_MINUS); + this.state = 200; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.LIT_INTEGER || _la === ScrollQLParser.LIT_NUMBER) { + this.state = 199; + localctx.num = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.LIT_INTEGER || _la === ScrollQLParser.LIT_NUMBER)) { + localctx.num = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + + this.state = 202; + this.timeUnitKeywords(); + break; + case ScrollQLParser.K_TU_MS: + case ScrollQLParser.K_TU_MSEC: + case ScrollQLParser.K_TU_MSECOND: + case ScrollQLParser.K_TU_S: + case ScrollQLParser.K_TU_SEC: + case ScrollQLParser.K_TU_SECOND: + case ScrollQLParser.K_TU_M: + case ScrollQLParser.K_TU_MIN: + case ScrollQLParser.K_TU_MINUTE: + case ScrollQLParser.K_TU_H: + case ScrollQLParser.K_TU_HR: + case ScrollQLParser.K_TU_HOUR: + case ScrollQLParser.K_TU_D: + case ScrollQLParser.K_TU_DAY: + case ScrollQLParser.K_TU_W: + case ScrollQLParser.K_TU_WEEK: + case ScrollQLParser.K_TU_MO: + case ScrollQLParser.K_TU_MON: + case ScrollQLParser.K_TU_MONTH: + case ScrollQLParser.K_TU_Q: + case ScrollQLParser.K_TU_QTR: + case ScrollQLParser.K_TU_QUARTER: + case ScrollQLParser.K_TU_Y: + case ScrollQLParser.K_TU_YR: + case ScrollQLParser.K_TU_YEAR: + case ScrollQLParser.LIT_INTEGER: + case ScrollQLParser.LIT_NUMBER: + case ScrollQLParser.SYM_PLUS: + localctx = new PosRelativeTimeExprContext(this, localctx); + this.enterOuterAlt(localctx, 2); + this.state = 204; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.SYM_PLUS) { + this.state = 203; + this.match(ScrollQLParser.SYM_PLUS); + } + + this.state = 207; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.LIT_INTEGER || _la === ScrollQLParser.LIT_NUMBER) { + this.state = 206; + localctx.num = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.LIT_INTEGER || _la === ScrollQLParser.LIT_NUMBER)) { + localctx.num = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + } + + this.state = 209; + this.timeUnitKeywords(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function Iso8601TimeExprContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_iso8601TimeExpr; + this.datetime = null; // StringOrBareStringContext + this.uqdatetime = null; // BareSpaceDelimitedContext + return this; +} + +Iso8601TimeExprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +Iso8601TimeExprContext.prototype.constructor = Iso8601TimeExprContext; + +Iso8601TimeExprContext.prototype.stringOrBareString = function() { + return this.getTypedRuleContext(StringOrBareStringContext, 0); +}; + +Iso8601TimeExprContext.prototype.bareSpaceDelimited = function() { + return this.getTypedRuleContext(BareSpaceDelimitedContext, 0); +}; + +Iso8601TimeExprContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterIso8601TimeExpr(this); + } +}; + +Iso8601TimeExprContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitIso8601TimeExpr(this); + } +}; + +ScrollQLParser.Iso8601TimeExprContext = Iso8601TimeExprContext; + +ScrollQLParser.prototype.iso8601TimeExpr = function() { + var localctx = new Iso8601TimeExprContext(this, this._ctx, this.state); + this.enterRule(localctx, 22, ScrollQLParser.RULE_iso8601TimeExpr); + try { + this.state = 214; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 15, this._ctx); + switch (la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 212; + localctx.datetime = this.stringOrBareString(); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 213; + localctx.uqdatetime = this.bareSpaceDelimited(); + break; + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function EpochTimeExprContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_epochTimeExpr; + this.num = null; // Token + return this; +} + +EpochTimeExprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +EpochTimeExprContext.prototype.constructor = EpochTimeExprContext; + +EpochTimeExprContext.prototype.LIT_INTEGER = function() { + return this.getToken(ScrollQLParser.LIT_INTEGER, 0); +}; + +EpochTimeExprContext.prototype.LIT_NUMBER = function() { + return this.getToken(ScrollQLParser.LIT_NUMBER, 0); +}; + +EpochTimeExprContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterEpochTimeExpr(this); + } +}; + +EpochTimeExprContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitEpochTimeExpr(this); + } +}; + +ScrollQLParser.EpochTimeExprContext = EpochTimeExprContext; + +ScrollQLParser.prototype.epochTimeExpr = function() { + var localctx = new EpochTimeExprContext(this, this._ctx, this.state); + this.enterRule(localctx, 24, ScrollQLParser.RULE_epochTimeExpr); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 216; + localctx.num = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.LIT_INTEGER || _la === ScrollQLParser.LIT_NUMBER)) { + localctx.num = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function BareSpaceDelimitedContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_bareSpaceDelimited; + return this; +} + +BareSpaceDelimitedContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +BareSpaceDelimitedContext.prototype.constructor = BareSpaceDelimitedContext; + +BareSpaceDelimitedContext.prototype.SYM_MINUS = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_MINUS); + } else { + return this.getToken(ScrollQLParser.SYM_MINUS, i); + } +}; + +BareSpaceDelimitedContext.prototype.LIT_INTEGER = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.LIT_INTEGER); + } else { + return this.getToken(ScrollQLParser.LIT_INTEGER, i); + } +}; + +BareSpaceDelimitedContext.prototype.LIT_NUMBER = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.LIT_NUMBER); + } else { + return this.getToken(ScrollQLParser.LIT_NUMBER, i); + } +}; + +BareSpaceDelimitedContext.prototype.SYM_COLON = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_COLON); + } else { + return this.getToken(ScrollQLParser.SYM_COLON, i); + } +}; + +BareSpaceDelimitedContext.prototype.RAW_ID = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.RAW_ID); + } else { + return this.getToken(ScrollQLParser.RAW_ID, i); + } +}; + +BareSpaceDelimitedContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterBareSpaceDelimited(this); + } +}; + +BareSpaceDelimitedContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitBareSpaceDelimited(this); + } +}; + +ScrollQLParser.BareSpaceDelimitedContext = BareSpaceDelimitedContext; + +ScrollQLParser.prototype.bareSpaceDelimited = function() { + var localctx = new BareSpaceDelimitedContext(this, this._ctx, this.state); + this.enterRule(localctx, 26, ScrollQLParser.RULE_bareSpaceDelimited); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 221; + this._errHandler.sync(this); + _la = this._input.LA(1); + while ( + ((_la - 56) & ~0x1f) == 0 && + ((1 << (_la - 56)) & + ((1 << (ScrollQLParser.RAW_ID - 56)) | + (1 << (ScrollQLParser.LIT_INTEGER - 56)) | + (1 << (ScrollQLParser.LIT_NUMBER - 56)) | + (1 << (ScrollQLParser.SYM_COLON - 56)) | + (1 << (ScrollQLParser.SYM_MINUS - 56)))) !== + 0 + ) { + this.state = 218; + _la = this._input.LA(1); + if ( + !( + ((_la - 56) & ~0x1f) == 0 && + ((1 << (_la - 56)) & + ((1 << (ScrollQLParser.RAW_ID - 56)) | + (1 << (ScrollQLParser.LIT_INTEGER - 56)) | + (1 << (ScrollQLParser.LIT_NUMBER - 56)) | + (1 << (ScrollQLParser.SYM_COLON - 56)) | + (1 << (ScrollQLParser.SYM_MINUS - 56)))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 223; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogStatsContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logStats; + this._statsExpr = null; // StatsExprContext + this.expr = []; // of StatsExprContexts + this._statsGroupField = null; // StatsGroupFieldContext + this.groups = []; // of StatsGroupFieldContexts + return this; +} + +LogStatsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogStatsContext.prototype.constructor = LogStatsContext; + +LogStatsContext.prototype.K_STATS = function() { + return this.getToken(ScrollQLParser.K_STATS, 0); +}; + +LogStatsContext.prototype.statsExpr = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(StatsExprContext); + } else { + return this.getTypedRuleContext(StatsExprContext, i); + } +}; + +LogStatsContext.prototype.SYM_COMMA = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_COMMA); + } else { + return this.getToken(ScrollQLParser.SYM_COMMA, i); + } +}; + +LogStatsContext.prototype.K_BY = function() { + return this.getToken(ScrollQLParser.K_BY, 0); +}; + +LogStatsContext.prototype.statsGroupField = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(StatsGroupFieldContext); + } else { + return this.getTypedRuleContext(StatsGroupFieldContext, i); + } +}; + +LogStatsContext.prototype.K_GROUP = function() { + return this.getToken(ScrollQLParser.K_GROUP, 0); +}; + +LogStatsContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogStats(this); + } +}; + +LogStatsContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogStats(this); + } +}; + +ScrollQLParser.LogStatsContext = LogStatsContext; + +ScrollQLParser.prototype.logStats = function() { + var localctx = new LogStatsContext(this, this._ctx, this.state); + this.enterRule(localctx, 28, ScrollQLParser.RULE_logStats); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 224; + this.match(ScrollQLParser.K_STATS); + this.state = 225; + localctx._statsExpr = this.statsExpr(); + localctx.expr.push(localctx._statsExpr); + this.state = 230; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === ScrollQLParser.SYM_COMMA) { + this.state = 226; + this.match(ScrollQLParser.SYM_COMMA); + this.state = 227; + localctx._statsExpr = this.statsExpr(); + localctx.expr.push(localctx._statsExpr); + this.state = 232; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 245; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.K_GROUP || _la === ScrollQLParser.K_BY) { + this.state = 234; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.K_GROUP) { + this.state = 233; + this.match(ScrollQLParser.K_GROUP); + } + + this.state = 236; + this.match(ScrollQLParser.K_BY); + this.state = 237; + localctx._statsGroupField = this.statsGroupField(); + localctx.groups.push(localctx._statsGroupField); + this.state = 242; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === ScrollQLParser.SYM_COMMA) { + this.state = 238; + this.match(ScrollQLParser.SYM_COMMA); + this.state = 239; + localctx._statsGroupField = this.statsGroupField(); + localctx.groups.push(localctx._statsGroupField); + this.state = 244; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function StatsExprContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_statsExpr; + this.expr = null; // ExpressionRootContext + this.proj = null; // AliasIdContext + return this; +} + +StatsExprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +StatsExprContext.prototype.constructor = StatsExprContext; + +StatsExprContext.prototype.expressionRoot = function() { + return this.getTypedRuleContext(ExpressionRootContext, 0); +}; + +StatsExprContext.prototype.K_AS = function() { + return this.getToken(ScrollQLParser.K_AS, 0); +}; + +StatsExprContext.prototype.aliasId = function() { + return this.getTypedRuleContext(AliasIdContext, 0); +}; + +StatsExprContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterStatsExpr(this); + } +}; + +StatsExprContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitStatsExpr(this); + } +}; + +ScrollQLParser.StatsExprContext = StatsExprContext; + +ScrollQLParser.prototype.statsExpr = function() { + var localctx = new StatsExprContext(this, this._ctx, this.state); + this.enterRule(localctx, 30, ScrollQLParser.RULE_statsExpr); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 247; + localctx.expr = this.expressionRoot(); + this.state = 250; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.K_AS) { + this.state = 248; + this.match(ScrollQLParser.K_AS); + this.state = 249; + localctx.proj = this.aliasId(); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function StatsGroupFieldContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_statsGroupField; + return this; +} + +StatsGroupFieldContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +StatsGroupFieldContext.prototype.constructor = StatsGroupFieldContext; + +StatsGroupFieldContext.prototype.copyFrom = function(ctx) { + antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx); +}; + +function StatsGroupFieldIdContext(parser, ctx) { + StatsGroupFieldContext.call(this, parser); + StatsGroupFieldContext.prototype.copyFrom.call(this, ctx); + return this; +} + +StatsGroupFieldIdContext.prototype = Object.create(StatsGroupFieldContext.prototype); +StatsGroupFieldIdContext.prototype.constructor = StatsGroupFieldIdContext; + +ScrollQLParser.StatsGroupFieldIdContext = StatsGroupFieldIdContext; + +StatsGroupFieldIdContext.prototype.fieldId = function() { + return this.getTypedRuleContext(FieldIdContext, 0); +}; +StatsGroupFieldIdContext.prototype.enterRule = function(listener) { + console.log(this); + if (listener instanceof ScrollQLParserListener) { + listener.enterStatsGroupFieldId(this); + } +}; + +StatsGroupFieldIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitStatsGroupFieldId(this); + } +}; + +function StatsGroupFieldProjectionContext(parser, ctx) { + StatsGroupFieldContext.call(this, parser); + StatsGroupFieldContext.prototype.copyFrom.call(this, ctx); + return this; +} + +StatsGroupFieldProjectionContext.prototype = Object.create(StatsGroupFieldContext.prototype); +StatsGroupFieldProjectionContext.prototype.constructor = StatsGroupFieldProjectionContext; + +ScrollQLParser.StatsGroupFieldProjectionContext = StatsGroupFieldProjectionContext; + +StatsGroupFieldProjectionContext.prototype.fieldSpec = function() { + return this.getTypedRuleContext(FieldSpecContext, 0); +}; +StatsGroupFieldProjectionContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterStatsGroupFieldProjection(this); + } +}; + +StatsGroupFieldProjectionContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitStatsGroupFieldProjection(this); + } +}; + +ScrollQLParser.StatsGroupFieldContext = StatsGroupFieldContext; + +ScrollQLParser.prototype.statsGroupField = function() { + var localctx = new StatsGroupFieldContext(this, this._ctx, this.state); + this.enterRule(localctx, 32, ScrollQLParser.RULE_statsGroupField); + try { + this.state = 254; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 22, this._ctx); + switch (la_) { + case 1: + localctx = new StatsGroupFieldIdContext(this, localctx); + this.enterOuterAlt(localctx, 1); + this.state = 252; + this.fieldId(); + break; + + case 2: + localctx = new StatsGroupFieldProjectionContext(this, localctx); + this.enterOuterAlt(localctx, 2); + this.state = 253; + this.fieldSpec(); + break; + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogOpFieldsContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logOpFields; + return this; +} + +LogOpFieldsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogOpFieldsContext.prototype.constructor = LogOpFieldsContext; + +LogOpFieldsContext.prototype.copyFrom = function(ctx) { + antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx); +}; + +function LogOpFieldsDisplayContext(parser, ctx) { + LogOpFieldsContext.call(this, parser); + this._fieldSpec = null; // FieldSpecContext; + this.fields = []; // of FieldSpecContexts; + LogOpFieldsContext.prototype.copyFrom.call(this, ctx); + return this; +} + +LogOpFieldsDisplayContext.prototype = Object.create(LogOpFieldsContext.prototype); +LogOpFieldsDisplayContext.prototype.constructor = LogOpFieldsDisplayContext; + +ScrollQLParser.LogOpFieldsDisplayContext = LogOpFieldsDisplayContext; + +LogOpFieldsDisplayContext.prototype.K_DISPLAY = function() { + return this.getToken(ScrollQLParser.K_DISPLAY, 0); +}; + +LogOpFieldsDisplayContext.prototype.fieldSpec = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(FieldSpecContext); + } else { + return this.getTypedRuleContext(FieldSpecContext, i); + } +}; + +LogOpFieldsDisplayContext.prototype.SYM_COMMA = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_COMMA); + } else { + return this.getToken(ScrollQLParser.SYM_COMMA, i); + } +}; + +LogOpFieldsDisplayContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogOpFieldsDisplay(this); + } +}; + +LogOpFieldsDisplayContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogOpFieldsDisplay(this); + } +}; + +function LogOpFieldsFieldsContext(parser, ctx) { + LogOpFieldsContext.call(this, parser); + this._fieldSpec = null; // FieldSpecContext; + this.fields = []; // of FieldSpecContexts; + LogOpFieldsContext.prototype.copyFrom.call(this, ctx); + return this; +} + +LogOpFieldsFieldsContext.prototype = Object.create(LogOpFieldsContext.prototype); +LogOpFieldsFieldsContext.prototype.constructor = LogOpFieldsFieldsContext; + +ScrollQLParser.LogOpFieldsFieldsContext = LogOpFieldsFieldsContext; + +LogOpFieldsFieldsContext.prototype.K_FIELDS = function() { + return this.getToken(ScrollQLParser.K_FIELDS, 0); +}; + +LogOpFieldsFieldsContext.prototype.fieldSpec = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(FieldSpecContext); + } else { + return this.getTypedRuleContext(FieldSpecContext, i); + } +}; + +LogOpFieldsFieldsContext.prototype.SYM_COMMA = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_COMMA); + } else { + return this.getToken(ScrollQLParser.SYM_COMMA, i); + } +}; + +LogOpFieldsFieldsContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogOpFieldsFields(this); + } +}; + +LogOpFieldsFieldsContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogOpFieldsFields(this); + } +}; + +ScrollQLParser.LogOpFieldsContext = LogOpFieldsContext; + +ScrollQLParser.prototype.logOpFields = function() { + var localctx = new LogOpFieldsContext(this, this._ctx, this.state); + this.enterRule(localctx, 34, ScrollQLParser.RULE_logOpFields); + var _la = 0; // Token type + try { + this.state = 274; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.K_FIELDS: + localctx = new LogOpFieldsFieldsContext(this, localctx); + this.enterOuterAlt(localctx, 1); + this.state = 256; + this.match(ScrollQLParser.K_FIELDS); + this.state = 257; + localctx._fieldSpec = this.fieldSpec(); + localctx.fields.push(localctx._fieldSpec); + this.state = 262; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === ScrollQLParser.SYM_COMMA) { + this.state = 258; + this.match(ScrollQLParser.SYM_COMMA); + this.state = 259; + localctx._fieldSpec = this.fieldSpec(); + localctx.fields.push(localctx._fieldSpec); + this.state = 264; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + break; + case ScrollQLParser.K_DISPLAY: + localctx = new LogOpFieldsDisplayContext(this, localctx); + this.enterOuterAlt(localctx, 2); + this.state = 265; + this.match(ScrollQLParser.K_DISPLAY); + this.state = 266; + localctx._fieldSpec = this.fieldSpec(); + localctx.fields.push(localctx._fieldSpec); + this.state = 271; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === ScrollQLParser.SYM_COMMA) { + this.state = 267; + this.match(ScrollQLParser.SYM_COMMA); + this.state = 268; + localctx._fieldSpec = this.fieldSpec(); + localctx.fields.push(localctx._fieldSpec); + this.state = 273; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function FieldSpecContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_fieldSpec; + this.proj = null; // AliasIdContext + return this; +} + +FieldSpecContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +FieldSpecContext.prototype.constructor = FieldSpecContext; + +FieldSpecContext.prototype.expressionRoot = function() { + return this.getTypedRuleContext(ExpressionRootContext, 0); +}; + +FieldSpecContext.prototype.K_AS = function() { + return this.getToken(ScrollQLParser.K_AS, 0); +}; + +FieldSpecContext.prototype.aliasId = function() { + return this.getTypedRuleContext(AliasIdContext, 0); +}; + +FieldSpecContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterFieldSpec(this); + } +}; + +FieldSpecContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitFieldSpec(this); + } +}; + +ScrollQLParser.FieldSpecContext = FieldSpecContext; + +ScrollQLParser.prototype.fieldSpec = function() { + var localctx = new FieldSpecContext(this, this._ctx, this.state); + this.enterRule(localctx, 36, ScrollQLParser.RULE_fieldSpec); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 276; + this.expressionRoot(); + this.state = 279; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.K_AS) { + this.state = 277; + this.match(ScrollQLParser.K_AS); + this.state = 278; + localctx.proj = this.aliasId(); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogOpParseContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logOpParse; + this.field = null; // FieldIdContext + this.anchor = null; // StringContext + this._aliasId = null; // AliasIdContext + this.proj = []; // of AliasIdContexts + this.re = null; // RegexContext + return this; +} + +LogOpParseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogOpParseContext.prototype.constructor = LogOpParseContext; + +LogOpParseContext.prototype.K_PARSE = function() { + return this.getToken(ScrollQLParser.K_PARSE, 0); +}; + +LogOpParseContext.prototype.K_AS = function() { + return this.getToken(ScrollQLParser.K_AS, 0); +}; + +LogOpParseContext.prototype.string = function() { + return this.getTypedRuleContext(StringContext, 0); +}; + +LogOpParseContext.prototype.aliasId = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(AliasIdContext); + } else { + return this.getTypedRuleContext(AliasIdContext, i); + } +}; + +LogOpParseContext.prototype.SYM_COMMA = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_COMMA); + } else { + return this.getToken(ScrollQLParser.SYM_COMMA, i); + } +}; + +LogOpParseContext.prototype.fieldId = function() { + return this.getTypedRuleContext(FieldIdContext, 0); +}; + +LogOpParseContext.prototype.regex = function() { + return this.getTypedRuleContext(RegexContext, 0); +}; + +LogOpParseContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogOpParse(this); + } +}; + +LogOpParseContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogOpParse(this); + } +}; + +ScrollQLParser.LogOpParseContext = LogOpParseContext; + +ScrollQLParser.prototype.logOpParse = function() { + var localctx = new LogOpParseContext(this, this._ctx, this.state); + this.enterRule(localctx, 38, ScrollQLParser.RULE_logOpParse); + var _la = 0; // Token type + try { + this.state = 300; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 30, this._ctx); + switch (la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 281; + this.match(ScrollQLParser.K_PARSE); + this.state = 283; + this._errHandler.sync(this); + _la = this._input.LA(1); + if ( + (((_la - 3) & ~0x1f) == 0 && + ((1 << (_la - 3)) & + ((1 << (ScrollQLParser.K_SOURCE - 3)) | + (1 << (ScrollQLParser.K_START - 3)) | + (1 << (ScrollQLParser.K_END - 3)) | + (1 << (ScrollQLParser.K_NOW - 3)) | + (1 << (ScrollQLParser.K_LIVE - 3)) | + (1 << (ScrollQLParser.K_PARSE - 3)) | + (1 << (ScrollQLParser.K_SEARCH - 3)) | + (1 << (ScrollQLParser.K_FIELDS - 3)) | + (1 << (ScrollQLParser.K_DISPLAY - 3)) | + (1 << (ScrollQLParser.K_FILTER - 3)) | + (1 << (ScrollQLParser.K_STATS - 3)) | + (1 << (ScrollQLParser.K_SORT - 3)) | + (1 << (ScrollQLParser.K_ORDER - 3)) | + (1 << (ScrollQLParser.K_ASC - 3)) | + (1 << (ScrollQLParser.K_DESC - 3)) | + (1 << (ScrollQLParser.K_HEAD - 3)) | + (1 << (ScrollQLParser.K_LIMIT - 3)) | + (1 << (ScrollQLParser.K_TAIL - 3)) | + (1 << (ScrollQLParser.K_REGEX - 3)) | + (1 << (ScrollQLParser.K_IN - 3)) | + (1 << (ScrollQLParser.K_GROUP - 3)) | + (1 << (ScrollQLParser.K_BY - 3)) | + (1 << (ScrollQLParser.K_AS - 3)) | + (1 << (ScrollQLParser.K_AND - 3)) | + (1 << (ScrollQLParser.K_OR - 3)) | + (1 << (ScrollQLParser.K_NOT - 3)) | + (1 << (ScrollQLParser.K_LIKE - 3)) | + (1 << (ScrollQLParser.K_MATCHES - 3)) | + (1 << (ScrollQLParser.K_TU_MS - 3)) | + (1 << (ScrollQLParser.K_TU_MSEC - 3)) | + (1 << (ScrollQLParser.K_TU_MSECOND - 3)) | + (1 << (ScrollQLParser.K_TU_S - 3)))) !== + 0) || + (((_la - 35) & ~0x1f) == 0 && + ((1 << (_la - 35)) & + ((1 << (ScrollQLParser.K_TU_SEC - 35)) | + (1 << (ScrollQLParser.K_TU_SECOND - 35)) | + (1 << (ScrollQLParser.K_TU_M - 35)) | + (1 << (ScrollQLParser.K_TU_MIN - 35)) | + (1 << (ScrollQLParser.K_TU_MINUTE - 35)) | + (1 << (ScrollQLParser.K_TU_H - 35)) | + (1 << (ScrollQLParser.K_TU_HR - 35)) | + (1 << (ScrollQLParser.K_TU_HOUR - 35)) | + (1 << (ScrollQLParser.K_TU_D - 35)) | + (1 << (ScrollQLParser.K_TU_DAY - 35)) | + (1 << (ScrollQLParser.K_TU_W - 35)) | + (1 << (ScrollQLParser.K_TU_WEEK - 35)) | + (1 << (ScrollQLParser.K_TU_MO - 35)) | + (1 << (ScrollQLParser.K_TU_MON - 35)) | + (1 << (ScrollQLParser.K_TU_MONTH - 35)) | + (1 << (ScrollQLParser.K_TU_Q - 35)) | + (1 << (ScrollQLParser.K_TU_QTR - 35)) | + (1 << (ScrollQLParser.K_TU_QUARTER - 35)) | + (1 << (ScrollQLParser.K_TU_Y - 35)) | + (1 << (ScrollQLParser.K_TU_YR - 35)) | + (1 << (ScrollQLParser.K_TU_YEAR - 35)) | + (1 << (ScrollQLParser.RAW_ID - 35)) | + (1 << (ScrollQLParser.QUOTED_IDENT - 35)) | + (1 << (ScrollQLParser.SYM_AT - 35)))) !== + 0) || + (((_la - 96) & ~0x1f) == 0 && + ((1 << (_la - 96)) & + ((1 << (ScrollQLParser.RE_RAW_ID - 96)) | + (1 << (ScrollQLParser.RE_SYM_AT - 96)) | + (1 << (ScrollQLParser.RE_QUOTED_IDENT - 96)))) !== + 0) + ) { + this.state = 282; + localctx.field = this.fieldId(); + } + + this.state = 285; + localctx.anchor = this.string(); + this.state = 286; + this.match(ScrollQLParser.K_AS); + this.state = 287; + localctx._aliasId = this.aliasId(); + localctx.proj.push(localctx._aliasId); + this.state = 292; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === ScrollQLParser.SYM_COMMA) { + this.state = 288; + this.match(ScrollQLParser.SYM_COMMA); + this.state = 289; + localctx._aliasId = this.aliasId(); + localctx.proj.push(localctx._aliasId); + this.state = 294; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 295; + this.match(ScrollQLParser.K_PARSE); + this.state = 297; + this._errHandler.sync(this); + _la = this._input.LA(1); + if ( + (((_la - 3) & ~0x1f) == 0 && + ((1 << (_la - 3)) & + ((1 << (ScrollQLParser.K_SOURCE - 3)) | + (1 << (ScrollQLParser.K_START - 3)) | + (1 << (ScrollQLParser.K_END - 3)) | + (1 << (ScrollQLParser.K_NOW - 3)) | + (1 << (ScrollQLParser.K_LIVE - 3)) | + (1 << (ScrollQLParser.K_PARSE - 3)) | + (1 << (ScrollQLParser.K_SEARCH - 3)) | + (1 << (ScrollQLParser.K_FIELDS - 3)) | + (1 << (ScrollQLParser.K_DISPLAY - 3)) | + (1 << (ScrollQLParser.K_FILTER - 3)) | + (1 << (ScrollQLParser.K_STATS - 3)) | + (1 << (ScrollQLParser.K_SORT - 3)) | + (1 << (ScrollQLParser.K_ORDER - 3)) | + (1 << (ScrollQLParser.K_ASC - 3)) | + (1 << (ScrollQLParser.K_DESC - 3)) | + (1 << (ScrollQLParser.K_HEAD - 3)) | + (1 << (ScrollQLParser.K_LIMIT - 3)) | + (1 << (ScrollQLParser.K_TAIL - 3)) | + (1 << (ScrollQLParser.K_REGEX - 3)) | + (1 << (ScrollQLParser.K_IN - 3)) | + (1 << (ScrollQLParser.K_GROUP - 3)) | + (1 << (ScrollQLParser.K_BY - 3)) | + (1 << (ScrollQLParser.K_AS - 3)) | + (1 << (ScrollQLParser.K_AND - 3)) | + (1 << (ScrollQLParser.K_OR - 3)) | + (1 << (ScrollQLParser.K_NOT - 3)) | + (1 << (ScrollQLParser.K_LIKE - 3)) | + (1 << (ScrollQLParser.K_MATCHES - 3)) | + (1 << (ScrollQLParser.K_TU_MS - 3)) | + (1 << (ScrollQLParser.K_TU_MSEC - 3)) | + (1 << (ScrollQLParser.K_TU_MSECOND - 3)) | + (1 << (ScrollQLParser.K_TU_S - 3)))) !== + 0) || + (((_la - 35) & ~0x1f) == 0 && + ((1 << (_la - 35)) & + ((1 << (ScrollQLParser.K_TU_SEC - 35)) | + (1 << (ScrollQLParser.K_TU_SECOND - 35)) | + (1 << (ScrollQLParser.K_TU_M - 35)) | + (1 << (ScrollQLParser.K_TU_MIN - 35)) | + (1 << (ScrollQLParser.K_TU_MINUTE - 35)) | + (1 << (ScrollQLParser.K_TU_H - 35)) | + (1 << (ScrollQLParser.K_TU_HR - 35)) | + (1 << (ScrollQLParser.K_TU_HOUR - 35)) | + (1 << (ScrollQLParser.K_TU_D - 35)) | + (1 << (ScrollQLParser.K_TU_DAY - 35)) | + (1 << (ScrollQLParser.K_TU_W - 35)) | + (1 << (ScrollQLParser.K_TU_WEEK - 35)) | + (1 << (ScrollQLParser.K_TU_MO - 35)) | + (1 << (ScrollQLParser.K_TU_MON - 35)) | + (1 << (ScrollQLParser.K_TU_MONTH - 35)) | + (1 << (ScrollQLParser.K_TU_Q - 35)) | + (1 << (ScrollQLParser.K_TU_QTR - 35)) | + (1 << (ScrollQLParser.K_TU_QUARTER - 35)) | + (1 << (ScrollQLParser.K_TU_Y - 35)) | + (1 << (ScrollQLParser.K_TU_YR - 35)) | + (1 << (ScrollQLParser.K_TU_YEAR - 35)) | + (1 << (ScrollQLParser.RAW_ID - 35)) | + (1 << (ScrollQLParser.QUOTED_IDENT - 35)) | + (1 << (ScrollQLParser.SYM_AT - 35)))) !== + 0) || + (((_la - 96) & ~0x1f) == 0 && + ((1 << (_la - 96)) & + ((1 << (ScrollQLParser.RE_RAW_ID - 96)) | + (1 << (ScrollQLParser.RE_SYM_AT - 96)) | + (1 << (ScrollQLParser.RE_QUOTED_IDENT - 96)))) !== + 0) + ) { + this.state = 296; + localctx.field = this.fieldId(); + } + + this.state = 299; + localctx.re = this.regex(); + break; + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogOpSearchContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logOpSearch; + return this; +} + +LogOpSearchContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogOpSearchContext.prototype.constructor = LogOpSearchContext; + +LogOpSearchContext.prototype.K_SEARCH = function() { + return this.getToken(ScrollQLParser.K_SEARCH, 0); +}; + +LogOpSearchContext.prototype.searchExpr = function() { + return this.getTypedRuleContext(SearchExprContext, 0); +}; + +LogOpSearchContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogOpSearch(this); + } +}; + +LogOpSearchContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogOpSearch(this); + } +}; + +ScrollQLParser.LogOpSearchContext = LogOpSearchContext; + +ScrollQLParser.prototype.logOpSearch = function() { + var localctx = new LogOpSearchContext(this, this._ctx, this.state); + this.enterRule(localctx, 40, ScrollQLParser.RULE_logOpSearch); + try { + this.enterOuterAlt(localctx, 1); + this.state = 302; + this.match(ScrollQLParser.K_SEARCH); + this.state = 303; + this.searchExpr(0); + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ImplicitLogOpSearchContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_implicitLogOpSearch; + return this; +} + +ImplicitLogOpSearchContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ImplicitLogOpSearchContext.prototype.constructor = ImplicitLogOpSearchContext; + +ImplicitLogOpSearchContext.prototype.searchExpr = function() { + return this.getTypedRuleContext(SearchExprContext, 0); +}; + +ImplicitLogOpSearchContext.prototype.SE_K_SEARCH = function() { + return this.getToken(ScrollQLParser.SE_K_SEARCH, 0); +}; + +ImplicitLogOpSearchContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterImplicitLogOpSearch(this); + } +}; + +ImplicitLogOpSearchContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitImplicitLogOpSearch(this); + } +}; + +ScrollQLParser.ImplicitLogOpSearchContext = ImplicitLogOpSearchContext; + +ScrollQLParser.prototype.implicitLogOpSearch = function() { + var localctx = new ImplicitLogOpSearchContext(this, this._ctx, this.state); + this.enterRule(localctx, 42, ScrollQLParser.RULE_implicitLogOpSearch); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 306; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.SE_K_SEARCH) { + this.state = 305; + this.match(ScrollQLParser.SE_K_SEARCH); + } + + this.state = 308; + this.searchExpr(0); + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function SearchExprContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_searchExpr; + return this; +} + +SearchExprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +SearchExprContext.prototype.constructor = SearchExprContext; + +SearchExprContext.prototype.copyFrom = function(ctx) { + antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx); +}; + +function SearchExprTermContext(parser, ctx) { + SearchExprContext.call(this, parser); + this.t = null; // SearchTermContext; + SearchExprContext.prototype.copyFrom.call(this, ctx); + return this; +} + +SearchExprTermContext.prototype = Object.create(SearchExprContext.prototype); +SearchExprTermContext.prototype.constructor = SearchExprTermContext; + +ScrollQLParser.SearchExprTermContext = SearchExprTermContext; + +SearchExprTermContext.prototype.searchTerm = function() { + return this.getTypedRuleContext(SearchTermContext, 0); +}; +SearchExprTermContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterSearchExprTerm(this); + } +}; + +SearchExprTermContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitSearchExprTerm(this); + } +}; + +function SearchExprNotContext(parser, ctx) { + SearchExprContext.call(this, parser); + SearchExprContext.prototype.copyFrom.call(this, ctx); + return this; +} + +SearchExprNotContext.prototype = Object.create(SearchExprContext.prototype); +SearchExprNotContext.prototype.constructor = SearchExprNotContext; + +ScrollQLParser.SearchExprNotContext = SearchExprNotContext; + +SearchExprNotContext.prototype.SE_K_NOT = function() { + return this.getToken(ScrollQLParser.SE_K_NOT, 0); +}; + +SearchExprNotContext.prototype.searchExpr = function() { + return this.getTypedRuleContext(SearchExprContext, 0); +}; +SearchExprNotContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterSearchExprNot(this); + } +}; + +SearchExprNotContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitSearchExprNot(this); + } +}; + +function SearchExprAndContext(parser, ctx) { + SearchExprContext.call(this, parser); + SearchExprContext.prototype.copyFrom.call(this, ctx); + return this; +} + +SearchExprAndContext.prototype = Object.create(SearchExprContext.prototype); +SearchExprAndContext.prototype.constructor = SearchExprAndContext; + +ScrollQLParser.SearchExprAndContext = SearchExprAndContext; + +SearchExprAndContext.prototype.searchExpr = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(SearchExprContext); + } else { + return this.getTypedRuleContext(SearchExprContext, i); + } +}; + +SearchExprAndContext.prototype.SE_K_AND = function() { + return this.getToken(ScrollQLParser.SE_K_AND, 0); +}; +SearchExprAndContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterSearchExprAnd(this); + } +}; + +SearchExprAndContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitSearchExprAnd(this); + } +}; + +function SearchExprNestedContext(parser, ctx) { + SearchExprContext.call(this, parser); + SearchExprContext.prototype.copyFrom.call(this, ctx); + return this; +} + +SearchExprNestedContext.prototype = Object.create(SearchExprContext.prototype); +SearchExprNestedContext.prototype.constructor = SearchExprNestedContext; + +ScrollQLParser.SearchExprNestedContext = SearchExprNestedContext; + +SearchExprNestedContext.prototype.SE_SYM_LPAREN = function() { + return this.getToken(ScrollQLParser.SE_SYM_LPAREN, 0); +}; + +SearchExprNestedContext.prototype.searchExpr = function() { + return this.getTypedRuleContext(SearchExprContext, 0); +}; + +SearchExprNestedContext.prototype.SE_SYM_RPAREN = function() { + return this.getToken(ScrollQLParser.SE_SYM_RPAREN, 0); +}; +SearchExprNestedContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterSearchExprNested(this); + } +}; + +SearchExprNestedContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitSearchExprNested(this); + } +}; + +function SearchExprOrContext(parser, ctx) { + SearchExprContext.call(this, parser); + SearchExprContext.prototype.copyFrom.call(this, ctx); + return this; +} + +SearchExprOrContext.prototype = Object.create(SearchExprContext.prototype); +SearchExprOrContext.prototype.constructor = SearchExprOrContext; + +ScrollQLParser.SearchExprOrContext = SearchExprOrContext; + +SearchExprOrContext.prototype.searchExpr = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(SearchExprContext); + } else { + return this.getTypedRuleContext(SearchExprContext, i); + } +}; + +SearchExprOrContext.prototype.SE_K_OR = function() { + return this.getToken(ScrollQLParser.SE_K_OR, 0); +}; +SearchExprOrContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterSearchExprOr(this); + } +}; + +SearchExprOrContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitSearchExprOr(this); + } +}; + +ScrollQLParser.prototype.searchExpr = function(_p) { + if (_p === undefined) { + _p = 0; + } + var _parentctx = this._ctx; + var _parentState = this.state; + var localctx = new SearchExprContext(this, this._ctx, _parentState); + var _prevctx = localctx; + var _startState = 44; + this.enterRecursionRule(localctx, 44, ScrollQLParser.RULE_searchExpr, _p); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 318; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.SE_K_NOT: + localctx = new SearchExprNotContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + + this.state = 311; + this.match(ScrollQLParser.SE_K_NOT); + this.state = 312; + this.searchExpr(5); + break; + case ScrollQLParser.SE_SYM_LPAREN: + localctx = new SearchExprNestedContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + this.state = 313; + this.match(ScrollQLParser.SE_SYM_LPAREN); + this.state = 314; + this.searchExpr(0); + this.state = 315; + this.match(ScrollQLParser.SE_SYM_RPAREN); + break; + case ScrollQLParser.SE_SDQUOTED_STRING: + case ScrollQLParser.SE_SSQUOTED_STRING: + case ScrollQLParser.SE_CDQUOTED_STRING: + case ScrollQLParser.SE_CSQUOTED_STRING: + case ScrollQLParser.SE_UNQUOTED_STRING: + localctx = new SearchExprTermContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + this.state = 317; + localctx.t = this.searchTerm(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this._ctx.stop = this._input.LT(-1); + this.state = 330; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input, 35, this._ctx); + while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + if (this._parseListeners !== null) { + this.triggerExitRuleEvent(); + } + _prevctx = localctx; + this.state = 328; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 34, this._ctx); + switch (la_) { + case 1: + localctx = new SearchExprAndContext(this, new SearchExprContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, ScrollQLParser.RULE_searchExpr); + this.state = 320; + if (!this.precpred(this._ctx, 3)) { + throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 3)'); + } + this.state = 322; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.SE_K_AND) { + this.state = 321; + this.match(ScrollQLParser.SE_K_AND); + } + + this.state = 324; + this.searchExpr(4); + break; + + case 2: + localctx = new SearchExprOrContext(this, new SearchExprContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, ScrollQLParser.RULE_searchExpr); + this.state = 325; + if (!this.precpred(this._ctx, 2)) { + throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 2)'); + } + this.state = 326; + this.match(ScrollQLParser.SE_K_OR); + this.state = 327; + this.searchExpr(3); + break; + } + } + this.state = 332; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 35, this._ctx); + } + } catch (error) { + if (error instanceof antlr4.error.RecognitionException) { + localctx.exception = error; + this._errHandler.reportError(this, error); + this._errHandler.recover(this, error); + } else { + throw error; + } + } finally { + this.unrollRecursionContexts(_parentctx); + } + return localctx; +}; + +function SearchTermContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_searchTerm; + this.bstr = null; // Token + this.sdqstr = null; // Token + this.ssqstr = null; // Token + this.cdqstr = null; // Token + this.csqstr = null; // Token + return this; +} + +SearchTermContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +SearchTermContext.prototype.constructor = SearchTermContext; + +SearchTermContext.prototype.SE_UNQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.SE_UNQUOTED_STRING, 0); +}; + +SearchTermContext.prototype.SE_SDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.SE_SDQUOTED_STRING, 0); +}; + +SearchTermContext.prototype.SE_SSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.SE_SSQUOTED_STRING, 0); +}; + +SearchTermContext.prototype.SE_CDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.SE_CDQUOTED_STRING, 0); +}; + +SearchTermContext.prototype.SE_CSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.SE_CSQUOTED_STRING, 0); +}; + +SearchTermContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterSearchTerm(this); + } +}; + +SearchTermContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitSearchTerm(this); + } +}; + +ScrollQLParser.SearchTermContext = SearchTermContext; + +ScrollQLParser.prototype.searchTerm = function() { + var localctx = new SearchTermContext(this, this._ctx, this.state); + this.enterRule(localctx, 46, ScrollQLParser.RULE_searchTerm); + try { + this.state = 338; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.SE_UNQUOTED_STRING: + this.enterOuterAlt(localctx, 1); + this.state = 333; + localctx.bstr = this.match(ScrollQLParser.SE_UNQUOTED_STRING); + break; + case ScrollQLParser.SE_SDQUOTED_STRING: + this.enterOuterAlt(localctx, 2); + this.state = 334; + localctx.sdqstr = this.match(ScrollQLParser.SE_SDQUOTED_STRING); + break; + case ScrollQLParser.SE_SSQUOTED_STRING: + this.enterOuterAlt(localctx, 3); + this.state = 335; + localctx.ssqstr = this.match(ScrollQLParser.SE_SSQUOTED_STRING); + break; + case ScrollQLParser.SE_CDQUOTED_STRING: + this.enterOuterAlt(localctx, 4); + this.state = 336; + localctx.cdqstr = this.match(ScrollQLParser.SE_CDQUOTED_STRING); + break; + case ScrollQLParser.SE_CSQUOTED_STRING: + this.enterOuterAlt(localctx, 5); + this.state = 337; + localctx.csqstr = this.match(ScrollQLParser.SE_CSQUOTED_STRING); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogOpFilterContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logOpFilter; + return this; +} + +LogOpFilterContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogOpFilterContext.prototype.constructor = LogOpFilterContext; + +LogOpFilterContext.prototype.K_FILTER = function() { + return this.getToken(ScrollQLParser.K_FILTER, 0); +}; + +LogOpFilterContext.prototype.expressionRoot = function() { + return this.getTypedRuleContext(ExpressionRootContext, 0); +}; + +LogOpFilterContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogOpFilter(this); + } +}; + +LogOpFilterContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogOpFilter(this); + } +}; + +ScrollQLParser.LogOpFilterContext = LogOpFilterContext; + +ScrollQLParser.prototype.logOpFilter = function() { + var localctx = new LogOpFilterContext(this, this._ctx, this.state); + this.enterRule(localctx, 48, ScrollQLParser.RULE_logOpFilter); + try { + this.enterOuterAlt(localctx, 1); + this.state = 340; + this.match(ScrollQLParser.K_FILTER); + this.state = 341; + this.expressionRoot(); + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogOpSortContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logOpSort; + return this; +} + +LogOpSortContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogOpSortContext.prototype.constructor = LogOpSortContext; + +LogOpSortContext.prototype.sortExpr = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(SortExprContext); + } else { + return this.getTypedRuleContext(SortExprContext, i); + } +}; + +LogOpSortContext.prototype.K_SORT = function() { + return this.getToken(ScrollQLParser.K_SORT, 0); +}; + +LogOpSortContext.prototype.K_ORDER = function() { + return this.getToken(ScrollQLParser.K_ORDER, 0); +}; + +LogOpSortContext.prototype.K_BY = function() { + return this.getToken(ScrollQLParser.K_BY, 0); +}; + +LogOpSortContext.prototype.SYM_COMMA = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_COMMA); + } else { + return this.getToken(ScrollQLParser.SYM_COMMA, i); + } +}; + +LogOpSortContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogOpSort(this); + } +}; + +LogOpSortContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogOpSort(this); + } +}; + +ScrollQLParser.LogOpSortContext = LogOpSortContext; + +ScrollQLParser.prototype.logOpSort = function() { + var localctx = new LogOpSortContext(this, this._ctx, this.state); + this.enterRule(localctx, 50, ScrollQLParser.RULE_logOpSort); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 343; + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.K_SORT || _la === ScrollQLParser.K_ORDER)) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 345; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 37, this._ctx); + if (la_ === 1) { + this.state = 344; + this.match(ScrollQLParser.K_BY); + } + this.state = 347; + this.sortExpr(); + this.state = 352; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === ScrollQLParser.SYM_COMMA) { + this.state = 348; + this.match(ScrollQLParser.SYM_COMMA); + this.state = 349; + this.sortExpr(); + this.state = 354; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function SortExprContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_sortExpr; + return this; +} + +SortExprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +SortExprContext.prototype.constructor = SortExprContext; + +SortExprContext.prototype.copyFrom = function(ctx) { + antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx); +}; + +function SortExprDescContext(parser, ctx) { + SortExprContext.call(this, parser); + this.did = null; // FieldIdContext; + SortExprContext.prototype.copyFrom.call(this, ctx); + return this; +} + +SortExprDescContext.prototype = Object.create(SortExprContext.prototype); +SortExprDescContext.prototype.constructor = SortExprDescContext; + +ScrollQLParser.SortExprDescContext = SortExprDescContext; + +SortExprDescContext.prototype.K_DESC = function() { + return this.getToken(ScrollQLParser.K_DESC, 0); +}; + +SortExprDescContext.prototype.fieldId = function() { + return this.getTypedRuleContext(FieldIdContext, 0); +}; +SortExprDescContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterSortExprDesc(this); + } +}; + +SortExprDescContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitSortExprDesc(this); + } +}; + +function SortExprAscContext(parser, ctx) { + SortExprContext.call(this, parser); + this.aid = null; // FieldIdContext; + SortExprContext.prototype.copyFrom.call(this, ctx); + return this; +} + +SortExprAscContext.prototype = Object.create(SortExprContext.prototype); +SortExprAscContext.prototype.constructor = SortExprAscContext; + +ScrollQLParser.SortExprAscContext = SortExprAscContext; + +SortExprAscContext.prototype.fieldId = function() { + return this.getTypedRuleContext(FieldIdContext, 0); +}; + +SortExprAscContext.prototype.K_ASC = function() { + return this.getToken(ScrollQLParser.K_ASC, 0); +}; +SortExprAscContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterSortExprAsc(this); + } +}; + +SortExprAscContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitSortExprAsc(this); + } +}; + +ScrollQLParser.SortExprContext = SortExprContext; + +ScrollQLParser.prototype.sortExpr = function() { + var localctx = new SortExprContext(this, this._ctx, this.state); + this.enterRule(localctx, 52, ScrollQLParser.RULE_sortExpr); + var _la = 0; // Token type + try { + this.state = 362; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 40, this._ctx); + switch (la_) { + case 1: + localctx = new SortExprDescContext(this, localctx); + this.enterOuterAlt(localctx, 1); + this.state = 355; + localctx.did = this.fieldId(); + this.state = 356; + this.match(ScrollQLParser.K_DESC); + break; + + case 2: + localctx = new SortExprAscContext(this, localctx); + this.enterOuterAlt(localctx, 2); + this.state = 358; + localctx.aid = this.fieldId(); + this.state = 360; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.K_ASC) { + this.state = 359; + this.match(ScrollQLParser.K_ASC); + } + + break; + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogOpLimitContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logOpLimit; + return this; +} + +LogOpLimitContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogOpLimitContext.prototype.constructor = LogOpLimitContext; + +LogOpLimitContext.prototype.copyFrom = function(ctx) { + antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx); +}; + +function LogOpLimitHeadContext(parser, ctx) { + LogOpLimitContext.call(this, parser); + this.n = null; // Token; + LogOpLimitContext.prototype.copyFrom.call(this, ctx); + return this; +} + +LogOpLimitHeadContext.prototype = Object.create(LogOpLimitContext.prototype); +LogOpLimitHeadContext.prototype.constructor = LogOpLimitHeadContext; + +ScrollQLParser.LogOpLimitHeadContext = LogOpLimitHeadContext; + +LogOpLimitHeadContext.prototype.K_LIMIT = function() { + return this.getToken(ScrollQLParser.K_LIMIT, 0); +}; + +LogOpLimitHeadContext.prototype.K_HEAD = function() { + return this.getToken(ScrollQLParser.K_HEAD, 0); +}; + +LogOpLimitHeadContext.prototype.LIT_INTEGER = function() { + return this.getToken(ScrollQLParser.LIT_INTEGER, 0); +}; +LogOpLimitHeadContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogOpLimitHead(this); + } +}; + +LogOpLimitHeadContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogOpLimitHead(this); + } +}; + +function LogOpLimitTailContext(parser, ctx) { + LogOpLimitContext.call(this, parser); + this.n = null; // Token; + LogOpLimitContext.prototype.copyFrom.call(this, ctx); + return this; +} + +LogOpLimitTailContext.prototype = Object.create(LogOpLimitContext.prototype); +LogOpLimitTailContext.prototype.constructor = LogOpLimitTailContext; + +ScrollQLParser.LogOpLimitTailContext = LogOpLimitTailContext; + +LogOpLimitTailContext.prototype.K_TAIL = function() { + return this.getToken(ScrollQLParser.K_TAIL, 0); +}; + +LogOpLimitTailContext.prototype.LIT_INTEGER = function() { + return this.getToken(ScrollQLParser.LIT_INTEGER, 0); +}; +LogOpLimitTailContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogOpLimitTail(this); + } +}; + +LogOpLimitTailContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogOpLimitTail(this); + } +}; + +ScrollQLParser.LogOpLimitContext = LogOpLimitContext; + +ScrollQLParser.prototype.logOpLimit = function() { + var localctx = new LogOpLimitContext(this, this._ctx, this.state); + this.enterRule(localctx, 54, ScrollQLParser.RULE_logOpLimit); + var _la = 0; // Token type + try { + this.state = 368; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.K_HEAD: + case ScrollQLParser.K_LIMIT: + localctx = new LogOpLimitHeadContext(this, localctx); + this.enterOuterAlt(localctx, 1); + this.state = 364; + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.K_HEAD || _la === ScrollQLParser.K_LIMIT)) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 365; + localctx.n = this.match(ScrollQLParser.LIT_INTEGER); + break; + case ScrollQLParser.K_TAIL: + localctx = new LogOpLimitTailContext(this, localctx); + this.enterOuterAlt(localctx, 2); + this.state = 366; + this.match(ScrollQLParser.K_TAIL); + this.state = 367; + localctx.n = this.match(ScrollQLParser.LIT_INTEGER); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ExpressionRootContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_expressionRoot; + return this; +} + +ExpressionRootContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ExpressionRootContext.prototype.constructor = ExpressionRootContext; + +ExpressionRootContext.prototype.expression = function() { + return this.getTypedRuleContext(ExpressionContext, 0); +}; + +ExpressionRootContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionRoot(this); + } +}; + +ExpressionRootContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionRoot(this); + } +}; + +ScrollQLParser.ExpressionRootContext = ExpressionRootContext; + +ScrollQLParser.prototype.expressionRoot = function() { + var localctx = new ExpressionRootContext(this, this._ctx, this.state); + this.enterRule(localctx, 56, ScrollQLParser.RULE_expressionRoot); + try { + this.enterOuterAlt(localctx, 1); + this.state = 370; + this.expression(0); + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ExpressionContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_expression; + return this; +} + +ExpressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ExpressionContext.prototype.constructor = ExpressionContext; + +ExpressionContext.prototype.copyFrom = function(ctx) { + antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx); +}; + +function ExpressionAddSubContext(parser, ctx) { + ExpressionContext.call(this, parser); + this.bop = null; // Token; + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionAddSubContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionAddSubContext.prototype.constructor = ExpressionAddSubContext; + +ScrollQLParser.ExpressionAddSubContext = ExpressionAddSubContext; + +ExpressionAddSubContext.prototype.expression = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(ExpressionContext); + } else { + return this.getTypedRuleContext(ExpressionContext, i); + } +}; + +ExpressionAddSubContext.prototype.SYM_PLUS = function() { + return this.getToken(ScrollQLParser.SYM_PLUS, 0); +}; + +ExpressionAddSubContext.prototype.SYM_MINUS = function() { + return this.getToken(ScrollQLParser.SYM_MINUS, 0); +}; +ExpressionAddSubContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionAddSub(this); + } +}; + +ExpressionAddSubContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionAddSub(this); + } +}; + +function ExpressionEqContext(parser, ctx) { + ExpressionContext.call(this, parser); + this.bop = null; // Token; + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionEqContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionEqContext.prototype.constructor = ExpressionEqContext; + +ScrollQLParser.ExpressionEqContext = ExpressionEqContext; + +ExpressionEqContext.prototype.expression = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(ExpressionContext); + } else { + return this.getTypedRuleContext(ExpressionContext, i); + } +}; + +ExpressionEqContext.prototype.SYM_EQ = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_EQ); + } else { + return this.getToken(ScrollQLParser.SYM_EQ, i); + } +}; + +ExpressionEqContext.prototype.SYM_NEQ = function() { + return this.getToken(ScrollQLParser.SYM_NEQ, 0); +}; +ExpressionEqContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionEq(this); + } +}; + +ExpressionEqContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionEq(this); + } +}; + +function ExpressionCompContext(parser, ctx) { + ExpressionContext.call(this, parser); + this.bop = null; // Token; + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionCompContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionCompContext.prototype.constructor = ExpressionCompContext; + +ScrollQLParser.ExpressionCompContext = ExpressionCompContext; + +ExpressionCompContext.prototype.expression = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(ExpressionContext); + } else { + return this.getTypedRuleContext(ExpressionContext, i); + } +}; + +ExpressionCompContext.prototype.SYM_LTEQ = function() { + return this.getToken(ScrollQLParser.SYM_LTEQ, 0); +}; + +ExpressionCompContext.prototype.SYM_GTEQ = function() { + return this.getToken(ScrollQLParser.SYM_GTEQ, 0); +}; + +ExpressionCompContext.prototype.SYM_GT = function() { + return this.getToken(ScrollQLParser.SYM_GT, 0); +}; + +ExpressionCompContext.prototype.SYM_LT = function() { + return this.getToken(ScrollQLParser.SYM_LT, 0); +}; +ExpressionCompContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionComp(this); + } +}; + +ExpressionCompContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionComp(this); + } +}; + +function ExpressionExpoContext(parser, ctx) { + ExpressionContext.call(this, parser); + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionExpoContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionExpoContext.prototype.constructor = ExpressionExpoContext; + +ScrollQLParser.ExpressionExpoContext = ExpressionExpoContext; + +ExpressionExpoContext.prototype.expression = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(ExpressionContext); + } else { + return this.getTypedRuleContext(ExpressionContext, i); + } +}; + +ExpressionExpoContext.prototype.SYM_CARET = function() { + return this.getToken(ScrollQLParser.SYM_CARET, 0); +}; +ExpressionExpoContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionExpo(this); + } +}; + +ExpressionExpoContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionExpo(this); + } +}; + +function ExpressionLikeContext(parser, ctx) { + ExpressionContext.call(this, parser); + this.not = null; // Token; + this.rhs = null; // LikeTermContext; + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionLikeContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionLikeContext.prototype.constructor = ExpressionLikeContext; + +ScrollQLParser.ExpressionLikeContext = ExpressionLikeContext; + +ExpressionLikeContext.prototype.expression = function() { + return this.getTypedRuleContext(ExpressionContext, 0); +}; + +ExpressionLikeContext.prototype.K_LIKE = function() { + return this.getToken(ScrollQLParser.K_LIKE, 0); +}; + +ExpressionLikeContext.prototype.SYM_EQTILDE = function() { + return this.getToken(ScrollQLParser.SYM_EQTILDE, 0); +}; + +ExpressionLikeContext.prototype.SYM_TILDEEQ = function() { + return this.getToken(ScrollQLParser.SYM_TILDEEQ, 0); +}; + +ExpressionLikeContext.prototype.likeTerm = function() { + return this.getTypedRuleContext(LikeTermContext, 0); +}; + +ExpressionLikeContext.prototype.K_NOT = function() { + return this.getToken(ScrollQLParser.K_NOT, 0); +}; +ExpressionLikeContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionLike(this); + } +}; + +ExpressionLikeContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionLike(this); + } +}; + +function ExpressionTermContext(parser, ctx) { + ExpressionContext.call(this, parser); + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionTermContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionTermContext.prototype.constructor = ExpressionTermContext; + +ScrollQLParser.ExpressionTermContext = ExpressionTermContext; + +ExpressionTermContext.prototype.term = function() { + return this.getTypedRuleContext(TermContext, 0); +}; +ExpressionTermContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionTerm(this); + } +}; + +ExpressionTermContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionTerm(this); + } +}; + +function ExpressionNegContext(parser, ctx) { + ExpressionContext.call(this, parser); + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionNegContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionNegContext.prototype.constructor = ExpressionNegContext; + +ScrollQLParser.ExpressionNegContext = ExpressionNegContext; + +ExpressionNegContext.prototype.SYM_MINUS = function() { + return this.getToken(ScrollQLParser.SYM_MINUS, 0); +}; + +ExpressionNegContext.prototype.expression = function() { + return this.getTypedRuleContext(ExpressionContext, 0); +}; +ExpressionNegContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionNeg(this); + } +}; + +ExpressionNegContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionNeg(this); + } +}; + +function ExpressionNotContext(parser, ctx) { + ExpressionContext.call(this, parser); + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionNotContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionNotContext.prototype.constructor = ExpressionNotContext; + +ScrollQLParser.ExpressionNotContext = ExpressionNotContext; + +ExpressionNotContext.prototype.expression = function() { + return this.getTypedRuleContext(ExpressionContext, 0); +}; + +ExpressionNotContext.prototype.SYM_NOT = function() { + return this.getToken(ScrollQLParser.SYM_NOT, 0); +}; + +ExpressionNotContext.prototype.K_NOT = function() { + return this.getToken(ScrollQLParser.K_NOT, 0); +}; +ExpressionNotContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionNot(this); + } +}; + +ExpressionNotContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionNot(this); + } +}; + +function ExpressionPosContext(parser, ctx) { + ExpressionContext.call(this, parser); + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionPosContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionPosContext.prototype.constructor = ExpressionPosContext; + +ScrollQLParser.ExpressionPosContext = ExpressionPosContext; + +ExpressionPosContext.prototype.SYM_PLUS = function() { + return this.getToken(ScrollQLParser.SYM_PLUS, 0); +}; + +ExpressionPosContext.prototype.expression = function() { + return this.getTypedRuleContext(ExpressionContext, 0); +}; +ExpressionPosContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionPos(this); + } +}; + +ExpressionPosContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionPos(this); + } +}; + +function ExpressionMulDivModContext(parser, ctx) { + ExpressionContext.call(this, parser); + this.bop = null; // Token; + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionMulDivModContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionMulDivModContext.prototype.constructor = ExpressionMulDivModContext; + +ScrollQLParser.ExpressionMulDivModContext = ExpressionMulDivModContext; + +ExpressionMulDivModContext.prototype.expression = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(ExpressionContext); + } else { + return this.getTypedRuleContext(ExpressionContext, i); + } +}; + +ExpressionMulDivModContext.prototype.SYM_MUL = function() { + return this.getToken(ScrollQLParser.SYM_MUL, 0); +}; + +ExpressionMulDivModContext.prototype.SYM_DIV = function() { + return this.getToken(ScrollQLParser.SYM_DIV, 0); +}; + +ExpressionMulDivModContext.prototype.SYM_MOD = function() { + return this.getToken(ScrollQLParser.SYM_MOD, 0); +}; +ExpressionMulDivModContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionMulDivMod(this); + } +}; + +ExpressionMulDivModContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionMulDivMod(this); + } +}; + +function ExpressionAndContext(parser, ctx) { + ExpressionContext.call(this, parser); + this.lhs = null; // ExpressionContext; + this.rhs = null; // ExpressionContext; + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionAndContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionAndContext.prototype.constructor = ExpressionAndContext; + +ScrollQLParser.ExpressionAndContext = ExpressionAndContext; + +ExpressionAndContext.prototype.K_AND = function() { + return this.getToken(ScrollQLParser.K_AND, 0); +}; + +ExpressionAndContext.prototype.expression = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(ExpressionContext); + } else { + return this.getTypedRuleContext(ExpressionContext, i); + } +}; +ExpressionAndContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionAnd(this); + } +}; + +ExpressionAndContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionAnd(this); + } +}; + +function ExpressionNestedContext(parser, ctx) { + ExpressionContext.call(this, parser); + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionNestedContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionNestedContext.prototype.constructor = ExpressionNestedContext; + +ScrollQLParser.ExpressionNestedContext = ExpressionNestedContext; + +ExpressionNestedContext.prototype.SYM_LPAREN = function() { + return this.getToken(ScrollQLParser.SYM_LPAREN, 0); +}; + +ExpressionNestedContext.prototype.expression = function() { + return this.getTypedRuleContext(ExpressionContext, 0); +}; + +ExpressionNestedContext.prototype.SYM_RPAREN = function() { + return this.getToken(ScrollQLParser.SYM_RPAREN, 0); +}; +ExpressionNestedContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionNested(this); + } +}; + +ExpressionNestedContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionNested(this); + } +}; + +function ExpressionOrContext(parser, ctx) { + ExpressionContext.call(this, parser); + this.lhs = null; // ExpressionContext; + this.rhs = null; // ExpressionContext; + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionOrContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionOrContext.prototype.constructor = ExpressionOrContext; + +ScrollQLParser.ExpressionOrContext = ExpressionOrContext; + +ExpressionOrContext.prototype.K_OR = function() { + return this.getToken(ScrollQLParser.K_OR, 0); +}; + +ExpressionOrContext.prototype.expression = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(ExpressionContext); + } else { + return this.getTypedRuleContext(ExpressionContext, i); + } +}; +ExpressionOrContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionOr(this); + } +}; + +ExpressionOrContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionOr(this); + } +}; + +function ExpressionInContext(parser, ctx) { + ExpressionContext.call(this, parser); + this.lhs = null; // ExpressionContext; + this.not = null; // Token; + this.rhs = null; // ArrayContext; + ExpressionContext.prototype.copyFrom.call(this, ctx); + return this; +} + +ExpressionInContext.prototype = Object.create(ExpressionContext.prototype); +ExpressionInContext.prototype.constructor = ExpressionInContext; + +ScrollQLParser.ExpressionInContext = ExpressionInContext; + +ExpressionInContext.prototype.K_IN = function() { + return this.getToken(ScrollQLParser.K_IN, 0); +}; + +ExpressionInContext.prototype.expression = function() { + return this.getTypedRuleContext(ExpressionContext, 0); +}; + +ExpressionInContext.prototype.array = function() { + return this.getTypedRuleContext(ArrayContext, 0); +}; + +ExpressionInContext.prototype.K_NOT = function() { + return this.getToken(ScrollQLParser.K_NOT, 0); +}; +ExpressionInContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterExpressionIn(this); + } +}; + +ExpressionInContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitExpressionIn(this); + } +}; + +ScrollQLParser.prototype.expression = function(_p) { + if (_p === undefined) { + _p = 0; + } + var _parentctx = this._ctx; + var _parentState = this.state; + var localctx = new ExpressionContext(this, this._ctx, _parentState); + var _prevctx = localctx; + var _startState = 58; + this.enterRecursionRule(localctx, 58, ScrollQLParser.RULE_expression, _p); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 384; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 42, this._ctx); + switch (la_) { + case 1: + localctx = new ExpressionNestedContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + + this.state = 373; + this.match(ScrollQLParser.SYM_LPAREN); + this.state = 374; + this.expression(0); + this.state = 375; + this.match(ScrollQLParser.SYM_RPAREN); + break; + + case 2: + localctx = new ExpressionNotContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + this.state = 377; + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.K_NOT || _la === ScrollQLParser.SYM_NOT)) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 378; + this.expression(12); + break; + + case 3: + localctx = new ExpressionNegContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + this.state = 379; + this.match(ScrollQLParser.SYM_MINUS); + this.state = 380; + this.expression(11); + break; + + case 4: + localctx = new ExpressionPosContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + this.state = 381; + this.match(ScrollQLParser.SYM_PLUS); + this.state = 382; + this.expression(10); + break; + + case 5: + localctx = new ExpressionTermContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; + this.state = 383; + this.term(); + break; + } + this._ctx.stop = this._input.LT(-1); + this.state = 426; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input, 47, this._ctx); + while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + if (this._parseListeners !== null) { + this.triggerExitRuleEvent(); + } + _prevctx = localctx; + this.state = 424; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 46, this._ctx); + switch (la_) { + case 1: + localctx = new ExpressionExpoContext(this, new ExpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, ScrollQLParser.RULE_expression); + this.state = 386; + if (!this.precpred(this._ctx, 13)) { + throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 13)'); + } + this.state = 387; + this.match(ScrollQLParser.SYM_CARET); + this.state = 388; + this.expression(13); + break; + + case 2: + localctx = new ExpressionMulDivModContext(this, new ExpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, ScrollQLParser.RULE_expression); + this.state = 389; + if (!this.precpred(this._ctx, 9)) { + throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 9)'); + } + this.state = 390; + localctx.bop = this._input.LT(1); + _la = this._input.LA(1); + if ( + !( + ((_la - 75) & ~0x1f) == 0 && + ((1 << (_la - 75)) & + ((1 << (ScrollQLParser.SYM_MUL - 75)) | + (1 << (ScrollQLParser.SYM_DIV - 75)) | + (1 << (ScrollQLParser.SYM_MOD - 75)))) !== + 0 + ) + ) { + localctx.bop = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 391; + this.expression(10); + break; + + case 3: + localctx = new ExpressionAddSubContext(this, new ExpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, ScrollQLParser.RULE_expression); + this.state = 392; + if (!this.precpred(this._ctx, 8)) { + throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 8)'); + } + this.state = 393; + localctx.bop = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.SYM_PLUS || _la === ScrollQLParser.SYM_MINUS)) { + localctx.bop = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 394; + this.expression(9); + break; + + case 4: + localctx = new ExpressionCompContext(this, new ExpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, ScrollQLParser.RULE_expression); + this.state = 395; + if (!this.precpred(this._ctx, 7)) { + throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 7)'); + } + this.state = 396; + localctx.bop = this._input.LT(1); + _la = this._input.LA(1); + if ( + !( + ((_la - 81) & ~0x1f) == 0 && + ((1 << (_la - 81)) & + ((1 << (ScrollQLParser.SYM_LT - 81)) | + (1 << (ScrollQLParser.SYM_GT - 81)) | + (1 << (ScrollQLParser.SYM_LTEQ - 81)) | + (1 << (ScrollQLParser.SYM_GTEQ - 81)))) !== + 0 + ) + ) { + localctx.bop = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 397; + this.expression(8); + break; + + case 5: + localctx = new ExpressionEqContext(this, new ExpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, ScrollQLParser.RULE_expression); + this.state = 398; + if (!this.precpred(this._ctx, 6)) { + throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 6)'); + } + this.state = 403; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 43, this._ctx); + switch (la_) { + case 1: + this.state = 399; + localctx.bop = this.match(ScrollQLParser.SYM_EQ); + this.state = 400; + this.match(ScrollQLParser.SYM_EQ); + break; + + case 2: + this.state = 401; + localctx.bop = this.match(ScrollQLParser.SYM_EQ); + break; + + case 3: + this.state = 402; + localctx.bop = this.match(ScrollQLParser.SYM_NEQ); + break; + } + this.state = 405; + this.expression(7); + break; + + case 6: + localctx = new ExpressionAndContext(this, new ExpressionContext(this, _parentctx, _parentState)); + localctx.lhs = _prevctx; + this.pushNewRecursionContext(localctx, _startState, ScrollQLParser.RULE_expression); + this.state = 406; + if (!this.precpred(this._ctx, 3)) { + throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 3)'); + } + this.state = 407; + this.match(ScrollQLParser.K_AND); + this.state = 408; + localctx.rhs = this.expression(4); + break; + + case 7: + localctx = new ExpressionOrContext(this, new ExpressionContext(this, _parentctx, _parentState)); + localctx.lhs = _prevctx; + this.pushNewRecursionContext(localctx, _startState, ScrollQLParser.RULE_expression); + this.state = 409; + if (!this.precpred(this._ctx, 2)) { + throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 2)'); + } + this.state = 410; + this.match(ScrollQLParser.K_OR); + this.state = 411; + localctx.rhs = this.expression(3); + break; + + case 8: + localctx = new ExpressionLikeContext(this, new ExpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, ScrollQLParser.RULE_expression); + this.state = 412; + if (!this.precpred(this._ctx, 5)) { + throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 5)'); + } + this.state = 414; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.K_NOT) { + this.state = 413; + localctx.not = this.match(ScrollQLParser.K_NOT); + } + + this.state = 416; + _la = this._input.LA(1); + if ( + !( + _la === ScrollQLParser.K_LIKE || + _la === ScrollQLParser.SYM_EQTILDE || + _la === ScrollQLParser.SYM_TILDEEQ + ) + ) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 417; + localctx.rhs = this.likeTerm(); + break; + + case 9: + localctx = new ExpressionInContext(this, new ExpressionContext(this, _parentctx, _parentState)); + localctx.lhs = _prevctx; + this.pushNewRecursionContext(localctx, _startState, ScrollQLParser.RULE_expression); + this.state = 418; + if (!this.precpred(this._ctx, 4)) { + throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 4)'); + } + this.state = 420; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.K_NOT) { + this.state = 419; + localctx.not = this.match(ScrollQLParser.K_NOT); + } + + this.state = 422; + this.match(ScrollQLParser.K_IN); + this.state = 423; + localctx.rhs = this.array(); + break; + } + } + this.state = 428; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 47, this._ctx); + } + } catch (error) { + if (error instanceof antlr4.error.RecognitionException) { + localctx.exception = error; + this._errHandler.reportError(this, error); + this._errHandler.recover(this, error); + } else { + throw error; + } + } finally { + this.unrollRecursionContexts(_parentctx); + } + return localctx; +}; + +function TermContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_term; + return this; +} + +TermContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +TermContext.prototype.constructor = TermContext; + +TermContext.prototype.copyFrom = function(ctx) { + antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx); +}; + +function TermStrContext(parser, ctx) { + TermContext.call(this, parser); + this.str = null; // StringOrBareStringContext; + TermContext.prototype.copyFrom.call(this, ctx); + return this; +} + +TermStrContext.prototype = Object.create(TermContext.prototype); +TermStrContext.prototype.constructor = TermStrContext; + +ScrollQLParser.TermStrContext = TermStrContext; + +TermStrContext.prototype.stringOrBareString = function() { + return this.getTypedRuleContext(StringOrBareStringContext, 0); +}; +TermStrContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTermStr(this); + } +}; + +TermStrContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTermStr(this); + } +}; + +function TermIdContext(parser, ctx) { + TermContext.call(this, parser); + this.fid = null; // FieldIdContext; + TermContext.prototype.copyFrom.call(this, ctx); + return this; +} + +TermIdContext.prototype = Object.create(TermContext.prototype); +TermIdContext.prototype.constructor = TermIdContext; + +ScrollQLParser.TermIdContext = TermIdContext; + +TermIdContext.prototype.fieldId = function() { + return this.getTypedRuleContext(FieldIdContext, 0); +}; +TermIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTermId(this); + } +}; + +TermIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTermId(this); + } +}; + +function TermFnContext(parser, ctx) { + TermContext.call(this, parser); + this.fn = null; // FuncContext; + TermContext.prototype.copyFrom.call(this, ctx); + return this; +} + +TermFnContext.prototype = Object.create(TermContext.prototype); +TermFnContext.prototype.constructor = TermFnContext; + +ScrollQLParser.TermFnContext = TermFnContext; + +TermFnContext.prototype.func = function() { + return this.getTypedRuleContext(FuncContext, 0); +}; +TermFnContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTermFn(this); + } +}; + +TermFnContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTermFn(this); + } +}; + +function TermNumContext(parser, ctx) { + TermContext.call(this, parser); + this.num = null; // NumberContext; + TermContext.prototype.copyFrom.call(this, ctx); + return this; +} + +TermNumContext.prototype = Object.create(TermContext.prototype); +TermNumContext.prototype.constructor = TermNumContext; + +ScrollQLParser.TermNumContext = TermNumContext; + +TermNumContext.prototype.number = function() { + return this.getTypedRuleContext(NumberContext, 0); +}; +TermNumContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTermNum(this); + } +}; + +TermNumContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTermNum(this); + } +}; + +ScrollQLParser.TermContext = TermContext; + +ScrollQLParser.prototype.term = function() { + var localctx = new TermContext(this, this._ctx, this.state); + this.enterRule(localctx, 60, ScrollQLParser.RULE_term); + try { + this.state = 433; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 48, this._ctx); + switch (la_) { + case 1: + localctx = new TermIdContext(this, localctx); + this.enterOuterAlt(localctx, 1); + this.state = 429; + localctx.fid = this.fieldId(); + break; + + case 2: + localctx = new TermNumContext(this, localctx); + this.enterOuterAlt(localctx, 2); + this.state = 430; + localctx.num = this.number(); + break; + + case 3: + localctx = new TermStrContext(this, localctx); + this.enterOuterAlt(localctx, 3); + this.state = 431; + localctx.str = this.stringOrBareString(); + break; + + case 4: + localctx = new TermFnContext(this, localctx); + this.enterOuterAlt(localctx, 4); + this.state = 432; + localctx.fn = this.func(); + break; + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LikeTermContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_likeTerm; + this.re = null; // RegexContext + this.str = null; // RegexStringContext + return this; +} + +LikeTermContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LikeTermContext.prototype.constructor = LikeTermContext; + +LikeTermContext.prototype.regex = function() { + return this.getTypedRuleContext(RegexContext, 0); +}; + +LikeTermContext.prototype.regexString = function() { + return this.getTypedRuleContext(RegexStringContext, 0); +}; + +LikeTermContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLikeTerm(this); + } +}; + +LikeTermContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLikeTerm(this); + } +}; + +ScrollQLParser.LikeTermContext = LikeTermContext; + +ScrollQLParser.prototype.likeTerm = function() { + var localctx = new LikeTermContext(this, this._ctx, this.state); + this.enterRule(localctx, 62, ScrollQLParser.RULE_likeTerm); + try { + this.state = 437; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.REGEX: + this.enterOuterAlt(localctx, 1); + this.state = 435; + localctx.re = this.regex(); + break; + case ScrollQLParser.RE_SDQUOTED_STRING: + case ScrollQLParser.RE_SSQUOTED_STRING: + case ScrollQLParser.RE_CDQUOTED_STRING: + case ScrollQLParser.RE_CSQUOTED_STRING: + this.enterOuterAlt(localctx, 2); + this.state = 436; + localctx.str = this.regexString(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function FuncContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_func; + return this; +} + +FuncContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +FuncContext.prototype.constructor = FuncContext; + +FuncContext.prototype.copyFrom = function(ctx) { + antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx); +}; + +function FunctionWithArgsContext(parser, ctx) { + FuncContext.call(this, parser); + this.fun = null; // FunctionIdContext; + this._functionArg = null; // FunctionArgContext; + this.Args = []; // of FunctionArgContexts; + FuncContext.prototype.copyFrom.call(this, ctx); + return this; +} + +FunctionWithArgsContext.prototype = Object.create(FuncContext.prototype); +FunctionWithArgsContext.prototype.constructor = FunctionWithArgsContext; + +ScrollQLParser.FunctionWithArgsContext = FunctionWithArgsContext; + +FunctionWithArgsContext.prototype.SYM_LPAREN = function() { + return this.getToken(ScrollQLParser.SYM_LPAREN, 0); +}; + +FunctionWithArgsContext.prototype.SYM_RPAREN = function() { + return this.getToken(ScrollQLParser.SYM_RPAREN, 0); +}; + +FunctionWithArgsContext.prototype.functionId = function() { + return this.getTypedRuleContext(FunctionIdContext, 0); +}; + +FunctionWithArgsContext.prototype.functionArg = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(FunctionArgContext); + } else { + return this.getTypedRuleContext(FunctionArgContext, i); + } +}; + +FunctionWithArgsContext.prototype.SYM_COMMA = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_COMMA); + } else { + return this.getToken(ScrollQLParser.SYM_COMMA, i); + } +}; + +FunctionWithArgsContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterFunctionWithArgs(this); + } +}; + +FunctionWithArgsContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitFunctionWithArgs(this); + } +}; + +function FunctionWithNoArgsContext(parser, ctx) { + FuncContext.call(this, parser); + this.fun = null; // FunctionIdContext; + FuncContext.prototype.copyFrom.call(this, ctx); + return this; +} + +FunctionWithNoArgsContext.prototype = Object.create(FuncContext.prototype); +FunctionWithNoArgsContext.prototype.constructor = FunctionWithNoArgsContext; + +ScrollQLParser.FunctionWithNoArgsContext = FunctionWithNoArgsContext; + +FunctionWithNoArgsContext.prototype.SYM_LPAREN = function() { + return this.getToken(ScrollQLParser.SYM_LPAREN, 0); +}; + +FunctionWithNoArgsContext.prototype.SYM_RPAREN = function() { + return this.getToken(ScrollQLParser.SYM_RPAREN, 0); +}; + +FunctionWithNoArgsContext.prototype.functionId = function() { + return this.getTypedRuleContext(FunctionIdContext, 0); +}; + +FunctionWithNoArgsContext.prototype.SYM_MUL = function() { + return this.getToken(ScrollQLParser.SYM_MUL, 0); +}; +FunctionWithNoArgsContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterFunctionWithNoArgs(this); + } +}; + +FunctionWithNoArgsContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitFunctionWithNoArgs(this); + } +}; + +ScrollQLParser.FuncContext = FuncContext; + +ScrollQLParser.prototype.func = function() { + var localctx = new FuncContext(this, this._ctx, this.state); + this.enterRule(localctx, 64, ScrollQLParser.RULE_func); + var _la = 0; // Token type + try { + this.state = 458; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 52, this._ctx); + switch (la_) { + case 1: + localctx = new FunctionWithArgsContext(this, localctx); + this.enterOuterAlt(localctx, 1); + this.state = 439; + localctx.fun = this.functionId(); + this.state = 440; + this.match(ScrollQLParser.SYM_LPAREN); + this.state = 441; + localctx._functionArg = this.functionArg(); + localctx.Args.push(localctx._functionArg); + this.state = 446; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === ScrollQLParser.SYM_COMMA) { + this.state = 442; + this.match(ScrollQLParser.SYM_COMMA); + this.state = 443; + localctx._functionArg = this.functionArg(); + localctx.Args.push(localctx._functionArg); + this.state = 448; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 449; + this.match(ScrollQLParser.SYM_RPAREN); + break; + + case 2: + localctx = new FunctionWithNoArgsContext(this, localctx); + this.enterOuterAlt(localctx, 2); + this.state = 451; + localctx.fun = this.functionId(); + this.state = 452; + this.match(ScrollQLParser.SYM_LPAREN); + this.state = 454; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === ScrollQLParser.SYM_MUL) { + this.state = 453; + this.match(ScrollQLParser.SYM_MUL); + } + + this.state = 456; + this.match(ScrollQLParser.SYM_RPAREN); + break; + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function FunctionArgContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_functionArg; + return this; +} + +FunctionArgContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +FunctionArgContext.prototype.constructor = FunctionArgContext; + +FunctionArgContext.prototype.copyFrom = function(ctx) { + antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx); +}; + +function FunctionArgFieldClauseContext(parser, ctx) { + FunctionArgContext.call(this, parser); + FunctionArgContext.prototype.copyFrom.call(this, ctx); + return this; +} + +FunctionArgFieldClauseContext.prototype = Object.create(FunctionArgContext.prototype); +FunctionArgFieldClauseContext.prototype.constructor = FunctionArgFieldClauseContext; + +ScrollQLParser.FunctionArgFieldClauseContext = FunctionArgFieldClauseContext; + +FunctionArgFieldClauseContext.prototype.expression = function() { + return this.getTypedRuleContext(ExpressionContext, 0); +}; +FunctionArgFieldClauseContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterFunctionArgFieldClause(this); + } +}; + +FunctionArgFieldClauseContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitFunctionArgFieldClause(this); + } +}; + +function FunctionArgTimePeriodContext(parser, ctx) { + FunctionArgContext.call(this, parser); + FunctionArgContext.prototype.copyFrom.call(this, ctx); + return this; +} + +FunctionArgTimePeriodContext.prototype = Object.create(FunctionArgContext.prototype); +FunctionArgTimePeriodContext.prototype.constructor = FunctionArgTimePeriodContext; + +ScrollQLParser.FunctionArgTimePeriodContext = FunctionArgTimePeriodContext; + +FunctionArgTimePeriodContext.prototype.relativeTimeExpr = function() { + return this.getTypedRuleContext(RelativeTimeExprContext, 0); +}; +FunctionArgTimePeriodContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterFunctionArgTimePeriod(this); + } +}; + +FunctionArgTimePeriodContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitFunctionArgTimePeriod(this); + } +}; + +ScrollQLParser.FunctionArgContext = FunctionArgContext; + +ScrollQLParser.prototype.functionArg = function() { + var localctx = new FunctionArgContext(this, this._ctx, this.state); + this.enterRule(localctx, 66, ScrollQLParser.RULE_functionArg); + try { + this.state = 462; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 53, this._ctx); + switch (la_) { + case 1: + localctx = new FunctionArgTimePeriodContext(this, localctx); + this.enterOuterAlt(localctx, 1); + this.state = 460; + this.relativeTimeExpr(); + break; + + case 2: + localctx = new FunctionArgFieldClauseContext(this, localctx); + this.enterOuterAlt(localctx, 2); + this.state = 461; + this.expression(0); + break; + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ArrayContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_array; + return this; +} + +ArrayContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ArrayContext.prototype.constructor = ArrayContext; + +ArrayContext.prototype.SYM_LBRACKET = function() { + return this.getToken(ScrollQLParser.SYM_LBRACKET, 0); +}; + +ArrayContext.prototype.arrayElem = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTypedRuleContexts(ArrayElemContext); + } else { + return this.getTypedRuleContext(ArrayElemContext, i); + } +}; + +ArrayContext.prototype.SYM_RBRACKET = function() { + return this.getToken(ScrollQLParser.SYM_RBRACKET, 0); +}; + +ArrayContext.prototype.SYM_COMMA = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_COMMA); + } else { + return this.getToken(ScrollQLParser.SYM_COMMA, i); + } +}; + +ArrayContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterArray(this); + } +}; + +ArrayContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitArray(this); + } +}; + +ScrollQLParser.ArrayContext = ArrayContext; + +ScrollQLParser.prototype.array = function() { + var localctx = new ArrayContext(this, this._ctx, this.state); + this.enterRule(localctx, 68, ScrollQLParser.RULE_array); + var _la = 0; // Token type + try { + this.state = 477; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 55, this._ctx); + switch (la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 464; + this.match(ScrollQLParser.SYM_LBRACKET); + this.state = 465; + this.arrayElem(); + this.state = 470; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === ScrollQLParser.SYM_COMMA) { + this.state = 466; + this.match(ScrollQLParser.SYM_COMMA); + this.state = 467; + this.arrayElem(); + this.state = 472; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 473; + this.match(ScrollQLParser.SYM_RBRACKET); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 475; + this.match(ScrollQLParser.SYM_LBRACKET); + this.state = 476; + this.match(ScrollQLParser.SYM_RBRACKET); + break; + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ArrayElemContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_arrayElem; + this.arrayElement = null; // StringContext + this.num = null; // NumberContext + return this; +} + +ArrayElemContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ArrayElemContext.prototype.constructor = ArrayElemContext; + +ArrayElemContext.prototype.string = function() { + return this.getTypedRuleContext(StringContext, 0); +}; + +ArrayElemContext.prototype.number = function() { + return this.getTypedRuleContext(NumberContext, 0); +}; + +ArrayElemContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterArrayElem(this); + } +}; + +ArrayElemContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitArrayElem(this); + } +}; + +ScrollQLParser.ArrayElemContext = ArrayElemContext; + +ScrollQLParser.prototype.arrayElem = function() { + var localctx = new ArrayElemContext(this, this._ctx, this.state); + this.enterRule(localctx, 70, ScrollQLParser.RULE_arrayElem); + try { + this.state = 481; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.SDQUOTED_STRING: + case ScrollQLParser.SSQUOTED_STRING: + case ScrollQLParser.CDQUOTED_STRING: + case ScrollQLParser.CSQUOTED_STRING: + case ScrollQLParser.RE_SDQUOTED_STRING: + case ScrollQLParser.RE_SSQUOTED_STRING: + case ScrollQLParser.RE_CDQUOTED_STRING: + case ScrollQLParser.RE_CSQUOTED_STRING: + this.enterOuterAlt(localctx, 1); + this.state = 479; + localctx.arrayElement = this.string(); + break; + case ScrollQLParser.LIT_INTEGER: + case ScrollQLParser.LIT_NUMBER: + this.enterOuterAlt(localctx, 2); + this.state = 480; + localctx.num = this.number(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function NumberContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_number; + this.numF = null; // Token + this.numI = null; // Token + return this; +} + +NumberContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +NumberContext.prototype.constructor = NumberContext; + +NumberContext.prototype.LIT_NUMBER = function() { + return this.getToken(ScrollQLParser.LIT_NUMBER, 0); +}; + +NumberContext.prototype.LIT_INTEGER = function() { + return this.getToken(ScrollQLParser.LIT_INTEGER, 0); +}; + +NumberContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterNumber(this); + } +}; + +NumberContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitNumber(this); + } +}; + +ScrollQLParser.NumberContext = NumberContext; + +ScrollQLParser.prototype.number = function() { + var localctx = new NumberContext(this, this._ctx, this.state); + this.enterRule(localctx, 72, ScrollQLParser.RULE_number); + try { + this.state = 485; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.LIT_NUMBER: + this.enterOuterAlt(localctx, 1); + this.state = 483; + localctx.numF = this.match(ScrollQLParser.LIT_NUMBER); + break; + case ScrollQLParser.LIT_INTEGER: + this.enterOuterAlt(localctx, 2); + this.state = 484; + localctx.numI = this.match(ScrollQLParser.LIT_INTEGER); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function StringContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_string; + this.sdqstr = null; // Token + this.ssqstr = null; // Token + this.cdqstr = null; // Token + this.csqstr = null; // Token + return this; +} + +StringContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +StringContext.prototype.constructor = StringContext; + +StringContext.prototype.SDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.SDQUOTED_STRING, 0); +}; + +StringContext.prototype.RE_SDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_SDQUOTED_STRING, 0); +}; + +StringContext.prototype.SSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.SSQUOTED_STRING, 0); +}; + +StringContext.prototype.RE_SSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_SSQUOTED_STRING, 0); +}; + +StringContext.prototype.CDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.CDQUOTED_STRING, 0); +}; + +StringContext.prototype.RE_CDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_CDQUOTED_STRING, 0); +}; + +StringContext.prototype.CSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.CSQUOTED_STRING, 0); +}; + +StringContext.prototype.RE_CSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_CSQUOTED_STRING, 0); +}; + +StringContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterString(this); + } +}; + +StringContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitString(this); + } +}; + +ScrollQLParser.StringContext = StringContext; + +ScrollQLParser.prototype.string = function() { + var localctx = new StringContext(this, this._ctx, this.state); + this.enterRule(localctx, 74, ScrollQLParser.RULE_string); + var _la = 0; // Token type + try { + this.state = 491; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.SDQUOTED_STRING: + case ScrollQLParser.RE_SDQUOTED_STRING: + this.enterOuterAlt(localctx, 1); + this.state = 487; + localctx.sdqstr = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.SDQUOTED_STRING || _la === ScrollQLParser.RE_SDQUOTED_STRING)) { + localctx.sdqstr = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.SSQUOTED_STRING: + case ScrollQLParser.RE_SSQUOTED_STRING: + this.enterOuterAlt(localctx, 2); + this.state = 488; + localctx.ssqstr = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.SSQUOTED_STRING || _la === ScrollQLParser.RE_SSQUOTED_STRING)) { + localctx.ssqstr = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.CDQUOTED_STRING: + case ScrollQLParser.RE_CDQUOTED_STRING: + this.enterOuterAlt(localctx, 3); + this.state = 489; + localctx.cdqstr = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.CDQUOTED_STRING || _la === ScrollQLParser.RE_CDQUOTED_STRING)) { + localctx.cdqstr = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.CSQUOTED_STRING: + case ScrollQLParser.RE_CSQUOTED_STRING: + this.enterOuterAlt(localctx, 4); + this.state = 490; + localctx.csqstr = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.CSQUOTED_STRING || _la === ScrollQLParser.RE_CSQUOTED_STRING)) { + localctx.csqstr = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function StringOrBareStringContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_stringOrBareString; + this.sdqstr = null; // Token + this.ssqstr = null; // Token + this.cdqstr = null; // Token + this.csqstr = null; // Token + this.bstr = null; // Token + return this; +} + +StringOrBareStringContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +StringOrBareStringContext.prototype.constructor = StringOrBareStringContext; + +StringOrBareStringContext.prototype.SDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.SDQUOTED_STRING, 0); +}; + +StringOrBareStringContext.prototype.RE_SDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_SDQUOTED_STRING, 0); +}; + +StringOrBareStringContext.prototype.SSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.SSQUOTED_STRING, 0); +}; + +StringOrBareStringContext.prototype.RE_SSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_SSQUOTED_STRING, 0); +}; + +StringOrBareStringContext.prototype.CDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.CDQUOTED_STRING, 0); +}; + +StringOrBareStringContext.prototype.RE_CDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_CDQUOTED_STRING, 0); +}; + +StringOrBareStringContext.prototype.CSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.CSQUOTED_STRING, 0); +}; + +StringOrBareStringContext.prototype.RE_CSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_CSQUOTED_STRING, 0); +}; + +StringOrBareStringContext.prototype.RAW_ID = function() { + return this.getToken(ScrollQLParser.RAW_ID, 0); +}; + +StringOrBareStringContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterStringOrBareString(this); + } +}; + +StringOrBareStringContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitStringOrBareString(this); + } +}; + +ScrollQLParser.StringOrBareStringContext = StringOrBareStringContext; + +ScrollQLParser.prototype.stringOrBareString = function() { + var localctx = new StringOrBareStringContext(this, this._ctx, this.state); + this.enterRule(localctx, 76, ScrollQLParser.RULE_stringOrBareString); + var _la = 0; // Token type + try { + this.state = 498; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.SDQUOTED_STRING: + case ScrollQLParser.RE_SDQUOTED_STRING: + this.enterOuterAlt(localctx, 1); + this.state = 493; + localctx.sdqstr = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.SDQUOTED_STRING || _la === ScrollQLParser.RE_SDQUOTED_STRING)) { + localctx.sdqstr = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.SSQUOTED_STRING: + case ScrollQLParser.RE_SSQUOTED_STRING: + this.enterOuterAlt(localctx, 2); + this.state = 494; + localctx.ssqstr = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.SSQUOTED_STRING || _la === ScrollQLParser.RE_SSQUOTED_STRING)) { + localctx.ssqstr = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.CDQUOTED_STRING: + case ScrollQLParser.RE_CDQUOTED_STRING: + this.enterOuterAlt(localctx, 3); + this.state = 495; + localctx.cdqstr = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.CDQUOTED_STRING || _la === ScrollQLParser.RE_CDQUOTED_STRING)) { + localctx.cdqstr = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.CSQUOTED_STRING: + case ScrollQLParser.RE_CSQUOTED_STRING: + this.enterOuterAlt(localctx, 4); + this.state = 496; + localctx.csqstr = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.CSQUOTED_STRING || _la === ScrollQLParser.RE_CSQUOTED_STRING)) { + localctx.csqstr = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.RAW_ID: + this.enterOuterAlt(localctx, 5); + this.state = 497; + localctx.bstr = this.match(ScrollQLParser.RAW_ID); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function RegexContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_regex; + return this; +} + +RegexContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +RegexContext.prototype.constructor = RegexContext; + +RegexContext.prototype.REGEX = function() { + return this.getToken(ScrollQLParser.REGEX, 0); +}; + +RegexContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterRegex(this); + } +}; + +RegexContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitRegex(this); + } +}; + +ScrollQLParser.RegexContext = RegexContext; + +ScrollQLParser.prototype.regex = function() { + var localctx = new RegexContext(this, this._ctx, this.state); + this.enterRule(localctx, 78, ScrollQLParser.RULE_regex); + try { + this.enterOuterAlt(localctx, 1); + this.state = 500; + this.match(ScrollQLParser.REGEX); + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function RegexStringContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_regexString; + this.sdqstr = null; // Token + this.ssqstr = null; // Token + this.cdqstr = null; // Token + this.csqstr = null; // Token + return this; +} + +RegexStringContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +RegexStringContext.prototype.constructor = RegexStringContext; + +RegexStringContext.prototype.RE_SDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_SDQUOTED_STRING, 0); +}; + +RegexStringContext.prototype.RE_SSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_SSQUOTED_STRING, 0); +}; + +RegexStringContext.prototype.RE_CDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_CDQUOTED_STRING, 0); +}; + +RegexStringContext.prototype.RE_CSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_CSQUOTED_STRING, 0); +}; + +RegexStringContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterRegexString(this); + } +}; + +RegexStringContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitRegexString(this); + } +}; + +ScrollQLParser.RegexStringContext = RegexStringContext; + +ScrollQLParser.prototype.regexString = function() { + var localctx = new RegexStringContext(this, this._ctx, this.state); + this.enterRule(localctx, 80, ScrollQLParser.RULE_regexString); + try { + this.state = 506; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.RE_SDQUOTED_STRING: + this.enterOuterAlt(localctx, 1); + this.state = 502; + localctx.sdqstr = this.match(ScrollQLParser.RE_SDQUOTED_STRING); + break; + case ScrollQLParser.RE_SSQUOTED_STRING: + this.enterOuterAlt(localctx, 2); + this.state = 503; + localctx.ssqstr = this.match(ScrollQLParser.RE_SSQUOTED_STRING); + break; + case ScrollQLParser.RE_CDQUOTED_STRING: + this.enterOuterAlt(localctx, 3); + this.state = 504; + localctx.cdqstr = this.match(ScrollQLParser.RE_CDQUOTED_STRING); + break; + case ScrollQLParser.RE_CSQUOTED_STRING: + this.enterOuterAlt(localctx, 4); + this.state = 505; + localctx.csqstr = this.match(ScrollQLParser.RE_CSQUOTED_STRING); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function LogIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_logId; + this.raw = null; // Token + this.keyw = null; // KeywordsContext + this.keywt = null; // TimeUnitKeywordsContext + this.sdqstr = null; // Token + this.ssqstr = null; // Token + this.cdqstr = null; // Token + this.csqstr = null; // Token + return this; +} + +LogIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +LogIdContext.prototype.constructor = LogIdContext; + +LogIdContext.prototype.RAW_ID = function() { + return this.getToken(ScrollQLParser.RAW_ID, 0); +}; + +LogIdContext.prototype.keywords = function() { + return this.getTypedRuleContext(KeywordsContext, 0); +}; + +LogIdContext.prototype.timeUnitKeywords = function() { + return this.getTypedRuleContext(TimeUnitKeywordsContext, 0); +}; + +LogIdContext.prototype.SDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.SDQUOTED_STRING, 0); +}; + +LogIdContext.prototype.RE_SDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_SDQUOTED_STRING, 0); +}; + +LogIdContext.prototype.SSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.SSQUOTED_STRING, 0); +}; + +LogIdContext.prototype.RE_SSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_SSQUOTED_STRING, 0); +}; + +LogIdContext.prototype.CDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.CDQUOTED_STRING, 0); +}; + +LogIdContext.prototype.RE_CDQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_CDQUOTED_STRING, 0); +}; + +LogIdContext.prototype.CSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.CSQUOTED_STRING, 0); +}; + +LogIdContext.prototype.RE_CSQUOTED_STRING = function() { + return this.getToken(ScrollQLParser.RE_CSQUOTED_STRING, 0); +}; + +LogIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterLogId(this); + } +}; + +LogIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitLogId(this); + } +}; + +ScrollQLParser.LogIdContext = LogIdContext; + +ScrollQLParser.prototype.logId = function() { + var localctx = new LogIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 82, ScrollQLParser.RULE_logId); + var _la = 0; // Token type + try { + this.state = 515; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.RAW_ID: + this.enterOuterAlt(localctx, 1); + this.state = 508; + localctx.raw = this.match(ScrollQLParser.RAW_ID); + break; + case ScrollQLParser.K_SOURCE: + case ScrollQLParser.K_START: + case ScrollQLParser.K_END: + case ScrollQLParser.K_NOW: + case ScrollQLParser.K_LIVE: + case ScrollQLParser.K_PARSE: + case ScrollQLParser.K_SEARCH: + case ScrollQLParser.K_FIELDS: + case ScrollQLParser.K_DISPLAY: + case ScrollQLParser.K_FILTER: + case ScrollQLParser.K_STATS: + case ScrollQLParser.K_SORT: + case ScrollQLParser.K_ORDER: + case ScrollQLParser.K_ASC: + case ScrollQLParser.K_DESC: + case ScrollQLParser.K_HEAD: + case ScrollQLParser.K_LIMIT: + case ScrollQLParser.K_TAIL: + case ScrollQLParser.K_REGEX: + case ScrollQLParser.K_IN: + case ScrollQLParser.K_GROUP: + case ScrollQLParser.K_BY: + case ScrollQLParser.K_AS: + case ScrollQLParser.K_AND: + case ScrollQLParser.K_OR: + case ScrollQLParser.K_NOT: + case ScrollQLParser.K_LIKE: + case ScrollQLParser.K_MATCHES: + this.enterOuterAlt(localctx, 2); + this.state = 509; + localctx.keyw = this.keywords(); + break; + case ScrollQLParser.K_TU_MS: + case ScrollQLParser.K_TU_MSEC: + case ScrollQLParser.K_TU_MSECOND: + case ScrollQLParser.K_TU_S: + case ScrollQLParser.K_TU_SEC: + case ScrollQLParser.K_TU_SECOND: + case ScrollQLParser.K_TU_M: + case ScrollQLParser.K_TU_MIN: + case ScrollQLParser.K_TU_MINUTE: + case ScrollQLParser.K_TU_H: + case ScrollQLParser.K_TU_HR: + case ScrollQLParser.K_TU_HOUR: + case ScrollQLParser.K_TU_D: + case ScrollQLParser.K_TU_DAY: + case ScrollQLParser.K_TU_W: + case ScrollQLParser.K_TU_WEEK: + case ScrollQLParser.K_TU_MO: + case ScrollQLParser.K_TU_MON: + case ScrollQLParser.K_TU_MONTH: + case ScrollQLParser.K_TU_Q: + case ScrollQLParser.K_TU_QTR: + case ScrollQLParser.K_TU_QUARTER: + case ScrollQLParser.K_TU_Y: + case ScrollQLParser.K_TU_YR: + case ScrollQLParser.K_TU_YEAR: + this.enterOuterAlt(localctx, 3); + this.state = 510; + localctx.keywt = this.timeUnitKeywords(); + break; + case ScrollQLParser.SDQUOTED_STRING: + case ScrollQLParser.RE_SDQUOTED_STRING: + this.enterOuterAlt(localctx, 4); + this.state = 511; + localctx.sdqstr = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.SDQUOTED_STRING || _la === ScrollQLParser.RE_SDQUOTED_STRING)) { + localctx.sdqstr = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.SSQUOTED_STRING: + case ScrollQLParser.RE_SSQUOTED_STRING: + this.enterOuterAlt(localctx, 5); + this.state = 512; + localctx.ssqstr = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.SSQUOTED_STRING || _la === ScrollQLParser.RE_SSQUOTED_STRING)) { + localctx.ssqstr = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.CDQUOTED_STRING: + case ScrollQLParser.RE_CDQUOTED_STRING: + this.enterOuterAlt(localctx, 6); + this.state = 513; + localctx.cdqstr = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.CDQUOTED_STRING || _la === ScrollQLParser.RE_CDQUOTED_STRING)) { + localctx.cdqstr = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.CSQUOTED_STRING: + case ScrollQLParser.RE_CSQUOTED_STRING: + this.enterOuterAlt(localctx, 7); + this.state = 514; + localctx.csqstr = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.CSQUOTED_STRING || _la === ScrollQLParser.RE_CSQUOTED_STRING)) { + localctx.csqstr = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function FieldIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_fieldId; + this.uid = null; // UserIdContext + this.sid = null; // SystemIdContext + return this; +} + +FieldIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +FieldIdContext.prototype.constructor = FieldIdContext; + +FieldIdContext.prototype.userId = function() { + return this.getTypedRuleContext(UserIdContext, 0); +}; + +FieldIdContext.prototype.systemId = function() { + return this.getTypedRuleContext(SystemIdContext, 0); +}; + +FieldIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterFieldId(this); + } +}; + +FieldIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitFieldId(this); + } +}; + +ScrollQLParser.FieldIdContext = FieldIdContext; + +ScrollQLParser.prototype.fieldId = function() { + var localctx = new FieldIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 84, ScrollQLParser.RULE_fieldId); + try { + this.state = 519; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 62, this._ctx); + switch (la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 517; + localctx.uid = this.userId(); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 518; + localctx.sid = this.systemId(); + break; + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function AliasIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_aliasId; + this.uid = null; // UserIdContext + this.sid = null; // SystemIdContext + return this; +} + +AliasIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +AliasIdContext.prototype.constructor = AliasIdContext; + +AliasIdContext.prototype.userId = function() { + return this.getTypedRuleContext(UserIdContext, 0); +}; + +AliasIdContext.prototype.systemId = function() { + return this.getTypedRuleContext(SystemIdContext, 0); +}; + +AliasIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterAliasId(this); + } +}; + +AliasIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitAliasId(this); + } +}; + +ScrollQLParser.AliasIdContext = AliasIdContext; + +ScrollQLParser.prototype.aliasId = function() { + var localctx = new AliasIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 86, ScrollQLParser.RULE_aliasId); + try { + this.state = 523; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 63, this._ctx); + switch (la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 521; + localctx.uid = this.userId(); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 522; + localctx.sid = this.systemId(); + break; + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function UserIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_userId; + this.usid = null; // UnquotedUserIdContext + this.qsid = null; // QuotedUserIdContext + return this; +} + +UserIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +UserIdContext.prototype.constructor = UserIdContext; + +UserIdContext.prototype.unquotedUserId = function() { + return this.getTypedRuleContext(UnquotedUserIdContext, 0); +}; + +UserIdContext.prototype.quotedUserId = function() { + return this.getTypedRuleContext(QuotedUserIdContext, 0); +}; + +UserIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterUserId(this); + } +}; + +UserIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitUserId(this); + } +}; + +ScrollQLParser.UserIdContext = UserIdContext; + +ScrollQLParser.prototype.userId = function() { + var localctx = new UserIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 88, ScrollQLParser.RULE_userId); + try { + this.state = 527; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.K_SOURCE: + case ScrollQLParser.K_START: + case ScrollQLParser.K_END: + case ScrollQLParser.K_NOW: + case ScrollQLParser.K_LIVE: + case ScrollQLParser.K_PARSE: + case ScrollQLParser.K_SEARCH: + case ScrollQLParser.K_FIELDS: + case ScrollQLParser.K_DISPLAY: + case ScrollQLParser.K_FILTER: + case ScrollQLParser.K_STATS: + case ScrollQLParser.K_SORT: + case ScrollQLParser.K_ORDER: + case ScrollQLParser.K_ASC: + case ScrollQLParser.K_DESC: + case ScrollQLParser.K_HEAD: + case ScrollQLParser.K_LIMIT: + case ScrollQLParser.K_TAIL: + case ScrollQLParser.K_REGEX: + case ScrollQLParser.K_IN: + case ScrollQLParser.K_GROUP: + case ScrollQLParser.K_BY: + case ScrollQLParser.K_AS: + case ScrollQLParser.K_AND: + case ScrollQLParser.K_OR: + case ScrollQLParser.K_NOT: + case ScrollQLParser.K_LIKE: + case ScrollQLParser.K_MATCHES: + case ScrollQLParser.K_TU_MS: + case ScrollQLParser.K_TU_MSEC: + case ScrollQLParser.K_TU_MSECOND: + case ScrollQLParser.K_TU_S: + case ScrollQLParser.K_TU_SEC: + case ScrollQLParser.K_TU_SECOND: + case ScrollQLParser.K_TU_M: + case ScrollQLParser.K_TU_MIN: + case ScrollQLParser.K_TU_MINUTE: + case ScrollQLParser.K_TU_H: + case ScrollQLParser.K_TU_HR: + case ScrollQLParser.K_TU_HOUR: + case ScrollQLParser.K_TU_D: + case ScrollQLParser.K_TU_DAY: + case ScrollQLParser.K_TU_W: + case ScrollQLParser.K_TU_WEEK: + case ScrollQLParser.K_TU_MO: + case ScrollQLParser.K_TU_MON: + case ScrollQLParser.K_TU_MONTH: + case ScrollQLParser.K_TU_Q: + case ScrollQLParser.K_TU_QTR: + case ScrollQLParser.K_TU_QUARTER: + case ScrollQLParser.K_TU_Y: + case ScrollQLParser.K_TU_YR: + case ScrollQLParser.K_TU_YEAR: + case ScrollQLParser.RAW_ID: + case ScrollQLParser.SYM_AT: + case ScrollQLParser.RE_RAW_ID: + case ScrollQLParser.RE_SYM_AT: + this.enterOuterAlt(localctx, 1); + this.state = 525; + localctx.usid = this.unquotedUserId(); + break; + case ScrollQLParser.QUOTED_IDENT: + case ScrollQLParser.RE_QUOTED_IDENT: + this.enterOuterAlt(localctx, 2); + this.state = 526; + localctx.qsid = this.quotedUserId(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function UnquotedUserIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_unquotedUserId; + this.uubid = null; // UnquotedUserBareIdContext + this.uuaid = null; // UnquotedUserAtIdContext + return this; +} + +UnquotedUserIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +UnquotedUserIdContext.prototype.constructor = UnquotedUserIdContext; + +UnquotedUserIdContext.prototype.unquotedUserBareId = function() { + return this.getTypedRuleContext(UnquotedUserBareIdContext, 0); +}; + +UnquotedUserIdContext.prototype.unquotedUserAtId = function() { + return this.getTypedRuleContext(UnquotedUserAtIdContext, 0); +}; + +UnquotedUserIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterUnquotedUserId(this); + } +}; + +UnquotedUserIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitUnquotedUserId(this); + } +}; + +ScrollQLParser.UnquotedUserIdContext = UnquotedUserIdContext; + +ScrollQLParser.prototype.unquotedUserId = function() { + var localctx = new UnquotedUserIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 90, ScrollQLParser.RULE_unquotedUserId); + try { + this.state = 531; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.K_SOURCE: + case ScrollQLParser.K_START: + case ScrollQLParser.K_END: + case ScrollQLParser.K_NOW: + case ScrollQLParser.K_LIVE: + case ScrollQLParser.K_PARSE: + case ScrollQLParser.K_SEARCH: + case ScrollQLParser.K_FIELDS: + case ScrollQLParser.K_DISPLAY: + case ScrollQLParser.K_FILTER: + case ScrollQLParser.K_STATS: + case ScrollQLParser.K_SORT: + case ScrollQLParser.K_ORDER: + case ScrollQLParser.K_ASC: + case ScrollQLParser.K_DESC: + case ScrollQLParser.K_HEAD: + case ScrollQLParser.K_LIMIT: + case ScrollQLParser.K_TAIL: + case ScrollQLParser.K_REGEX: + case ScrollQLParser.K_IN: + case ScrollQLParser.K_GROUP: + case ScrollQLParser.K_BY: + case ScrollQLParser.K_AS: + case ScrollQLParser.K_AND: + case ScrollQLParser.K_OR: + case ScrollQLParser.K_NOT: + case ScrollQLParser.K_LIKE: + case ScrollQLParser.K_MATCHES: + case ScrollQLParser.K_TU_MS: + case ScrollQLParser.K_TU_MSEC: + case ScrollQLParser.K_TU_MSECOND: + case ScrollQLParser.K_TU_S: + case ScrollQLParser.K_TU_SEC: + case ScrollQLParser.K_TU_SECOND: + case ScrollQLParser.K_TU_M: + case ScrollQLParser.K_TU_MIN: + case ScrollQLParser.K_TU_MINUTE: + case ScrollQLParser.K_TU_H: + case ScrollQLParser.K_TU_HR: + case ScrollQLParser.K_TU_HOUR: + case ScrollQLParser.K_TU_D: + case ScrollQLParser.K_TU_DAY: + case ScrollQLParser.K_TU_W: + case ScrollQLParser.K_TU_WEEK: + case ScrollQLParser.K_TU_MO: + case ScrollQLParser.K_TU_MON: + case ScrollQLParser.K_TU_MONTH: + case ScrollQLParser.K_TU_Q: + case ScrollQLParser.K_TU_QTR: + case ScrollQLParser.K_TU_QUARTER: + case ScrollQLParser.K_TU_Y: + case ScrollQLParser.K_TU_YR: + case ScrollQLParser.K_TU_YEAR: + case ScrollQLParser.RAW_ID: + case ScrollQLParser.RE_RAW_ID: + this.enterOuterAlt(localctx, 1); + this.state = 529; + localctx.uubid = this.unquotedUserBareId(); + break; + case ScrollQLParser.SYM_AT: + case ScrollQLParser.RE_SYM_AT: + this.enterOuterAlt(localctx, 2); + this.state = 530; + localctx.uuaid = this.unquotedUserAtId(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function UnquotedUserAtIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_unquotedUserAtId; + return this; +} + +UnquotedUserAtIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +UnquotedUserAtIdContext.prototype.constructor = UnquotedUserAtIdContext; + +UnquotedUserAtIdContext.prototype.rawId = function() { + return this.getTypedRuleContext(RawIdContext, 0); +}; + +UnquotedUserAtIdContext.prototype.SYM_AT = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.SYM_AT); + } else { + return this.getToken(ScrollQLParser.SYM_AT, i); + } +}; + +UnquotedUserAtIdContext.prototype.RE_SYM_AT = function(i) { + if (i === undefined) { + i = null; + } + if (i === null) { + return this.getTokens(ScrollQLParser.RE_SYM_AT); + } else { + return this.getToken(ScrollQLParser.RE_SYM_AT, i); + } +}; + +UnquotedUserAtIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterUnquotedUserAtId(this); + } +}; + +UnquotedUserAtIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitUnquotedUserAtId(this); + } +}; + +ScrollQLParser.UnquotedUserAtIdContext = UnquotedUserAtIdContext; + +ScrollQLParser.prototype.unquotedUserAtId = function() { + var localctx = new UnquotedUserAtIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 92, ScrollQLParser.RULE_unquotedUserAtId); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 533; + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.SYM_AT || _la === ScrollQLParser.RE_SYM_AT)) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 535; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + this.state = 534; + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.SYM_AT || _la === ScrollQLParser.RE_SYM_AT)) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 537; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while (_la === ScrollQLParser.SYM_AT || _la === ScrollQLParser.RE_SYM_AT); + this.state = 539; + this.rawId(); + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function UnquotedUserBareIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_unquotedUserBareId; + this.uid = null; // RawIdContext + return this; +} + +UnquotedUserBareIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +UnquotedUserBareIdContext.prototype.constructor = UnquotedUserBareIdContext; + +UnquotedUserBareIdContext.prototype.rawId = function() { + return this.getTypedRuleContext(RawIdContext, 0); +}; + +UnquotedUserBareIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterUnquotedUserBareId(this); + } +}; + +UnquotedUserBareIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitUnquotedUserBareId(this); + } +}; + +ScrollQLParser.UnquotedUserBareIdContext = UnquotedUserBareIdContext; + +ScrollQLParser.prototype.unquotedUserBareId = function() { + var localctx = new UnquotedUserBareIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 94, ScrollQLParser.RULE_unquotedUserBareId); + try { + this.enterOuterAlt(localctx, 1); + this.state = 541; + localctx.uid = this.rawId(); + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function QuotedUserIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_quotedUserId; + this.qid = null; // Token + return this; +} + +QuotedUserIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +QuotedUserIdContext.prototype.constructor = QuotedUserIdContext; + +QuotedUserIdContext.prototype.QUOTED_IDENT = function() { + return this.getToken(ScrollQLParser.QUOTED_IDENT, 0); +}; + +QuotedUserIdContext.prototype.RE_QUOTED_IDENT = function() { + return this.getToken(ScrollQLParser.RE_QUOTED_IDENT, 0); +}; + +QuotedUserIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterQuotedUserId(this); + } +}; + +QuotedUserIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitQuotedUserId(this); + } +}; + +ScrollQLParser.QuotedUserIdContext = QuotedUserIdContext; + +ScrollQLParser.prototype.quotedUserId = function() { + var localctx = new QuotedUserIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 96, ScrollQLParser.RULE_quotedUserId); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 543; + localctx.qid = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.QUOTED_IDENT || _la === ScrollQLParser.RE_QUOTED_IDENT)) { + localctx.qid = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function SystemIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_systemId; + this.usid = null; // UnquotedSystemIdContext + this.qsid = null; // QuotedSystemIdContext + return this; +} + +SystemIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +SystemIdContext.prototype.constructor = SystemIdContext; + +SystemIdContext.prototype.unquotedSystemId = function() { + return this.getTypedRuleContext(UnquotedSystemIdContext, 0); +}; + +SystemIdContext.prototype.quotedSystemId = function() { + return this.getTypedRuleContext(QuotedSystemIdContext, 0); +}; + +SystemIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterSystemId(this); + } +}; + +SystemIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitSystemId(this); + } +}; + +ScrollQLParser.SystemIdContext = SystemIdContext; + +ScrollQLParser.prototype.systemId = function() { + var localctx = new SystemIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 98, ScrollQLParser.RULE_systemId); + try { + this.state = 547; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input, 67, this._ctx); + switch (la_) { + case 1: + this.enterOuterAlt(localctx, 1); + this.state = 545; + localctx.usid = this.unquotedSystemId(); + break; + + case 2: + this.enterOuterAlt(localctx, 2); + this.state = 546; + localctx.qsid = this.quotedSystemId(); + break; + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function UnquotedSystemIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_unquotedSystemId; + this.udid = null; // RawIdContext + return this; +} + +UnquotedSystemIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +UnquotedSystemIdContext.prototype.constructor = UnquotedSystemIdContext; + +UnquotedSystemIdContext.prototype.SYM_AT = function() { + return this.getToken(ScrollQLParser.SYM_AT, 0); +}; + +UnquotedSystemIdContext.prototype.RE_SYM_AT = function() { + return this.getToken(ScrollQLParser.RE_SYM_AT, 0); +}; + +UnquotedSystemIdContext.prototype.rawId = function() { + return this.getTypedRuleContext(RawIdContext, 0); +}; + +UnquotedSystemIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterUnquotedSystemId(this); + } +}; + +UnquotedSystemIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitUnquotedSystemId(this); + } +}; + +ScrollQLParser.UnquotedSystemIdContext = UnquotedSystemIdContext; + +ScrollQLParser.prototype.unquotedSystemId = function() { + var localctx = new UnquotedSystemIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 100, ScrollQLParser.RULE_unquotedSystemId); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 549; + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.SYM_AT || _la === ScrollQLParser.RE_SYM_AT)) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 550; + localctx.udid = this.rawId(); + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function QuotedSystemIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_quotedSystemId; + this.qid = null; // Token + return this; +} + +QuotedSystemIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +QuotedSystemIdContext.prototype.constructor = QuotedSystemIdContext; + +QuotedSystemIdContext.prototype.SYM_AT = function() { + return this.getToken(ScrollQLParser.SYM_AT, 0); +}; + +QuotedSystemIdContext.prototype.RE_SYM_AT = function() { + return this.getToken(ScrollQLParser.RE_SYM_AT, 0); +}; + +QuotedSystemIdContext.prototype.QUOTED_IDENT = function() { + return this.getToken(ScrollQLParser.QUOTED_IDENT, 0); +}; + +QuotedSystemIdContext.prototype.RE_QUOTED_IDENT = function() { + return this.getToken(ScrollQLParser.RE_QUOTED_IDENT, 0); +}; + +QuotedSystemIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterQuotedSystemId(this); + } +}; + +QuotedSystemIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitQuotedSystemId(this); + } +}; + +ScrollQLParser.QuotedSystemIdContext = QuotedSystemIdContext; + +ScrollQLParser.prototype.quotedSystemId = function() { + var localctx = new QuotedSystemIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 102, ScrollQLParser.RULE_quotedSystemId); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 552; + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.SYM_AT || _la === ScrollQLParser.RE_SYM_AT)) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 553; + localctx.qid = this._input.LT(1); + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.QUOTED_IDENT || _la === ScrollQLParser.RE_QUOTED_IDENT)) { + localctx.qid = this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function ResultIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_resultId; + return this; +} + +ResultIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ResultIdContext.prototype.constructor = ResultIdContext; + +ResultIdContext.prototype.rawId = function() { + return this.getTypedRuleContext(RawIdContext, 0); +}; + +ResultIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterResultId(this); + } +}; + +ResultIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitResultId(this); + } +}; + +ScrollQLParser.ResultIdContext = ResultIdContext; + +ScrollQLParser.prototype.resultId = function() { + var localctx = new ResultIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 104, ScrollQLParser.RULE_resultId); + try { + this.enterOuterAlt(localctx, 1); + this.state = 555; + this.rawId(); + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function FunctionIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_functionId; + return this; +} + +FunctionIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +FunctionIdContext.prototype.constructor = FunctionIdContext; + +FunctionIdContext.prototype.rawId = function() { + return this.getTypedRuleContext(RawIdContext, 0); +}; + +FunctionIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterFunctionId(this); + } +}; + +FunctionIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitFunctionId(this); + } +}; + +ScrollQLParser.FunctionIdContext = FunctionIdContext; + +ScrollQLParser.prototype.functionId = function() { + var localctx = new FunctionIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 106, ScrollQLParser.RULE_functionId); + try { + this.enterOuterAlt(localctx, 1); + this.state = 557; + this.rawId(); + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function RawIdContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_rawId; + return this; +} + +RawIdContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +RawIdContext.prototype.constructor = RawIdContext; + +RawIdContext.prototype.RAW_ID = function() { + return this.getToken(ScrollQLParser.RAW_ID, 0); +}; + +RawIdContext.prototype.RE_RAW_ID = function() { + return this.getToken(ScrollQLParser.RE_RAW_ID, 0); +}; + +RawIdContext.prototype.keywords = function() { + return this.getTypedRuleContext(KeywordsContext, 0); +}; + +RawIdContext.prototype.timeUnitKeywords = function() { + return this.getTypedRuleContext(TimeUnitKeywordsContext, 0); +}; + +RawIdContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterRawId(this); + } +}; + +RawIdContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitRawId(this); + } +}; + +ScrollQLParser.RawIdContext = RawIdContext; + +ScrollQLParser.prototype.rawId = function() { + var localctx = new RawIdContext(this, this._ctx, this.state); + this.enterRule(localctx, 108, ScrollQLParser.RULE_rawId); + var _la = 0; // Token type + try { + this.state = 562; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.RAW_ID: + case ScrollQLParser.RE_RAW_ID: + this.enterOuterAlt(localctx, 1); + this.state = 559; + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.RAW_ID || _la === ScrollQLParser.RE_RAW_ID)) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.K_SOURCE: + case ScrollQLParser.K_START: + case ScrollQLParser.K_END: + case ScrollQLParser.K_NOW: + case ScrollQLParser.K_LIVE: + case ScrollQLParser.K_PARSE: + case ScrollQLParser.K_SEARCH: + case ScrollQLParser.K_FIELDS: + case ScrollQLParser.K_DISPLAY: + case ScrollQLParser.K_FILTER: + case ScrollQLParser.K_STATS: + case ScrollQLParser.K_SORT: + case ScrollQLParser.K_ORDER: + case ScrollQLParser.K_ASC: + case ScrollQLParser.K_DESC: + case ScrollQLParser.K_HEAD: + case ScrollQLParser.K_LIMIT: + case ScrollQLParser.K_TAIL: + case ScrollQLParser.K_REGEX: + case ScrollQLParser.K_IN: + case ScrollQLParser.K_GROUP: + case ScrollQLParser.K_BY: + case ScrollQLParser.K_AS: + case ScrollQLParser.K_AND: + case ScrollQLParser.K_OR: + case ScrollQLParser.K_NOT: + case ScrollQLParser.K_LIKE: + case ScrollQLParser.K_MATCHES: + this.enterOuterAlt(localctx, 2); + this.state = 560; + this.keywords(); + break; + case ScrollQLParser.K_TU_MS: + case ScrollQLParser.K_TU_MSEC: + case ScrollQLParser.K_TU_MSECOND: + case ScrollQLParser.K_TU_S: + case ScrollQLParser.K_TU_SEC: + case ScrollQLParser.K_TU_SECOND: + case ScrollQLParser.K_TU_M: + case ScrollQLParser.K_TU_MIN: + case ScrollQLParser.K_TU_MINUTE: + case ScrollQLParser.K_TU_H: + case ScrollQLParser.K_TU_HR: + case ScrollQLParser.K_TU_HOUR: + case ScrollQLParser.K_TU_D: + case ScrollQLParser.K_TU_DAY: + case ScrollQLParser.K_TU_W: + case ScrollQLParser.K_TU_WEEK: + case ScrollQLParser.K_TU_MO: + case ScrollQLParser.K_TU_MON: + case ScrollQLParser.K_TU_MONTH: + case ScrollQLParser.K_TU_Q: + case ScrollQLParser.K_TU_QTR: + case ScrollQLParser.K_TU_QUARTER: + case ScrollQLParser.K_TU_Y: + case ScrollQLParser.K_TU_YR: + case ScrollQLParser.K_TU_YEAR: + this.enterOuterAlt(localctx, 3); + this.state = 561; + this.timeUnitKeywords(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function KeywordsContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_keywords; + return this; +} + +KeywordsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +KeywordsContext.prototype.constructor = KeywordsContext; + +KeywordsContext.prototype.K_SOURCE = function() { + return this.getToken(ScrollQLParser.K_SOURCE, 0); +}; + +KeywordsContext.prototype.K_START = function() { + return this.getToken(ScrollQLParser.K_START, 0); +}; + +KeywordsContext.prototype.K_END = function() { + return this.getToken(ScrollQLParser.K_END, 0); +}; + +KeywordsContext.prototype.K_NOW = function() { + return this.getToken(ScrollQLParser.K_NOW, 0); +}; + +KeywordsContext.prototype.K_LIVE = function() { + return this.getToken(ScrollQLParser.K_LIVE, 0); +}; + +KeywordsContext.prototype.K_PARSE = function() { + return this.getToken(ScrollQLParser.K_PARSE, 0); +}; + +KeywordsContext.prototype.K_SEARCH = function() { + return this.getToken(ScrollQLParser.K_SEARCH, 0); +}; + +KeywordsContext.prototype.K_FIELDS = function() { + return this.getToken(ScrollQLParser.K_FIELDS, 0); +}; + +KeywordsContext.prototype.K_DISPLAY = function() { + return this.getToken(ScrollQLParser.K_DISPLAY, 0); +}; + +KeywordsContext.prototype.K_FILTER = function() { + return this.getToken(ScrollQLParser.K_FILTER, 0); +}; + +KeywordsContext.prototype.K_STATS = function() { + return this.getToken(ScrollQLParser.K_STATS, 0); +}; + +KeywordsContext.prototype.K_GROUP = function() { + return this.getToken(ScrollQLParser.K_GROUP, 0); +}; + +KeywordsContext.prototype.K_BY = function() { + return this.getToken(ScrollQLParser.K_BY, 0); +}; + +KeywordsContext.prototype.K_AS = function() { + return this.getToken(ScrollQLParser.K_AS, 0); +}; + +KeywordsContext.prototype.K_SORT = function() { + return this.getToken(ScrollQLParser.K_SORT, 0); +}; + +KeywordsContext.prototype.K_ORDER = function() { + return this.getToken(ScrollQLParser.K_ORDER, 0); +}; + +KeywordsContext.prototype.K_ASC = function() { + return this.getToken(ScrollQLParser.K_ASC, 0); +}; + +KeywordsContext.prototype.K_DESC = function() { + return this.getToken(ScrollQLParser.K_DESC, 0); +}; + +KeywordsContext.prototype.K_HEAD = function() { + return this.getToken(ScrollQLParser.K_HEAD, 0); +}; + +KeywordsContext.prototype.K_TAIL = function() { + return this.getToken(ScrollQLParser.K_TAIL, 0); +}; + +KeywordsContext.prototype.K_LIMIT = function() { + return this.getToken(ScrollQLParser.K_LIMIT, 0); +}; + +KeywordsContext.prototype.K_AND = function() { + return this.getToken(ScrollQLParser.K_AND, 0); +}; + +KeywordsContext.prototype.K_OR = function() { + return this.getToken(ScrollQLParser.K_OR, 0); +}; + +KeywordsContext.prototype.K_NOT = function() { + return this.getToken(ScrollQLParser.K_NOT, 0); +}; + +KeywordsContext.prototype.K_LIKE = function() { + return this.getToken(ScrollQLParser.K_LIKE, 0); +}; + +KeywordsContext.prototype.K_MATCHES = function() { + return this.getToken(ScrollQLParser.K_MATCHES, 0); +}; + +KeywordsContext.prototype.K_REGEX = function() { + return this.getToken(ScrollQLParser.K_REGEX, 0); +}; + +KeywordsContext.prototype.K_IN = function() { + return this.getToken(ScrollQLParser.K_IN, 0); +}; + +KeywordsContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterKeywords(this); + } +}; + +KeywordsContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitKeywords(this); + } +}; + +ScrollQLParser.KeywordsContext = KeywordsContext; + +ScrollQLParser.prototype.keywords = function() { + var localctx = new KeywordsContext(this, this._ctx, this.state); + this.enterRule(localctx, 110, ScrollQLParser.RULE_keywords); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 564; + _la = this._input.LA(1); + if ( + !( + (_la & ~0x1f) == 0 && + ((1 << _la) & + ((1 << ScrollQLParser.K_SOURCE) | + (1 << ScrollQLParser.K_START) | + (1 << ScrollQLParser.K_END) | + (1 << ScrollQLParser.K_NOW) | + (1 << ScrollQLParser.K_LIVE) | + (1 << ScrollQLParser.K_PARSE) | + (1 << ScrollQLParser.K_SEARCH) | + (1 << ScrollQLParser.K_FIELDS) | + (1 << ScrollQLParser.K_DISPLAY) | + (1 << ScrollQLParser.K_FILTER) | + (1 << ScrollQLParser.K_STATS) | + (1 << ScrollQLParser.K_SORT) | + (1 << ScrollQLParser.K_ORDER) | + (1 << ScrollQLParser.K_ASC) | + (1 << ScrollQLParser.K_DESC) | + (1 << ScrollQLParser.K_HEAD) | + (1 << ScrollQLParser.K_LIMIT) | + (1 << ScrollQLParser.K_TAIL) | + (1 << ScrollQLParser.K_REGEX) | + (1 << ScrollQLParser.K_IN) | + (1 << ScrollQLParser.K_GROUP) | + (1 << ScrollQLParser.K_BY) | + (1 << ScrollQLParser.K_AS) | + (1 << ScrollQLParser.K_AND) | + (1 << ScrollQLParser.K_OR) | + (1 << ScrollQLParser.K_NOT) | + (1 << ScrollQLParser.K_LIKE) | + (1 << ScrollQLParser.K_MATCHES))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +function TimeUnitKeywordsContext(parser, parent, invokingState) { + if (parent === undefined) { + parent = null; + } + if (invokingState === undefined || invokingState === null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ScrollQLParser.RULE_timeUnitKeywords; + return this; +} + +TimeUnitKeywordsContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +TimeUnitKeywordsContext.prototype.constructor = TimeUnitKeywordsContext; + +TimeUnitKeywordsContext.prototype.copyFrom = function(ctx) { + antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx); +}; + +function TimeUnitYearsContext(parser, ctx) { + TimeUnitKeywordsContext.call(this, parser); + TimeUnitKeywordsContext.prototype.copyFrom.call(this, ctx); + return this; +} + +TimeUnitYearsContext.prototype = Object.create(TimeUnitKeywordsContext.prototype); +TimeUnitYearsContext.prototype.constructor = TimeUnitYearsContext; + +ScrollQLParser.TimeUnitYearsContext = TimeUnitYearsContext; + +TimeUnitYearsContext.prototype.K_TU_Y = function() { + return this.getToken(ScrollQLParser.K_TU_Y, 0); +}; + +TimeUnitYearsContext.prototype.K_TU_YR = function() { + return this.getToken(ScrollQLParser.K_TU_YR, 0); +}; + +TimeUnitYearsContext.prototype.K_TU_YEAR = function() { + return this.getToken(ScrollQLParser.K_TU_YEAR, 0); +}; +TimeUnitYearsContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTimeUnitYears(this); + } +}; + +TimeUnitYearsContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTimeUnitYears(this); + } +}; + +function TimeUnitMinutesContext(parser, ctx) { + TimeUnitKeywordsContext.call(this, parser); + TimeUnitKeywordsContext.prototype.copyFrom.call(this, ctx); + return this; +} + +TimeUnitMinutesContext.prototype = Object.create(TimeUnitKeywordsContext.prototype); +TimeUnitMinutesContext.prototype.constructor = TimeUnitMinutesContext; + +ScrollQLParser.TimeUnitMinutesContext = TimeUnitMinutesContext; + +TimeUnitMinutesContext.prototype.K_TU_M = function() { + return this.getToken(ScrollQLParser.K_TU_M, 0); +}; + +TimeUnitMinutesContext.prototype.K_TU_MIN = function() { + return this.getToken(ScrollQLParser.K_TU_MIN, 0); +}; + +TimeUnitMinutesContext.prototype.K_TU_MINUTE = function() { + return this.getToken(ScrollQLParser.K_TU_MINUTE, 0); +}; +TimeUnitMinutesContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTimeUnitMinutes(this); + } +}; + +TimeUnitMinutesContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTimeUnitMinutes(this); + } +}; + +function TimeUnitHoursContext(parser, ctx) { + TimeUnitKeywordsContext.call(this, parser); + TimeUnitKeywordsContext.prototype.copyFrom.call(this, ctx); + return this; +} + +TimeUnitHoursContext.prototype = Object.create(TimeUnitKeywordsContext.prototype); +TimeUnitHoursContext.prototype.constructor = TimeUnitHoursContext; + +ScrollQLParser.TimeUnitHoursContext = TimeUnitHoursContext; + +TimeUnitHoursContext.prototype.K_TU_H = function() { + return this.getToken(ScrollQLParser.K_TU_H, 0); +}; + +TimeUnitHoursContext.prototype.K_TU_HR = function() { + return this.getToken(ScrollQLParser.K_TU_HR, 0); +}; + +TimeUnitHoursContext.prototype.K_TU_HOUR = function() { + return this.getToken(ScrollQLParser.K_TU_HOUR, 0); +}; +TimeUnitHoursContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTimeUnitHours(this); + } +}; + +TimeUnitHoursContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTimeUnitHours(this); + } +}; + +function TimeUnitWeeksContext(parser, ctx) { + TimeUnitKeywordsContext.call(this, parser); + TimeUnitKeywordsContext.prototype.copyFrom.call(this, ctx); + return this; +} + +TimeUnitWeeksContext.prototype = Object.create(TimeUnitKeywordsContext.prototype); +TimeUnitWeeksContext.prototype.constructor = TimeUnitWeeksContext; + +ScrollQLParser.TimeUnitWeeksContext = TimeUnitWeeksContext; + +TimeUnitWeeksContext.prototype.K_TU_W = function() { + return this.getToken(ScrollQLParser.K_TU_W, 0); +}; + +TimeUnitWeeksContext.prototype.K_TU_WEEK = function() { + return this.getToken(ScrollQLParser.K_TU_WEEK, 0); +}; +TimeUnitWeeksContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTimeUnitWeeks(this); + } +}; + +TimeUnitWeeksContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTimeUnitWeeks(this); + } +}; + +function TimeUnitDaysContext(parser, ctx) { + TimeUnitKeywordsContext.call(this, parser); + TimeUnitKeywordsContext.prototype.copyFrom.call(this, ctx); + return this; +} + +TimeUnitDaysContext.prototype = Object.create(TimeUnitKeywordsContext.prototype); +TimeUnitDaysContext.prototype.constructor = TimeUnitDaysContext; + +ScrollQLParser.TimeUnitDaysContext = TimeUnitDaysContext; + +TimeUnitDaysContext.prototype.K_TU_D = function() { + return this.getToken(ScrollQLParser.K_TU_D, 0); +}; + +TimeUnitDaysContext.prototype.K_TU_DAY = function() { + return this.getToken(ScrollQLParser.K_TU_DAY, 0); +}; +TimeUnitDaysContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTimeUnitDays(this); + } +}; + +TimeUnitDaysContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTimeUnitDays(this); + } +}; + +function TimeUnitMonthsContext(parser, ctx) { + TimeUnitKeywordsContext.call(this, parser); + TimeUnitKeywordsContext.prototype.copyFrom.call(this, ctx); + return this; +} + +TimeUnitMonthsContext.prototype = Object.create(TimeUnitKeywordsContext.prototype); +TimeUnitMonthsContext.prototype.constructor = TimeUnitMonthsContext; + +ScrollQLParser.TimeUnitMonthsContext = TimeUnitMonthsContext; + +TimeUnitMonthsContext.prototype.K_TU_MO = function() { + return this.getToken(ScrollQLParser.K_TU_MO, 0); +}; + +TimeUnitMonthsContext.prototype.K_TU_MON = function() { + return this.getToken(ScrollQLParser.K_TU_MON, 0); +}; + +TimeUnitMonthsContext.prototype.K_TU_MONTH = function() { + return this.getToken(ScrollQLParser.K_TU_MONTH, 0); +}; +TimeUnitMonthsContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTimeUnitMonths(this); + } +}; + +TimeUnitMonthsContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTimeUnitMonths(this); + } +}; + +function TimeUnitQuartersContext(parser, ctx) { + TimeUnitKeywordsContext.call(this, parser); + TimeUnitKeywordsContext.prototype.copyFrom.call(this, ctx); + return this; +} + +TimeUnitQuartersContext.prototype = Object.create(TimeUnitKeywordsContext.prototype); +TimeUnitQuartersContext.prototype.constructor = TimeUnitQuartersContext; + +ScrollQLParser.TimeUnitQuartersContext = TimeUnitQuartersContext; + +TimeUnitQuartersContext.prototype.K_TU_Q = function() { + return this.getToken(ScrollQLParser.K_TU_Q, 0); +}; + +TimeUnitQuartersContext.prototype.K_TU_QTR = function() { + return this.getToken(ScrollQLParser.K_TU_QTR, 0); +}; + +TimeUnitQuartersContext.prototype.K_TU_QUARTER = function() { + return this.getToken(ScrollQLParser.K_TU_QUARTER, 0); +}; +TimeUnitQuartersContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTimeUnitQuarters(this); + } +}; + +TimeUnitQuartersContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTimeUnitQuarters(this); + } +}; + +function TimeUnitMilliSecondsContext(parser, ctx) { + TimeUnitKeywordsContext.call(this, parser); + TimeUnitKeywordsContext.prototype.copyFrom.call(this, ctx); + return this; +} + +TimeUnitMilliSecondsContext.prototype = Object.create(TimeUnitKeywordsContext.prototype); +TimeUnitMilliSecondsContext.prototype.constructor = TimeUnitMilliSecondsContext; + +ScrollQLParser.TimeUnitMilliSecondsContext = TimeUnitMilliSecondsContext; + +TimeUnitMilliSecondsContext.prototype.K_TU_MS = function() { + return this.getToken(ScrollQLParser.K_TU_MS, 0); +}; + +TimeUnitMilliSecondsContext.prototype.K_TU_MSEC = function() { + return this.getToken(ScrollQLParser.K_TU_MSEC, 0); +}; + +TimeUnitMilliSecondsContext.prototype.K_TU_MSECOND = function() { + return this.getToken(ScrollQLParser.K_TU_MSECOND, 0); +}; +TimeUnitMilliSecondsContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTimeUnitMilliSeconds(this); + } +}; + +TimeUnitMilliSecondsContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTimeUnitMilliSeconds(this); + } +}; + +function TimeUnitSecondsContext(parser, ctx) { + TimeUnitKeywordsContext.call(this, parser); + TimeUnitKeywordsContext.prototype.copyFrom.call(this, ctx); + return this; +} + +TimeUnitSecondsContext.prototype = Object.create(TimeUnitKeywordsContext.prototype); +TimeUnitSecondsContext.prototype.constructor = TimeUnitSecondsContext; + +ScrollQLParser.TimeUnitSecondsContext = TimeUnitSecondsContext; + +TimeUnitSecondsContext.prototype.K_TU_S = function() { + return this.getToken(ScrollQLParser.K_TU_S, 0); +}; + +TimeUnitSecondsContext.prototype.K_TU_SEC = function() { + return this.getToken(ScrollQLParser.K_TU_SEC, 0); +}; + +TimeUnitSecondsContext.prototype.K_TU_SECOND = function() { + return this.getToken(ScrollQLParser.K_TU_SECOND, 0); +}; +TimeUnitSecondsContext.prototype.enterRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.enterTimeUnitSeconds(this); + } +}; + +TimeUnitSecondsContext.prototype.exitRule = function(listener) { + if (listener instanceof ScrollQLParserListener) { + listener.exitTimeUnitSeconds(this); + } +}; + +ScrollQLParser.TimeUnitKeywordsContext = TimeUnitKeywordsContext; + +ScrollQLParser.prototype.timeUnitKeywords = function() { + var localctx = new TimeUnitKeywordsContext(this, this._ctx, this.state); + this.enterRule(localctx, 112, ScrollQLParser.RULE_timeUnitKeywords); + var _la = 0; // Token type + try { + this.state = 575; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case ScrollQLParser.K_TU_MS: + case ScrollQLParser.K_TU_MSEC: + case ScrollQLParser.K_TU_MSECOND: + localctx = new TimeUnitMilliSecondsContext(this, localctx); + this.enterOuterAlt(localctx, 1); + this.state = 566; + _la = this._input.LA(1); + if ( + !( + ((_la - 31) & ~0x1f) == 0 && + ((1 << (_la - 31)) & + ((1 << (ScrollQLParser.K_TU_MS - 31)) | + (1 << (ScrollQLParser.K_TU_MSEC - 31)) | + (1 << (ScrollQLParser.K_TU_MSECOND - 31)))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.K_TU_S: + case ScrollQLParser.K_TU_SEC: + case ScrollQLParser.K_TU_SECOND: + localctx = new TimeUnitSecondsContext(this, localctx); + this.enterOuterAlt(localctx, 2); + this.state = 567; + _la = this._input.LA(1); + if ( + !( + ((_la - 34) & ~0x1f) == 0 && + ((1 << (_la - 34)) & + ((1 << (ScrollQLParser.K_TU_S - 34)) | + (1 << (ScrollQLParser.K_TU_SEC - 34)) | + (1 << (ScrollQLParser.K_TU_SECOND - 34)))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.K_TU_M: + case ScrollQLParser.K_TU_MIN: + case ScrollQLParser.K_TU_MINUTE: + localctx = new TimeUnitMinutesContext(this, localctx); + this.enterOuterAlt(localctx, 3); + this.state = 568; + _la = this._input.LA(1); + if ( + !( + ((_la - 37) & ~0x1f) == 0 && + ((1 << (_la - 37)) & + ((1 << (ScrollQLParser.K_TU_M - 37)) | + (1 << (ScrollQLParser.K_TU_MIN - 37)) | + (1 << (ScrollQLParser.K_TU_MINUTE - 37)))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.K_TU_H: + case ScrollQLParser.K_TU_HR: + case ScrollQLParser.K_TU_HOUR: + localctx = new TimeUnitHoursContext(this, localctx); + this.enterOuterAlt(localctx, 4); + this.state = 569; + _la = this._input.LA(1); + if ( + !( + ((_la - 40) & ~0x1f) == 0 && + ((1 << (_la - 40)) & + ((1 << (ScrollQLParser.K_TU_H - 40)) | + (1 << (ScrollQLParser.K_TU_HR - 40)) | + (1 << (ScrollQLParser.K_TU_HOUR - 40)))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.K_TU_D: + case ScrollQLParser.K_TU_DAY: + localctx = new TimeUnitDaysContext(this, localctx); + this.enterOuterAlt(localctx, 5); + this.state = 570; + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.K_TU_D || _la === ScrollQLParser.K_TU_DAY)) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.K_TU_W: + case ScrollQLParser.K_TU_WEEK: + localctx = new TimeUnitWeeksContext(this, localctx); + this.enterOuterAlt(localctx, 6); + this.state = 571; + _la = this._input.LA(1); + if (!(_la === ScrollQLParser.K_TU_W || _la === ScrollQLParser.K_TU_WEEK)) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.K_TU_MO: + case ScrollQLParser.K_TU_MON: + case ScrollQLParser.K_TU_MONTH: + localctx = new TimeUnitMonthsContext(this, localctx); + this.enterOuterAlt(localctx, 7); + this.state = 572; + _la = this._input.LA(1); + if ( + !( + ((_la - 47) & ~0x1f) == 0 && + ((1 << (_la - 47)) & + ((1 << (ScrollQLParser.K_TU_MO - 47)) | + (1 << (ScrollQLParser.K_TU_MON - 47)) | + (1 << (ScrollQLParser.K_TU_MONTH - 47)))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.K_TU_Q: + case ScrollQLParser.K_TU_QTR: + case ScrollQLParser.K_TU_QUARTER: + localctx = new TimeUnitQuartersContext(this, localctx); + this.enterOuterAlt(localctx, 8); + this.state = 573; + _la = this._input.LA(1); + if ( + !( + ((_la - 50) & ~0x1f) == 0 && + ((1 << (_la - 50)) & + ((1 << (ScrollQLParser.K_TU_Q - 50)) | + (1 << (ScrollQLParser.K_TU_QTR - 50)) | + (1 << (ScrollQLParser.K_TU_QUARTER - 50)))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + case ScrollQLParser.K_TU_Y: + case ScrollQLParser.K_TU_YR: + case ScrollQLParser.K_TU_YEAR: + localctx = new TimeUnitYearsContext(this, localctx); + this.enterOuterAlt(localctx, 9); + this.state = 574; + _la = this._input.LA(1); + if ( + !( + ((_la - 53) & ~0x1f) == 0 && + ((1 << (_la - 53)) & + ((1 << (ScrollQLParser.K_TU_Y - 53)) | + (1 << (ScrollQLParser.K_TU_YR - 53)) | + (1 << (ScrollQLParser.K_TU_YEAR - 53)))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this); + } else { + this._errHandler.reportMatch(this); + this.consume(); + } + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } catch (re) { + if (re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + +ScrollQLParser.prototype.sempred = function(localctx, ruleIndex, predIndex) { + switch (ruleIndex) { + case 22: + return this.searchExpr_sempred(localctx, predIndex); + case 29: + return this.expression_sempred(localctx, predIndex); + default: + throw 'No predicate with index:' + ruleIndex; + } +}; + +ScrollQLParser.prototype.searchExpr_sempred = function(localctx, predIndex) { + switch (predIndex) { + case 0: + return this.precpred(this._ctx, 3); + case 1: + return this.precpred(this._ctx, 2); + default: + throw 'No predicate with index:' + predIndex; + } +}; + +ScrollQLParser.prototype.expression_sempred = function(localctx, predIndex) { + switch (predIndex) { + case 2: + return this.precpred(this._ctx, 13); + case 3: + return this.precpred(this._ctx, 9); + case 4: + return this.precpred(this._ctx, 8); + case 5: + return this.precpred(this._ctx, 7); + case 6: + return this.precpred(this._ctx, 6); + case 7: + return this.precpred(this._ctx, 3); + case 8: + return this.precpred(this._ctx, 2); + case 9: + return this.precpred(this._ctx, 5); + case 10: + return this.precpred(this._ctx, 4); + default: + throw 'No predicate with index:' + predIndex; + } +}; + +exports.ScrollQLParser = ScrollQLParser; diff --git a/public/app/plugins/datasource/cloudwatch/utils/query/ScrollQLParserListener.js b/public/app/plugins/datasource/cloudwatch/utils/query/ScrollQLParserListener.js new file mode 100644 index 00000000000..97f57d4035a --- /dev/null +++ b/public/app/plugins/datasource/cloudwatch/utils/query/ScrollQLParserListener.js @@ -0,0 +1,566 @@ +// Generated from ScrollQLParser.g4 by ANTLR 4.8 +// jshint ignore: start +var antlr4 = require('antlr4/index'); + +// This class defines a complete listener for a parse tree produced by ScrollQLParser. +function ScrollQLParserListener() { + antlr4.tree.ParseTreeListener.call(this); + return this; +} + +ScrollQLParserListener.prototype = Object.create(antlr4.tree.ParseTreeListener.prototype); +ScrollQLParserListener.prototype.constructor = ScrollQLParserListener; + +// Enter a parse tree produced by ScrollQLParser#query. +ScrollQLParserListener.prototype.enterQuery = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#query. +ScrollQLParserListener.prototype.exitQuery = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logQuery. +ScrollQLParserListener.prototype.enterLogQuery = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logQuery. +ScrollQLParserListener.prototype.exitLogQuery = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logAesthetic. +ScrollQLParserListener.prototype.enterLogAesthetic = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logAesthetic. +ScrollQLParserListener.prototype.exitLogAesthetic = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logSourceStage. +ScrollQLParserListener.prototype.enterLogSourceStage = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logSourceStage. +ScrollQLParserListener.prototype.exitLogSourceStage = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logStatsStage. +ScrollQLParserListener.prototype.enterLogStatsStage = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logStatsStage. +ScrollQLParserListener.prototype.exitLogStatsStage = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logOp. +ScrollQLParserListener.prototype.enterLogOp = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logOp. +ScrollQLParserListener.prototype.exitLogOp = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logAestheticOp. +ScrollQLParserListener.prototype.enterLogAestheticOp = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logAestheticOp. +ScrollQLParserListener.prototype.exitLogAestheticOp = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logSource. +ScrollQLParserListener.prototype.enterLogSource = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logSource. +ScrollQLParserListener.prototype.exitLogSource = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#timeExpr. +ScrollQLParserListener.prototype.enterTimeExpr = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#timeExpr. +ScrollQLParserListener.prototype.exitTimeExpr = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#nowTimeExpr. +ScrollQLParserListener.prototype.enterNowTimeExpr = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#nowTimeExpr. +ScrollQLParserListener.prototype.exitNowTimeExpr = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#negRelativeTimeExpr. +ScrollQLParserListener.prototype.enterNegRelativeTimeExpr = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#negRelativeTimeExpr. +ScrollQLParserListener.prototype.exitNegRelativeTimeExpr = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#posRelativeTimeExpr. +ScrollQLParserListener.prototype.enterPosRelativeTimeExpr = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#posRelativeTimeExpr. +ScrollQLParserListener.prototype.exitPosRelativeTimeExpr = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#iso8601TimeExpr. +ScrollQLParserListener.prototype.enterIso8601TimeExpr = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#iso8601TimeExpr. +ScrollQLParserListener.prototype.exitIso8601TimeExpr = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#epochTimeExpr. +ScrollQLParserListener.prototype.enterEpochTimeExpr = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#epochTimeExpr. +ScrollQLParserListener.prototype.exitEpochTimeExpr = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#bareSpaceDelimited. +ScrollQLParserListener.prototype.enterBareSpaceDelimited = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#bareSpaceDelimited. +ScrollQLParserListener.prototype.exitBareSpaceDelimited = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logStats. +ScrollQLParserListener.prototype.enterLogStats = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logStats. +ScrollQLParserListener.prototype.exitLogStats = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#statsExpr. +ScrollQLParserListener.prototype.enterStatsExpr = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#statsExpr. +ScrollQLParserListener.prototype.exitStatsExpr = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#statsGroupFieldId. +ScrollQLParserListener.prototype.enterStatsGroupFieldId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#statsGroupFieldId. +ScrollQLParserListener.prototype.exitStatsGroupFieldId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#statsGroupFieldProjection. +ScrollQLParserListener.prototype.enterStatsGroupFieldProjection = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#statsGroupFieldProjection. +ScrollQLParserListener.prototype.exitStatsGroupFieldProjection = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logOpFieldsFields. +ScrollQLParserListener.prototype.enterLogOpFieldsFields = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logOpFieldsFields. +ScrollQLParserListener.prototype.exitLogOpFieldsFields = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logOpFieldsDisplay. +ScrollQLParserListener.prototype.enterLogOpFieldsDisplay = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logOpFieldsDisplay. +ScrollQLParserListener.prototype.exitLogOpFieldsDisplay = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#fieldSpec. +ScrollQLParserListener.prototype.enterFieldSpec = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#fieldSpec. +ScrollQLParserListener.prototype.exitFieldSpec = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logOpParse. +ScrollQLParserListener.prototype.enterLogOpParse = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logOpParse. +ScrollQLParserListener.prototype.exitLogOpParse = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logOpSearch. +ScrollQLParserListener.prototype.enterLogOpSearch = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logOpSearch. +ScrollQLParserListener.prototype.exitLogOpSearch = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#implicitLogOpSearch. +ScrollQLParserListener.prototype.enterImplicitLogOpSearch = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#implicitLogOpSearch. +ScrollQLParserListener.prototype.exitImplicitLogOpSearch = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#searchExprTerm. +ScrollQLParserListener.prototype.enterSearchExprTerm = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#searchExprTerm. +ScrollQLParserListener.prototype.exitSearchExprTerm = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#searchExprNot. +ScrollQLParserListener.prototype.enterSearchExprNot = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#searchExprNot. +ScrollQLParserListener.prototype.exitSearchExprNot = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#searchExprAnd. +ScrollQLParserListener.prototype.enterSearchExprAnd = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#searchExprAnd. +ScrollQLParserListener.prototype.exitSearchExprAnd = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#searchExprNested. +ScrollQLParserListener.prototype.enterSearchExprNested = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#searchExprNested. +ScrollQLParserListener.prototype.exitSearchExprNested = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#searchExprOr. +ScrollQLParserListener.prototype.enterSearchExprOr = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#searchExprOr. +ScrollQLParserListener.prototype.exitSearchExprOr = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#searchTerm. +ScrollQLParserListener.prototype.enterSearchTerm = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#searchTerm. +ScrollQLParserListener.prototype.exitSearchTerm = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logOpFilter. +ScrollQLParserListener.prototype.enterLogOpFilter = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logOpFilter. +ScrollQLParserListener.prototype.exitLogOpFilter = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logOpSort. +ScrollQLParserListener.prototype.enterLogOpSort = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logOpSort. +ScrollQLParserListener.prototype.exitLogOpSort = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#sortExprDesc. +ScrollQLParserListener.prototype.enterSortExprDesc = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#sortExprDesc. +ScrollQLParserListener.prototype.exitSortExprDesc = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#sortExprAsc. +ScrollQLParserListener.prototype.enterSortExprAsc = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#sortExprAsc. +ScrollQLParserListener.prototype.exitSortExprAsc = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logOpLimitHead. +ScrollQLParserListener.prototype.enterLogOpLimitHead = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logOpLimitHead. +ScrollQLParserListener.prototype.exitLogOpLimitHead = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logOpLimitTail. +ScrollQLParserListener.prototype.enterLogOpLimitTail = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logOpLimitTail. +ScrollQLParserListener.prototype.exitLogOpLimitTail = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionRoot. +ScrollQLParserListener.prototype.enterExpressionRoot = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionRoot. +ScrollQLParserListener.prototype.exitExpressionRoot = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionAddSub. +ScrollQLParserListener.prototype.enterExpressionAddSub = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionAddSub. +ScrollQLParserListener.prototype.exitExpressionAddSub = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionEq. +ScrollQLParserListener.prototype.enterExpressionEq = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionEq. +ScrollQLParserListener.prototype.exitExpressionEq = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionComp. +ScrollQLParserListener.prototype.enterExpressionComp = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionComp. +ScrollQLParserListener.prototype.exitExpressionComp = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionExpo. +ScrollQLParserListener.prototype.enterExpressionExpo = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionExpo. +ScrollQLParserListener.prototype.exitExpressionExpo = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionLike. +ScrollQLParserListener.prototype.enterExpressionLike = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionLike. +ScrollQLParserListener.prototype.exitExpressionLike = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionTerm. +ScrollQLParserListener.prototype.enterExpressionTerm = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionTerm. +ScrollQLParserListener.prototype.exitExpressionTerm = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionNeg. +ScrollQLParserListener.prototype.enterExpressionNeg = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionNeg. +ScrollQLParserListener.prototype.exitExpressionNeg = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionNot. +ScrollQLParserListener.prototype.enterExpressionNot = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionNot. +ScrollQLParserListener.prototype.exitExpressionNot = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionPos. +ScrollQLParserListener.prototype.enterExpressionPos = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionPos. +ScrollQLParserListener.prototype.exitExpressionPos = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionMulDivMod. +ScrollQLParserListener.prototype.enterExpressionMulDivMod = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionMulDivMod. +ScrollQLParserListener.prototype.exitExpressionMulDivMod = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionAnd. +ScrollQLParserListener.prototype.enterExpressionAnd = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionAnd. +ScrollQLParserListener.prototype.exitExpressionAnd = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionNested. +ScrollQLParserListener.prototype.enterExpressionNested = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionNested. +ScrollQLParserListener.prototype.exitExpressionNested = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionOr. +ScrollQLParserListener.prototype.enterExpressionOr = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionOr. +ScrollQLParserListener.prototype.exitExpressionOr = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#expressionIn. +ScrollQLParserListener.prototype.enterExpressionIn = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#expressionIn. +ScrollQLParserListener.prototype.exitExpressionIn = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#termId. +ScrollQLParserListener.prototype.enterTermId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#termId. +ScrollQLParserListener.prototype.exitTermId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#termNum. +ScrollQLParserListener.prototype.enterTermNum = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#termNum. +ScrollQLParserListener.prototype.exitTermNum = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#termStr. +ScrollQLParserListener.prototype.enterTermStr = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#termStr. +ScrollQLParserListener.prototype.exitTermStr = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#termFn. +ScrollQLParserListener.prototype.enterTermFn = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#termFn. +ScrollQLParserListener.prototype.exitTermFn = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#likeTerm. +ScrollQLParserListener.prototype.enterLikeTerm = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#likeTerm. +ScrollQLParserListener.prototype.exitLikeTerm = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#functionWithArgs. +ScrollQLParserListener.prototype.enterFunctionWithArgs = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#functionWithArgs. +ScrollQLParserListener.prototype.exitFunctionWithArgs = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#functionWithNoArgs. +ScrollQLParserListener.prototype.enterFunctionWithNoArgs = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#functionWithNoArgs. +ScrollQLParserListener.prototype.exitFunctionWithNoArgs = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#functionArgTimePeriod. +ScrollQLParserListener.prototype.enterFunctionArgTimePeriod = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#functionArgTimePeriod. +ScrollQLParserListener.prototype.exitFunctionArgTimePeriod = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#functionArgFieldClause. +ScrollQLParserListener.prototype.enterFunctionArgFieldClause = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#functionArgFieldClause. +ScrollQLParserListener.prototype.exitFunctionArgFieldClause = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#array. +ScrollQLParserListener.prototype.enterArray = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#array. +ScrollQLParserListener.prototype.exitArray = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#arrayElem. +ScrollQLParserListener.prototype.enterArrayElem = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#arrayElem. +ScrollQLParserListener.prototype.exitArrayElem = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#number. +ScrollQLParserListener.prototype.enterNumber = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#number. +ScrollQLParserListener.prototype.exitNumber = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#string. +ScrollQLParserListener.prototype.enterString = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#string. +ScrollQLParserListener.prototype.exitString = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#stringOrBareString. +ScrollQLParserListener.prototype.enterStringOrBareString = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#stringOrBareString. +ScrollQLParserListener.prototype.exitStringOrBareString = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#regex. +ScrollQLParserListener.prototype.enterRegex = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#regex. +ScrollQLParserListener.prototype.exitRegex = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#regexString. +ScrollQLParserListener.prototype.enterRegexString = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#regexString. +ScrollQLParserListener.prototype.exitRegexString = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#logId. +ScrollQLParserListener.prototype.enterLogId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#logId. +ScrollQLParserListener.prototype.exitLogId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#fieldId. +ScrollQLParserListener.prototype.enterFieldId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#fieldId. +ScrollQLParserListener.prototype.exitFieldId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#aliasId. +ScrollQLParserListener.prototype.enterAliasId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#aliasId. +ScrollQLParserListener.prototype.exitAliasId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#userId. +ScrollQLParserListener.prototype.enterUserId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#userId. +ScrollQLParserListener.prototype.exitUserId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#unquotedUserId. +ScrollQLParserListener.prototype.enterUnquotedUserId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#unquotedUserId. +ScrollQLParserListener.prototype.exitUnquotedUserId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#unquotedUserAtId. +ScrollQLParserListener.prototype.enterUnquotedUserAtId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#unquotedUserAtId. +ScrollQLParserListener.prototype.exitUnquotedUserAtId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#unquotedUserBareId. +ScrollQLParserListener.prototype.enterUnquotedUserBareId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#unquotedUserBareId. +ScrollQLParserListener.prototype.exitUnquotedUserBareId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#quotedUserId. +ScrollQLParserListener.prototype.enterQuotedUserId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#quotedUserId. +ScrollQLParserListener.prototype.exitQuotedUserId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#systemId. +ScrollQLParserListener.prototype.enterSystemId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#systemId. +ScrollQLParserListener.prototype.exitSystemId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#unquotedSystemId. +ScrollQLParserListener.prototype.enterUnquotedSystemId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#unquotedSystemId. +ScrollQLParserListener.prototype.exitUnquotedSystemId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#quotedSystemId. +ScrollQLParserListener.prototype.enterQuotedSystemId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#quotedSystemId. +ScrollQLParserListener.prototype.exitQuotedSystemId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#resultId. +ScrollQLParserListener.prototype.enterResultId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#resultId. +ScrollQLParserListener.prototype.exitResultId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#functionId. +ScrollQLParserListener.prototype.enterFunctionId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#functionId. +ScrollQLParserListener.prototype.exitFunctionId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#rawId. +ScrollQLParserListener.prototype.enterRawId = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#rawId. +ScrollQLParserListener.prototype.exitRawId = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#keywords. +ScrollQLParserListener.prototype.enterKeywords = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#keywords. +ScrollQLParserListener.prototype.exitKeywords = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#timeUnitMilliSeconds. +ScrollQLParserListener.prototype.enterTimeUnitMilliSeconds = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#timeUnitMilliSeconds. +ScrollQLParserListener.prototype.exitTimeUnitMilliSeconds = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#timeUnitSeconds. +ScrollQLParserListener.prototype.enterTimeUnitSeconds = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#timeUnitSeconds. +ScrollQLParserListener.prototype.exitTimeUnitSeconds = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#timeUnitMinutes. +ScrollQLParserListener.prototype.enterTimeUnitMinutes = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#timeUnitMinutes. +ScrollQLParserListener.prototype.exitTimeUnitMinutes = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#timeUnitHours. +ScrollQLParserListener.prototype.enterTimeUnitHours = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#timeUnitHours. +ScrollQLParserListener.prototype.exitTimeUnitHours = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#timeUnitDays. +ScrollQLParserListener.prototype.enterTimeUnitDays = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#timeUnitDays. +ScrollQLParserListener.prototype.exitTimeUnitDays = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#timeUnitWeeks. +ScrollQLParserListener.prototype.enterTimeUnitWeeks = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#timeUnitWeeks. +ScrollQLParserListener.prototype.exitTimeUnitWeeks = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#timeUnitMonths. +ScrollQLParserListener.prototype.enterTimeUnitMonths = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#timeUnitMonths. +ScrollQLParserListener.prototype.exitTimeUnitMonths = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#timeUnitQuarters. +ScrollQLParserListener.prototype.enterTimeUnitQuarters = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#timeUnitQuarters. +ScrollQLParserListener.prototype.exitTimeUnitQuarters = function(ctx) {}; + +// Enter a parse tree produced by ScrollQLParser#timeUnitYears. +ScrollQLParserListener.prototype.enterTimeUnitYears = function(ctx) {}; + +// Exit a parse tree produced by ScrollQLParser#timeUnitYears. +ScrollQLParserListener.prototype.exitTimeUnitYears = function(ctx) {}; + +exports.ScrollQLParserListener = ScrollQLParserListener; diff --git a/public/app/plugins/datasource/cloudwatch/utils/query/getStatsGroups.test.ts b/public/app/plugins/datasource/cloudwatch/utils/query/getStatsGroups.test.ts new file mode 100644 index 00000000000..7cd7801efab --- /dev/null +++ b/public/app/plugins/datasource/cloudwatch/utils/query/getStatsGroups.test.ts @@ -0,0 +1,69 @@ +import { getStatsGroups } from './getStatsGroups'; + +describe('GroupListener', () => { + it('should correctly parse groups in stats query', () => { + const testQueries = [ + { + query: + 'filter @message like /Exception/ | stats count(*) as exceptionCount by bin(1h) | sort exceptionCount desc', + expected: ['bin(1h)'], + }, + { + query: `filter @type = "REPORT" + | stats max(@memorySize / 1024 / 1024) as provisonedMemoryMB, + min(@maxMemoryUsed / 1024 / 1024) as smallestMemoryRequestMB, + avg(@maxMemoryUsed / 1024 / 1024) as avgMemoryUsedMB, + max(@maxMemoryUsed / 1024 / 1024) as maxMemoryUsedMB, + provisonedMemoryMB - maxMemoryUsedMB as overProvisionedMB`, + expected: [], + }, + { + query: `stats count(@message) by bin(1h), @log, @logStream as fieldAlias`, + expected: ['bin(1h)', '@log', 'fieldAlias'], + }, + + { + query: `stats sum(packets) as packetsTransferred by srcAddr, dstAddr + | sort packetsTransferred desc + | limit 15`, + expected: ['srcAddr', 'dstAddr'], + }, + { + query: `filter isIpv4InSubnet(srcAddr, "192.0.2.0/24") + | stats sum(bytes) as bytesTransferred by dstAddr + | sort bytesTransferred desc + | limit 15`, + expected: ['dstAddr'], + }, + { + query: `filter logStatus="SKIPDATA" + | stats count(*) by bin(1h) as t + | sort t + `, + expected: ['t'], + }, + { + query: `stats count(*) by queryType, bin(1h)`, + expected: ['queryType', 'bin(1h)'], + }, + { + query: `parse @message "user=*, method:*, latency := *" as @user, + @method, @latency | stats avg(@latency) by @method, + @user`, + expected: ['@method', '@user'], + }, + { + query: 'fields @timestamp, @message | sort @timestamp desc | limit 25', + expected: [], + }, + { + query: `stats count(*)`, + expected: [], + }, + ]; + + for (const { query, expected } of testQueries) { + expect(getStatsGroups(query)).toStrictEqual(expected); + } + }); +}); diff --git a/public/app/plugins/datasource/cloudwatch/utils/query/getStatsGroups.ts b/public/app/plugins/datasource/cloudwatch/utils/query/getStatsGroups.ts new file mode 100644 index 00000000000..fe15e3ed354 --- /dev/null +++ b/public/app/plugins/datasource/cloudwatch/utils/query/getStatsGroups.ts @@ -0,0 +1,41 @@ +const antlr4 = require('antlr4'); +const ScrollQLLexer = require('./ScrollQLLexer').ScrollQLLexer; +const ScrollQLParser = require('./ScrollQLParser').ScrollQLParser; +const ScrollQLParserListener = require('./ScrollQLParserListener').ScrollQLParserListener; + +class GroupListener extends ScrollQLParserListener { + groupNames: string[] = []; + + enterLogStats(ctx: any) { + this.groupNames = []; + if (ctx.groups && ctx.groups.length > 0) { + const groups = ctx.groups; + + groups.forEach((group: any) => { + // This code is for handling the case where a field specifier is aliased, with the alias available via + // the proj property. Otherwise we can just take the group text as it is. + const proj = group.fieldSpec?.().proj; + if (proj) { + this.groupNames.push(proj.getText()); + } else { + this.groupNames.push(group.getText()); + } + }); + } + } +} + +export function getStatsGroups(text: string): string[] { + // Dummy prefix needed here for parser to function correctly + const dummyPrefix = 'source test start=0 end=1|'; + const queryText = dummyPrefix + text; + const chars = new antlr4.InputStream(queryText); + const lexer = new ScrollQLLexer(chars); + const tokens = new antlr4.CommonTokenStream(lexer); + const parser = new ScrollQLParser(tokens); + parser.buildParseTrees = true; + const tree = parser.query(); + const groupListener = new GroupListener(); + antlr4.tree.ParseTreeWalker.DEFAULT.walk(groupListener, tree); + return groupListener.groupNames; +} diff --git a/yarn.lock b/yarn.lock index 20b15e1bee7..d09dd648fc5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5056,6 +5056,11 @@ resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.6.56.tgz#20124077bd44061e018c7283c0bb83f4b00322dd" integrity sha512-HxtqilvklZ7i6XOaiP7uIJIrFXEVEhfbSY45nfv2DeBRngncI58Y4ZOUMiUkcT8sqgLL1ablmbfylChUg7A3GA== +"@types/antlr4@^4.7.1": + version "4.7.1" + resolved "https://registry.yarnpkg.com/@types/antlr4/-/antlr4-4.7.1.tgz#09a8f985e29149c73e92b161d08691a1fd8425ef" + integrity sha512-mjQv+WtdJnwI5qhNh5yJkZ9rVFdRClUyaO5KebaLSJFHT6uSyDLAK9jUke4zLKZXk6vQQ/QJN2j7QV2q7l5Slw== + "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" @@ -7050,6 +7055,11 @@ ansi-to-html@^0.6.11: dependencies: entities "^1.1.2" +antlr4@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.8.0.tgz#f938ec171be7fc2855cd3a533e87647185b32b6a" + integrity sha512-en/MxQ4OkPgGJQ3wD/muzj1uDnFSzdFIhc2+c6bHZokWkuBb6RRvFjpWhPxWLbgQvaEzldJZ0GSQpfSAaE3hqg== + any-observable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"