Skip to content

ookamyabyss/cshort-compiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚙️ Cshort Compiler

🔍 Analisador Léxico + 🧠 Analisador Sintático — Versão 1.0

status version afd

🚀 Visão Geral Este projeto implementa um Analisador Léxico e um Analisador Sintático para uma linguagem estilo C, chamada Cshort. É parte do projeto de compiladores, seguindo uma gramática definida com suporte a declarações, comandos, expressões e funções.

⚙️ Pré-requisitos

  • MSYS2 instalado
  • Terminal: MSYS2 MinGW 64-bit
  • Pacotes obrigatórios (instalar no terminal MSYS2):

Atualiza o sistema (pode pedir para reiniciar)

    pacman -Su    

Depois, instale o compilador e ferramentas:

pacman -S base-devel mingw-w64-x86_64-toolchain

🛠️ Compilação

No terminal MSYS2 MinGW 64-bit, vá até a pasta do projeto:

cd /c/Users/seu_usuario/caminho/para/cshort-compiler

Isso irá compilar o projeto e gerar o executável:

make
./build/lexer 'nome do arq'
📜 Gramática — Cshort v1.0 (clique para expandir)

// prog ::= { decl ';' | func }

// decl ::= tipo decl_var { ',' decl_var}
// | tipo id '(' tipos_param')' { ',' id '(' tipos_param')' } // | void id '(' tipos_param')' { ',' id '(' tipos_param')' }

// decl_var ::= id [ '[' intcon ']' ]

// tipo ::= char | int | float | bool

// tipos_param ::= void // | tipo (id | &id | id '[' ']') { ',' tipo (id | &id | id '[' ']') }

// func ::= tipo id '(' tipos_param ')' '{' { tipo decl_var { ',' decl_var } ';' } { cmd } '}' // | void id '(' tipos_param ')' '{' { tipo decl_var { ',' decl_var } ';' } { cmd } '}'

// cmd ::= if '(' expr ')' cmd [ else cmd ] // | while '(' expr ')' cmd // | for '(' [ atrib ] ';' [ expr ] ';' [ atrib ] ')' cmd // | return [ expr ] ';' // | atrib ';' // | id '(' [expr { ',' expr } ] ')' ';' // | '{' { cmd } '}' // | ';'

// atrib ::= id [ '[' expr ']' ] = expr

// expr ::= expr_simp [ op_rel expr_simp ]

// expr_simp ::= [+ | - ] termo {(+ | - | ||) termo}

// termo ::= fator {(* | / | & ) fator}

// fator ::= id [ '[' expr ']' ] // | intcon | realcon | charcon // | id '(' [expr { ',' expr } ] ')' // | '(' expr ')' // | '!' fator

🧮 AFD - Autômato Finito Determinístico 📅 Versão 2.3 - 21/06/2025

AFD - Cshort

👥 Autores

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published