https://github.com/digas111/Interpreter
https://github.com/digas111/Interpreter
Last synced: 6 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/digas111/Interpreter
- Owner: digas111
- Created: 2019-03-29T17:15:07.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-04-22T22:56:13.000Z (over 6 years ago)
- Last Synced: 2024-04-24T16:41:38.834Z (over 1 year ago)
- Language: C
- Size: 206 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.txt
Awesome Lists containing this project
- AwesomeInterpreter - Interpreter
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