private static SyntaxNode IfElseStatement(RParser.IfElseStatementContext ifStatement, Func <ParserRuleContext, Scope, SyntaxNode> transform, Scope scope) { if (!topLevel(ifStatement)) { throw new NotImplementedException(); } var exprs = ifStatement.expr(); var cond = (ExpressionSyntax)transform(exprs[0], scope); var @if = parseBlock(exprs[1], transform, scope); var @else = parseBlock(exprs[2], transform, scope); return(@ifelse.Get <IfStatementSyntax>(cond) .WithStatement(@if) .WithElse(CSharp.ElseClause( @else))); }
/// <summary> /// Exit a parse tree produced by <see cref="RParser.IfElseStatement"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitIfElseStatement([NotNull] RParser.IfElseStatementContext context) { }