/// <summary> /// Constructor. /// </summary> /// <param name="context"></param> /// <param name="condition"></param> /// <param name="then"></param> /// <param name="else"></param> public ConditionalExpression(IParserLocation context, IExpression condition, IExpression then, IExpression @else) { Condition = condition; this.then = then; this.@else = @else; Location = context; }
/// <summary> /// Constructor. /// </summary> /// <param name="parserContext"></param> /// <param name="kind"></param> /// <param name="castTypeName"></param> /// <param name="expression"></param> public CastExpression(IParserLocation parserContext, CoercionKind kind, string castTypeName, IExpression expression) { Location = parserContext; Kind = kind; CastTypeName = castTypeName; Expression = expression; }
/// <summary> /// Constructor. /// </summary> /// <param name="context"></param> /// <param name="operator"></param> /// <param name="leftExpression"></param> /// <param name="rightExpression"></param> public BinaryOperationExpression(IParserLocation context, BinaryOperator @operator, IExpression leftExpression, IExpression rightExpression) { this.leftExpression = leftExpression; this.rightExpression = rightExpression; Operator = @operator; Location = context; SemanticType = null; }
/// <summary> /// Constructor. /// </summary> /// <param name="location"></param> /// <param name="this"></param> /// <param name="delimiter"></param> /// <param name="memberName"></param> public MemberExpression(IParserLocation location, IExpression @this, IdDelimiter delimiter, string memberName) { Location = location; SemanticType = null; ThisExpression = @this; MemberName = memberName; Delimiter = delimiter; }
/// <summary> /// Creates a ArrayExpression. /// </summary> /// <param name="context"></param> /// <param name="elements"></param> public ArrayExpression(IParserLocation context, IEnumerable <IExpression> elements) { Elements = elements.ToArray(); Location = context; SemanticType = null; }
/// <summary> /// Creates a AST node for boolean literal. /// </summary> /// <param name="context"></param> /// <param name="value"></param> public BooleanLiteralExpression(IParserLocation context, bool value) { Value = value; Location = context; }
/// <summary> /// Constructor /// </summary> /// <param name="context"></param> /// <param name="value"></param> public StringLiteralExpression(IParserLocation context, string value) { Value = value; Location = context; }
/// <summary> /// Creates a AST node for array index accessing. /// </summary> /// <param name="location"></param> /// <param name="primary"></param> /// <param name="indices"></param> public ArrayAccessExpression(IParserLocation location, IExpression primary, IEnumerable <IExpression> indices) { this.Location = location; this.ThisExpression = primary; Indices = indices; }
/// <summary> /// Constructor. /// </summary> /// <param name="context"></param> /// <param name="expression"></param> public ParenthesisExpression(IParserLocation context, IExpression expression) { Expression = expression; Location = context; SemanticType = null; }
/// <summary> /// Constructor. /// </summary> /// <param name="context"></param> /// <param name="value"></param> public IntegerLiteralExpression(IParserLocation context, int value) { Value = value; Location = context; }
/// <summary> /// Constructor. /// </summary> /// <param name="context"></param> /// <param name="value"></param> public FloatingPointLiteralExpression(IParserLocation context, double value) { Value = value; Location = context; }
/// <summary> /// Constructor. /// </summary> /// <param name="context"></param> public NullExpression(IParserLocation context) { Location = context; }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <param name="expression">not null</param> public Query(IParserLocation context, IExpression expression) { Location = context; Expression = expression; }
/// <summary> /// Initializes a new instance of the <see cref="VariableExpression"/> class. /// </summary> /// <param name="location">The location when parsed from a user query.</param> /// <param name="identifier">The identifier addressing the variable in the evaluation scope.</param> public VariableExpression(IParserLocation location, string identifier) { this.Location = location; this.Identifier = identifier; this.SemanticType = null; }
/// <summary> /// Constructor. /// </summary> /// <param name="context"></param> /// <param name="operator"></param> /// <param name="expression"></param> public UnaryOperationExpression(IParserLocation context, UnaryOperator @operator, IExpression expression) { Expression = expression; Operator = @operator; Location = context; }
/// <summary> /// Creates a exception using a <see cref="IParserLocation"/> /// </summary> /// <param name="location"></param> /// <param name="message"></param> /// <param name="innerException"></param> public LocateableException(IParserLocation location, string message, Exception innerException = null) : this(location != null ? location.StartIndex : 0, location != null ? location.StopIndex : 0, message, innerException) { }
/// <summary> /// Creates a member function call expression. /// </summary> /// <param name="context"></param> /// <param name="this"></param> /// <param name="parameters"></param> public FunctionCallExpression(IParserLocation context, IExpression @this, IEnumerable <IExpression> parameters) { ThisExpression = @this; Parameters = parameters.ToArray(); Location = context; }
/// <summary> /// Computes the length of a range. /// </summary> /// <param name="loc"></param> /// <returns></returns> public static int GetLength(this IParserLocation loc) { return(loc.StopIndex - loc.StartIndex + 1); }
/// <summary> /// Constructor. /// </summary> /// <param name="context"></param> public EmptyExpression(IParserLocation context) { Location = context; }