Пример #1
0
 private void ResolveRedimArgument(VBAParser.ArgumentExpressionContext argument)
 {
     // Redim statements can either have "normal" positional argument expressions or lower + upper bounds arguments.
     if (argument.lowerBoundArgumentExpression() != null)
     {
         ResolveDefault(argument.lowerBoundArgumentExpression().expression());
         ResolveDefault(argument.upperBoundArgumentExpression().expression());
     }
     else
     {
         ResolveDefault(argument.expression());
     }
 }
Пример #2
0
 private IExpressionBinding VisitArgumentBinding(Declaration module, Declaration parent, VBAParser.ArgumentExpressionContext argumentExpression, IBoundExpression withBlockVariable, StatementResolutionContext statementContext)
 {
     if (argumentExpression.expression() != null)
     {
         dynamic expr = argumentExpression.expression();
         return(Visit(module, parent, expr, withBlockVariable, StatementResolutionContext.Undefined));
     }
     else
     {
         dynamic expr = argumentExpression.addressOfExpression();
         return(Visit(module, parent, expr, withBlockVariable, StatementResolutionContext.Undefined));
     }
 }
Пример #3
0
 private (IExpressionBinding binding, ParserRuleContext context, bool isAddressOfArgument) VisitArgumentBinding(Declaration module, Declaration parent, VBAParser.ArgumentExpressionContext argumentExpression, IBoundExpression withBlockVariable)
 {
     if (argumentExpression.expression() != null)
     {
         var expr = argumentExpression.expression();
         return(Visit(module, parent, expr, withBlockVariable, StatementResolutionContext.Undefined), expr, false);
     }
     else
     {
         var expr = argumentExpression.addressOfExpression();
         return(Visit(module, parent, expr, withBlockVariable, StatementResolutionContext.Undefined), expr, true);
     }
 }