Ejemplo n.º 1
0
        private Expression ParseIdentifier()
        {
            ValidateToken(TokenId.Identifier);

            // Working context implementation
            //if (token.text == ParserConstants.keywordIt)
            //    return ParseIt();

            if (_token.text == ParserConstants.KeywordNew)
            {
                return(ParseNew());
            }
            if (_token.text == ParserConstants.KeywordTypeof)
            {
                return(ParseTypeof());
            }

            if (_arguments.TryGetIdentifier(_token.text, out Expression keywordExpression))
            {
                NextToken();
                return(keywordExpression);
            }

            if (_arguments.TryGetParameters(_token.text, out ParameterExpression parameterExpression))
            {
                NextToken();
                return(parameterExpression);
            }

            if (_arguments.TryGetKnownType(_token.text, out Type knownType))
            {
                return(ParseTypeKeyword(knownType));
            }

            // Working context implementation
            //if (it != null)
            //    return ParseMemberAccess(null, it);

            throw new UnknownIdentifierException(_token.text, _token.pos);
        }