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.
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.
- 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.
|
Esta extensão está presente no Pacote de Extensões FEMA Essentials Bundle. |
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
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çã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 */
|
* 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 |
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, comobun run dev
, para rodar o projeto. Run with bun!
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!
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.