private void ClassBody(ClassStruct element)
        {
            Match(TokenType.OpenBrace);

            while (Next().type != TokenType.CloseBraceSemicolon)
            {
                if (Next().type == TokenType.PrivateKeyword)
                {
                    Match(TokenType.PrivateKeyword);
                    element.privateMembers.AddRange(Members());
                }
                else if (Next().type == TokenType.PublicKeyword)
                {
                    Match(TokenType.PublicKeyword);
                    element.publicMembers.AddRange(Members());
                }
                else if (Next().type == TokenType.ProtectedKeyword)
                {
                    Match(TokenType.ProtectedKeyword);
                    element.protectedMembers.AddRange(Members());
                }
                else
                {
                    element.freeMembers.AddRange(Members());
                }
            }

            Match(TokenType.CloseBraceSemicolon);
        }
        private ClassStruct ClassStruct()
        {
            Token _proto = Next();

            Match(TokenType.ClassStructProto);
            var    match = Regex.Match(_proto.value, "(class|struct)( )+[_a-zA-Z0-9]+");
            string _name = match.Value.Replace("class", "").Replace("struct", "").Trim(' ');

            if (_proto.value.StartsWith("class"))
            {
                classStructPrototypes.Add("class " + _name);
            }
            else
            {
                classStructPrototypes.Add("struct " + _name);
            }

            ClassStruct element = new ClassStruct()
            {
                proto = _proto.value, name = _name
            };

            ClassBody(element);

            return(element);
        }