Ejemplo n.º 1
0
 void ParseType(Token nextToken)
 {
     if (nextToken.Type == TokenType.Type)
     {
         _parsedFunction.Type = nextToken.Value;
         _state = FunctionParserState.Name;
     }
 }
Ejemplo n.º 2
0
 void ParseName(Token nextToken)
 {
     if (nextToken.Type == TokenType.Name)
     {
         _parsedFunction.Name = nextToken.Value;
         _state = FunctionParserState.ArgsStarted;
     }
 }
Ejemplo n.º 3
0
 void ParseArgName(Token nextToken)
 {
     if (nextToken.Type == TokenType.Name)
     {
         _parsedFunction.Variables.Last().Name = nextToken.Value;
         _state = FunctionParserState.EndArg;
     }
 }
Ejemplo n.º 4
0
 private void ParseArgEnd(Token nextToken)
 {
     if (nextToken.Type == TokenType.ArgsDelimiter)
     {
         _state = FunctionParserState.ArgsType;
     }
     else if (nextToken.Type == TokenType.EndArgs)
     {
         _state = FunctionParserState.StartBody;
     }
 }
Ejemplo n.º 5
0
 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;
     }
 }
Ejemplo n.º 6
0
        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;
            }
        }