Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/digas111/Interpreter


https://github.com/digas111/Interpreter

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

        

1º trabalho de Laboratório de programação 2018/2019
Interpreter realizado por Armando Martins(201504230) e Diogo Ribeiro(201504115)

Para compilar: gcc *.c
Para executar: ./a.out

O programa lida com o sguinte conjunto de instruções:

ler();
lê um número a partir do stdin.

escrever();
escreve ou o número que está como argumento ou o valor que está guardado na variável.

= ;
Operações aritméticas com está implementado em C.

label ;
serve de etiqueta para o programa saber para onde dirigir o program counter

if goto
se for positivo ou negativo segue para a label , senão vai para a linha a seguir

goto ;
segue para a linha que tem como label .

quit;
termina o programa.

Sobre a estrutura do código:
O programa utiliza uma linked list de instruçoes em que cada instruçao contem um kind para distinguir o tipo de intruçao e 3 elementos cada um com um kind para saber que tipo de elemento se trata. Para lidar com as labels e e variaveis usamos uma tabela de hash que para as lables guarda o apontador para o nó da linked list a que pertence essa label e para as variaveis guarda o respetivo valor.

Notas importantes:
-labels de var's são strings com 25 carateres e não podem começar com números
-as variáveis podem guardar números decimais ou inteiros
-para valores negativos deve-se atribuir primeiro a uma variavel