{"id":27112286,"url":"https://github.com/scjoaoantonio/trab_compiladores","last_synced_at":"2026-05-14T23:13:29.442Z","repository":{"id":41293956,"uuid":"483842548","full_name":"scjoaoantonio/trab_compiladores","owner":"scjoaoantonio","description":"Compilador para uma linguagem descrita como \"Mini-C\" programada em Python","archived":false,"fork":false,"pushed_at":"2024-08-01T23:26:21.000Z","size":91,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T01:58:00.916Z","etag":null,"topics":["c","compiler","lexical-analyzer","python","semantic-analyzer","sintaxis-analyzer"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scjoaoantonio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-20T23:22:41.000Z","updated_at":"2024-08-01T23:26:24.000Z","dependencies_parsed_at":"2022-09-09T00:42:19.122Z","dependency_job_id":null,"html_url":"https://github.com/scjoaoantonio/trab_compiladores","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/scjoaoantonio/trab_compiladores","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scjoaoantonio%2Ftrab_compiladores","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scjoaoantonio%2Ftrab_compiladores/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scjoaoantonio%2Ftrab_compiladores/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scjoaoantonio%2Ftrab_compiladores/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scjoaoantonio","download_url":"https://codeload.github.com/scjoaoantonio/trab_compiladores/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scjoaoantonio%2Ftrab_compiladores/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278925077,"owners_count":26069599,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["c","compiler","lexical-analyzer","python","semantic-analyzer","sintaxis-analyzer"],"created_at":"2025-04-07T01:58:13.239Z","updated_at":"2025-10-08T10:10:58.038Z","avatar_url":"https://github.com/scjoaoantonio.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Compilador\r\n\r\n## Sobre o Trabalho\r\n\r\n- Trabalho para a matéria de **Compiladores** do Curso de Ciências da Computação - UFSJ\r\n- Analisador Léxico, Sintático, Semântico e Gerador de Código para uma linguagem descrita como \"Mini-C\" programada em Python\r\n- Para compilar digite no terminal: `python3 main.py` ou `make run`\r\n  - Requer instalado: Python3\r\n\r\n## Sobre o Programa\r\n\r\n#### Regras:\r\n\r\n1. O Analisador Léxico recebe como código-fonte o programa contido no arquivo \"lexico.txt\" dentro da pasta \"input\"\r\n2. O programa enviado para o analisador deve seguir as seguintes especificações:\r\n\r\n   - O analisador verificará cada linha do código até a quebra de linha\r\n\r\n   - Os comentários são identificados por // e devem ser escritos no início da linha do código\r\n\r\n   - Tudo que estiver escrito deve ser separado por um espaço, até mesmo das pontuações.\r\n\r\n   - Qualquer palavra que não está na lista abaixo será considerada um erro léxico:\r\n     1. Números\r\n     2. Identificadores (palavras que não começam com caracteres especiais)\r\n     3. Palavras reservadas em C (while, for, if, else, return, break, continue, switch, case, printf, scanf, void, main)\r\n     4. Operadores matemáticos e lógicos\r\n     5. Tipo de variável (int, float, double, float, long, char, \"const\")\r\n     6. Pontuação\r\n     7. Comentário\r\n\r\n3. O Analisador Sintático irá verificar a ordem dos tokens e indicar os erros se preciso\r\n\r\n4. A geração de código funciona da seguinte forma:\r\n\r\n- O programa identificará a linha de código no analisador sintático e vai mandar para \"gerador.py\"\r\n- O gerador irá converter o código de C para linguagem de máquina\r\n- Declaração e atribuição pertencerão à parte .data e as outras funções ao .text\r\n\r\n5. O gerador de código possui limitações, mas ele poderá gerar:\r\n\r\n- Atribuição\r\n- Declaração\r\n- Comparação\r\n- Condição\r\n- Laços de repetição\r\n- Escrita (printf)\r\n- Comentário\r\n\r\n6. Sobre o Analisador Semântico:\r\n\r\n- O analisador semântico está contido no analisador sintático\r\n- Identificará os seguintes erros:\r\n  1. Variável já registrada\r\n  2. Variável não registrada\r\n  3. Variável não inicializada\r\n  4. Variável declarada mas não usada\r\n  5. Código inalcançável (Divisão por 0): (Warning)\r\n\r\n## Exemplo\r\n\r\n### Entrada do Programa\r\n\r\n![WhatsApp Image 2022-04-25 at 18 02 39](https://user-images.githubusercontent.com/65183458/165174914-a50ef26f-28be-4fb0-be3b-c111600283bc.jpeg)\r\n\r\n### Saída do Programa\r\n\r\n![WhatsApp Image 2022-04-25 at 18 01 45](https://user-images.githubusercontent.com/65183458/165174908-e3656f09-47b3-4d40-bc70-a3b3d60532c1.jpeg)\r\n![WhatsApp Image 2022-04-25 at 18 02 02](https://user-images.githubusercontent.com/65183458/165174911-f0ea21ae-dd85-4f37-8484-8cd16eafc5d4.jpeg)\r\n![WhatsApp Image 2022-04-25 at 18 02 18](https://user-images.githubusercontent.com/65183458/165174913-8b1672c6-f2a0-4ddd-878a-e8cbf99656a3.jpeg)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscjoaoantonio%2Ftrab_compiladores","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscjoaoantonio%2Ftrab_compiladores","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscjoaoantonio%2Ftrab_compiladores/lists"}