{"id":21000405,"url":"https://github.com/infinitemarcus/compilador-java","last_synced_at":"2025-08-06T16:24:38.392Z","repository":{"id":111942353,"uuid":"301802385","full_name":"InfiniteMarcus/Compilador-Java","owner":"InfiniteMarcus","description":"Compilador em Java para compilar uma linguagem fictícia K para C","archived":false,"fork":false,"pushed_at":"2021-07-18T19:58:09.000Z","size":120,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-13T13:44:01.662Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/InfiniteMarcus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-06T17:20:19.000Z","updated_at":"2021-12-20T14:24:48.000Z","dependencies_parsed_at":"2023-04-13T13:47:31.075Z","dependency_job_id":null,"html_url":"https://github.com/InfiniteMarcus/Compilador-Java","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/InfiniteMarcus/Compilador-Java","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfiniteMarcus%2FCompilador-Java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfiniteMarcus%2FCompilador-Java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfiniteMarcus%2FCompilador-Java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfiniteMarcus%2FCompilador-Java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/InfiniteMarcus","download_url":"https://codeload.github.com/InfiniteMarcus/Compilador-Java/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InfiniteMarcus%2FCompilador-Java/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265672372,"owners_count":23808845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T08:10:19.830Z","updated_at":"2025-07-17T22:36:15.500Z","avatar_url":"https://github.com/InfiniteMarcus.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Projeto final - Compiladores\n\n## Sobre este pojeto\n\nEste projeto foi desenvolvido durante a disciplina de Compiladores, no curso de Ciência da Computação da UFSCar - Sorocaba. Foram implementadas as etapas de análise sintática, léxica e semântica da compilação de uma linguagem de programação fictícia chamada K para a linguagem C. Todo o código-fonte do projeto foi escrito em Java.\n\n## Especificações\n\n### Linguagem K\n\nDiante do fato deste projeto ter sido feito em uma disciplina ofertada em ambiente acadêmico, não é possível fornecer detalhes específicos da linguagem de programação utilizada como código de entrada do compilador. Esta linguagem é ficcional, criada para fins didáticos, baseando-se em linguagens comumente tipadas estaticamente e de paradigma estrutural.\n\nNo entanto, aqui há uma lista de recursos comuns a outras linguagens de programação e que são suportados por esta linguagem:\n\n* Comandos condicionais (`if ... then`, `else`, `endif`)\n* Comandos de repetição (`while ... endw`)\n* Declaração e atribuição de variáveis\n* Tipagem estática de funções, variáveis e parâmetros (`int`, `string` e `boolean`)\n* Operadores matemáticos e lógicos básicos (`+`, `-`, `==`, `\u003c=`, `||`, `\u0026\u0026`, etc)\n* Declaração e chamada de funções (com e sem parâmetros e/ou retorno)\n* Comentários de uma linha e multibloco (`//` e `/* ... */`)\n* Necessidade de declaração de função principal sem parâmetros (`def main`)\n* Existência de funções pré-definidas de entrada/saída de dados\n* Entre outros\n\nAlguns exemplos de códigos escritos em K se encontram em `examples/inputs`, neste repositório.\n\n### Execução do projeto\n\nA execução do compilador utiliza dois arquivos: um de entrada, com o código-fonte em K a ser compilado, e um de saída, com o código-fonte em C ou as mensagens de erro de compilação. Caso o arquivo de saída esteja em falta, o próprio programa o criará.\n\nPara passar os arquivos para o programa, basta utilizar os argumentos de execução padrão do Java (`String [] Args`) na ordem anteriormente citada.\n\n### Processo de compilação\n\nDurante a compilação, o programa buscará e salvará quaisquer tipos de erros sintáticos, léxicos ou semânticos, baseando-se na gramática original da linguagem K. Estes erros serão, então, escritos no arquivo de saída do programa. Caso nenhum erro tenha sido encontrado, o programa gerará o código-fonte em C correspondente ao código-fonte original.\n\n\n## Exemplos\n\n* Código com erros sintáticos\n\nArquivo de entrada:\n\n```\ndef main{\n```\n\nSaída do compilador:\n\n```\nteste.in:2: statement inválido\ndef main{\n\nteste.in:2: } esperado\ndef main{\n```\n\n* Código com erros sintáticos (corrigido)\n\nArquivo de entrada:\n\n```\ndef main{}\n```\n\nSaída do compilador\n\n```\n#include \u003cstdio.h\u003e\n\nvoid main(){\n}\n\n```\n\nMais exemplos podem ser encontrados na pasta `examples` deste repositório.\n\n## Autores\n\n* [José Vitor Novaes Santos](https://github.com/devNatron)\n* [Marcus Vinicius Natrielli Garcia](https://github.com/Infinitemarcus)\n* [Victor Fernandes de Oliveira Brayner](https://github.com/victorfob)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfinitemarcus%2Fcompilador-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finfinitemarcus%2Fcompilador-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfinitemarcus%2Fcompilador-java/lists"}