From e5ab8b2db75b597d507604bc0603730de820d16e Mon Sep 17 00:00:00 2001 From: User <> Date: Fri, 12 May 2017 18:13:12 +0200 Subject: [PATCH] remove expr ambiguity --- src/pp/s1184725/boppi/Basic.g4 | 21 +- src/pp/s1184725/boppi/BasicBaseVisitor.java | 14 +- src/pp/s1184725/boppi/BasicParser.java | 580 ++++++++++---------- src/pp/s1184725/boppi/BasicVisitor.java | 49 +- 4 files changed, 340 insertions(+), 324 deletions(-) diff --git a/src/pp/s1184725/boppi/Basic.g4 b/src/pp/s1184725/boppi/Basic.g4 index 118f08b..824e2e3 100644 --- a/src/pp/s1184725/boppi/Basic.g4 +++ b/src/pp/s1184725/boppi/Basic.g4 @@ -1,23 +1,26 @@ grammar Basic; -program: expr; +program: expr EOF; expr + : singleExpr (COMPOUND singleExpr?)* + ; + +singleExpr : PAROPEN expr PARCLOSE #parens | BRAOPEN expr BRACLOSE #block | IN PAROPEN variable (LISTDELIM variable)* PARCLOSE #read | OUT PAROPEN expr (LISTDELIM expr)* PARCLOSE #write | IFOPEN cond=expr IFTRUE onTrue=expr (IFFALSE onFalse=expr)? IFCLOSE #if | WHILEOPEN cond=expr WHILETRUE onTrue=expr WHILECLOSE #while - | op=(PLUS|MINUS|NOT) expr #prefix1 - | lhs=expr op=(MULTIPLY|DIVIDE|MODULO) rhs=expr #infix1 - | lhs=expr op=(PLUS|MINUS) rhs=expr #infix2 - | lhs=expr op=(LT|LEQ|GTE|GT|EQ|NEQ) rhs=expr #infix3 - | lhs=expr AND rhs=expr #infix4 - | lhs=expr OR rhs=expr #infix5 + | op=(PLUS|MINUS|NOT) singleExpr #prefix1 + | lhs=singleExpr op=(MULTIPLY|DIVIDE|MODULO) rhs=singleExpr #infix1 + | lhs=singleExpr op=(PLUS|MINUS) rhs=singleExpr #infix2 + | lhs=singleExpr op=(LT|LEQ|GTE|GT|EQ|NEQ) rhs=singleExpr #infix3 + | lhs=singleExpr AND rhs=singleExpr #infix4 + | lhs=singleExpr OR rhs=singleExpr #infix5 | DECLARE type IDENTIFIER #declare - | variable ASSIGN expr #assign - | expr (COMPOUND expr?)+ #compound + | variable ASSIGN singleExpr #assign | variable #var | LITERAL10 #number | CHAR #char diff --git a/src/pp/s1184725/boppi/BasicBaseVisitor.java b/src/pp/s1184725/boppi/BasicBaseVisitor.java index d109159..d1b5539 100644 --- a/src/pp/s1184725/boppi/BasicBaseVisitor.java +++ b/src/pp/s1184725/boppi/BasicBaseVisitor.java @@ -18,6 +18,13 @@ public class BasicBaseVisitor extends AbstractParseTreeVisitor implements * {@link #visitChildren} on {@code ctx}.

