public override Expression VisitJRule([NotNull] RuleEngineParser.JRuleContext context) { var declarationStatementListContext = context.declarationStatementList(); var expressionStatementContext = context.expressionStatement(); var ruleStatementContext = context.ruleStatement(); if (declarationStatementListContext == null) { if (expressionStatementContext != null) { return(VisitExpressionStatement(expressionStatementContext)); } return(VisitRuleStatement(ruleStatementContext)); } var declarationExpression = VisitDeclarationStatementList(declarationStatementListContext) as BlockExpression; if (expressionStatementContext != null) { var expressionStatementExpression = VisitExpressionStatement(expressionStatementContext); var blockExpression1 = declarationExpression.Expressions.Select(e => e).Append(expressionStatementExpression); return(Expression.Block(jRuleObjectTypeMapping.LocalParameterExpressions, blockExpression1)); } var ruleStatementExpression = VisitRuleStatement(ruleStatementContext); var blockExpression2 = declarationExpression.Expressions.Select(e => e).Append(ruleStatementExpression); return(Expression.Block(jRuleObjectTypeMapping.LocalParameterExpressions, blockExpression2)); }
/// <summary> /// Visit a parse tree produced by <see cref="RuleEngineParser.jRule"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitJRule([NotNull] RuleEngineParser.JRuleContext context) { return(VisitChildren(context)); }