public override void Visit(AST_assert_statement assert_statement) { assert_statement.Expression.Accept(evaluateVisitor); bool assertion = evaluateVisitor.Value.BoolValue; if (assertion == false) { scanner.Error("Assertion error.", assert_statement.Expression.Row, assert_statement.Expression.Column); } }
override public void Visit(AST_assert_statement assert_statement) { if (assert_statement != null) { base.Visit(assert_statement); if (assert_statement.Expression.DataType != bool_type) { Error("Assert statement requires a bool type.", assert_statement.Expression); } } }
private AST_assert_statement Parse_assert_statement(TokenKind followSet) { IncrementDepth(); DebugPrint("assert_statement"); AST_assert_statement assert_statement = null; Match(assert_Keyword); if (LookAheadToken().Kind == OpenParenthesis) { Match(OpenParenthesis); assert_statement = new AST_assert_statement( Parse_expression(followSet | CloseParenthesis)); if (LookAheadToken().Kind == CloseParenthesis) { Match(CloseParenthesis); } else { Error("')' expected, '" + LookAheadToken().ToString() + "' found.", LookAheadToken()); SkipUntilFollow(CloseParenthesis | followSet); if (LookAheadToken().Kind == CloseParenthesis) { Match(CloseParenthesis); } } } else { Error("'(' expected, '" + LookAheadToken().ToString() + "' found.", LookAheadToken()); SkipUntilFollow(followSet); } DecrementDepth(); return(assert_statement); }
public virtual void Visit(AST_assert_statement assert_statement) { IncrementDepth(); assert_statement.Expression.Accept(this); DecrementDepth(); }