public override SelectionRuleNode VisitSubjectExpression(TmtParser.SubjectExpressionContext context) { SelectionRuleNode result = null; var sourceTarget = context.left?.GetText(); var id = context.right?.Text?.Trim('\''); if (!string.IsNullOrWhiteSpace(id) && string.CompareOrdinal(id, "ROOT") != 0 && Enum.TryParse <Scope>(sourceTarget, true, out var scope)) { result = GetIdComparisonRuleNode(id, scope); if (Rule == null) { Rule = result; } } return(result); }
/// <summary> /// Visit a parse tree produced by the <c>subjectExpression</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 VisitSubjectExpression([NotNull] TmtParser.SubjectExpressionContext context) { return(VisitChildren(context)); }
/// <summary> /// Exit a parse tree produced by the <c>subjectExpression</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 ExitSubjectExpression([NotNull] TmtParser.SubjectExpressionContext context) { }