Pular para o conteúdo

INIp – um simples compilador de arquivos ini

Esse vídeo foi feito para obtenção da AV2 da matéria de Estruturas de Dados lecionada pelo professor Rômulo na Universidade Federal de Alagoas – Campus Arapiraca.

Um dos meus projetos que eu tenho é bem sócio na ri happy e ele vai ser muito mais focado em falar sobre as estruturas de dados que utilizei e como eu utilizei elas para resolver o problema que está tentando resolver então não nesse projeto é unip e por que inibe por que n é um tipo de arquivo se você vir aqui no espelho e digitar aí né você vai ter esse arquivo

Aqui aí vai dizer que é um arquivo de configuração mas você pode usar esse arquivo para qualquer coisa e qual a intenção desse arquivo é esse arquivo é baseado em seções você cria um a sessão por exemplo que é essa essa seção chamada proprietário alguma coisa assim e você vai ter valores onde existe um uma chave que eu pergunto uma variável então você

Acessa a sessão e aí você vai ter vá o chaves e valores de uma chave desse valor john dahl a chamada the name é aqui vai ter organização que vai ter um valor também então é um é um arquivo ele é um pouco um pouco semelhante a intenção ao objetivo do jason que outro tipo de arquivo mais usado mas esse arquivo também ela é ele é muito utilizado somente para

Armazenar coisas de configuração você pode armazenar por exemplo é qual é a sua senha por exemplo o nome do usuário vai ser o nome do da sessão vai ser usuário aí você vai ter aqui uma senha que é igual aí a sua senha de fato então você pode você pode usar para armazenar qualquer qualquer tipo de coisa e qual foi o meu nome é o programa e ela como se fosse

Um compilador onde eu vou pegar esses arquivos por exemplo esse aqui para quem é e eu vou transformar ele em alguma estrutura de dados onde eu possa acessar cada um de cada um desses valores aqui dentro da dentro do nome linguagem de programação e consegui manipular esses dados e qual foi a solução que eu tive a solução que eu tive foi pensar em tabela série a e

Eu pensei nesse nesse arquivo como como se fossem tabelas régis que apontam para tabelas hash só assim vamos supor que a gente tem a chave que é o nome da sessão então a gente acessa chave e a partir dessa chave a gente acessa outra tabela hash que vai armazenar o valor da chave por exemplo name e o e o valor por exemplo de um dó então como é que a gente poderia

Fazer então vamos supor que a gente tem aqui a gente nossa tabela hash e nessa tabela rest a a gente tem duas chaves né owner e dessa vez eu vou vou colocar aqui bom então aqui vai ser o owner ó e aqui vai ser igual aderência então a gente tem a nossa tabela hash a gente vai ter duas chaves o oneraveis a gente tá acessa em pai então por exemplo vamos supor que a

Gente cria e a tabela hash são exemplo para isso aqui não código válido e aí a gente acessa né warner dessa forma e o que é que vai ter dentro de si o ver outra tabela hash que vai armazenar agora esses valores intermediários aqui de dentro da por exemplo nome e organização é então ele vai ter dois valores duas chaves e é preto name a name is o organization em

Organização bom então a gente vai ter esses dois valores aqui e agora que a gente poderia até mais né a gente pode preencher isso aqui com mais valores mas nesse exemplo que eu peguei ele só tem esses valores aqui tem três valores então a gente vai ter aqui ó três valores e isso é um server without you o server the word is files é sério bom então se alguém

Acho que deu para perceber já se você conhece estrutura de dados é o teu mais um pouquinho você dá para perceber que isso aqui é uma árvore e não é uma árvore binária é uma árvore representada com tabelas hash então a ideia é ser uma árvore mas a safra é apresentada com tabelas hash a gente pode ter quantas a nossa memória permite aqui the children’s de de

Nudes né essa intenção bom então é a partir de e aí e é a partir disso que a gente pode armazenar os nossos valores aqui então cara você nem armazenado aqui por exemplo bom então seria dessa maneira então caso por exemplo quisesse acessar esse nome aqui de andou eu iria já que esse o número aqui esse aqui é outra tabela hash a gente poderia usar mais um aqui

Só que agora para neném né e agora nem tão assim a gente sabe que esse valor e ele seria igual e a o nome que seria o joão então essa foi a minha ideia de como resolver o problema então a ideia é utilizar a tabela série a e é para representar uma árvore como é que seria essa aqui a árvore que seria esse arquivo né então a gente pode tá olhando o código

Problema que se cobre aqueles que têm rust então pode ser que não seja tão entendível que se fosse um pai tão da vida por exemplo mas como é a construção compilador e o primeiro tem um alex e alex seria a transformação de cada passo de cada porção de cada caractere ou de um conjunto de caracteres em uma série de tocantins então aqui eu tenho a o pênis cor

Braquete que seria um colchete autora vê se eu encontrasse um curte eu armazenaria na minha lista de torrentes que seria essa aqui que é um vetor de tocantins e armazenar ia lá dentro e toda vez que eu encontrasse uma um conceito fechado armazenar e na dentro um sinal de igual marcenaria lá dentro e um valor um valor seria tudo aquilo que estivesse entre aspas então

