FemaScript (de codenome 'Almiritmo') é uma linguagem de programação desenvolvida para a disciplina de Algoritmo e Estrutura de Dados na FEMA . Inspirada no Portugol, a FemaScript vem com nossa própria "cara", ajustada para melhor atender às necessidades do currículo acadêmico e facilitar o aprendizado dos alunos em seus primeiros passos na programação.
🔭 Visão Geral
FemaScript foi projetada para ajudar os alunos a aprender algoritmos e estruturas de dados de maneira intuitiva e acessível. Com sintaxe clara e recursos pedagógicos, os alunos podem se concentrar na lógica de programação antes de explorar o universo infindável de possibilidades que outras linguagens de programação podem oferecer.
Neste repositório você encontrará o código-fonte da extensão para o Visual Studio Code (vscode) que oferece suporte a FemaScript, proporcionando syntax highlighting (realce/colorização de sintaxe), formatação automática e, em breve, capacidades de compilação para outras linguagens, permitindo a execução de algoritmos desenvolvidos em FemaScript.
🌟 Recursos
Realce de Sintaxe: A extensão para o VSCode oferece syntax highlighting para tornar o código mais legível.
Formatador de Código: Ajusta automaticamente o estilo do código para manter a consistência.
Windows: Shift + Alt + F
MacOS: Shift + Option + F
Linux: Ctrl + Shift + I
Erro de Sintaxe em Tempo Real: Indicação de erros de sintaxe enquanto você digita, tornando o processo de desenvolvimento mais eficiente.
Snippets: Blocos de código predefinidos para acelerar a escrita de estruturas comuns da linguagem..
🎯 Futuramente... Compilador Multilíngue: Planejamos adicionar suporte para compilar FemaScript em outras linguagens, permitindo que os alunos executem seus algoritmos em diferentes ambientes.
🚀 Instalação
Você pode acessar diretamente o Visual Studio MarketPlace para instalar ou baixar a extensão entrando no link anterior ou em qualquer badge (botão) a cima.
Para instalar via command line , você deve ter instalado o comando code
acessando o link anterior. Após isso, execute o seguinte comando no terminal:
code --install-extension fema-devspace.femascript-lang
🧑🏽🚀 Primeiros Passos
Escrevendo seu Primeiro Programa em FemaScript
Você já deve estar familiarizado com a estrutura básica de um algoritmo. Agora, vamos transferir esse conhecimento para o ambiente digital! Após instalar a extensão, crie um arquivo com o nome de sua escolha, mas certifique-se de que ele tenha uma das seguintes extensões: .alg
, .algoritmo
, .algorithm
, .fema
ou .femascript
.
Se tudo estiver correto, você verá a logo da FEMA no ícone do arquivo. Agora, vamos inserir a estrutura básica do seu algoritmo
O algoritmo para 'calcular circunferência' apresentado acima inclui vários elementos essenciais: o nome do algoritmo, a inicialização de constantes e variáveis, a lógica do cálculo e o uso de funções como "LEIA" e "IMPRIMA". Para explorar mais sobre as funcionalidades da linguagem, incluindo sintaxes, palavras-chave e outros detalhes, consulte a Wiki da linguagem (🚧 em construção 🚧) .
Enquanto a Wiki não é publicada, aqui está uma tabela de instruções que você utilizar.
Instruções, suas alternativas e sinônimos
Instrução
Alternativas & Sinônimos
🔑 Palavras-chaves
ALGORITMO
ALGORITHM
TIPO
TIPOS
| TYPE
| TYPES
CONST
CONSTANTE
| CONSTANTES
| CONSTANT
| CONSTANTS
VAR
VARIÁVEIS
| VARIABLES
INÍCIO
START
FIM
END
SE
IF
ENTÃO
THEN
SENÃO
ELSE
FAÇA
DO
ENQUANTO
WHILE
PARA
FOR
AVALIE
ANALISE
| CHECK
| TESTE
| TEST
QUANDO
CASO
| CASE
| WHEN
CASO_CONTRÁRIO
CASOCONTRÁRIO
| PADRÃO
| DEFAULT
NÃO
NOT
OU
OR
E
AND
IMPRIMA
IMRPIMIR
| PRINT
| ESCREVA
| ESCREVER
| WRITE
LER
LEIA
| READ
🔎 Tipos de Variáveis
enum
enumeração
| enumerate
real
reais
| reals
inteiro
int
| integer
| integers
| inteiros
caracter
caracteres
| char
| chars
| character
| characters
texto
textos
| text
| texts
| string
| strings
lógico
lógicos
| bool
| bools
| boolean
| booleans
| booleano
| booleanos
| logic
| logical
| logicals
arranjo
array
| lista
| list
| matrix
| matriz
| vector
| vetor
de
of
🔠 Literais
verdadeiro
true
falso
false
nulo
null
🔣 Símbolos
Atribuição <-
| ++
| --
Operadores Aritméticos +
| -
| *
| /
| %
Operadores Relacionais =
| !=
| >=
| >
| <=
| <
Operadores Lógicos ~
| !
| ?
| &
| &&
| |
| ||
🪄 Extras
Comentários
Em linha: // comentário
Em bloco: /* comentário */
Estrutura de Declarações (statements)
* Snippets são pequenos trechos de código que você pode usar para acelerar o desenvolvimento e garantir consistência em seu trabalho. Em vez de digitar repetidamente o mesmo código, você pode usar snippets para inserir rapidamente estruturas de código comuns ou padrões. Eles economizam tempo e ajudam a evitar erros ao criar código. Para utilizar-los basta escrever a palavra chave que está na coluna de "Snippet", o VSCode irá mostrar uma janela e, então, basta apertar "Enter" para inserir o Snippet
Declaração
*Snippet
Estrutura
Se/Senão (if/else)
se
| senao
Enquanto/Faça (while/do)
enquanto
| facaenquanto
Para (for)
para
Avalie (switch)
switch
| case
🤝 Contribuição
Estamos abertos a contribuições de alunos e interessados. Para contribuir:
Faça um fork do projeto.
Crie um branch para suas modificações (git checkout -b minha-modificacao
).
Envie suas modificações para o branch (git push origin minha-modificacao
).
Abra um pull request detalhando suas alterações.
Atenção: Este projeto foi desenvolvido utilizando a ferramenta Bun . Para executá-lo corretamente, por favor, instale as dependências (bun install
) e utilize os comandos específicos do Bun, como bun run dev
, para rodar o projeto. Run with bun!
👽 Problemas (Des)conhecidos
Se você encontrar qualquer comportamento inesperado ou suspeitar de um bug, consulte a seção de Issues Abertas do repositório. É possível que o problema já tenha sido relatado por outros usuários ou que esteja em processo de resolução.
Se o problema que você encontrou não estiver listado, sinta-se à vontade para abrir uma nova issue fornecendo o máximo de detalhes possível para ajudar a identificar e corrigir o problema. Agradecemos sua contribuição!
✨ Créditos
Este projeto foi iniciado em meados de 2024 por Thiago Ausechi , então aluno do 1º ano de Ciências da Computação, com o apoio e orientação dos docentes da área de Informática da FEMA .
Além disso, vários projetos foram explorados para possibilitar o desenvolvimento desta linguagem. Em especial, gostaríamos de expressar nosso profundo agradecimento à biblioteca Chevrotain por facilitar grande parte do trabalho complexo de análise e processamento da linguagem.