Esempio n. 1
0
        private TypeSignature ParseSimpleTypeSpec()
        {
            // Parse type name.
            var typeName = ParseTypeName();

            // Check for annotations.
            while (true)
            {
                switch (_lexer.Peek().Terminal)
                {
                case TypeNameTerminal.Ampersand:
                    typeName = ParseByReferenceTypeSpec(typeName);
                    break;

                case TypeNameTerminal.Star:
                    typeName = ParsePointerTypeSpec(typeName);
                    break;

                case TypeNameTerminal.OpenBracket:
                    typeName = ParseArrayOrGenericTypeSpec(typeName);
                    break;

                default:
                    return(typeName);
                }
            }
        }
        private TypeSignature ParseSimpleTypeSpec()
        {
            // Parse type name.
            var typeName = ParseTypeName();

            // Check for annotations.
            return(_lexer.Peek().Terminal switch
            {
                TypeNameTerminal.Ampersand => ParseByReferenceTypeSpec(typeName),
                TypeNameTerminal.Star => ParsePointerTypeSpec(typeName),
                TypeNameTerminal.OpenBracket => ParseArrayOrGenericTypeSpec(typeName),
                _ => typeName
            });