Linguagem "Enquanto" usada como exemplo na disciplina de Paradigmas de Linguagens de Programação
Implementação da linguagem em Scala (~250 linhas de código): whilelang
A gramática está definida em Enquanto.g4
a := leia;
b := 10;
se a <= b entao
exiba "Menor"
senao
exiba "Maior"
Este projeto usa alguns recursos da versão 14 de Java. Por isso é necessário verificar a versão instalada e, se for necessário, atualizar a versão.
$ java -version
Se a versão de Java for anterior à versão 14 então é preciso atualizar a versão instalada. Você pode usar o sdkman (sdkman.org) para instalar a versão mais nova.
$ sdk i java
Para compilar use compilar.bat
(windows) ou compilar.sh
(linux).
$ ./compilar.sh
O script gera o parser e compila o código Java gerado.
Para executar use while.bat
(windows) ou ./while
(linux).
$ ./while olamundo.while
- Inclua a operações de divisão (
/
) e de exponenciação de inteiros (^
) - Inclua as operações
ou
exor
entre booleanos - Inclua as relações menor (
<
), maior (>
), maior ou igual (>=
) e diferente (!=
) entre inteiros - Altere a sintaxe para que o
;
ao invés de separar comandos seja usado para finalizar cada comando - Crie o comando
para ID em expressao .. expressao faca comando
. Exemplo
para i em 1 .. 5 faca
escreva i
- Crie o comando
repita expressao vezes comando
. Exemplo
repita 10 vezes
exiba "Funciona"
- Altere o comando
se .. entao .. senao ...
para incluir a cláusula (opcional)senaose
. Cadase
pode ter zero ou mais clausulassenaose
. Exemplo:
se nota >= 6 entao
exiba "Aprovado"
senaose nota >= 3 entao
exiba "Recuperação"
senao
exiba "Reprovado"
- Crie o comando
quando
(switch).
x = leia
quando x
1 : exiba "um"
2 : exiba "dois"
_ : exiba "outro numero"
- Altere a linguagem para permitir atribuições paralelas:
a, b, c := 2, 3, 4
a, b := b, a
- Altere a linguagem para unificar os comandos
exiba
eescreva
.
exiba "Ola Mundo"
exiba 2021