/// <exception cref="ArgumentException"> /// <para> /// If <paramref name="accessedExpression" />.Type is not <see cref="LSLType.Vector" /> or /// <see cref="LSLType.Rotation" />. /// </para> /// <para> /// Or <paramref name="context" />.member.Text is not one of: "x", "y", "z" or "s". /// </para> /// </exception> /// <exception cref="ArgumentNullException"> /// <paramref name="context" /> or <paramref name="accessedExpression" /> is /// <c>null</c>. /// </exception> internal LSLTupleAccessorNode(LSLParser.DotAccessorExprContext context, ILSLExprNode accessedExpression) { if (context == null) { throw new ArgumentNullException("context"); } if (accessedExpression == null) { throw new ArgumentNullException("context"); } if (accessedExpression.Type != LSLType.Vector && accessedExpression.Type != LSLType.Rotation) { throw new ArgumentException("accessedExpression.Type can only be LSLType.Vector or LSLType.Rotation"); } if (!Utility.EqualsOneOf(context.member.Text, "x", "y", "z", "s")) { throw new ArgumentException("context.member.Text is not x, y, z or s.", "context"); } AccessedComponent = context.member.Text; SourceRangeAccessedComponent = new LSLSourceCodeRange(context.member); AccessedExpression = accessedExpression; AccessedExpression.Parent = this; SourceRange = new LSLSourceCodeRange(context); SourceRangesAvailable = true; }
/// <summary> /// Exit a parse tree produced by <see cref="LSLParser.dotAccessorExpr"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitDotAccessorExpr([NotNull] LSLParser.DotAccessorExprContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="LSLParser.dotAccessorExpr"/>. /// <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 VisitDotAccessorExpr([NotNull] LSLParser.DotAccessorExprContext context) { return(VisitChildren(context)); }