{"id":13783115,"url":"https://github.com/digas111/Interpreter","last_synced_at":"2025-05-11T17:31:12.208Z","repository":{"id":207269531,"uuid":"178447341","full_name":"digas111/Interpreter","owner":"digas111","description":null,"archived":false,"fork":false,"pushed_at":"2019-04-22T22:56:13.000Z","size":211,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-04-24T16:41:38.834Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/digas111.png","metadata":{"files":{"readme":"readme.txt","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-03-29T17:15:07.000Z","updated_at":"2019-04-22T22:56:16.000Z","dependencies_parsed_at":"2023-11-14T23:46:24.431Z","dependency_job_id":null,"html_url":"https://github.com/digas111/Interpreter","commit_stats":null,"previous_names":["digas111/interpreter"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digas111%2FInterpreter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digas111%2FInterpreter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digas111%2FInterpreter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digas111%2FInterpreter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/digas111","download_url":"https://codeload.github.com/digas111/Interpreter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":213838168,"owners_count":15645786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T18:01:53.373Z","updated_at":"2024-08-03T18:11:22.621Z","avatar_url":"https://github.com/digas111.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"1º trabalho de Laboratório de programação 2018/2019\nInterpreter realizado por Armando Martins(201504230) e Diogo Ribeiro(201504115)\n\nPara compilar: gcc *.c\nPara executar: ./a.out \u003cnome do ficheiro\u003e\n\nO programa lida com o sguinte conjunto de instruções:\n\nler(\u003cvar\u003e);\nlê um número a partir do stdin.\n\n\nescrever(\u003cvar ou num\u003e);\nescreve ou o número que está como argumento ou o valor que está guardado na variável.\n\n\n\u003cvar\u003e = \u003cvar ou num\u003e \u003csímbolo de operação aritmética\u003e \u003cvar ou num\u003e;\nOperações aritméticas com está implementado em C.\n\n\nlabel \u003clabel\u003e;\nserve de etiqueta para o programa saber para onde dirigir o program counter\n\n\nif \u003cvar\u003e goto \u003clabel\u003e\nse \u003cvar\u003e for positivo ou negativo segue para a label , senão vai para a linha a seguir\n\n\ngoto \u003clabel\u003e;\nsegue para a linha que tem como label \u003clabel\u003e.\n\n\nquit;\ntermina o programa.\n\nSobre a estrutura do código: \nO 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.\n\nNotas importantes:\n  -labels de var's são strings com 25 carateres e não podem começar com números\n  -as variáveis podem guardar números decimais ou inteiros\n  -para valores negativos deve-se atribuir primeiro a uma variavel \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdigas111%2FInterpreter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdigas111%2FInterpreter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdigas111%2FInterpreter/lists"}