Esempio n. 1
0
        private void ParseInterface(AccessLevel accessLevel)
        {
            Token interfaceKeyword = _lexer.Eat(TokenType.InterfaceKeyword);
            Token name             = _lexer.Eat(TokenType.Identifer);

            if (accessLevel != AccessLevel.Public)
            {
                accessLevel = AnalysisAccessLevel(name.Content);
            }
            Token colon = null, inheritanceToken = null;

            if (_lexer.Match(":"))
            {
                colon            = _lexer.Eat(TokenType.Colon);
                inheritanceToken = _lexer.Eat(TokenType.Identifer);
            }
            InterfaceDefinition interfaceDefinition =
                new InterfaceDefinition(interfaceKeyword, name, colon, inheritanceToken, _endNameSpace, accessLevel);

            _endNameSpace.AddStructure(interfaceDefinition);
            FilesDefinitions[_lexer.FileIndex].Add(interfaceDefinition);
            _parsingStructure = interfaceDefinition;
            ParseChunk(s_interfaceDefinitionOrder, out Token openBrace, out Token closeBrace);
            interfaceDefinition.SetBraces(openBrace, closeBrace);
            _parsingStructure = null;
        }