Exemplo n.º 1
0
            /// <inheritdoc />
            public override Expression VisitConstant(
                fhirExpression.ConstantExpression expression,
                fhirExpression.SymbolTable scope)
            {
                if (expression.ExpressionType == TypeSpecifier.Integer)
                {
                    return(Expression.Constant((int)expression.Value));
                }

                if (expression.ExpressionType == TypeSpecifier.String)
                {
                    var propertyName = expression.Value.ToString();
                    var property     = GetProperty(_parameter.Type, propertyName);
                    return(property == null
                        ? (Expression)_parameter
                        : Expression.Property(_parameter, property));
                }

                return(null);
            }
Exemplo n.º 2
0
            /// <inheritdoc />
            public override Expression VisitFunctionCall(
                fhirExpression.FunctionCallExpression expression,
                fhirExpression.SymbolTable scope)
            {
                switch (expression)
                {
                case fhirExpression.IndexerExpression indexerExpression:
                {
                    var index        = indexerExpression.Index.Accept(this, scope);
                    var property     = indexerExpression.Focus.Accept(this, scope);
                    var itemProperty = GetProperty(property.Type, "Item");
                    return(Expression.MakeIndex(property, itemProperty, new[] { index }));
                }

                case fhirExpression.ChildExpression child:
                {
                    return(child.Arguments.First().Accept(this, scope));
                }

                default:
                    return(_parameter);
                }
            }
Exemplo n.º 3
0
 /// <inheritdoc />
 public override Expression VisitVariableRef(fhirExpression.VariableRefExpression expression, fhirExpression.SymbolTable scope)
 {
     return(_parameter);
 }
Exemplo n.º 4
0
 /// <inheritdoc />
 public override Expression VisitNewNodeListInit(
     fhirExpression.NewNodeListInitExpression expression,
     fhirExpression.SymbolTable scope)
 {
     return(_parameter);
 }