void ParseType(Token nextToken) { if (nextToken.Type == TokenType.Type) { _parsedFunction.Type = nextToken.Value; _state = FunctionParserState.Name; } }
void ParseName(Token nextToken) { if (nextToken.Type == TokenType.Name) { _parsedFunction.Name = nextToken.Value; _state = FunctionParserState.ArgsStarted; } }
void ParseArgName(Token nextToken) { if (nextToken.Type == TokenType.Name) { _parsedFunction.Variables.Last().Name = nextToken.Value; _state = FunctionParserState.EndArg; } }
private void ParseArgEnd(Token nextToken) { if (nextToken.Type == TokenType.ArgsDelimiter) { _state = FunctionParserState.ArgsType; } else if (nextToken.Type == TokenType.EndArgs) { _state = FunctionParserState.StartBody; } }
void ParseArgType(Token nextToken) { if (nextToken.Type == TokenType.Type) { _parsedFunction.Variables.Add(new Variable() { Type = nextToken.Value }); _state = FunctionParserState.ArgName; } else if (nextToken.Type == TokenType.EndArgs) { _state = FunctionParserState.StartBody; } }
public void Next(Token nextToken) { switch (_state) { case FunctionParserState.Type: ParseType(nextToken); break; case FunctionParserState.Name: ParseName(nextToken); break; case FunctionParserState.ArgsStarted: if (nextToken.Type == TokenType.StartArgs) { _state = FunctionParserState.ArgsType; } break; case FunctionParserState.ArgsType: ParseArgType(nextToken); break; case FunctionParserState.ArgName: ParseArgName(nextToken); break; case FunctionParserState.EndArg: ParseArgEnd(nextToken); break; case FunctionParserState.StartBody: if (nextToken.Type == TokenType.StartScope) { _state = FunctionParserState.StartScope; } break; case FunctionParserState.StartScope: if (nextToken.Type == TokenType.EndScope) { _state = FunctionParserState.EndScope; Identified = true; } break; } }