private static object Evaluate(ArmExpressionAst node) { return(node switch { ArmInvocationExpressionAst n => ArmExpressionEvaluator.Evaluate(n), ArmNumericLiteralExpressionAst n => ArmExpressionEvaluator.Evaluate(n), ArmStringLiteralExpressionAst n => ArmExpressionEvaluator.Evaluate(n), _ => throw new NotImplementedException() });
public ArmSubexpressionAst(ArmExpressionAst subexpression) { this.Subexpression = subexpression ?? throw new ArgumentNullException(nameof(subexpression)); }
/// <summary> /// invocation = expression argument_list /// argument_list = "(" [ argument *( "," argument ) ] ")" /// argument = expression /// </summary> /// <param name="expression"></param> /// <param name="argumentList"></param> public ArmElementAccessExpressionAst(ArmExpressionAst expression, ArmBracketedArgumentListAst argumentList) { this.Expression = expression ?? throw new ArgumentNullException(nameof(expression)); this.ArgumentList = argumentList ?? throw new ArgumentNullException(nameof(argumentList)); }
/// <summary> /// member_access = expression operator member_name /// operator = "." /// member_name = identifier /// </summary> /// <param name="expression"></param> /// <param name="name"></param> public ArmMemberAccessExpressionAst(ArmExpressionAst expression, SyntaxToken operatorToken, IdentifierToken name) { this.Expression = expression ?? throw new ArgumentNullException(nameof(expression)); this.OperatorToken = operatorToken ?? throw new ArgumentNullException(nameof(operatorToken)); this.Name = name ?? throw new ArgumentNullException(nameof(name)); }
/// <summary> /// invocation = expression argument_list /// argument_list = "(" [ argument *( "," argument ) ] ")" /// argument = expression /// </summary> /// <param name="expression"></param> /// <param name="argumentList"></param> public ArmInvocationExpressionAst(ArmExpressionAst expression, ArmArgumentListAst argumentList) { this.Expression = expression ?? throw new ArgumentNullException(nameof(expression)); this.ArgumentList = argumentList ?? throw new ArgumentNullException(nameof(argumentList)); }