E no meu programa se a gente vê um um exemplo válido você pode vir aqui a parte exemplos vale do e exemplos então isso aqui é é um dos arquivos que o meu programa pode conseguir compilar e transformar toda essa estrutura aqui em uma uma tabela hash de tabelas é todo valor ele ele começa com a fazer fecha com a força então toda vez que eu encontrasse algum tipo

Assim é o meu programa ele ia lá e armazenar e ele armazena na lista de tocantins como um valor e tudo que estivesse dentro de colchetes a gente iria armazenar como uma sessão que é um dos estoques aqui ó saxon name e não seria um token inválido algo que o meu meu meu computador não conhece e ele dizer olha só que não não é válido toma cuidado vejo que é isso

Aí então sua controlador normal é então não vai ter um aqui um aqui seria tudo aquilo que vem e depois de um valor então por exemplo depois desses colchetes aqui a gente espera ali esperaria um valor então é uma importam a série de valores ter uma junto e aí o que é que eu posso falar mais então depois que a gente traduziu esse esse arquivo para uma série de tô

Criamos uma lista de tokens a gente vai usar um por ser que seriam por ser seria pegar esse arquivo esse arquivo essa lista de tocantins e começar a analisar e começar a criar ao longo da execução do nosso programa a nossa tabela hash ele tá aqui é um pouco mais complexo ah mas eu queria um loop para passar por todos os elementos do nosso é importante ela mexendo a sua

Lista de tocantins e aí toda vez que ele encontrasse uma um colchete não eu postei aberto ele iria ver se o próximo elemento seria o nome de uma sessão se não for eu já era um erro nesse caso se for e aí eu vou ver se não contém nenhum objeto nenhum nenhum elemento tipo um cocheiro aberto ou fechado lá dentro do nosso nome porque se tiver a gente já eram um erro

Que é um caractere inválido pode pode ter letra número traço mas não pode ter esse elemento aqui porque ele serve para fechar um ele serve para abrir e para fechar o o nome de uma sessão caso contrário se tiver tudo certo a gente vai adicionar a sessão em uma seção nova inicialmente a sessão ela é uma tabela hash e vazia e ao longo do nosso programa a gente vai

Lá e acessos aquela tabela hash quando a gente encontra um valor para adicionar e adiciona lá de novo e é para ver qual foi a última sessão adicionada eu usei uma pilha aa pilha é ótima para fazer isso porque ela ela sempre uma último elemento foi o último armazenado né o primeiro elemento que a gente vê é o último que foi armazenado essa é a ordem da bíblia

É assim que ela funciona então se a gente for voltar no exemplo a vó tá aqui um exemplo se você qualquer um então toda vez que ele encontra um uma uma sessão ele vai adicionar mais um na pilha ele vai adicionar essa sessão na pia porque quando a gente encontrar esse próximo valor ele sabe em qual tabela rest representada por esse nome aqui esse nome vai ser a chave

Que a gente consegue acessar a seção dentro da tabela hash ele sabe qual é ele vai olhar esse valor e vai armazenar dentro dessa tabela hash então essa é a chave da tabela hash então é graças a pilha que eu consigo ver qual foi a última sessão qual é a sessão atual que eu estou adicionando elementos para evitar que esse elemento aqui não seja adicionado nessa

Tabela hash aqui ela tem que ser adicionada nessa aqui então e para evitar confusão e é claro que existe existe a possibilidade de você fazer né você colocar o nome da mesma sessão porque no final das contas alegria adicionar lá mesmo tabela rest com ela que isso aqui é o equivalente a você pegar isso aqui essa linha nova e colocar na linha 7 da mesma coisa não

Tem problema nenhum se você tiver uma sessão vazia seria só uma tabela hash vazia e quem é e outra coisa e eu acho que é só isso então é qual é um programa aqui ele e é levemente simples mas ele é que é extremamente útil porque eu uso muito a minha própria biblioteca para poder para poder criar os meus programas porque esse tipo de esse tipo de programa posso

Usar para armazenar por exemplo chaves de ipe ai eu tô acessando aí piai e eu preciso de um de um toque de um token de acesso que a zip as elas elas pedem que para você ter e aí eu posso usar o meu próprio minha própria biblioteca para poder armazenar meu minha minha chave daí piá e dentro de um arquivo ini é esse que a gente que a gente tá vendo agora e eu posso

Acessar não meu programa qual é a chave dessa ipiae sem ter que colocar a chave da minha equipe e já dentro do meu programa é tipo exposta assim porque não pode deixar o cps são privadas então isso facilita bastante sim então até ter esse programa foi extremamente útil é para qualquer um então você usa o rosto tipo você pode usar uma biblioteca ela tá disponível

No site oficial da linguagem de programação é só você vir aqui e aí vai ter lá disponível já passou mais de 400 downloads então é é isso tá muito obrigado e até mais

Transcrito do video
INIp – um simples "compilador" de arquivos .ini By Hícaro DânrlleyliveBroadcastDetails{isLiveNowfalsestartTimestamp2022-06-09T175350+0000endTimestamp2022-06-09T180925+0000}