/// <summary> /// Executes the DEF command. /// </summary> public void Execute() { if (!_runEnvironment.CurrentLine.LineNumber.HasValue) { throw new Exceptions.IllegalDirectException(); } var token = _runEnvironment.CurrentLine.NextToken(); var nameToken = _runEnvironment.CurrentLine.NextToken(); var bracketToken = _runEnvironment.CurrentLine.NextToken(); if (token.Statement != TokenType.Fn || nameToken.TokenClass != TokenClass.Variable || bracketToken.Seperator != TokenType.OpenBracket) { throw new Exceptions.SyntaxErrorException(); } var variableName = _expressionEvaluator.GetVariableName(); bracketToken = _runEnvironment.CurrentLine.NextToken(); var equalsToken = _runEnvironment.CurrentLine.NextToken(); if (bracketToken.Seperator != TokenType.CloseBracket || equalsToken.Seperator != TokenType.Equal) { throw new Exceptions.SyntaxErrorException(); } var userFunctionDefinition = new UserDefinedFunction { Line = _runEnvironment.CurrentLine, LineToken = _runEnvironment.CurrentLine.CurrentToken, FunctionName = nameToken.Text, VariableName = variableName }; _runEnvironment.DefinedFunctions[userFunctionDefinition.FunctionName] = userFunctionDefinition; while (!_runEnvironment.CurrentLine.EndOfLine) { token = _runEnvironment.CurrentLine.NextToken(); if (token.Seperator == TokenType.Colon) { _runEnvironment.CurrentLine.PushToken(token); return; } } }
/// <summary> /// Implements the DIM command. /// </summary> public void Execute() { IToken token; do { var name = _expressionEvaluator.GetVariableName(); var indexes = _expressionEvaluator.GetIndexes(); if (indexes.Length > 0) { _variableRepository.DimensionArray(name, indexes); } token = _runEnvironment.CurrentLine.NextToken(); }while (token.Seperator == TokenType.Comma); _runEnvironment.CurrentLine.PushToken(token); }