Ejemplo n.º 1
0
        public override SelectionRuleNode VisitPropertyExpression(TmtParser.PropertyExpressionContext context)
        {
            SelectionRuleNode result = null;

            var left  = context.left?.GetText()?.Split('.');
            var right = context.right?.Text?.Trim('\'');

            if ((left?.Length ?? 0) >= 2)
            {
                var scope = Scope.Object;

                // ReSharper disable once PossibleNullReferenceException
                switch (left[0])
                {
                case "source":
                    scope = Scope.Source;
                    break;

                case "target":
                    scope = Scope.Target;
                    break;
                }

                string propertyName = left.Length == 2 ? left[1] : left.Skip(1).Concat('.', null);
                result = GetComparisonRuleNode(propertyName, right, scope);

                if (Rule == null)
                {
                    Rule = result;
                }
            }

            return(result);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Visit a parse tree produced by the <c>propertyExpression</c>
 /// labeled alternative in <see cref="TmtParser.expression"/>.
 /// <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 VisitPropertyExpression([NotNull] TmtParser.PropertyExpressionContext context)
 {
     return(VisitChildren(context));
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Exit a parse tree produced by the <c>propertyExpression</c>
 /// labeled alternative in <see cref="TmtParser.expression"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitPropertyExpression([NotNull] TmtParser.PropertyExpressionContext context)
 {
 }