org.apache.sysml.parser.dml.DmlParser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of systemml Show documentation
Show all versions of systemml Show documentation
Declarative Machine Learning
// Generated from org/apache/sysml/parser/dml/Dml.g4 by ANTLR 4.5.3
package org.apache.sysml.parser.dml;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class DmlParser extends Parser {
static { RuntimeMetaData.checkVersion("4.5.3", RuntimeMetaData.VERSION); }
protected static final DFA[] _decisionToDFA;
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
public static final int
T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24,
T__24=25, T__25=26, T__26=27, T__27=28, T__28=29, T__29=30, T__30=31,
T__31=32, T__32=33, T__33=34, T__34=35, T__35=36, T__36=37, T__37=38,
T__38=39, T__39=40, T__40=41, T__41=42, T__42=43, T__43=44, T__44=45,
T__45=46, T__46=47, T__47=48, T__48=49, T__49=50, T__50=51, T__51=52,
T__52=53, T__53=54, T__54=55, T__55=56, T__56=57, ID=58, INT=59, DOUBLE=60,
DIGIT=61, ALPHABET=62, COMMANDLINE_NAMED_ID=63, COMMANDLINE_POSITION_ID=64,
STRING=65, LINE_COMMENT=66, MULTILINE_BLOCK_COMMENT=67, WHITESPACE=68;
public static final int
RULE_programroot = 0, RULE_statement = 1, RULE_iterablePredicate = 2,
RULE_functionStatement = 3, RULE_dataIdentifier = 4, RULE_expression = 5,
RULE_typedArgNoAssign = 6, RULE_parameterizedExpression = 7, RULE_strictParameterizedExpression = 8,
RULE_strictParameterizedKeyValueString = 9, RULE_ml_type = 10, RULE_valueType = 11,
RULE_dataType = 12;
public static final String[] ruleNames = {
"programroot", "statement", "iterablePredicate", "functionStatement",
"dataIdentifier", "expression", "typedArgNoAssign", "parameterizedExpression",
"strictParameterizedExpression", "strictParameterizedKeyValueString",
"ml_type", "valueType", "dataType"
};
private static final String[] _LITERAL_NAMES = {
null, "'source'", "'('", "')'", "'as'", "';'", "'setwd'", "'='", "'<-'",
"','", "'['", "']'", "'ifdef'", "'+='", "'if'", "'{'", "'}'", "'else'",
"'for'", "'in'", "'parfor'", "'while'", "':'", "'function'", "'return'",
"'externalFunction'", "'implemented'", "'^'", "'-'", "'+'", "'%*%'", "'%/%'",
"'%%'", "'*'", "'/'", "'>'", "'>='", "'<'", "'<='", "'=='", "'!='", "'!'",
"'&'", "'&&'", "'|'", "'||'", "'TRUE'", "'FALSE'", "'int'", "'integer'",
"'string'", "'boolean'", "'double'", "'Int'", "'Integer'", "'String'",
"'Boolean'", "'Double'"
};
private static final String[] _SYMBOLIC_NAMES = {
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, "ID", "INT",
"DOUBLE", "DIGIT", "ALPHABET", "COMMANDLINE_NAMED_ID", "COMMANDLINE_POSITION_ID",
"STRING", "LINE_COMMENT", "MULTILINE_BLOCK_COMMENT", "WHITESPACE"
};
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
/**
* @deprecated Use {@link #VOCABULARY} instead.
*/
@Deprecated
public static final String[] tokenNames;
static {
tokenNames = new String[_SYMBOLIC_NAMES.length];
for (int i = 0; i < tokenNames.length; i++) {
tokenNames[i] = VOCABULARY.getLiteralName(i);
if (tokenNames[i] == null) {
tokenNames[i] = VOCABULARY.getSymbolicName(i);
}
if (tokenNames[i] == null) {
tokenNames[i] = "";
}
}
}
@Override
@Deprecated
public String[] getTokenNames() {
return tokenNames;
}
@Override
public Vocabulary getVocabulary() {
return VOCABULARY;
}
@Override
public String getGrammarFileName() { return "Dml.g4"; }
@Override
public String[] getRuleNames() { return ruleNames; }
@Override
public String getSerializedATN() { return _serializedATN; }
@Override
public ATN getATN() { return _ATN; }
public DmlParser(TokenStream input) {
super(input);
_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
}
public static class ProgramrootContext extends ParserRuleContext {
public StatementContext statement;
public List blocks = new ArrayList();
public FunctionStatementContext functionStatement;
public List functionBlocks = new ArrayList();
public TerminalNode EOF() { return getToken(DmlParser.EOF, 0); }
public List statement() {
return getRuleContexts(StatementContext.class);
}
public StatementContext statement(int i) {
return getRuleContext(StatementContext.class,i);
}
public List functionStatement() {
return getRuleContexts(FunctionStatementContext.class);
}
public FunctionStatementContext functionStatement(int i) {
return getRuleContext(FunctionStatementContext.class,i);
}
public ProgramrootContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_programroot; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterProgramroot(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitProgramroot(this);
}
}
public final ProgramrootContext programroot() throws RecognitionException {
ProgramrootContext _localctx = new ProgramrootContext(_ctx, getState());
enterRule(_localctx, 0, RULE_programroot);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(30);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la - 1)) & ~0x3f) == 0 && ((1L << (_la - 1)) & ((1L << (T__0 - 1)) | (1L << (T__5 - 1)) | (1L << (T__9 - 1)) | (1L << (T__13 - 1)) | (1L << (T__17 - 1)) | (1L << (T__19 - 1)) | (1L << (T__20 - 1)) | (1L << (ID - 1)) | (1L << (COMMANDLINE_NAMED_ID - 1)) | (1L << (COMMANDLINE_POSITION_ID - 1)))) != 0)) {
{
setState(28);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
case 1:
{
setState(26);
((ProgramrootContext)_localctx).statement = statement();
((ProgramrootContext)_localctx).blocks.add(((ProgramrootContext)_localctx).statement);
}
break;
case 2:
{
setState(27);
((ProgramrootContext)_localctx).functionStatement = functionStatement();
((ProgramrootContext)_localctx).functionBlocks.add(((ProgramrootContext)_localctx).functionStatement);
}
break;
}
}
setState(32);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(33);
match(EOF);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class StatementContext extends ParserRuleContext {
public org.apache.sysml.parser.common.StatementInfo info;
public StatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_statement; }
public StatementContext() { }
public void copyFrom(StatementContext ctx) {
super.copyFrom(ctx);
this.info = ctx.info;
}
}
public static class IfStatementContext extends StatementContext {
public ExpressionContext predicate;
public StatementContext statement;
public List ifBody = new ArrayList();
public List elseBody = new ArrayList();
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public List statement() {
return getRuleContexts(StatementContext.class);
}
public StatementContext statement(int i) {
return getRuleContext(StatementContext.class,i);
}
public IfStatementContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterIfStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitIfStatement(this);
}
}
public static class AssignmentStatementContext extends StatementContext {
public DataIdentifierContext targetList;
public Token op;
public ExpressionContext source;
public DataIdentifierContext dataIdentifier() {
return getRuleContext(DataIdentifierContext.class,0);
}
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public AssignmentStatementContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterAssignmentStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitAssignmentStatement(this);
}
}
public static class FunctionCallMultiAssignmentStatementContext extends StatementContext {
public DataIdentifierContext dataIdentifier;
public List targetList = new ArrayList();
public Token name;
public ParameterizedExpressionContext parameterizedExpression;
public List paramExprs = new ArrayList();
public List dataIdentifier() {
return getRuleContexts(DataIdentifierContext.class);
}
public DataIdentifierContext dataIdentifier(int i) {
return getRuleContext(DataIdentifierContext.class,i);
}
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public List parameterizedExpression() {
return getRuleContexts(ParameterizedExpressionContext.class);
}
public ParameterizedExpressionContext parameterizedExpression(int i) {
return getRuleContext(ParameterizedExpressionContext.class,i);
}
public FunctionCallMultiAssignmentStatementContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterFunctionCallMultiAssignmentStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitFunctionCallMultiAssignmentStatement(this);
}
}
public static class IfdefAssignmentStatementContext extends StatementContext {
public DataIdentifierContext targetList;
public Token op;
public DataIdentifierContext commandLineParam;
public ExpressionContext source;
public List dataIdentifier() {
return getRuleContexts(DataIdentifierContext.class);
}
public DataIdentifierContext dataIdentifier(int i) {
return getRuleContext(DataIdentifierContext.class,i);
}
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public IfdefAssignmentStatementContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterIfdefAssignmentStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitIfdefAssignmentStatement(this);
}
}
public static class ParForStatementContext extends StatementContext {
public Token iterVar;
public IterablePredicateContext iterPred;
public StrictParameterizedExpressionContext strictParameterizedExpression;
public List parForParams = new ArrayList();
public StatementContext statement;
public List body = new ArrayList();
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public IterablePredicateContext iterablePredicate() {
return getRuleContext(IterablePredicateContext.class,0);
}
public List statement() {
return getRuleContexts(StatementContext.class);
}
public StatementContext statement(int i) {
return getRuleContext(StatementContext.class,i);
}
public List strictParameterizedExpression() {
return getRuleContexts(StrictParameterizedExpressionContext.class);
}
public StrictParameterizedExpressionContext strictParameterizedExpression(int i) {
return getRuleContext(StrictParameterizedExpressionContext.class,i);
}
public ParForStatementContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterParForStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitParForStatement(this);
}
}
public static class ImportStatementContext extends StatementContext {
public Token filePath;
public Token namespace;
public TerminalNode STRING() { return getToken(DmlParser.STRING, 0); }
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public ImportStatementContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterImportStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitImportStatement(this);
}
}
public static class PathStatementContext extends StatementContext {
public Token pathValue;
public TerminalNode STRING() { return getToken(DmlParser.STRING, 0); }
public PathStatementContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterPathStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitPathStatement(this);
}
}
public static class WhileStatementContext extends StatementContext {
public ExpressionContext predicate;
public StatementContext statement;
public List body = new ArrayList();
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public List statement() {
return getRuleContexts(StatementContext.class);
}
public StatementContext statement(int i) {
return getRuleContext(StatementContext.class,i);
}
public WhileStatementContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterWhileStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitWhileStatement(this);
}
}
public static class ForStatementContext extends StatementContext {
public Token iterVar;
public IterablePredicateContext iterPred;
public StrictParameterizedExpressionContext strictParameterizedExpression;
public List parForParams = new ArrayList();
public StatementContext statement;
public List body = new ArrayList();
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public IterablePredicateContext iterablePredicate() {
return getRuleContext(IterablePredicateContext.class,0);
}
public List statement() {
return getRuleContexts(StatementContext.class);
}
public StatementContext statement(int i) {
return getRuleContext(StatementContext.class,i);
}
public List strictParameterizedExpression() {
return getRuleContexts(StrictParameterizedExpressionContext.class);
}
public StrictParameterizedExpressionContext strictParameterizedExpression(int i) {
return getRuleContext(StrictParameterizedExpressionContext.class,i);
}
public ForStatementContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterForStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitForStatement(this);
}
}
public static class AccumulatorAssignmentStatementContext extends StatementContext {
public DataIdentifierContext targetList;
public Token op;
public ExpressionContext source;
public DataIdentifierContext dataIdentifier() {
return getRuleContext(DataIdentifierContext.class,0);
}
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public AccumulatorAssignmentStatementContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterAccumulatorAssignmentStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitAccumulatorAssignmentStatement(this);
}
}
public static class FunctionCallAssignmentStatementContext extends StatementContext {
public DataIdentifierContext targetList;
public Token name;
public ParameterizedExpressionContext parameterizedExpression;
public List paramExprs = new ArrayList();
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public DataIdentifierContext dataIdentifier() {
return getRuleContext(DataIdentifierContext.class,0);
}
public List parameterizedExpression() {
return getRuleContexts(ParameterizedExpressionContext.class);
}
public ParameterizedExpressionContext parameterizedExpression(int i) {
return getRuleContext(ParameterizedExpressionContext.class,i);
}
public FunctionCallAssignmentStatementContext(StatementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterFunctionCallAssignmentStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitFunctionCallAssignmentStatement(this);
}
}
public final StatementContext statement() throws RecognitionException {
StatementContext _localctx = new StatementContext(_ctx, getState());
enterRule(_localctx, 2, RULE_statement);
// This actions occurs regardless of how many alternatives in this rule
((StatementContext)_localctx).info = new org.apache.sysml.parser.common.StatementInfo();
int _la;
try {
int _alt;
setState(295);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) {
case 1:
_localctx = new ImportStatementContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(35);
match(T__0);
setState(36);
match(T__1);
setState(37);
((ImportStatementContext)_localctx).filePath = match(STRING);
setState(38);
match(T__2);
setState(39);
match(T__3);
setState(40);
((ImportStatementContext)_localctx).namespace = match(ID);
setState(44);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,2,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(41);
match(T__4);
}
}
}
setState(46);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,2,_ctx);
}
}
break;
case 2:
_localctx = new PathStatementContext(_localctx);
enterOuterAlt(_localctx, 2);
{
setState(47);
match(T__5);
setState(48);
match(T__1);
setState(49);
((PathStatementContext)_localctx).pathValue = match(STRING);
setState(50);
match(T__2);
setState(54);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(51);
match(T__4);
}
}
}
setState(56);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
}
}
break;
case 3:
_localctx = new FunctionCallAssignmentStatementContext(_localctx);
enterOuterAlt(_localctx, 3);
{
setState(60);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
case 1:
{
setState(57);
((FunctionCallAssignmentStatementContext)_localctx).targetList = dataIdentifier();
setState(58);
_la = _input.LA(1);
if ( !(_la==T__6 || _la==T__7) ) {
_errHandler.recoverInline(this);
} else {
consume();
}
}
break;
}
setState(62);
((FunctionCallAssignmentStatementContext)_localctx).name = match(ID);
setState(63);
match(T__1);
setState(72);
_la = _input.LA(1);
if (((((_la - 2)) & ~0x3f) == 0 && ((1L << (_la - 2)) & ((1L << (T__1 - 2)) | (1L << (T__9 - 2)) | (1L << (T__27 - 2)) | (1L << (T__28 - 2)) | (1L << (T__40 - 2)) | (1L << (T__45 - 2)) | (1L << (T__46 - 2)) | (1L << (ID - 2)) | (1L << (INT - 2)) | (1L << (DOUBLE - 2)) | (1L << (COMMANDLINE_NAMED_ID - 2)) | (1L << (COMMANDLINE_POSITION_ID - 2)) | (1L << (STRING - 2)))) != 0)) {
{
setState(64);
((FunctionCallAssignmentStatementContext)_localctx).parameterizedExpression = parameterizedExpression();
((FunctionCallAssignmentStatementContext)_localctx).paramExprs.add(((FunctionCallAssignmentStatementContext)_localctx).parameterizedExpression);
setState(69);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__8) {
{
{
setState(65);
match(T__8);
setState(66);
((FunctionCallAssignmentStatementContext)_localctx).parameterizedExpression = parameterizedExpression();
((FunctionCallAssignmentStatementContext)_localctx).paramExprs.add(((FunctionCallAssignmentStatementContext)_localctx).parameterizedExpression);
}
}
setState(71);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(74);
match(T__2);
setState(78);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,7,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(75);
match(T__4);
}
}
}
setState(80);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,7,_ctx);
}
}
break;
case 4:
_localctx = new FunctionCallMultiAssignmentStatementContext(_localctx);
enterOuterAlt(_localctx, 4);
{
setState(81);
match(T__9);
setState(82);
((FunctionCallMultiAssignmentStatementContext)_localctx).dataIdentifier = dataIdentifier();
((FunctionCallMultiAssignmentStatementContext)_localctx).targetList.add(((FunctionCallMultiAssignmentStatementContext)_localctx).dataIdentifier);
setState(87);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__8) {
{
{
setState(83);
match(T__8);
setState(84);
((FunctionCallMultiAssignmentStatementContext)_localctx).dataIdentifier = dataIdentifier();
((FunctionCallMultiAssignmentStatementContext)_localctx).targetList.add(((FunctionCallMultiAssignmentStatementContext)_localctx).dataIdentifier);
}
}
setState(89);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(90);
match(T__10);
setState(91);
_la = _input.LA(1);
if ( !(_la==T__6 || _la==T__7) ) {
_errHandler.recoverInline(this);
} else {
consume();
}
setState(92);
((FunctionCallMultiAssignmentStatementContext)_localctx).name = match(ID);
setState(93);
match(T__1);
setState(102);
_la = _input.LA(1);
if (((((_la - 2)) & ~0x3f) == 0 && ((1L << (_la - 2)) & ((1L << (T__1 - 2)) | (1L << (T__9 - 2)) | (1L << (T__27 - 2)) | (1L << (T__28 - 2)) | (1L << (T__40 - 2)) | (1L << (T__45 - 2)) | (1L << (T__46 - 2)) | (1L << (ID - 2)) | (1L << (INT - 2)) | (1L << (DOUBLE - 2)) | (1L << (COMMANDLINE_NAMED_ID - 2)) | (1L << (COMMANDLINE_POSITION_ID - 2)) | (1L << (STRING - 2)))) != 0)) {
{
setState(94);
((FunctionCallMultiAssignmentStatementContext)_localctx).parameterizedExpression = parameterizedExpression();
((FunctionCallMultiAssignmentStatementContext)_localctx).paramExprs.add(((FunctionCallMultiAssignmentStatementContext)_localctx).parameterizedExpression);
setState(99);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__8) {
{
{
setState(95);
match(T__8);
setState(96);
((FunctionCallMultiAssignmentStatementContext)_localctx).parameterizedExpression = parameterizedExpression();
((FunctionCallMultiAssignmentStatementContext)_localctx).paramExprs.add(((FunctionCallMultiAssignmentStatementContext)_localctx).parameterizedExpression);
}
}
setState(101);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(104);
match(T__2);
setState(108);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,11,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(105);
match(T__4);
}
}
}
setState(110);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,11,_ctx);
}
}
break;
case 5:
_localctx = new IfdefAssignmentStatementContext(_localctx);
enterOuterAlt(_localctx, 5);
{
setState(111);
((IfdefAssignmentStatementContext)_localctx).targetList = dataIdentifier();
setState(112);
((IfdefAssignmentStatementContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==T__6 || _la==T__7) ) {
((IfdefAssignmentStatementContext)_localctx).op = (Token)_errHandler.recoverInline(this);
} else {
consume();
}
setState(113);
match(T__11);
setState(114);
match(T__1);
setState(115);
((IfdefAssignmentStatementContext)_localctx).commandLineParam = dataIdentifier();
setState(116);
match(T__8);
setState(117);
((IfdefAssignmentStatementContext)_localctx).source = expression(0);
setState(118);
match(T__2);
setState(122);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,12,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(119);
match(T__4);
}
}
}
setState(124);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,12,_ctx);
}
}
break;
case 6:
_localctx = new AssignmentStatementContext(_localctx);
enterOuterAlt(_localctx, 6);
{
setState(125);
((AssignmentStatementContext)_localctx).targetList = dataIdentifier();
setState(126);
((AssignmentStatementContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==T__6 || _la==T__7) ) {
((AssignmentStatementContext)_localctx).op = (Token)_errHandler.recoverInline(this);
} else {
consume();
}
setState(127);
((AssignmentStatementContext)_localctx).source = expression(0);
setState(131);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,13,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(128);
match(T__4);
}
}
}
setState(133);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,13,_ctx);
}
}
break;
case 7:
_localctx = new AccumulatorAssignmentStatementContext(_localctx);
enterOuterAlt(_localctx, 7);
{
setState(134);
((AccumulatorAssignmentStatementContext)_localctx).targetList = dataIdentifier();
setState(135);
((AccumulatorAssignmentStatementContext)_localctx).op = match(T__12);
setState(136);
((AccumulatorAssignmentStatementContext)_localctx).source = expression(0);
setState(140);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,14,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(137);
match(T__4);
}
}
}
setState(142);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,14,_ctx);
}
}
break;
case 8:
_localctx = new IfStatementContext(_localctx);
enterOuterAlt(_localctx, 8);
{
setState(143);
match(T__13);
setState(144);
match(T__1);
setState(145);
((IfStatementContext)_localctx).predicate = expression(0);
setState(146);
match(T__2);
setState(168);
switch (_input.LA(1)) {
case T__0:
case T__5:
case T__9:
case T__13:
case T__17:
case T__19:
case T__20:
case ID:
case COMMANDLINE_NAMED_ID:
case COMMANDLINE_POSITION_ID:
{
setState(147);
((IfStatementContext)_localctx).statement = statement();
((IfStatementContext)_localctx).ifBody.add(((IfStatementContext)_localctx).statement);
setState(151);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,15,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(148);
match(T__4);
}
}
}
setState(153);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,15,_ctx);
}
}
break;
case T__14:
{
setState(154);
match(T__14);
setState(164);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la - 1)) & ~0x3f) == 0 && ((1L << (_la - 1)) & ((1L << (T__0 - 1)) | (1L << (T__5 - 1)) | (1L << (T__9 - 1)) | (1L << (T__13 - 1)) | (1L << (T__17 - 1)) | (1L << (T__19 - 1)) | (1L << (T__20 - 1)) | (1L << (ID - 1)) | (1L << (COMMANDLINE_NAMED_ID - 1)) | (1L << (COMMANDLINE_POSITION_ID - 1)))) != 0)) {
{
{
setState(155);
((IfStatementContext)_localctx).statement = statement();
((IfStatementContext)_localctx).ifBody.add(((IfStatementContext)_localctx).statement);
setState(159);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__4) {
{
{
setState(156);
match(T__4);
}
}
setState(161);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(166);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(167);
match(T__15);
}
break;
default:
throw new NoViableAltException(this);
}
setState(194);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
case 1:
{
setState(170);
match(T__16);
setState(192);
switch (_input.LA(1)) {
case T__0:
case T__5:
case T__9:
case T__13:
case T__17:
case T__19:
case T__20:
case ID:
case COMMANDLINE_NAMED_ID:
case COMMANDLINE_POSITION_ID:
{
setState(171);
((IfStatementContext)_localctx).statement = statement();
((IfStatementContext)_localctx).elseBody.add(((IfStatementContext)_localctx).statement);
setState(175);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,19,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(172);
match(T__4);
}
}
}
setState(177);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,19,_ctx);
}
}
break;
case T__14:
{
setState(178);
match(T__14);
setState(188);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la - 1)) & ~0x3f) == 0 && ((1L << (_la - 1)) & ((1L << (T__0 - 1)) | (1L << (T__5 - 1)) | (1L << (T__9 - 1)) | (1L << (T__13 - 1)) | (1L << (T__17 - 1)) | (1L << (T__19 - 1)) | (1L << (T__20 - 1)) | (1L << (ID - 1)) | (1L << (COMMANDLINE_NAMED_ID - 1)) | (1L << (COMMANDLINE_POSITION_ID - 1)))) != 0)) {
{
{
setState(179);
((IfStatementContext)_localctx).statement = statement();
((IfStatementContext)_localctx).elseBody.add(((IfStatementContext)_localctx).statement);
setState(183);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__4) {
{
{
setState(180);
match(T__4);
}
}
setState(185);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(190);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(191);
match(T__15);
}
break;
default:
throw new NoViableAltException(this);
}
}
break;
}
}
break;
case 9:
_localctx = new ForStatementContext(_localctx);
enterOuterAlt(_localctx, 9);
{
setState(196);
match(T__17);
setState(197);
match(T__1);
setState(198);
((ForStatementContext)_localctx).iterVar = match(ID);
setState(199);
match(T__18);
setState(200);
((ForStatementContext)_localctx).iterPred = iterablePredicate();
setState(205);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__8) {
{
{
setState(201);
match(T__8);
setState(202);
((ForStatementContext)_localctx).strictParameterizedExpression = strictParameterizedExpression();
((ForStatementContext)_localctx).parForParams.add(((ForStatementContext)_localctx).strictParameterizedExpression);
}
}
setState(207);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(208);
match(T__2);
setState(230);
switch (_input.LA(1)) {
case T__0:
case T__5:
case T__9:
case T__13:
case T__17:
case T__19:
case T__20:
case ID:
case COMMANDLINE_NAMED_ID:
case COMMANDLINE_POSITION_ID:
{
setState(209);
((ForStatementContext)_localctx).statement = statement();
((ForStatementContext)_localctx).body.add(((ForStatementContext)_localctx).statement);
setState(213);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,25,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(210);
match(T__4);
}
}
}
setState(215);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,25,_ctx);
}
}
break;
case T__14:
{
setState(216);
match(T__14);
setState(226);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la - 1)) & ~0x3f) == 0 && ((1L << (_la - 1)) & ((1L << (T__0 - 1)) | (1L << (T__5 - 1)) | (1L << (T__9 - 1)) | (1L << (T__13 - 1)) | (1L << (T__17 - 1)) | (1L << (T__19 - 1)) | (1L << (T__20 - 1)) | (1L << (ID - 1)) | (1L << (COMMANDLINE_NAMED_ID - 1)) | (1L << (COMMANDLINE_POSITION_ID - 1)))) != 0)) {
{
{
setState(217);
((ForStatementContext)_localctx).statement = statement();
((ForStatementContext)_localctx).body.add(((ForStatementContext)_localctx).statement);
setState(221);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__4) {
{
{
setState(218);
match(T__4);
}
}
setState(223);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(228);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(229);
match(T__15);
}
break;
default:
throw new NoViableAltException(this);
}
}
break;
case 10:
_localctx = new ParForStatementContext(_localctx);
enterOuterAlt(_localctx, 10);
{
setState(232);
match(T__19);
setState(233);
match(T__1);
setState(234);
((ParForStatementContext)_localctx).iterVar = match(ID);
setState(235);
match(T__18);
setState(236);
((ParForStatementContext)_localctx).iterPred = iterablePredicate();
setState(241);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__8) {
{
{
setState(237);
match(T__8);
setState(238);
((ParForStatementContext)_localctx).strictParameterizedExpression = strictParameterizedExpression();
((ParForStatementContext)_localctx).parForParams.add(((ParForStatementContext)_localctx).strictParameterizedExpression);
}
}
setState(243);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(244);
match(T__2);
setState(266);
switch (_input.LA(1)) {
case T__0:
case T__5:
case T__9:
case T__13:
case T__17:
case T__19:
case T__20:
case ID:
case COMMANDLINE_NAMED_ID:
case COMMANDLINE_POSITION_ID:
{
setState(245);
((ParForStatementContext)_localctx).statement = statement();
((ParForStatementContext)_localctx).body.add(((ParForStatementContext)_localctx).statement);
setState(249);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,30,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(246);
match(T__4);
}
}
}
setState(251);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,30,_ctx);
}
}
break;
case T__14:
{
setState(252);
match(T__14);
setState(262);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la - 1)) & ~0x3f) == 0 && ((1L << (_la - 1)) & ((1L << (T__0 - 1)) | (1L << (T__5 - 1)) | (1L << (T__9 - 1)) | (1L << (T__13 - 1)) | (1L << (T__17 - 1)) | (1L << (T__19 - 1)) | (1L << (T__20 - 1)) | (1L << (ID - 1)) | (1L << (COMMANDLINE_NAMED_ID - 1)) | (1L << (COMMANDLINE_POSITION_ID - 1)))) != 0)) {
{
{
setState(253);
((ParForStatementContext)_localctx).statement = statement();
((ParForStatementContext)_localctx).body.add(((ParForStatementContext)_localctx).statement);
setState(257);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__4) {
{
{
setState(254);
match(T__4);
}
}
setState(259);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(264);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(265);
match(T__15);
}
break;
default:
throw new NoViableAltException(this);
}
}
break;
case 11:
_localctx = new WhileStatementContext(_localctx);
enterOuterAlt(_localctx, 11);
{
setState(268);
match(T__20);
setState(269);
match(T__1);
setState(270);
((WhileStatementContext)_localctx).predicate = expression(0);
setState(271);
match(T__2);
setState(293);
switch (_input.LA(1)) {
case T__0:
case T__5:
case T__9:
case T__13:
case T__17:
case T__19:
case T__20:
case ID:
case COMMANDLINE_NAMED_ID:
case COMMANDLINE_POSITION_ID:
{
setState(272);
((WhileStatementContext)_localctx).statement = statement();
((WhileStatementContext)_localctx).body.add(((WhileStatementContext)_localctx).statement);
setState(276);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,34,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(273);
match(T__4);
}
}
}
setState(278);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,34,_ctx);
}
}
break;
case T__14:
{
setState(279);
match(T__14);
setState(289);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la - 1)) & ~0x3f) == 0 && ((1L << (_la - 1)) & ((1L << (T__0 - 1)) | (1L << (T__5 - 1)) | (1L << (T__9 - 1)) | (1L << (T__13 - 1)) | (1L << (T__17 - 1)) | (1L << (T__19 - 1)) | (1L << (T__20 - 1)) | (1L << (ID - 1)) | (1L << (COMMANDLINE_NAMED_ID - 1)) | (1L << (COMMANDLINE_POSITION_ID - 1)))) != 0)) {
{
{
setState(280);
((WhileStatementContext)_localctx).statement = statement();
((WhileStatementContext)_localctx).body.add(((WhileStatementContext)_localctx).statement);
setState(284);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__4) {
{
{
setState(281);
match(T__4);
}
}
setState(286);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(291);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(292);
match(T__15);
}
break;
default:
throw new NoViableAltException(this);
}
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class IterablePredicateContext extends ParserRuleContext {
public org.apache.sysml.parser.common.ExpressionInfo info;
public IterablePredicateContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_iterablePredicate; }
public IterablePredicateContext() { }
public void copyFrom(IterablePredicateContext ctx) {
super.copyFrom(ctx);
this.info = ctx.info;
}
}
public static class IterablePredicateColonExpressionContext extends IterablePredicateContext {
public ExpressionContext from;
public ExpressionContext to;
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public IterablePredicateColonExpressionContext(IterablePredicateContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterIterablePredicateColonExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitIterablePredicateColonExpression(this);
}
}
public static class IterablePredicateSeqExpressionContext extends IterablePredicateContext {
public ExpressionContext from;
public ExpressionContext to;
public ExpressionContext increment;
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public IterablePredicateSeqExpressionContext(IterablePredicateContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterIterablePredicateSeqExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitIterablePredicateSeqExpression(this);
}
}
public final IterablePredicateContext iterablePredicate() throws RecognitionException {
IterablePredicateContext _localctx = new IterablePredicateContext(_ctx, getState());
enterRule(_localctx, 4, RULE_iterablePredicate);
// This actions occurs regardless of how many alternatives in this rule
((IterablePredicateContext)_localctx).info = new org.apache.sysml.parser.common.ExpressionInfo();
int _la;
try {
setState(312);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,40,_ctx) ) {
case 1:
_localctx = new IterablePredicateColonExpressionContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(297);
((IterablePredicateColonExpressionContext)_localctx).from = expression(0);
setState(298);
match(T__21);
setState(299);
((IterablePredicateColonExpressionContext)_localctx).to = expression(0);
}
break;
case 2:
_localctx = new IterablePredicateSeqExpressionContext(_localctx);
enterOuterAlt(_localctx, 2);
{
setState(301);
match(ID);
setState(302);
match(T__1);
setState(303);
((IterablePredicateSeqExpressionContext)_localctx).from = expression(0);
setState(304);
match(T__8);
setState(305);
((IterablePredicateSeqExpressionContext)_localctx).to = expression(0);
setState(308);
_la = _input.LA(1);
if (_la==T__8) {
{
setState(306);
match(T__8);
setState(307);
((IterablePredicateSeqExpressionContext)_localctx).increment = expression(0);
}
}
setState(310);
match(T__2);
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class FunctionStatementContext extends ParserRuleContext {
public org.apache.sysml.parser.common.StatementInfo info;
public FunctionStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_functionStatement; }
public FunctionStatementContext() { }
public void copyFrom(FunctionStatementContext ctx) {
super.copyFrom(ctx);
this.info = ctx.info;
}
}
public static class ExternalFunctionDefExpressionContext extends FunctionStatementContext {
public Token name;
public TypedArgNoAssignContext typedArgNoAssign;
public List inputParams = new ArrayList();
public List outputParams = new ArrayList();
public StrictParameterizedKeyValueStringContext strictParameterizedKeyValueString;
public List otherParams = new ArrayList();
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public List typedArgNoAssign() {
return getRuleContexts(TypedArgNoAssignContext.class);
}
public TypedArgNoAssignContext typedArgNoAssign(int i) {
return getRuleContext(TypedArgNoAssignContext.class,i);
}
public List strictParameterizedKeyValueString() {
return getRuleContexts(StrictParameterizedKeyValueStringContext.class);
}
public StrictParameterizedKeyValueStringContext strictParameterizedKeyValueString(int i) {
return getRuleContext(StrictParameterizedKeyValueStringContext.class,i);
}
public ExternalFunctionDefExpressionContext(FunctionStatementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterExternalFunctionDefExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitExternalFunctionDefExpression(this);
}
}
public static class InternalFunctionDefExpressionContext extends FunctionStatementContext {
public Token name;
public TypedArgNoAssignContext typedArgNoAssign;
public List inputParams = new ArrayList();
public List outputParams = new ArrayList();
public StatementContext statement;
public List body = new ArrayList();
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public List typedArgNoAssign() {
return getRuleContexts(TypedArgNoAssignContext.class);
}
public TypedArgNoAssignContext typedArgNoAssign(int i) {
return getRuleContext(TypedArgNoAssignContext.class,i);
}
public List statement() {
return getRuleContexts(StatementContext.class);
}
public StatementContext statement(int i) {
return getRuleContext(StatementContext.class,i);
}
public InternalFunctionDefExpressionContext(FunctionStatementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterInternalFunctionDefExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitInternalFunctionDefExpression(this);
}
}
public final FunctionStatementContext functionStatement() throws RecognitionException {
FunctionStatementContext _localctx = new FunctionStatementContext(_ctx, getState());
enterRule(_localctx, 6, RULE_functionStatement);
// This actions occurs regardless of how many alternatives in this rule
((FunctionStatementContext)_localctx).info = new org.apache.sysml.parser.common.StatementInfo();
int _la;
try {
setState(414);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,57,_ctx) ) {
case 1:
_localctx = new InternalFunctionDefExpressionContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(314);
((InternalFunctionDefExpressionContext)_localctx).name = match(ID);
setState(315);
_la = _input.LA(1);
if ( !(_la==T__6 || _la==T__7) ) {
_errHandler.recoverInline(this);
} else {
consume();
}
setState(316);
match(T__22);
setState(317);
match(T__1);
setState(326);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__47) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__51) | (1L << T__52) | (1L << T__53) | (1L << T__54) | (1L << T__55) | (1L << T__56) | (1L << ID))) != 0)) {
{
setState(318);
((InternalFunctionDefExpressionContext)_localctx).typedArgNoAssign = typedArgNoAssign();
((InternalFunctionDefExpressionContext)_localctx).inputParams.add(((InternalFunctionDefExpressionContext)_localctx).typedArgNoAssign);
setState(323);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__8) {
{
{
setState(319);
match(T__8);
setState(320);
((InternalFunctionDefExpressionContext)_localctx).typedArgNoAssign = typedArgNoAssign();
((InternalFunctionDefExpressionContext)_localctx).inputParams.add(((InternalFunctionDefExpressionContext)_localctx).typedArgNoAssign);
}
}
setState(325);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(328);
match(T__2);
setState(342);
_la = _input.LA(1);
if (_la==T__23) {
{
setState(329);
match(T__23);
setState(330);
match(T__1);
setState(339);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__47) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__51) | (1L << T__52) | (1L << T__53) | (1L << T__54) | (1L << T__55) | (1L << T__56) | (1L << ID))) != 0)) {
{
setState(331);
((InternalFunctionDefExpressionContext)_localctx).typedArgNoAssign = typedArgNoAssign();
((InternalFunctionDefExpressionContext)_localctx).outputParams.add(((InternalFunctionDefExpressionContext)_localctx).typedArgNoAssign);
setState(336);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__8) {
{
{
setState(332);
match(T__8);
setState(333);
((InternalFunctionDefExpressionContext)_localctx).typedArgNoAssign = typedArgNoAssign();
((InternalFunctionDefExpressionContext)_localctx).outputParams.add(((InternalFunctionDefExpressionContext)_localctx).typedArgNoAssign);
}
}
setState(338);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(341);
match(T__2);
}
}
setState(344);
match(T__14);
setState(354);
_errHandler.sync(this);
_la = _input.LA(1);
while (((((_la - 1)) & ~0x3f) == 0 && ((1L << (_la - 1)) & ((1L << (T__0 - 1)) | (1L << (T__5 - 1)) | (1L << (T__9 - 1)) | (1L << (T__13 - 1)) | (1L << (T__17 - 1)) | (1L << (T__19 - 1)) | (1L << (T__20 - 1)) | (1L << (ID - 1)) | (1L << (COMMANDLINE_NAMED_ID - 1)) | (1L << (COMMANDLINE_POSITION_ID - 1)))) != 0)) {
{
{
setState(345);
((InternalFunctionDefExpressionContext)_localctx).statement = statement();
((InternalFunctionDefExpressionContext)_localctx).body.add(((InternalFunctionDefExpressionContext)_localctx).statement);
setState(349);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__4) {
{
{
setState(346);
match(T__4);
}
}
setState(351);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(356);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(357);
match(T__15);
setState(361);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__4) {
{
{
setState(358);
match(T__4);
}
}
setState(363);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
break;
case 2:
_localctx = new ExternalFunctionDefExpressionContext(_localctx);
enterOuterAlt(_localctx, 2);
{
setState(364);
((ExternalFunctionDefExpressionContext)_localctx).name = match(ID);
setState(365);
_la = _input.LA(1);
if ( !(_la==T__6 || _la==T__7) ) {
_errHandler.recoverInline(this);
} else {
consume();
}
setState(366);
match(T__24);
setState(367);
match(T__1);
setState(376);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__47) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__51) | (1L << T__52) | (1L << T__53) | (1L << T__54) | (1L << T__55) | (1L << T__56) | (1L << ID))) != 0)) {
{
setState(368);
((ExternalFunctionDefExpressionContext)_localctx).typedArgNoAssign = typedArgNoAssign();
((ExternalFunctionDefExpressionContext)_localctx).inputParams.add(((ExternalFunctionDefExpressionContext)_localctx).typedArgNoAssign);
setState(373);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__8) {
{
{
setState(369);
match(T__8);
setState(370);
((ExternalFunctionDefExpressionContext)_localctx).typedArgNoAssign = typedArgNoAssign();
((ExternalFunctionDefExpressionContext)_localctx).inputParams.add(((ExternalFunctionDefExpressionContext)_localctx).typedArgNoAssign);
}
}
setState(375);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(378);
match(T__2);
setState(392);
_la = _input.LA(1);
if (_la==T__23) {
{
setState(379);
match(T__23);
setState(380);
match(T__1);
setState(389);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__47) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__51) | (1L << T__52) | (1L << T__53) | (1L << T__54) | (1L << T__55) | (1L << T__56) | (1L << ID))) != 0)) {
{
setState(381);
((ExternalFunctionDefExpressionContext)_localctx).typedArgNoAssign = typedArgNoAssign();
((ExternalFunctionDefExpressionContext)_localctx).outputParams.add(((ExternalFunctionDefExpressionContext)_localctx).typedArgNoAssign);
setState(386);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__8) {
{
{
setState(382);
match(T__8);
setState(383);
((ExternalFunctionDefExpressionContext)_localctx).typedArgNoAssign = typedArgNoAssign();
((ExternalFunctionDefExpressionContext)_localctx).outputParams.add(((ExternalFunctionDefExpressionContext)_localctx).typedArgNoAssign);
}
}
setState(388);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(391);
match(T__2);
}
}
setState(394);
match(T__25);
setState(395);
match(T__18);
setState(396);
match(T__1);
setState(405);
_la = _input.LA(1);
if (_la==ID) {
{
setState(397);
((ExternalFunctionDefExpressionContext)_localctx).strictParameterizedKeyValueString = strictParameterizedKeyValueString();
((ExternalFunctionDefExpressionContext)_localctx).otherParams.add(((ExternalFunctionDefExpressionContext)_localctx).strictParameterizedKeyValueString);
setState(402);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__8) {
{
{
setState(398);
match(T__8);
setState(399);
((ExternalFunctionDefExpressionContext)_localctx).strictParameterizedKeyValueString = strictParameterizedKeyValueString();
((ExternalFunctionDefExpressionContext)_localctx).otherParams.add(((ExternalFunctionDefExpressionContext)_localctx).strictParameterizedKeyValueString);
}
}
setState(404);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(407);
match(T__2);
setState(411);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__4) {
{
{
setState(408);
match(T__4);
}
}
setState(413);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class DataIdentifierContext extends ParserRuleContext {
public org.apache.sysml.parser.common.ExpressionInfo dataInfo;
public DataIdentifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_dataIdentifier; }
public DataIdentifierContext() { }
public void copyFrom(DataIdentifierContext ctx) {
super.copyFrom(ctx);
this.dataInfo = ctx.dataInfo;
}
}
public static class IndexedExpressionContext extends DataIdentifierContext {
public Token name;
public ExpressionContext rowLower;
public ExpressionContext rowUpper;
public ExpressionContext colLower;
public ExpressionContext colUpper;
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public IndexedExpressionContext(DataIdentifierContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterIndexedExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitIndexedExpression(this);
}
}
public static class CommandlinePositionExpressionContext extends DataIdentifierContext {
public TerminalNode COMMANDLINE_POSITION_ID() { return getToken(DmlParser.COMMANDLINE_POSITION_ID, 0); }
public CommandlinePositionExpressionContext(DataIdentifierContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterCommandlinePositionExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitCommandlinePositionExpression(this);
}
}
public static class SimpleDataIdentifierExpressionContext extends DataIdentifierContext {
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public SimpleDataIdentifierExpressionContext(DataIdentifierContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterSimpleDataIdentifierExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitSimpleDataIdentifierExpression(this);
}
}
public static class CommandlineParamExpressionContext extends DataIdentifierContext {
public TerminalNode COMMANDLINE_NAMED_ID() { return getToken(DmlParser.COMMANDLINE_NAMED_ID, 0); }
public CommandlineParamExpressionContext(DataIdentifierContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterCommandlineParamExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitCommandlineParamExpression(this);
}
}
public final DataIdentifierContext dataIdentifier() throws RecognitionException {
DataIdentifierContext _localctx = new DataIdentifierContext(_ctx, getState());
enterRule(_localctx, 8, RULE_dataIdentifier);
// This actions occurs regardless of how many alternatives in this rule
((DataIdentifierContext)_localctx).dataInfo = new org.apache.sysml.parser.common.ExpressionInfo();
// _localctx.dataInfo.expr = new org.apache.sysml.parser.DataIdentifier();
int _la;
try {
setState(437);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) {
case 1:
_localctx = new IndexedExpressionContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(416);
((IndexedExpressionContext)_localctx).name = match(ID);
setState(417);
match(T__9);
setState(423);
_la = _input.LA(1);
if (((((_la - 2)) & ~0x3f) == 0 && ((1L << (_la - 2)) & ((1L << (T__1 - 2)) | (1L << (T__9 - 2)) | (1L << (T__27 - 2)) | (1L << (T__28 - 2)) | (1L << (T__40 - 2)) | (1L << (T__45 - 2)) | (1L << (T__46 - 2)) | (1L << (ID - 2)) | (1L << (INT - 2)) | (1L << (DOUBLE - 2)) | (1L << (COMMANDLINE_NAMED_ID - 2)) | (1L << (COMMANDLINE_POSITION_ID - 2)) | (1L << (STRING - 2)))) != 0)) {
{
setState(418);
((IndexedExpressionContext)_localctx).rowLower = expression(0);
setState(421);
_la = _input.LA(1);
if (_la==T__21) {
{
setState(419);
match(T__21);
setState(420);
((IndexedExpressionContext)_localctx).rowUpper = expression(0);
}
}
}
}
setState(425);
match(T__8);
setState(431);
_la = _input.LA(1);
if (((((_la - 2)) & ~0x3f) == 0 && ((1L << (_la - 2)) & ((1L << (T__1 - 2)) | (1L << (T__9 - 2)) | (1L << (T__27 - 2)) | (1L << (T__28 - 2)) | (1L << (T__40 - 2)) | (1L << (T__45 - 2)) | (1L << (T__46 - 2)) | (1L << (ID - 2)) | (1L << (INT - 2)) | (1L << (DOUBLE - 2)) | (1L << (COMMANDLINE_NAMED_ID - 2)) | (1L << (COMMANDLINE_POSITION_ID - 2)) | (1L << (STRING - 2)))) != 0)) {
{
setState(426);
((IndexedExpressionContext)_localctx).colLower = expression(0);
setState(429);
_la = _input.LA(1);
if (_la==T__21) {
{
setState(427);
match(T__21);
setState(428);
((IndexedExpressionContext)_localctx).colUpper = expression(0);
}
}
}
}
setState(433);
match(T__10);
}
break;
case 2:
_localctx = new SimpleDataIdentifierExpressionContext(_localctx);
enterOuterAlt(_localctx, 2);
{
setState(434);
match(ID);
}
break;
case 3:
_localctx = new CommandlineParamExpressionContext(_localctx);
enterOuterAlt(_localctx, 3);
{
setState(435);
match(COMMANDLINE_NAMED_ID);
}
break;
case 4:
_localctx = new CommandlinePositionExpressionContext(_localctx);
enterOuterAlt(_localctx, 4);
{
setState(436);
match(COMMANDLINE_POSITION_ID);
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ExpressionContext extends ParserRuleContext {
public org.apache.sysml.parser.common.ExpressionInfo info;
public ExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_expression; }
public ExpressionContext() { }
public void copyFrom(ExpressionContext ctx) {
super.copyFrom(ctx);
this.info = ctx.info;
}
}
public static class ModIntDivExpressionContext extends ExpressionContext {
public ExpressionContext left;
public Token op;
public ExpressionContext right;
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public ModIntDivExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterModIntDivExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitModIntDivExpression(this);
}
}
public static class RelationalExpressionContext extends ExpressionContext {
public ExpressionContext left;
public Token op;
public ExpressionContext right;
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public RelationalExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterRelationalExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitRelationalExpression(this);
}
}
public static class BooleanNotExpressionContext extends ExpressionContext {
public Token op;
public ExpressionContext left;
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public BooleanNotExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterBooleanNotExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitBooleanNotExpression(this);
}
}
public static class PowerExpressionContext extends ExpressionContext {
public ExpressionContext left;
public Token op;
public ExpressionContext right;
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public PowerExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterPowerExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitPowerExpression(this);
}
}
public static class BuiltinFunctionExpressionContext extends ExpressionContext {
public Token name;
public ParameterizedExpressionContext parameterizedExpression;
public List paramExprs = new ArrayList();
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public List parameterizedExpression() {
return getRuleContexts(ParameterizedExpressionContext.class);
}
public ParameterizedExpressionContext parameterizedExpression(int i) {
return getRuleContext(ParameterizedExpressionContext.class,i);
}
public BuiltinFunctionExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterBuiltinFunctionExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitBuiltinFunctionExpression(this);
}
}
public static class ConstIntIdExpressionContext extends ExpressionContext {
public TerminalNode INT() { return getToken(DmlParser.INT, 0); }
public ConstIntIdExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterConstIntIdExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitConstIntIdExpression(this);
}
}
public static class AtomicExpressionContext extends ExpressionContext {
public ExpressionContext left;
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public AtomicExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterAtomicExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitAtomicExpression(this);
}
}
public static class ConstStringIdExpressionContext extends ExpressionContext {
public TerminalNode STRING() { return getToken(DmlParser.STRING, 0); }
public ConstStringIdExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterConstStringIdExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitConstStringIdExpression(this);
}
}
public static class ConstTrueExpressionContext extends ExpressionContext {
public ConstTrueExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterConstTrueExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitConstTrueExpression(this);
}
}
public static class UnaryExpressionContext extends ExpressionContext {
public Token op;
public ExpressionContext left;
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public UnaryExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterUnaryExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitUnaryExpression(this);
}
}
public static class MultDivExpressionContext extends ExpressionContext {
public ExpressionContext left;
public Token op;
public ExpressionContext right;
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public MultDivExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterMultDivExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitMultDivExpression(this);
}
}
public static class ConstFalseExpressionContext extends ExpressionContext {
public ConstFalseExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterConstFalseExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitConstFalseExpression(this);
}
}
public static class DataIdExpressionContext extends ExpressionContext {
public DataIdentifierContext dataIdentifier() {
return getRuleContext(DataIdentifierContext.class,0);
}
public DataIdExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterDataIdExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitDataIdExpression(this);
}
}
public static class AddSubExpressionContext extends ExpressionContext {
public ExpressionContext left;
public Token op;
public ExpressionContext right;
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public AddSubExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterAddSubExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitAddSubExpression(this);
}
}
public static class ConstDoubleIdExpressionContext extends ExpressionContext {
public TerminalNode DOUBLE() { return getToken(DmlParser.DOUBLE, 0); }
public ConstDoubleIdExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterConstDoubleIdExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitConstDoubleIdExpression(this);
}
}
public static class MatrixMulExpressionContext extends ExpressionContext {
public ExpressionContext left;
public Token op;
public ExpressionContext right;
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public MatrixMulExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterMatrixMulExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitMatrixMulExpression(this);
}
}
public static class MultiIdExpressionContext extends ExpressionContext {
public ExpressionContext expression;
public List targetList = new ArrayList();
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public MultiIdExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterMultiIdExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitMultiIdExpression(this);
}
}
public static class BooleanAndExpressionContext extends ExpressionContext {
public ExpressionContext left;
public Token op;
public ExpressionContext right;
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public BooleanAndExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterBooleanAndExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitBooleanAndExpression(this);
}
}
public static class BooleanOrExpressionContext extends ExpressionContext {
public ExpressionContext left;
public Token op;
public ExpressionContext right;
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public BooleanOrExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterBooleanOrExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitBooleanOrExpression(this);
}
}
public final ExpressionContext expression() throws RecognitionException {
return expression(0);
}
private ExpressionContext expression(int _p) throws RecognitionException {
ParserRuleContext _parentctx = _ctx;
int _parentState = getState();
ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState);
ExpressionContext _prevctx = _localctx;
int _startState = 10;
enterRecursionRule(_localctx, 10, RULE_expression, _p);
// This actions occurs regardless of how many alternatives in this rule
((ExpressionContext)_localctx).info = new org.apache.sysml.parser.common.ExpressionInfo();
// _localctx.info.expr = new org.apache.sysml.parser.BinaryExpression(org.apache.sysml.parser.Expression.BinaryOp.INVALID);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(484);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,67,_ctx) ) {
case 1:
{
_localctx = new UnaryExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(440);
((UnaryExpressionContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==T__27 || _la==T__28) ) {
((UnaryExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
} else {
consume();
}
setState(441);
((UnaryExpressionContext)_localctx).left = expression(18);
}
break;
case 2:
{
_localctx = new BooleanNotExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(442);
((BooleanNotExpressionContext)_localctx).op = match(T__40);
setState(443);
((BooleanNotExpressionContext)_localctx).left = expression(12);
}
break;
case 3:
{
_localctx = new BuiltinFunctionExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(444);
((BuiltinFunctionExpressionContext)_localctx).name = match(ID);
setState(445);
match(T__1);
setState(454);
_la = _input.LA(1);
if (((((_la - 2)) & ~0x3f) == 0 && ((1L << (_la - 2)) & ((1L << (T__1 - 2)) | (1L << (T__9 - 2)) | (1L << (T__27 - 2)) | (1L << (T__28 - 2)) | (1L << (T__40 - 2)) | (1L << (T__45 - 2)) | (1L << (T__46 - 2)) | (1L << (ID - 2)) | (1L << (INT - 2)) | (1L << (DOUBLE - 2)) | (1L << (COMMANDLINE_NAMED_ID - 2)) | (1L << (COMMANDLINE_POSITION_ID - 2)) | (1L << (STRING - 2)))) != 0)) {
{
setState(446);
((BuiltinFunctionExpressionContext)_localctx).parameterizedExpression = parameterizedExpression();
((BuiltinFunctionExpressionContext)_localctx).paramExprs.add(((BuiltinFunctionExpressionContext)_localctx).parameterizedExpression);
setState(451);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__8) {
{
{
setState(447);
match(T__8);
setState(448);
((BuiltinFunctionExpressionContext)_localctx).parameterizedExpression = parameterizedExpression();
((BuiltinFunctionExpressionContext)_localctx).paramExprs.add(((BuiltinFunctionExpressionContext)_localctx).parameterizedExpression);
}
}
setState(453);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(456);
match(T__2);
setState(460);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,65,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(457);
match(T__4);
}
}
}
setState(462);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,65,_ctx);
}
}
break;
case 4:
{
_localctx = new AtomicExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(463);
match(T__1);
setState(464);
((AtomicExpressionContext)_localctx).left = expression(0);
setState(465);
match(T__2);
}
break;
case 5:
{
_localctx = new MultiIdExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(467);
match(T__9);
setState(468);
((MultiIdExpressionContext)_localctx).expression = expression(0);
((MultiIdExpressionContext)_localctx).targetList.add(((MultiIdExpressionContext)_localctx).expression);
setState(473);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__8) {
{
{
setState(469);
match(T__8);
setState(470);
((MultiIdExpressionContext)_localctx).expression = expression(0);
((MultiIdExpressionContext)_localctx).targetList.add(((MultiIdExpressionContext)_localctx).expression);
}
}
setState(475);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(476);
match(T__10);
}
break;
case 6:
{
_localctx = new ConstTrueExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(478);
match(T__45);
}
break;
case 7:
{
_localctx = new ConstFalseExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(479);
match(T__46);
}
break;
case 8:
{
_localctx = new ConstIntIdExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(480);
match(INT);
}
break;
case 9:
{
_localctx = new ConstDoubleIdExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(481);
match(DOUBLE);
}
break;
case 10:
{
_localctx = new ConstStringIdExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(482);
match(STRING);
}
break;
case 11:
{
_localctx = new DataIdExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(483);
dataIdentifier();
}
break;
}
_ctx.stop = _input.LT(-1);
setState(512);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,69,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
setState(510);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,68,_ctx) ) {
case 1:
{
_localctx = new PowerExpressionContext(new ExpressionContext(_parentctx, _parentState));
((PowerExpressionContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
setState(486);
if (!(precpred(_ctx, 19))) throw new FailedPredicateException(this, "precpred(_ctx, 19)");
setState(487);
((PowerExpressionContext)_localctx).op = match(T__26);
setState(488);
((PowerExpressionContext)_localctx).right = expression(19);
}
break;
case 2:
{
_localctx = new MatrixMulExpressionContext(new ExpressionContext(_parentctx, _parentState));
((MatrixMulExpressionContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
setState(489);
if (!(precpred(_ctx, 17))) throw new FailedPredicateException(this, "precpred(_ctx, 17)");
setState(490);
((MatrixMulExpressionContext)_localctx).op = match(T__29);
setState(491);
((MatrixMulExpressionContext)_localctx).right = expression(18);
}
break;
case 3:
{
_localctx = new ModIntDivExpressionContext(new ExpressionContext(_parentctx, _parentState));
((ModIntDivExpressionContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
setState(492);
if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)");
setState(493);
((ModIntDivExpressionContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==T__30 || _la==T__31) ) {
((ModIntDivExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
} else {
consume();
}
setState(494);
((ModIntDivExpressionContext)_localctx).right = expression(17);
}
break;
case 4:
{
_localctx = new MultDivExpressionContext(new ExpressionContext(_parentctx, _parentState));
((MultDivExpressionContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
setState(495);
if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)");
setState(496);
((MultDivExpressionContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==T__32 || _la==T__33) ) {
((MultDivExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
} else {
consume();
}
setState(497);
((MultDivExpressionContext)_localctx).right = expression(16);
}
break;
case 5:
{
_localctx = new AddSubExpressionContext(new ExpressionContext(_parentctx, _parentState));
((AddSubExpressionContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
setState(498);
if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)");
setState(499);
((AddSubExpressionContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==T__27 || _la==T__28) ) {
((AddSubExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
} else {
consume();
}
setState(500);
((AddSubExpressionContext)_localctx).right = expression(15);
}
break;
case 6:
{
_localctx = new RelationalExpressionContext(new ExpressionContext(_parentctx, _parentState));
((RelationalExpressionContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
setState(501);
if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)");
setState(502);
((RelationalExpressionContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39))) != 0)) ) {
((RelationalExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
} else {
consume();
}
setState(503);
((RelationalExpressionContext)_localctx).right = expression(14);
}
break;
case 7:
{
_localctx = new BooleanAndExpressionContext(new ExpressionContext(_parentctx, _parentState));
((BooleanAndExpressionContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
setState(504);
if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
setState(505);
((BooleanAndExpressionContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==T__41 || _la==T__42) ) {
((BooleanAndExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
} else {
consume();
}
setState(506);
((BooleanAndExpressionContext)_localctx).right = expression(12);
}
break;
case 8:
{
_localctx = new BooleanOrExpressionContext(new ExpressionContext(_parentctx, _parentState));
((BooleanOrExpressionContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
setState(507);
if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
setState(508);
((BooleanOrExpressionContext)_localctx).op = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==T__43 || _la==T__44) ) {
((BooleanOrExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
} else {
consume();
}
setState(509);
((BooleanOrExpressionContext)_localctx).right = expression(11);
}
break;
}
}
}
setState(514);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,69,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
unrollRecursionContexts(_parentctx);
}
return _localctx;
}
public static class TypedArgNoAssignContext extends ParserRuleContext {
public Ml_typeContext paramType;
public Token paramName;
public Ml_typeContext ml_type() {
return getRuleContext(Ml_typeContext.class,0);
}
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public TypedArgNoAssignContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_typedArgNoAssign; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterTypedArgNoAssign(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitTypedArgNoAssign(this);
}
}
public final TypedArgNoAssignContext typedArgNoAssign() throws RecognitionException {
TypedArgNoAssignContext _localctx = new TypedArgNoAssignContext(_ctx, getState());
enterRule(_localctx, 12, RULE_typedArgNoAssign);
try {
enterOuterAlt(_localctx, 1);
{
setState(515);
((TypedArgNoAssignContext)_localctx).paramType = ml_type();
setState(516);
((TypedArgNoAssignContext)_localctx).paramName = match(ID);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ParameterizedExpressionContext extends ParserRuleContext {
public Token paramName;
public ExpressionContext paramVal;
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public ParameterizedExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_parameterizedExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterParameterizedExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitParameterizedExpression(this);
}
}
public final ParameterizedExpressionContext parameterizedExpression() throws RecognitionException {
ParameterizedExpressionContext _localctx = new ParameterizedExpressionContext(_ctx, getState());
enterRule(_localctx, 14, RULE_parameterizedExpression);
try {
enterOuterAlt(_localctx, 1);
{
setState(520);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) {
case 1:
{
setState(518);
((ParameterizedExpressionContext)_localctx).paramName = match(ID);
setState(519);
match(T__6);
}
break;
}
setState(522);
((ParameterizedExpressionContext)_localctx).paramVal = expression(0);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class StrictParameterizedExpressionContext extends ParserRuleContext {
public Token paramName;
public ExpressionContext paramVal;
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public StrictParameterizedExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_strictParameterizedExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterStrictParameterizedExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitStrictParameterizedExpression(this);
}
}
public final StrictParameterizedExpressionContext strictParameterizedExpression() throws RecognitionException {
StrictParameterizedExpressionContext _localctx = new StrictParameterizedExpressionContext(_ctx, getState());
enterRule(_localctx, 16, RULE_strictParameterizedExpression);
try {
enterOuterAlt(_localctx, 1);
{
setState(524);
((StrictParameterizedExpressionContext)_localctx).paramName = match(ID);
setState(525);
match(T__6);
setState(526);
((StrictParameterizedExpressionContext)_localctx).paramVal = expression(0);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class StrictParameterizedKeyValueStringContext extends ParserRuleContext {
public Token paramName;
public Token paramVal;
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public TerminalNode STRING() { return getToken(DmlParser.STRING, 0); }
public StrictParameterizedKeyValueStringContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_strictParameterizedKeyValueString; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterStrictParameterizedKeyValueString(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitStrictParameterizedKeyValueString(this);
}
}
public final StrictParameterizedKeyValueStringContext strictParameterizedKeyValueString() throws RecognitionException {
StrictParameterizedKeyValueStringContext _localctx = new StrictParameterizedKeyValueStringContext(_ctx, getState());
enterRule(_localctx, 18, RULE_strictParameterizedKeyValueString);
try {
enterOuterAlt(_localctx, 1);
{
setState(528);
((StrictParameterizedKeyValueStringContext)_localctx).paramName = match(ID);
setState(529);
match(T__6);
setState(530);
((StrictParameterizedKeyValueStringContext)_localctx).paramVal = match(STRING);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Ml_typeContext extends ParserRuleContext {
public ValueTypeContext valueType() {
return getRuleContext(ValueTypeContext.class,0);
}
public DataTypeContext dataType() {
return getRuleContext(DataTypeContext.class,0);
}
public Ml_typeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_ml_type; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterMl_type(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitMl_type(this);
}
}
public final Ml_typeContext ml_type() throws RecognitionException {
Ml_typeContext _localctx = new Ml_typeContext(_ctx, getState());
enterRule(_localctx, 20, RULE_ml_type);
try {
setState(538);
switch (_input.LA(1)) {
case T__47:
case T__48:
case T__49:
case T__50:
case T__51:
case T__52:
case T__53:
case T__54:
case T__55:
case T__56:
enterOuterAlt(_localctx, 1);
{
setState(532);
valueType();
}
break;
case ID:
enterOuterAlt(_localctx, 2);
{
setState(533);
dataType();
setState(534);
match(T__9);
setState(535);
valueType();
setState(536);
match(T__10);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ValueTypeContext extends ParserRuleContext {
public ValueTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_valueType; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterValueType(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitValueType(this);
}
}
public final ValueTypeContext valueType() throws RecognitionException {
ValueTypeContext _localctx = new ValueTypeContext(_ctx, getState());
enterRule(_localctx, 22, RULE_valueType);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(540);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__47) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__51) | (1L << T__52) | (1L << T__53) | (1L << T__54) | (1L << T__55) | (1L << T__56))) != 0)) ) {
_errHandler.recoverInline(this);
} else {
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class DataTypeContext extends ParserRuleContext {
public DataTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_dataType; }
public DataTypeContext() { }
public void copyFrom(DataTypeContext ctx) {
super.copyFrom(ctx);
}
}
public static class MatrixDataTypeCheckContext extends DataTypeContext {
public TerminalNode ID() { return getToken(DmlParser.ID, 0); }
public MatrixDataTypeCheckContext(DataTypeContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).enterMatrixDataTypeCheck(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof DmlListener ) ((DmlListener)listener).exitMatrixDataTypeCheck(this);
}
}
public final DataTypeContext dataType() throws RecognitionException {
DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
enterRule(_localctx, 24, RULE_dataType);
try {
_localctx = new MatrixDataTypeCheckContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(542);
match(ID);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
switch (ruleIndex) {
case 5:
return expression_sempred((ExpressionContext)_localctx, predIndex);
}
return true;
}
private boolean expression_sempred(ExpressionContext _localctx, int predIndex) {
switch (predIndex) {
case 0:
return precpred(_ctx, 19);
case 1:
return precpred(_ctx, 17);
case 2:
return precpred(_ctx, 16);
case 3:
return precpred(_ctx, 15);
case 4:
return precpred(_ctx, 14);
case 5:
return precpred(_ctx, 13);
case 6:
return precpred(_ctx, 11);
case 7:
return precpred(_ctx, 10);
}
return true;
}
public static final String _serializedATN =
"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3F\u0223\4\2\t\2\4"+
"\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
"\13\4\f\t\f\4\r\t\r\4\16\t\16\3\2\3\2\7\2\37\n\2\f\2\16\2\"\13\2\3\2\3"+
"\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\7\3-\n\3\f\3\16\3\60\13\3\3\3\3\3\3\3\3"+
"\3\3\3\7\3\67\n\3\f\3\16\3:\13\3\3\3\3\3\3\3\5\3?\n\3\3\3\3\3\3\3\3\3"+
"\3\3\7\3F\n\3\f\3\16\3I\13\3\5\3K\n\3\3\3\3\3\7\3O\n\3\f\3\16\3R\13\3"+
"\3\3\3\3\3\3\3\3\7\3X\n\3\f\3\16\3[\13\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\7"+
"\3d\n\3\f\3\16\3g\13\3\5\3i\n\3\3\3\3\3\7\3m\n\3\f\3\16\3p\13\3\3\3\3"+
"\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\7\3{\n\3\f\3\16\3~\13\3\3\3\3\3\3\3\3\3"+
"\7\3\u0084\n\3\f\3\16\3\u0087\13\3\3\3\3\3\3\3\3\3\7\3\u008d\n\3\f\3\16"+
"\3\u0090\13\3\3\3\3\3\3\3\3\3\3\3\3\3\7\3\u0098\n\3\f\3\16\3\u009b\13"+
"\3\3\3\3\3\3\3\7\3\u00a0\n\3\f\3\16\3\u00a3\13\3\7\3\u00a5\n\3\f\3\16"+
"\3\u00a8\13\3\3\3\5\3\u00ab\n\3\3\3\3\3\3\3\7\3\u00b0\n\3\f\3\16\3\u00b3"+
"\13\3\3\3\3\3\3\3\7\3\u00b8\n\3\f\3\16\3\u00bb\13\3\7\3\u00bd\n\3\f\3"+
"\16\3\u00c0\13\3\3\3\5\3\u00c3\n\3\5\3\u00c5\n\3\3\3\3\3\3\3\3\3\3\3\3"+
"\3\3\3\7\3\u00ce\n\3\f\3\16\3\u00d1\13\3\3\3\3\3\3\3\7\3\u00d6\n\3\f\3"+
"\16\3\u00d9\13\3\3\3\3\3\3\3\7\3\u00de\n\3\f\3\16\3\u00e1\13\3\7\3\u00e3"+
"\n\3\f\3\16\3\u00e6\13\3\3\3\5\3\u00e9\n\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3"+
"\7\3\u00f2\n\3\f\3\16\3\u00f5\13\3\3\3\3\3\3\3\7\3\u00fa\n\3\f\3\16\3"+
"\u00fd\13\3\3\3\3\3\3\3\7\3\u0102\n\3\f\3\16\3\u0105\13\3\7\3\u0107\n"+
"\3\f\3\16\3\u010a\13\3\3\3\5\3\u010d\n\3\3\3\3\3\3\3\3\3\3\3\3\3\7\3\u0115"+
"\n\3\f\3\16\3\u0118\13\3\3\3\3\3\3\3\7\3\u011d\n\3\f\3\16\3\u0120\13\3"+
"\7\3\u0122\n\3\f\3\16\3\u0125\13\3\3\3\5\3\u0128\n\3\5\3\u012a\n\3\3\4"+
"\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\5\4\u0137\n\4\3\4\3\4\5\4\u013b"+
"\n\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\7\5\u0144\n\5\f\5\16\5\u0147\13\5\5\5"+
"\u0149\n\5\3\5\3\5\3\5\3\5\3\5\3\5\7\5\u0151\n\5\f\5\16\5\u0154\13\5\5"+
"\5\u0156\n\5\3\5\5\5\u0159\n\5\3\5\3\5\3\5\7\5\u015e\n\5\f\5\16\5\u0161"+
"\13\5\7\5\u0163\n\5\f\5\16\5\u0166\13\5\3\5\3\5\7\5\u016a\n\5\f\5\16\5"+
"\u016d\13\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\7\5\u0176\n\5\f\5\16\5\u0179\13"+
"\5\5\5\u017b\n\5\3\5\3\5\3\5\3\5\3\5\3\5\7\5\u0183\n\5\f\5\16\5\u0186"+
"\13\5\5\5\u0188\n\5\3\5\5\5\u018b\n\5\3\5\3\5\3\5\3\5\3\5\3\5\7\5\u0193"+
"\n\5\f\5\16\5\u0196\13\5\5\5\u0198\n\5\3\5\3\5\7\5\u019c\n\5\f\5\16\5"+
"\u019f\13\5\5\5\u01a1\n\5\3\6\3\6\3\6\3\6\3\6\5\6\u01a8\n\6\5\6\u01aa"+
"\n\6\3\6\3\6\3\6\3\6\5\6\u01b0\n\6\5\6\u01b2\n\6\3\6\3\6\3\6\3\6\5\6\u01b8"+
"\n\6\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\7\7\u01c4\n\7\f\7\16\7\u01c7"+
"\13\7\5\7\u01c9\n\7\3\7\3\7\7\7\u01cd\n\7\f\7\16\7\u01d0\13\7\3\7\3\7"+
"\3\7\3\7\3\7\3\7\3\7\3\7\7\7\u01da\n\7\f\7\16\7\u01dd\13\7\3\7\3\7\3\7"+
"\3\7\3\7\3\7\3\7\3\7\5\7\u01e7\n\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7"+
"\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\7\7\u0201"+
"\n\7\f\7\16\7\u0204\13\7\3\b\3\b\3\b\3\t\3\t\5\t\u020b\n\t\3\t\3\t\3\n"+
"\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\5\f\u021d\n\f"+
"\3\r\3\r\3\16\3\16\3\16\2\3\f\17\2\4\6\b\n\f\16\20\22\24\26\30\32\2\n"+
"\3\2\t\n\3\2\36\37\3\2!\"\3\2#$\3\2%*\3\2,-\3\2./\3\2\62;\u0277\2 \3\2"+
"\2\2\4\u0129\3\2\2\2\6\u013a\3\2\2\2\b\u01a0\3\2\2\2\n\u01b7\3\2\2\2\f"+
"\u01e6\3\2\2\2\16\u0205\3\2\2\2\20\u020a\3\2\2\2\22\u020e\3\2\2\2\24\u0212"+
"\3\2\2\2\26\u021c\3\2\2\2\30\u021e\3\2\2\2\32\u0220\3\2\2\2\34\37\5\4"+
"\3\2\35\37\5\b\5\2\36\34\3\2\2\2\36\35\3\2\2\2\37\"\3\2\2\2 \36\3\2\2"+
"\2 !\3\2\2\2!#\3\2\2\2\" \3\2\2\2#$\7\2\2\3$\3\3\2\2\2%&\7\3\2\2&\'\7"+
"\4\2\2\'(\7C\2\2()\7\5\2\2)*\7\6\2\2*.\7<\2\2+-\7\7\2\2,+\3\2\2\2-\60"+
"\3\2\2\2.,\3\2\2\2./\3\2\2\2/\u012a\3\2\2\2\60.\3\2\2\2\61\62\7\b\2\2"+
"\62\63\7\4\2\2\63\64\7C\2\2\648\7\5\2\2\65\67\7\7\2\2\66\65\3\2\2\2\67"+
":\3\2\2\28\66\3\2\2\289\3\2\2\29\u012a\3\2\2\2:8\3\2\2\2;<\5\n\6\2<=\t"+
"\2\2\2=?\3\2\2\2>;\3\2\2\2>?\3\2\2\2?@\3\2\2\2@A\7<\2\2AJ\7\4\2\2BG\5"+
"\20\t\2CD\7\13\2\2DF\5\20\t\2EC\3\2\2\2FI\3\2\2\2GE\3\2\2\2GH\3\2\2\2"+
"HK\3\2\2\2IG\3\2\2\2JB\3\2\2\2JK\3\2\2\2KL\3\2\2\2LP\7\5\2\2MO\7\7\2\2"+
"NM\3\2\2\2OR\3\2\2\2PN\3\2\2\2PQ\3\2\2\2Q\u012a\3\2\2\2RP\3\2\2\2ST\7"+
"\f\2\2TY\5\n\6\2UV\7\13\2\2VX\5\n\6\2WU\3\2\2\2X[\3\2\2\2YW\3\2\2\2YZ"+
"\3\2\2\2Z\\\3\2\2\2[Y\3\2\2\2\\]\7\r\2\2]^\t\2\2\2^_\7<\2\2_h\7\4\2\2"+
"`e\5\20\t\2ab\7\13\2\2bd\5\20\t\2ca\3\2\2\2dg\3\2\2\2ec\3\2\2\2ef\3\2"+
"\2\2fi\3\2\2\2ge\3\2\2\2h`\3\2\2\2hi\3\2\2\2ij\3\2\2\2jn\7\5\2\2km\7\7"+
"\2\2lk\3\2\2\2mp\3\2\2\2nl\3\2\2\2no\3\2\2\2o\u012a\3\2\2\2pn\3\2\2\2"+
"qr\5\n\6\2rs\t\2\2\2st\7\16\2\2tu\7\4\2\2uv\5\n\6\2vw\7\13\2\2wx\5\f\7"+
"\2x|\7\5\2\2y{\7\7\2\2zy\3\2\2\2{~\3\2\2\2|z\3\2\2\2|}\3\2\2\2}\u012a"+
"\3\2\2\2~|\3\2\2\2\177\u0080\5\n\6\2\u0080\u0081\t\2\2\2\u0081\u0085\5"+
"\f\7\2\u0082\u0084\7\7\2\2\u0083\u0082\3\2\2\2\u0084\u0087\3\2\2\2\u0085"+
"\u0083\3\2\2\2\u0085\u0086\3\2\2\2\u0086\u012a\3\2\2\2\u0087\u0085\3\2"+
"\2\2\u0088\u0089\5\n\6\2\u0089\u008a\7\17\2\2\u008a\u008e\5\f\7\2\u008b"+
"\u008d\7\7\2\2\u008c\u008b\3\2\2\2\u008d\u0090\3\2\2\2\u008e\u008c\3\2"+
"\2\2\u008e\u008f\3\2\2\2\u008f\u012a\3\2\2\2\u0090\u008e\3\2\2\2\u0091"+
"\u0092\7\20\2\2\u0092\u0093\7\4\2\2\u0093\u0094\5\f\7\2\u0094\u00aa\7"+
"\5\2\2\u0095\u0099\5\4\3\2\u0096\u0098\7\7\2\2\u0097\u0096\3\2\2\2\u0098"+
"\u009b\3\2\2\2\u0099\u0097\3\2\2\2\u0099\u009a\3\2\2\2\u009a\u00ab\3\2"+
"\2\2\u009b\u0099\3\2\2\2\u009c\u00a6\7\21\2\2\u009d\u00a1\5\4\3\2\u009e"+
"\u00a0\7\7\2\2\u009f\u009e\3\2\2\2\u00a0\u00a3\3\2\2\2\u00a1\u009f\3\2"+
"\2\2\u00a1\u00a2\3\2\2\2\u00a2\u00a5\3\2\2\2\u00a3\u00a1\3\2\2\2\u00a4"+
"\u009d\3\2\2\2\u00a5\u00a8\3\2\2\2\u00a6\u00a4\3\2\2\2\u00a6\u00a7\3\2"+
"\2\2\u00a7\u00a9\3\2\2\2\u00a8\u00a6\3\2\2\2\u00a9\u00ab\7\22\2\2\u00aa"+
"\u0095\3\2\2\2\u00aa\u009c\3\2\2\2\u00ab\u00c4\3\2\2\2\u00ac\u00c2\7\23"+
"\2\2\u00ad\u00b1\5\4\3\2\u00ae\u00b0\7\7\2\2\u00af\u00ae\3\2\2\2\u00b0"+
"\u00b3\3\2\2\2\u00b1\u00af\3\2\2\2\u00b1\u00b2\3\2\2\2\u00b2\u00c3\3\2"+
"\2\2\u00b3\u00b1\3\2\2\2\u00b4\u00be\7\21\2\2\u00b5\u00b9\5\4\3\2\u00b6"+
"\u00b8\7\7\2\2\u00b7\u00b6\3\2\2\2\u00b8\u00bb\3\2\2\2\u00b9\u00b7\3\2"+
"\2\2\u00b9\u00ba\3\2\2\2\u00ba\u00bd\3\2\2\2\u00bb\u00b9\3\2\2\2\u00bc"+
"\u00b5\3\2\2\2\u00bd\u00c0\3\2\2\2\u00be\u00bc\3\2\2\2\u00be\u00bf\3\2"+
"\2\2\u00bf\u00c1\3\2\2\2\u00c0\u00be\3\2\2\2\u00c1\u00c3\7\22\2\2\u00c2"+
"\u00ad\3\2\2\2\u00c2\u00b4\3\2\2\2\u00c3\u00c5\3\2\2\2\u00c4\u00ac\3\2"+
"\2\2\u00c4\u00c5\3\2\2\2\u00c5\u012a\3\2\2\2\u00c6\u00c7\7\24\2\2\u00c7"+
"\u00c8\7\4\2\2\u00c8\u00c9\7<\2\2\u00c9\u00ca\7\25\2\2\u00ca\u00cf\5\6"+
"\4\2\u00cb\u00cc\7\13\2\2\u00cc\u00ce\5\22\n\2\u00cd\u00cb\3\2\2\2\u00ce"+
"\u00d1\3\2\2\2\u00cf\u00cd\3\2\2\2\u00cf\u00d0\3\2\2\2\u00d0\u00d2\3\2"+
"\2\2\u00d1\u00cf\3\2\2\2\u00d2\u00e8\7\5\2\2\u00d3\u00d7\5\4\3\2\u00d4"+
"\u00d6\7\7\2\2\u00d5\u00d4\3\2\2\2\u00d6\u00d9\3\2\2\2\u00d7\u00d5\3\2"+
"\2\2\u00d7\u00d8\3\2\2\2\u00d8\u00e9\3\2\2\2\u00d9\u00d7\3\2\2\2\u00da"+
"\u00e4\7\21\2\2\u00db\u00df\5\4\3\2\u00dc\u00de\7\7\2\2\u00dd\u00dc\3"+
"\2\2\2\u00de\u00e1\3\2\2\2\u00df\u00dd\3\2\2\2\u00df\u00e0\3\2\2\2\u00e0"+
"\u00e3\3\2\2\2\u00e1\u00df\3\2\2\2\u00e2\u00db\3\2\2\2\u00e3\u00e6\3\2"+
"\2\2\u00e4\u00e2\3\2\2\2\u00e4\u00e5\3\2\2\2\u00e5\u00e7\3\2\2\2\u00e6"+
"\u00e4\3\2\2\2\u00e7\u00e9\7\22\2\2\u00e8\u00d3\3\2\2\2\u00e8\u00da\3"+
"\2\2\2\u00e9\u012a\3\2\2\2\u00ea\u00eb\7\26\2\2\u00eb\u00ec\7\4\2\2\u00ec"+
"\u00ed\7<\2\2\u00ed\u00ee\7\25\2\2\u00ee\u00f3\5\6\4\2\u00ef\u00f0\7\13"+
"\2\2\u00f0\u00f2\5\22\n\2\u00f1\u00ef\3\2\2\2\u00f2\u00f5\3\2\2\2\u00f3"+
"\u00f1\3\2\2\2\u00f3\u00f4\3\2\2\2\u00f4\u00f6\3\2\2\2\u00f5\u00f3\3\2"+
"\2\2\u00f6\u010c\7\5\2\2\u00f7\u00fb\5\4\3\2\u00f8\u00fa\7\7\2\2\u00f9"+
"\u00f8\3\2\2\2\u00fa\u00fd\3\2\2\2\u00fb\u00f9\3\2\2\2\u00fb\u00fc\3\2"+
"\2\2\u00fc\u010d\3\2\2\2\u00fd\u00fb\3\2\2\2\u00fe\u0108\7\21\2\2\u00ff"+
"\u0103\5\4\3\2\u0100\u0102\7\7\2\2\u0101\u0100\3\2\2\2\u0102\u0105\3\2"+
"\2\2\u0103\u0101\3\2\2\2\u0103\u0104\3\2\2\2\u0104\u0107\3\2\2\2\u0105"+
"\u0103\3\2\2\2\u0106\u00ff\3\2\2\2\u0107\u010a\3\2\2\2\u0108\u0106\3\2"+
"\2\2\u0108\u0109\3\2\2\2\u0109\u010b\3\2\2\2\u010a\u0108\3\2\2\2\u010b"+
"\u010d\7\22\2\2\u010c\u00f7\3\2\2\2\u010c\u00fe\3\2\2\2\u010d\u012a\3"+
"\2\2\2\u010e\u010f\7\27\2\2\u010f\u0110\7\4\2\2\u0110\u0111\5\f\7\2\u0111"+
"\u0127\7\5\2\2\u0112\u0116\5\4\3\2\u0113\u0115\7\7\2\2\u0114\u0113\3\2"+
"\2\2\u0115\u0118\3\2\2\2\u0116\u0114\3\2\2\2\u0116\u0117\3\2\2\2\u0117"+
"\u0128\3\2\2\2\u0118\u0116\3\2\2\2\u0119\u0123\7\21\2\2\u011a\u011e\5"+
"\4\3\2\u011b\u011d\7\7\2\2\u011c\u011b\3\2\2\2\u011d\u0120\3\2\2\2\u011e"+
"\u011c\3\2\2\2\u011e\u011f\3\2\2\2\u011f\u0122\3\2\2\2\u0120\u011e\3\2"+
"\2\2\u0121\u011a\3\2\2\2\u0122\u0125\3\2\2\2\u0123\u0121\3\2\2\2\u0123"+
"\u0124\3\2\2\2\u0124\u0126\3\2\2\2\u0125\u0123\3\2\2\2\u0126\u0128\7\22"+
"\2\2\u0127\u0112\3\2\2\2\u0127\u0119\3\2\2\2\u0128\u012a\3\2\2\2\u0129"+
"%\3\2\2\2\u0129\61\3\2\2\2\u0129>\3\2\2\2\u0129S\3\2\2\2\u0129q\3\2\2"+
"\2\u0129\177\3\2\2\2\u0129\u0088\3\2\2\2\u0129\u0091\3\2\2\2\u0129\u00c6"+
"\3\2\2\2\u0129\u00ea\3\2\2\2\u0129\u010e\3\2\2\2\u012a\5\3\2\2\2\u012b"+
"\u012c\5\f\7\2\u012c\u012d\7\30\2\2\u012d\u012e\5\f\7\2\u012e\u013b\3"+
"\2\2\2\u012f\u0130\7<\2\2\u0130\u0131\7\4\2\2\u0131\u0132\5\f\7\2\u0132"+
"\u0133\7\13\2\2\u0133\u0136\5\f\7\2\u0134\u0135\7\13\2\2\u0135\u0137\5"+
"\f\7\2\u0136\u0134\3\2\2\2\u0136\u0137\3\2\2\2\u0137\u0138\3\2\2\2\u0138"+
"\u0139\7\5\2\2\u0139\u013b\3\2\2\2\u013a\u012b\3\2\2\2\u013a\u012f\3\2"+
"\2\2\u013b\7\3\2\2\2\u013c\u013d\7<\2\2\u013d\u013e\t\2\2\2\u013e\u013f"+
"\7\31\2\2\u013f\u0148\7\4\2\2\u0140\u0145\5\16\b\2\u0141\u0142\7\13\2"+
"\2\u0142\u0144\5\16\b\2\u0143\u0141\3\2\2\2\u0144\u0147\3\2\2\2\u0145"+
"\u0143\3\2\2\2\u0145\u0146\3\2\2\2\u0146\u0149\3\2\2\2\u0147\u0145\3\2"+
"\2\2\u0148\u0140\3\2\2\2\u0148\u0149\3\2\2\2\u0149\u014a\3\2\2\2\u014a"+
"\u0158\7\5\2\2\u014b\u014c\7\32\2\2\u014c\u0155\7\4\2\2\u014d\u0152\5"+
"\16\b\2\u014e\u014f\7\13\2\2\u014f\u0151\5\16\b\2\u0150\u014e\3\2\2\2"+
"\u0151\u0154\3\2\2\2\u0152\u0150\3\2\2\2\u0152\u0153\3\2\2\2\u0153\u0156"+
"\3\2\2\2\u0154\u0152\3\2\2\2\u0155\u014d\3\2\2\2\u0155\u0156\3\2\2\2\u0156"+
"\u0157\3\2\2\2\u0157\u0159\7\5\2\2\u0158\u014b\3\2\2\2\u0158\u0159\3\2"+
"\2\2\u0159\u015a\3\2\2\2\u015a\u0164\7\21\2\2\u015b\u015f\5\4\3\2\u015c"+
"\u015e\7\7\2\2\u015d\u015c\3\2\2\2\u015e\u0161\3\2\2\2\u015f\u015d\3\2"+
"\2\2\u015f\u0160\3\2\2\2\u0160\u0163\3\2\2\2\u0161\u015f\3\2\2\2\u0162"+
"\u015b\3\2\2\2\u0163\u0166\3\2\2\2\u0164\u0162\3\2\2\2\u0164\u0165\3\2"+
"\2\2\u0165\u0167\3\2\2\2\u0166\u0164\3\2\2\2\u0167\u016b\7\22\2\2\u0168"+
"\u016a\7\7\2\2\u0169\u0168\3\2\2\2\u016a\u016d\3\2\2\2\u016b\u0169\3\2"+
"\2\2\u016b\u016c\3\2\2\2\u016c\u01a1\3\2\2\2\u016d\u016b\3\2\2\2\u016e"+
"\u016f\7<\2\2\u016f\u0170\t\2\2\2\u0170\u0171\7\33\2\2\u0171\u017a\7\4"+
"\2\2\u0172\u0177\5\16\b\2\u0173\u0174\7\13\2\2\u0174\u0176\5\16\b\2\u0175"+
"\u0173\3\2\2\2\u0176\u0179\3\2\2\2\u0177\u0175\3\2\2\2\u0177\u0178\3\2"+
"\2\2\u0178\u017b\3\2\2\2\u0179\u0177\3\2\2\2\u017a\u0172\3\2\2\2\u017a"+
"\u017b\3\2\2\2\u017b\u017c\3\2\2\2\u017c\u018a\7\5\2\2\u017d\u017e\7\32"+
"\2\2\u017e\u0187\7\4\2\2\u017f\u0184\5\16\b\2\u0180\u0181\7\13\2\2\u0181"+
"\u0183\5\16\b\2\u0182\u0180\3\2\2\2\u0183\u0186\3\2\2\2\u0184\u0182\3"+
"\2\2\2\u0184\u0185\3\2\2\2\u0185\u0188\3\2\2\2\u0186\u0184\3\2\2\2\u0187"+
"\u017f\3\2\2\2\u0187\u0188\3\2\2\2\u0188\u0189\3\2\2\2\u0189\u018b\7\5"+
"\2\2\u018a\u017d\3\2\2\2\u018a\u018b\3\2\2\2\u018b\u018c\3\2\2\2\u018c"+
"\u018d\7\34\2\2\u018d\u018e\7\25\2\2\u018e\u0197\7\4\2\2\u018f\u0194\5"+
"\24\13\2\u0190\u0191\7\13\2\2\u0191\u0193\5\24\13\2\u0192\u0190\3\2\2"+
"\2\u0193\u0196\3\2\2\2\u0194\u0192\3\2\2\2\u0194\u0195\3\2\2\2\u0195\u0198"+
"\3\2\2\2\u0196\u0194\3\2\2\2\u0197\u018f\3\2\2\2\u0197\u0198\3\2\2\2\u0198"+
"\u0199\3\2\2\2\u0199\u019d\7\5\2\2\u019a\u019c\7\7\2\2\u019b\u019a\3\2"+
"\2\2\u019c\u019f\3\2\2\2\u019d\u019b\3\2\2\2\u019d\u019e\3\2\2\2\u019e"+
"\u01a1\3\2\2\2\u019f\u019d\3\2\2\2\u01a0\u013c\3\2\2\2\u01a0\u016e\3\2"+
"\2\2\u01a1\t\3\2\2\2\u01a2\u01a3\7<\2\2\u01a3\u01a9\7\f\2\2\u01a4\u01a7"+
"\5\f\7\2\u01a5\u01a6\7\30\2\2\u01a6\u01a8\5\f\7\2\u01a7\u01a5\3\2\2\2"+
"\u01a7\u01a8\3\2\2\2\u01a8\u01aa\3\2\2\2\u01a9\u01a4\3\2\2\2\u01a9\u01aa"+
"\3\2\2\2\u01aa\u01ab\3\2\2\2\u01ab\u01b1\7\13\2\2\u01ac\u01af\5\f\7\2"+
"\u01ad\u01ae\7\30\2\2\u01ae\u01b0\5\f\7\2\u01af\u01ad\3\2\2\2\u01af\u01b0"+
"\3\2\2\2\u01b0\u01b2\3\2\2\2\u01b1\u01ac\3\2\2\2\u01b1\u01b2\3\2\2\2\u01b2"+
"\u01b3\3\2\2\2\u01b3\u01b8\7\r\2\2\u01b4\u01b8\7<\2\2\u01b5\u01b8\7A\2"+
"\2\u01b6\u01b8\7B\2\2\u01b7\u01a2\3\2\2\2\u01b7\u01b4\3\2\2\2\u01b7\u01b5"+
"\3\2\2\2\u01b7\u01b6\3\2\2\2\u01b8\13\3\2\2\2\u01b9\u01ba\b\7\1\2\u01ba"+
"\u01bb\t\3\2\2\u01bb\u01e7\5\f\7\24\u01bc\u01bd\7+\2\2\u01bd\u01e7\5\f"+
"\7\16\u01be\u01bf\7<\2\2\u01bf\u01c8\7\4\2\2\u01c0\u01c5\5\20\t\2\u01c1"+
"\u01c2\7\13\2\2\u01c2\u01c4\5\20\t\2\u01c3\u01c1\3\2\2\2\u01c4\u01c7\3"+
"\2\2\2\u01c5\u01c3\3\2\2\2\u01c5\u01c6\3\2\2\2\u01c6\u01c9\3\2\2\2\u01c7"+
"\u01c5\3\2\2\2\u01c8\u01c0\3\2\2\2\u01c8\u01c9\3\2\2\2\u01c9\u01ca\3\2"+
"\2\2\u01ca\u01ce\7\5\2\2\u01cb\u01cd\7\7\2\2\u01cc\u01cb\3\2\2\2\u01cd"+
"\u01d0\3\2\2\2\u01ce\u01cc\3\2\2\2\u01ce\u01cf\3\2\2\2\u01cf\u01e7\3\2"+
"\2\2\u01d0\u01ce\3\2\2\2\u01d1\u01d2\7\4\2\2\u01d2\u01d3\5\f\7\2\u01d3"+
"\u01d4\7\5\2\2\u01d4\u01e7\3\2\2\2\u01d5\u01d6\7\f\2\2\u01d6\u01db\5\f"+
"\7\2\u01d7\u01d8\7\13\2\2\u01d8\u01da\5\f\7\2\u01d9\u01d7\3\2\2\2\u01da"+
"\u01dd\3\2\2\2\u01db\u01d9\3\2\2\2\u01db\u01dc\3\2\2\2\u01dc\u01de\3\2"+
"\2\2\u01dd\u01db\3\2\2\2\u01de\u01df\7\r\2\2\u01df\u01e7\3\2\2\2\u01e0"+
"\u01e7\7\60\2\2\u01e1\u01e7\7\61\2\2\u01e2\u01e7\7=\2\2\u01e3\u01e7\7"+
">\2\2\u01e4\u01e7\7C\2\2\u01e5\u01e7\5\n\6\2\u01e6\u01b9\3\2\2\2\u01e6"+
"\u01bc\3\2\2\2\u01e6\u01be\3\2\2\2\u01e6\u01d1\3\2\2\2\u01e6\u01d5\3\2"+
"\2\2\u01e6\u01e0\3\2\2\2\u01e6\u01e1\3\2\2\2\u01e6\u01e2\3\2\2\2\u01e6"+
"\u01e3\3\2\2\2\u01e6\u01e4\3\2\2\2\u01e6\u01e5\3\2\2\2\u01e7\u0202\3\2"+
"\2\2\u01e8\u01e9\f\25\2\2\u01e9\u01ea\7\35\2\2\u01ea\u0201\5\f\7\25\u01eb"+
"\u01ec\f\23\2\2\u01ec\u01ed\7 \2\2\u01ed\u0201\5\f\7\24\u01ee\u01ef\f"+
"\22\2\2\u01ef\u01f0\t\4\2\2\u01f0\u0201\5\f\7\23\u01f1\u01f2\f\21\2\2"+
"\u01f2\u01f3\t\5\2\2\u01f3\u0201\5\f\7\22\u01f4\u01f5\f\20\2\2\u01f5\u01f6"+
"\t\3\2\2\u01f6\u0201\5\f\7\21\u01f7\u01f8\f\17\2\2\u01f8\u01f9\t\6\2\2"+
"\u01f9\u0201\5\f\7\20\u01fa\u01fb\f\r\2\2\u01fb\u01fc\t\7\2\2\u01fc\u0201"+
"\5\f\7\16\u01fd\u01fe\f\f\2\2\u01fe\u01ff\t\b\2\2\u01ff\u0201\5\f\7\r"+
"\u0200\u01e8\3\2\2\2\u0200\u01eb\3\2\2\2\u0200\u01ee\3\2\2\2\u0200\u01f1"+
"\3\2\2\2\u0200\u01f4\3\2\2\2\u0200\u01f7\3\2\2\2\u0200\u01fa\3\2\2\2\u0200"+
"\u01fd\3\2\2\2\u0201\u0204\3\2\2\2\u0202\u0200\3\2\2\2\u0202\u0203\3\2"+
"\2\2\u0203\r\3\2\2\2\u0204\u0202\3\2\2\2\u0205\u0206\5\26\f\2\u0206\u0207"+
"\7<\2\2\u0207\17\3\2\2\2\u0208\u0209\7<\2\2\u0209\u020b\7\t\2\2\u020a"+
"\u0208\3\2\2\2\u020a\u020b\3\2\2\2\u020b\u020c\3\2\2\2\u020c\u020d\5\f"+
"\7\2\u020d\21\3\2\2\2\u020e\u020f\7<\2\2\u020f\u0210\7\t\2\2\u0210\u0211"+
"\5\f\7\2\u0211\23\3\2\2\2\u0212\u0213\7<\2\2\u0213\u0214\7\t\2\2\u0214"+
"\u0215\7C\2\2\u0215\25\3\2\2\2\u0216\u021d\5\30\r\2\u0217\u0218\5\32\16"+
"\2\u0218\u0219\7\f\2\2\u0219\u021a\5\30\r\2\u021a\u021b\7\r\2\2\u021b"+
"\u021d\3\2\2\2\u021c\u0216\3\2\2\2\u021c\u0217\3\2\2\2\u021d\27\3\2\2"+
"\2\u021e\u021f\t\t\2\2\u021f\31\3\2\2\2\u0220\u0221\7<\2\2\u0221\33\3"+
"\2\2\2J\36 .8>GJPYehn|\u0085\u008e\u0099\u00a1\u00a6\u00aa\u00b1\u00b9"+
"\u00be\u00c2\u00c4\u00cf\u00d7\u00df\u00e4\u00e8\u00f3\u00fb\u0103\u0108"+
"\u010c\u0116\u011e\u0123\u0127\u0129\u0136\u013a\u0145\u0148\u0152\u0155"+
"\u0158\u015f\u0164\u016b\u0177\u017a\u0184\u0187\u018a\u0194\u0197\u019d"+
"\u01a0\u01a7\u01a9\u01af\u01b1\u01b7\u01c5\u01c8\u01ce\u01db\u01e6\u0200"+
"\u0202\u020a\u021c";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
}
}
}