public override void EnterStructIncr(LatteParser.StructIncrContext context) { var objectType = new ExpressionTypeVisitor().GetFieldType(context.expr(), context.ID().GetText(), context.start.Line); if (!objectType.Equals(new LatteParser.TIntContext())) { StateUtils.InterruptWithMessage( context.start.Line, context.ID().Symbol.Column, ErrorMessages.DecrFieldOnlyOnInt(objectType.GetText(), context.ID().GetText())); } }
public override void EnterWhile(LatteParser.WhileContext context) { _environment.DetachVarEnv(); var exprType = new ExpressionTypeVisitor().Visit(context.expr()); if (!exprType.Equals(new LatteParser.TBoolContext())) { _errorState.AddErrorMessage(new ErrorMessage( context.expr().start.Line, context.expr().start.Line, ErrorMessages.WhileWrongCondition)); } }
public override void EnterCondElse(LatteParser.CondElseContext context) { _environment.DetachVarEnv(); if (context.stmt()[0] is LatteParser.DeclContext) { _skipNextDecl = true; } var exprType = new ExpressionTypeVisitor().Visit(context.expr()); if (!exprType.Equals(new LatteParser.TBoolContext())) { _errorState.AddErrorMessage(new ErrorMessage( context.expr().start.Line, context.expr().start.Line, ErrorMessages.IfWrongCondition)); } }