*/ @Override public T visitProgram(BasicParser.ProgramContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExpr(BasicParser.ExprContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} * @@ -81,13 +88,6 @@ public class BasicBaseVisitor extends AbstractParseTreeVisitor implements * {@link #visitChildren} on {@code ctx}.

*/ @Override public T visitWhile(BasicParser.WhileContext ctx) { return visitChildren(ctx); } - /** - * {@inheritDoc} - * - *

The default implementation returns the result of calling - * {@link #visitChildren} on {@code ctx}.

- */ - @Override public T visitCompound(BasicParser.CompoundContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} * diff --git a/src/pp/s1184725/boppi/BasicParser.java b/src/pp/s1184725/boppi/BasicParser.java index 7d57337..bee716c 100644 --- a/src/pp/s1184725/boppi/BasicParser.java +++ b/src/pp/s1184725/boppi/BasicParser.java @@ -24,9 +24,9 @@ public class BasicParser extends Parser { CHARTYPE=31, ASSIGN=32, COMPOUND=33, LISTDELIM=34, CHAR=35, TRUE=36, FALSE=37, IDENTIFIER=38, LITERAL10=39, WHITESPACE=40, LINECOMMENT=41, BLOCKCOMMENT=42; public static final int - RULE_program = 0, RULE_expr = 1, RULE_type = 2, RULE_variable = 3; + RULE_program = 0, RULE_expr = 1, RULE_singleExpr = 2, RULE_type = 3, RULE_variable = 4; public static final String[] ruleNames = { - "program", "expr", "type", "variable" + "program", "expr", "singleExpr", "type", "variable" }; private static final String[] _LITERAL_NAMES = { @@ -97,6 +97,7 @@ public class BasicParser extends Parser { public ExprContext expr() { return getRuleContext(ExprContext.class,0); } + public TerminalNode EOF() { return getToken(BasicParser.EOF, 0); } public ProgramContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @@ -114,8 +115,10 @@ public class BasicParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(8); - expr(0); + setState(10); + expr(); + setState(11); + match(EOF); } } catch (RecognitionException re) { @@ -130,30 +133,98 @@ public class BasicParser extends Parser { } public static class ExprContext extends ParserRuleContext { + public List singleExpr() { + return getRuleContexts(SingleExprContext.class); + } + public SingleExprContext singleExpr(int i) { + return getRuleContext(SingleExprContext.class,i); + } + public List COMPOUND() { return getTokens(BasicParser.COMPOUND); } + public TerminalNode COMPOUND(int i) { + return getToken(BasicParser.COMPOUND, i); + } public ExprContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_expr; } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitExpr(this); + else return visitor.visitChildren(this); + } + } + + public final ExprContext expr() throws RecognitionException { + ExprContext _localctx = new ExprContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_expr); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(13); + singleExpr(0); + setState(20); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMPOUND) { + { + { + setState(14); + match(COMPOUND); + setState(16); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << PAROPEN) | (1L << BRAOPEN) | (1L << IN) | (1L << OUT) | (1L << IFOPEN) | (1L << WHILEOPEN) | (1L << PLUS) | (1L << MINUS) | (1L << NOT) | (1L << DECLARE) | (1L << CHAR) | (1L << TRUE) | (1L << FALSE) | (1L << IDENTIFIER) | (1L << LITERAL10))) != 0)) { + { + setState(15); + singleExpr(0); + } + } + + } + } + setState(22); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SingleExprContext extends ParserRuleContext { + public SingleExprContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleExpr; } - public ExprContext() { } - public void copyFrom(ExprContext ctx) { + public SingleExprContext() { } + public void copyFrom(SingleExprContext ctx) { super.copyFrom(ctx); } } - public static class ParensContext extends ExprContext { + public static class ParensContext extends SingleExprContext { public TerminalNode PAROPEN() { return getToken(BasicParser.PAROPEN, 0); } public ExprContext expr() { return getRuleContext(ExprContext.class,0); } public TerminalNode PARCLOSE() { return getToken(BasicParser.PARCLOSE, 0); } - public ParensContext(ExprContext ctx) { copyFrom(ctx); } + public ParensContext(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitParens(this); else return visitor.visitChildren(this); } } - public static class ReadContext extends ExprContext { + public static class ReadContext extends SingleExprContext { public TerminalNode IN() { return getToken(BasicParser.IN, 0); } public TerminalNode PAROPEN() { return getToken(BasicParser.PAROPEN, 0); } public List variable() { @@ -167,75 +238,75 @@ public class BasicParser extends Parser { public TerminalNode LISTDELIM(int i) { return getToken(BasicParser.LISTDELIM, i); } - public ReadContext(ExprContext ctx) { copyFrom(ctx); } + public ReadContext(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitRead(this); else return visitor.visitChildren(this); } } - public static class DeclareContext extends ExprContext { + public static class DeclareContext extends SingleExprContext { public TerminalNode DECLARE() { return getToken(BasicParser.DECLARE, 0); } public TypeContext type() { return getRuleContext(TypeContext.class,0); } public TerminalNode IDENTIFIER() { return getToken(BasicParser.IDENTIFIER, 0); } - public DeclareContext(ExprContext ctx) { copyFrom(ctx); } + public DeclareContext(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitDeclare(this); else return visitor.visitChildren(this); } } - public static class BoolContext extends ExprContext { + public static class BoolContext extends SingleExprContext { public TerminalNode TRUE() { return getToken(BasicParser.TRUE, 0); } public TerminalNode FALSE() { return getToken(BasicParser.FALSE, 0); } - public BoolContext(ExprContext ctx) { copyFrom(ctx); } + public BoolContext(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitBool(this); else return visitor.visitChildren(this); } } - public static class VarContext extends ExprContext { + public static class VarContext extends SingleExprContext { public VariableContext variable() { return getRuleContext(VariableContext.class,0); } - public VarContext(ExprContext ctx) { copyFrom(ctx); } + public VarContext(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitVar(this); else return visitor.visitChildren(this); } } - public static class Infix2Context extends ExprContext { - public ExprContext lhs; + public static class Infix2Context extends SingleExprContext { + public SingleExprContext lhs; public Token op; - public ExprContext rhs; - public List expr() { - return getRuleContexts(ExprContext.class); + public SingleExprContext rhs; + public List singleExpr() { + return getRuleContexts(SingleExprContext.class); } - public ExprContext expr(int i) { - return getRuleContext(ExprContext.class,i); + public SingleExprContext singleExpr(int i) { + return getRuleContext(SingleExprContext.class,i); } public TerminalNode PLUS() { return getToken(BasicParser.PLUS, 0); } public TerminalNode MINUS() { return getToken(BasicParser.MINUS, 0); } - public Infix2Context(ExprContext ctx) { copyFrom(ctx); } + public Infix2Context(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitInfix2(this); else return visitor.visitChildren(this); } } - public static class Infix3Context extends ExprContext { - public ExprContext lhs; + public static class Infix3Context extends SingleExprContext { + public SingleExprContext lhs; public Token op; - public ExprContext rhs; - public List expr() { - return getRuleContexts(ExprContext.class); + public SingleExprContext rhs; + public List singleExpr() { + return getRuleContexts(SingleExprContext.class); } - public ExprContext expr(int i) { - return getRuleContext(ExprContext.class,i); + public SingleExprContext singleExpr(int i) { + return getRuleContext(SingleExprContext.class,i); } public TerminalNode LT() { return getToken(BasicParser.LT, 0); } public TerminalNode LEQ() { return getToken(BasicParser.LEQ, 0); } @@ -243,34 +314,34 @@ public class BasicParser extends Parser { public TerminalNode GT() { return getToken(BasicParser.GT, 0); } public TerminalNode EQ() { return getToken(BasicParser.EQ, 0); } public TerminalNode NEQ() { return getToken(BasicParser.NEQ, 0); } - public Infix3Context(ExprContext ctx) { copyFrom(ctx); } + public Infix3Context(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitInfix3(this); else return visitor.visitChildren(this); } } - public static class Infix1Context extends ExprContext { - public ExprContext lhs; + public static class Infix1Context extends SingleExprContext { + public SingleExprContext lhs; public Token op; - public ExprContext rhs; - public List expr() { - return getRuleContexts(ExprContext.class); + public SingleExprContext rhs; + public List singleExpr() { + return getRuleContexts(SingleExprContext.class); } - public ExprContext expr(int i) { - return getRuleContext(ExprContext.class,i); + public SingleExprContext singleExpr(int i) { + return getRuleContext(SingleExprContext.class,i); } public TerminalNode MULTIPLY() { return getToken(BasicParser.MULTIPLY, 0); } public TerminalNode DIVIDE() { return getToken(BasicParser.DIVIDE, 0); } public TerminalNode MODULO() { return getToken(BasicParser.MODULO, 0); } - public Infix1Context(ExprContext ctx) { copyFrom(ctx); } + public Infix1Context(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitInfix1(this); else return visitor.visitChildren(this); } } - public static class WhileContext extends ExprContext { + public static class WhileContext extends SingleExprContext { public ExprContext cond; public ExprContext onTrue; public TerminalNode WHILEOPEN() { return getToken(BasicParser.WHILEOPEN, 0); } @@ -282,97 +353,79 @@ public class BasicParser extends Parser { public ExprContext expr(int i) { return getRuleContext(ExprContext.class,i); } - public WhileContext(ExprContext ctx) { copyFrom(ctx); } + public WhileContext(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitWhile(this); else return visitor.visitChildren(this); } } - public static class CompoundContext extends ExprContext { - public List expr() { - return getRuleContexts(ExprContext.class); - } - public ExprContext expr(int i) { - return getRuleContext(ExprContext.class,i); - } - public List COMPOUND() { return getTokens(BasicParser.COMPOUND); } - public TerminalNode COMPOUND(int i) { - return getToken(BasicParser.COMPOUND, i); - } - public CompoundContext(ExprContext ctx) { copyFrom(ctx); } - @Override - public T accept(ParseTreeVisitor visitor) { - if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitCompound(this); - else return visitor.visitChildren(this); - } - } - public static class Infix4Context extends ExprContext { - public ExprContext lhs; - public ExprContext rhs; + public static class Infix4Context extends SingleExprContext { + public SingleExprContext lhs; + public SingleExprContext rhs; public TerminalNode AND() { return getToken(BasicParser.AND, 0); } - public List expr() { - return getRuleContexts(ExprContext.class); + public List singleExpr() { + return getRuleContexts(SingleExprContext.class); } - public ExprContext expr(int i) { - return getRuleContext(ExprContext.class,i); + public SingleExprContext singleExpr(int i) { + return getRuleContext(SingleExprContext.class,i); } - public Infix4Context(ExprContext ctx) { copyFrom(ctx); } + public Infix4Context(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitInfix4(this); else return visitor.visitChildren(this); } } - public static class Infix5Context extends ExprContext { - public ExprContext lhs; - public ExprContext rhs; + public static class Infix5Context extends SingleExprContext { + public SingleExprContext lhs; + public SingleExprContext rhs; public TerminalNode OR() { return getToken(BasicParser.OR, 0); } - public List expr() { - return getRuleContexts(ExprContext.class); + public List singleExpr() { + return getRuleContexts(SingleExprContext.class); } - public ExprContext expr(int i) { - return getRuleContext(ExprContext.class,i); + public SingleExprContext singleExpr(int i) { + return getRuleContext(SingleExprContext.class,i); } - public Infix5Context(ExprContext ctx) { copyFrom(ctx); } + public Infix5Context(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitInfix5(this); else return visitor.visitChildren(this); } } - public static class NumberContext extends ExprContext { + public static class NumberContext extends SingleExprContext { public TerminalNode LITERAL10() { return getToken(BasicParser.LITERAL10, 0); } - public NumberContext(ExprContext ctx) { copyFrom(ctx); } + public NumberContext(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitNumber(this); else return visitor.visitChildren(this); } } - public static class CharContext extends ExprContext { + public static class CharContext extends SingleExprContext { public TerminalNode CHAR() { return getToken(BasicParser.CHAR, 0); } - public CharContext(ExprContext ctx) { copyFrom(ctx); } + public CharContext(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitChar(this); else return visitor.visitChildren(this); } } - public static class BlockContext extends ExprContext { + public static class BlockContext extends SingleExprContext { public TerminalNode BRAOPEN() { return getToken(BasicParser.BRAOPEN, 0); } public ExprContext expr() { return getRuleContext(ExprContext.class,0); } public TerminalNode BRACLOSE() { return getToken(BasicParser.BRACLOSE, 0); } - public BlockContext(ExprContext ctx) { copyFrom(ctx); } + public BlockContext(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitBlock(this); else return visitor.visitChildren(this); } } - public static class WriteContext extends ExprContext { + public static class WriteContext extends SingleExprContext { public TerminalNode OUT() { return getToken(BasicParser.OUT, 0); } public TerminalNode PAROPEN() { return getToken(BasicParser.PAROPEN, 0); } public List expr() { @@ -386,14 +439,14 @@ public class BasicParser extends Parser { public TerminalNode LISTDELIM(int i) { return getToken(BasicParser.LISTDELIM, i); } - public WriteContext(ExprContext ctx) { copyFrom(ctx); } + public WriteContext(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitWrite(this); else return visitor.visitChildren(this); } } - public static class IfContext extends ExprContext { + public static class IfContext extends SingleExprContext { public ExprContext cond; public ExprContext onTrue; public ExprContext onFalse; @@ -407,37 +460,37 @@ public class BasicParser extends Parser { return getRuleContext(ExprContext.class,i); } public TerminalNode IFFALSE() { return getToken(BasicParser.IFFALSE, 0); } - public IfContext(ExprContext ctx) { copyFrom(ctx); } + public IfContext(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitIf(this); else return visitor.visitChildren(this); } } - public static class Prefix1Context extends ExprContext { + public static class Prefix1Context extends SingleExprContext { public Token op; - public ExprContext expr() { - return getRuleContext(ExprContext.class,0); + public SingleExprContext singleExpr() { + return getRuleContext(SingleExprContext.class,0); } public TerminalNode PLUS() { return getToken(BasicParser.PLUS, 0); } public TerminalNode MINUS() { return getToken(BasicParser.MINUS, 0); } public TerminalNode NOT() { return getToken(BasicParser.NOT, 0); } - public Prefix1Context(ExprContext ctx) { copyFrom(ctx); } + public Prefix1Context(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitPrefix1(this); else return visitor.visitChildren(this); } } - public static class AssignContext extends ExprContext { + public static class AssignContext extends SingleExprContext { public VariableContext variable() { return getRuleContext(VariableContext.class,0); } public TerminalNode ASSIGN() { return getToken(BasicParser.ASSIGN, 0); } - public ExprContext expr() { - return getRuleContext(ExprContext.class,0); + public SingleExprContext singleExpr() { + return getRuleContext(SingleExprContext.class,0); } - public AssignContext(ExprContext ctx) { copyFrom(ctx); } + public AssignContext(SingleExprContext ctx) { copyFrom(ctx); } @Override public T accept(ParseTreeVisitor visitor) { if ( visitor instanceof BasicVisitor ) return ((BasicVisitor)visitor).visitAssign(this); @@ -445,36 +498,36 @@ public class BasicParser extends Parser { } } - public final ExprContext expr() throws RecognitionException { - return expr(0); + public final SingleExprContext singleExpr() throws RecognitionException { + return singleExpr(0); } - private ExprContext expr(int _p) throws RecognitionException { + private SingleExprContext singleExpr(int _p) throws RecognitionException { ParserRuleContext _parentctx = _ctx; int _parentState = getState(); - ExprContext _localctx = new ExprContext(_ctx, _parentState); - ExprContext _prevctx = _localctx; - int _startState = 2; - enterRecursionRule(_localctx, 2, RULE_expr, _p); + SingleExprContext _localctx = new SingleExprContext(_ctx, _parentState); + SingleExprContext _prevctx = _localctx; + int _startState = 4; + enterRecursionRule(_localctx, 4, RULE_singleExpr, _p); int _la; try { int _alt; enterOuterAlt(_localctx, 1); { - setState(73); + setState(86); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) { case 1: { _localctx = new ParensContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(11); + setState(24); match(PAROPEN); - setState(12); - expr(0); - setState(13); + setState(25); + expr(); + setState(26); match(PARCLOSE); } break; @@ -483,11 +536,11 @@ public class BasicParser extends Parser { _localctx = new BlockContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(15); + setState(28); match(BRAOPEN); - setState(16); - expr(0); - setState(17); + setState(29); + expr(); + setState(30); match(BRACLOSE); } break; @@ -496,29 +549,29 @@ public class BasicParser extends Parser { _localctx = new ReadContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(19); + setState(32); match(IN); - setState(20); + setState(33); match(PAROPEN); - setState(21); + setState(34); variable(); - setState(26); + setState(39); _errHandler.sync(this); _la = _input.LA(1); while (_la==LISTDELIM) { { { - setState(22); + setState(35); match(LISTDELIM); - setState(23); + setState(36); variable(); } } - setState(28); + setState(41); _errHandler.sync(this); _la = _input.LA(1); } - setState(29); + setState(42); match(PARCLOSE); } break; @@ -527,29 +580,29 @@ public class BasicParser extends Parser { _localctx = new WriteContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(31); + setState(44); match(OUT); - setState(32); + setState(45); match(PAROPEN); - setState(33); - expr(0); - setState(38); + setState(46); + expr(); + setState(51); _errHandler.sync(this); _la = _input.LA(1); while (_la==LISTDELIM) { { { - setState(34); + setState(47); match(LISTDELIM); - setState(35); - expr(0); + setState(48); + expr(); } } - setState(40); + setState(53); _errHandler.sync(this); _la = _input.LA(1); } - setState(41); + setState(54); match(PARCLOSE); } break; @@ -558,27 +611,27 @@ public class BasicParser extends Parser { _localctx = new IfContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(43); + setState(56); match(IFOPEN); - setState(44); - ((IfContext)_localctx).cond = expr(0); - setState(45); + setState(57); + ((IfContext)_localctx).cond = expr(); + setState(58); match(IFTRUE); - setState(46); - ((IfContext)_localctx).onTrue = expr(0); - setState(49); + setState(59); + ((IfContext)_localctx).onTrue = expr(); + setState(62); _errHandler.sync(this); _la = _input.LA(1); if (_la==IFFALSE) { { - setState(47); + setState(60); match(IFFALSE); - setState(48); - ((IfContext)_localctx).onFalse = expr(0); + setState(61); + ((IfContext)_localctx).onFalse = expr(); } } - setState(51); + setState(64); match(IFCLOSE); } break; @@ -587,15 +640,15 @@ public class BasicParser extends Parser { _localctx = new WhileContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(53); + setState(66); match(WHILEOPEN); - setState(54); - ((WhileContext)_localctx).cond = expr(0); - setState(55); + setState(67); + ((WhileContext)_localctx).cond = expr(); + setState(68); match(WHILETRUE); - setState(56); - ((WhileContext)_localctx).onTrue = expr(0); - setState(57); + setState(69); + ((WhileContext)_localctx).onTrue = expr(); + setState(70); match(WHILECLOSE); } break; @@ -604,7 +657,7 @@ public class BasicParser extends Parser { _localctx = new Prefix1Context(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(59); + setState(72); ((Prefix1Context)_localctx).op = _input.LT(1); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << PLUS) | (1L << MINUS) | (1L << NOT))) != 0)) ) { @@ -615,8 +668,8 @@ public class BasicParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(60); - expr(13); + setState(73); + singleExpr(12); } break; case 8: @@ -624,11 +677,11 @@ public class BasicParser extends Parser { _localctx = new DeclareContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(61); + setState(74); match(DECLARE); - setState(62); + setState(75); type(); - setState(63); + setState(76); match(IDENTIFIER); } break; @@ -637,12 +690,12 @@ public class BasicParser extends Parser { _localctx = new AssignContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(65); + setState(78); variable(); - setState(66); + setState(79); match(ASSIGN); - setState(67); - expr(6); + setState(80); + singleExpr(5); } break; case 10: @@ -650,7 +703,7 @@ public class BasicParser extends Parser { _localctx = new VarContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(69); + setState(82); variable(); } break; @@ -659,7 +712,7 @@ public class BasicParser extends Parser { _localctx = new NumberContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(70); + setState(83); match(LITERAL10); } break; @@ -668,7 +721,7 @@ public class BasicParser extends Parser { _localctx = new CharContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(71); + setState(84); match(CHAR); } break; @@ -677,7 +730,7 @@ public class BasicParser extends Parser { _localctx = new BoolContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(72); + setState(85); _la = _input.LA(1); if ( !(_la==TRUE || _la==FALSE) ) { _errHandler.recoverInline(this); @@ -691,7 +744,7 @@ public class BasicParser extends Parser { break; } _ctx.stop = _input.LT(-1); - setState(101); + setState(105); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,7,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { @@ -699,17 +752,17 @@ public class BasicParser extends Parser { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { - setState(99); + setState(103); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { case 1: { - _localctx = new Infix1Context(new ExprContext(_parentctx, _parentState)); + _localctx = new Infix1Context(new SingleExprContext(_parentctx, _parentState)); ((Infix1Context)_localctx).lhs = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(75); - if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); - setState(76); + pushNewRecursionContext(_localctx, _startState, RULE_singleExpr); + setState(88); + if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); + setState(89); ((Infix1Context)_localctx).op = _input.LT(1); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << MULTIPLY) | (1L << DIVIDE) | (1L << MODULO))) != 0)) ) { @@ -720,18 +773,18 @@ public class BasicParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(77); - ((Infix1Context)_localctx).rhs = expr(13); + setState(90); + ((Infix1Context)_localctx).rhs = singleExpr(12); } break; case 2: { - _localctx = new Infix2Context(new ExprContext(_parentctx, _parentState)); + _localctx = new Infix2Context(new SingleExprContext(_parentctx, _parentState)); ((Infix2Context)_localctx).lhs = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(78); - if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); - setState(79); + pushNewRecursionContext(_localctx, _startState, RULE_singleExpr); + setState(91); + if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); + setState(92); ((Infix2Context)_localctx).op = _input.LT(1); _la = _input.LA(1); if ( !(_la==PLUS || _la==MINUS) ) { @@ -742,18 +795,18 @@ public class BasicParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(80); - ((Infix2Context)_localctx).rhs = expr(12); + setState(93); + ((Infix2Context)_localctx).rhs = singleExpr(11); } break; case 3: { - _localctx = new Infix3Context(new ExprContext(_parentctx, _parentState)); + _localctx = new Infix3Context(new SingleExprContext(_parentctx, _parentState)); ((Infix3Context)_localctx).lhs = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(81); - if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); - setState(82); + pushNewRecursionContext(_localctx, _startState, RULE_singleExpr); + setState(94); + if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); + setState(95); ((Infix3Context)_localctx).op = _input.LT(1); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LEQ) | (1L << GTE) | (1L << NEQ) | (1L << EQ) | (1L << LT) | (1L << GT))) != 0)) ) { @@ -764,78 +817,40 @@ public class BasicParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(83); - ((Infix3Context)_localctx).rhs = expr(11); + setState(96); + ((Infix3Context)_localctx).rhs = singleExpr(10); } break; case 4: { - _localctx = new Infix4Context(new ExprContext(_parentctx, _parentState)); + _localctx = new Infix4Context(new SingleExprContext(_parentctx, _parentState)); ((Infix4Context)_localctx).lhs = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(84); - if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); - setState(85); + pushNewRecursionContext(_localctx, _startState, RULE_singleExpr); + setState(97); + if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); + setState(98); match(AND); - setState(86); - ((Infix4Context)_localctx).rhs = expr(10); + setState(99); + ((Infix4Context)_localctx).rhs = singleExpr(9); } break; case 5: { - _localctx = new Infix5Context(new ExprContext(_parentctx, _parentState)); + _localctx = new Infix5Context(new SingleExprContext(_parentctx, _parentState)); ((Infix5Context)_localctx).lhs = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(87); - if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); - setState(88); + pushNewRecursionContext(_localctx, _startState, RULE_singleExpr); + setState(100); + if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); + setState(101); match(OR); - setState(89); - ((Infix5Context)_localctx).rhs = expr(9); - } - break; - case 6: - { - _localctx = new CompoundContext(new ExprContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(90); - if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); - setState(95); - _errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - setState(91); - match(COMPOUND); - setState(93); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) { - case 1: - { - setState(92); - expr(0); - } - break; - } - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(97); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,5,_ctx); - } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + setState(102); + ((Infix5Context)_localctx).rhs = singleExpr(8); } break; } } } - setState(103); + setState(107); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,7,_ctx); } @@ -873,10 +888,10 @@ public class BasicParser extends Parser { public final TypeContext type() throws RecognitionException { TypeContext _localctx = new TypeContext(_ctx, getState()); - enterRule(_localctx, 4, RULE_type); + enterRule(_localctx, 6, RULE_type); int _la; try { - setState(106); + setState(110); _errHandler.sync(this); switch (_input.LA(1)) { case INTTYPE: @@ -884,7 +899,7 @@ public class BasicParser extends Parser { case CHARTYPE: enterOuterAlt(_localctx, 1); { - setState(104); + setState(108); ((TypeContext)_localctx).staticType = _input.LT(1); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << INTTYPE) | (1L << BOOLTYPE) | (1L << CHARTYPE))) != 0)) ) { @@ -900,7 +915,7 @@ public class BasicParser extends Parser { case IDENTIFIER: enterOuterAlt(_localctx, 2); { - setState(105); + setState(109); variable(); } break; @@ -934,11 +949,11 @@ public class BasicParser extends Parser { public final VariableContext variable() throws RecognitionException { VariableContext _localctx = new VariableContext(_ctx, getState()); - enterRule(_localctx, 6, RULE_variable); + enterRule(_localctx, 8, RULE_variable); try { enterOuterAlt(_localctx, 1); { - setState(108); + setState(112); match(IDENTIFIER); } } @@ -955,60 +970,59 @@ public class BasicParser extends Parser { public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { switch (ruleIndex) { - case 1: - return expr_sempred((ExprContext)_localctx, predIndex); + case 2: + return singleExpr_sempred((SingleExprContext)_localctx, predIndex); } return true; } - private boolean expr_sempred(ExprContext _localctx, int predIndex) { + private boolean singleExpr_sempred(SingleExprContext _localctx, int predIndex) { switch (predIndex) { case 0: - return precpred(_ctx, 12); - case 1: return precpred(_ctx, 11); - case 2: + case 1: return precpred(_ctx, 10); - case 3: + case 2: return precpred(_ctx, 9); - case 4: + case 3: return precpred(_ctx, 8); - case 5: - return precpred(_ctx, 5); + case 4: + return precpred(_ctx, 7); } return true; } public static final String _serializedATN = - "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3,q\4\2\t\2\4\3\t\3"+ - "\4\4\t\4\4\5\t\5\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3"+ - "\3\3\3\3\3\7\3\33\n\3\f\3\16\3\36\13\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\3\3\3\3\3\3\3\3\5\3\64\n\3\3\3\3"+ - "\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3"+ - "\3\3\3\3\3\3\5\3L\n\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3"+ - "\3\3\3\3\3\3\3\3\3\3\3\3\5\3`\n\3\6\3b\n\3\r\3\16\3c\7\3f\n\3\f\3\16\3"+ - "i\13\3\3\4\3\4\5\4m\n\4\3\5\3\5\3\5\2\3\4\6\2\4\6\b\2\b\3\2\20\22\3\2"+ - "&\'\3\2\23\25\3\2\20\21\3\2\26\33\3\2\37!\2\u0084\2\n\3\2\2\2\4K\3\2\2"+ - "\2\6l\3\2\2\2\bn\3\2\2\2\n\13\5\4\3\2\13\3\3\2\2\2\f\r\b\3\1\2\r\16\7"+ - "\3\2\2\16\17\5\4\3\2\17\20\7\4\2\2\20L\3\2\2\2\21\22\7\5\2\2\22\23\5\4"+ - "\3\2\23\24\7\6\2\2\24L\3\2\2\2\25\26\7\7\2\2\26\27\7\3\2\2\27\34\5\b\5"+ - "\2\30\31\7$\2\2\31\33\5\b\5\2\32\30\3\2\2\2\33\36\3\2\2\2\34\32\3\2\2"+ - "\2\34\35\3\2\2\2\35\37\3\2\2\2\36\34\3\2\2\2\37 \7\4\2\2 L\3\2\2\2!\""+ - "\7\b\2\2\"#\7\3\2\2#(\5\4\3\2$%\7$\2\2%\'\5\4\3\2&$\3\2\2\2\'*\3\2\2\2"+ - "(&\3\2\2\2()\3\2\2\2)+\3\2\2\2*(\3\2\2\2+,\7\4\2\2,L\3\2\2\2-.\7\t\2\2"+ - "./\5\4\3\2/\60\7\n\2\2\60\63\5\4\3\2\61\62\7\13\2\2\62\64\5\4\3\2\63\61"+ - "\3\2\2\2\63\64\3\2\2\2\64\65\3\2\2\2\65\66\7\f\2\2\66L\3\2\2\2\678\7\r"+ - "\2\289\5\4\3\29:\7\16\2\2:;\5\4\3\2;<\7\17\2\2\t\2\2\2>L\5"+ - "\4\3\17?@\7\36\2\2@A\5\6\4\2AB\7(\2\2BL\3\2\2\2CD\5\b\5\2DE\7\"\2\2EF"+ - "\5\4\3\bFL\3\2\2\2GL\5\b\5\2HL\7)\2\2IL\7%\2\2JL\t\3\2\2K\f\3\2\2\2K\21"+ - "\3\2\2\2K\25\3\2\2\2K!\3\2\2\2K-\3\2\2\2K\67\3\2\2\2K=\3\2\2\2K?\3\2\2"+ - "\2KC\3\2\2\2KG\3\2\2\2KH\3\2\2\2KI\3\2\2\2KJ\3\2\2\2Lg\3\2\2\2MN\f\16"+ - "\2\2NO\t\4\2\2Of\5\4\3\17PQ\f\r\2\2QR\t\5\2\2Rf\5\4\3\16ST\f\f\2\2TU\t"+ - "\6\2\2Uf\5\4\3\rVW\f\13\2\2WX\7\34\2\2Xf\5\4\3\fYZ\f\n\2\2Z[\7\35\2\2"+ - "[f\5\4\3\13\\a\f\7\2\2]_\7#\2\2^`\5\4\3\2_^\3\2\2\2_`\3\2\2\2`b\3\2\2"+ - "\2a]\3\2\2\2bc\3\2\2\2ca\3\2\2\2cd\3\2\2\2df\3\2\2\2eM\3\2\2\2eP\3\2\2"+ - "\2eS\3\2\2\2eV\3\2\2\2eY\3\2\2\2e\\\3\2\2\2fi\3\2\2\2ge\3\2\2\2gh\3\2"+ - "\2\2h\5\3\2\2\2ig\3\2\2\2jm\t\7\2\2km\5\b\5\2lj\3\2\2\2lk\3\2\2\2m\7\3"+ - "\2\2\2no\7(\2\2o\t\3\2\2\2\13\34(\63K_cegl"; + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3,u\4\2\t\2\4\3\t\3"+ + "\4\4\t\4\4\5\t\5\4\6\t\6\3\2\3\2\3\2\3\3\3\3\3\3\5\3\23\n\3\7\3\25\n\3"+ + "\f\3\16\3\30\13\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4"+ + "\3\4\7\4(\n\4\f\4\16\4+\13\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\7\4\64\n\4\f"+ + "\4\16\4\67\13\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\5\4A\n\4\3\4\3\4\3\4\3"+ + "\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4"+ + "\3\4\5\4Y\n\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4"+ + "\3\4\7\4j\n\4\f\4\16\4m\13\4\3\5\3\5\5\5q\n\5\3\6\3\6\3\6\2\3\6\7\2\4"+ + "\6\b\n\2\b\3\2\20\22\3\2&\'\3\2\23\25\3\2\20\21\3\2\26\33\3\2\37!\2\u0086"+ + "\2\f\3\2\2\2\4\17\3\2\2\2\6X\3\2\2\2\bp\3\2\2\2\nr\3\2\2\2\f\r\5\4\3\2"+ + "\r\16\7\2\2\3\16\3\3\2\2\2\17\26\5\6\4\2\20\22\7#\2\2\21\23\5\6\4\2\22"+ + "\21\3\2\2\2\22\23\3\2\2\2\23\25\3\2\2\2\24\20\3\2\2\2\25\30\3\2\2\2\26"+ + "\24\3\2\2\2\26\27\3\2\2\2\27\5\3\2\2\2\30\26\3\2\2\2\31\32\b\4\1\2\32"+ + "\33\7\3\2\2\33\34\5\4\3\2\34\35\7\4\2\2\35Y\3\2\2\2\36\37\7\5\2\2\37 "+ + "\5\4\3\2 !\7\6\2\2!Y\3\2\2\2\"#\7\7\2\2#$\7\3\2\2$)\5\n\6\2%&\7$\2\2&"+ + "(\5\n\6\2\'%\3\2\2\2(+\3\2\2\2)\'\3\2\2\2)*\3\2\2\2*,\3\2\2\2+)\3\2\2"+ + "\2,-\7\4\2\2-Y\3\2\2\2./\7\b\2\2/\60\7\3\2\2\60\65\5\4\3\2\61\62\7$\2"+ + "\2\62\64\5\4\3\2\63\61\3\2\2\2\64\67\3\2\2\2\65\63\3\2\2\2\65\66\3\2\2"+ + "\2\668\3\2\2\2\67\65\3\2\2\289\7\4\2\29Y\3\2\2\2:;\7\t\2\2;<\5\4\3\2<"+ + "=\7\n\2\2=@\5\4\3\2>?\7\13\2\2?A\5\4\3\2@>\3\2\2\2@A\3\2\2\2AB\3\2\2\2"+ + "BC\7\f\2\2CY\3\2\2\2DE\7\r\2\2EF\5\4\3\2FG\7\16\2\2GH\5\4\3\2HI\7\17\2"+ + "\2IY\3\2\2\2JK\t\2\2\2KY\5\6\4\16LM\7\36\2\2MN\5\b\5\2NO\7(\2\2OY\3\2"+ + "\2\2PQ\5\n\6\2QR\7\"\2\2RS\5\6\4\7SY\3\2\2\2TY\5\n\6\2UY\7)\2\2VY\7%\2"+ + "\2WY\t\3\2\2X\31\3\2\2\2X\36\3\2\2\2X\"\3\2\2\2X.\3\2\2\2X:\3\2\2\2XD"+ + "\3\2\2\2XJ\3\2\2\2XL\3\2\2\2XP\3\2\2\2XT\3\2\2\2XU\3\2\2\2XV\3\2\2\2X"+ + "W\3\2\2\2Yk\3\2\2\2Z[\f\r\2\2[\\\t\4\2\2\\j\5\6\4\16]^\f\f\2\2^_\t\5\2"+ + "\2_j\5\6\4\r`a\f\13\2\2ab\t\6\2\2bj\5\6\4\fcd\f\n\2\2de\7\34\2\2ej\5\6"+ + "\4\13fg\f\t\2\2gh\7\35\2\2hj\5\6\4\niZ\3\2\2\2i]\3\2\2\2i`\3\2\2\2ic\3"+ + "\2\2\2if\3\2\2\2jm\3\2\2\2ki\3\2\2\2kl\3\2\2\2l\7\3\2\2\2mk\3\2\2\2nq"+ + "\t\7\2\2oq\5\n\6\2pn\3\2\2\2po\3\2\2\2q\t\3\2\2\2rs\7(\2\2s\13\3\2\2\2"+ + "\13\22\26)\65@Xikp"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/src/pp/s1184725/boppi/BasicVisitor.java b/src/pp/s1184725/boppi/BasicVisitor.java index 06729fa..14f34c5 100644 --- a/src/pp/s1184725/boppi/BasicVisitor.java +++ b/src/pp/s1184725/boppi/BasicVisitor.java @@ -16,135 +16,134 @@ public interface BasicVisitor extends ParseTreeVisitor { * @return the visitor result */ T visitProgram(BasicParser.ProgramContext ctx); + /** + * Visit a parse tree produced by {@link BasicParser#expr}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExpr(BasicParser.ExprContext ctx); /** * Visit a parse tree produced by the {@code parens} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitParens(BasicParser.ParensContext ctx); /** * Visit a parse tree produced by the {@code read} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitRead(BasicParser.ReadContext ctx); /** * Visit a parse tree produced by the {@code declare} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitDeclare(BasicParser.DeclareContext ctx); /** * Visit a parse tree produced by the {@code bool} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitBool(BasicParser.BoolContext ctx); /** * Visit a parse tree produced by the {@code var} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitVar(BasicParser.VarContext ctx); /** * Visit a parse tree produced by the {@code infix2} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitInfix2(BasicParser.Infix2Context ctx); /** * Visit a parse tree produced by the {@code infix3} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitInfix3(BasicParser.Infix3Context ctx); /** * Visit a parse tree produced by the {@code infix1} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitInfix1(BasicParser.Infix1Context ctx); /** * Visit a parse tree produced by the {@code while} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitWhile(BasicParser.WhileContext ctx); - /** - * Visit a parse tree produced by the {@code compound} - * labeled alternative in {@link BasicParser#expr}. - * @param ctx the parse tree - * @return the visitor result - */ - T visitCompound(BasicParser.CompoundContext ctx); /** * Visit a parse tree produced by the {@code infix4} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitInfix4(BasicParser.Infix4Context ctx); /** * Visit a parse tree produced by the {@code infix5} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitInfix5(BasicParser.Infix5Context ctx); /** * Visit a parse tree produced by the {@code number} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitNumber(BasicParser.NumberContext ctx); /** * Visit a parse tree produced by the {@code char} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitChar(BasicParser.CharContext ctx); /** * Visit a parse tree produced by the {@code block} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitBlock(BasicParser.BlockContext ctx); /** * Visit a parse tree produced by the {@code write} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitWrite(BasicParser.WriteContext ctx); /** * Visit a parse tree produced by the {@code if} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitIf(BasicParser.IfContext ctx); /** * Visit a parse tree produced by the {@code prefix1} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */ T visitPrefix1(BasicParser.Prefix1Context ctx); /** * Visit a parse tree produced by the {@code assign} - * labeled alternative in {@link BasicParser#expr}. + * labeled alternative in {@link BasicParser#singleExpr}. * @param ctx the parse tree * @return the visitor result */