Beispiel #1
0
        public override IAstElement ProcessBeforeChildren(IdentifierExpression identifier, ProcessingContext context)
        {
            var resolved = context.ResolveIdentifier(identifier.Name);

            RequireExactlyOne(resolved, identifier.Name);

            var result = (IAstElement)resolved[0];

            var property = result as IAstPropertyReference;

            if (property != null)
            {
                result = new AstPropertyExpression(new AstThisExpression(), property);
            }

            var function = result as IAstMethodReference;

            if (function != null)
            {
                result = new AstFunctionReferenceExpression(new AstThisExpression(), function);
            }

            result.SourceSpan = identifier.SourceSpan;
            return(result);
        }
Beispiel #2
0
 protected override void AppendFunctionReferenceExpression(StringBuilder builder, AstFunctionReferenceExpression expression)
 {
     if (expression.Target != null)
     {
         Append(builder, expression.Target);
         builder.Append(".");
     }
     builder.Append(expression.Function.Name);
 }
Beispiel #3
0
 protected virtual void AppendFunctionReferenceExpression(StringBuilder builder, AstFunctionReferenceExpression functionReferenceExpression)
 {
     builder.Append(functionReferenceExpression);
 }