Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/diego-miranda-ng/portugol_interpreter
Este interpretador de PORTUGOL está sendo construído com o intuito de auxiliar alunos iniciantes de programação no estudo de algoritmos, e com o código-fonte do analisador disponibilizado online possibilitar que qualquer pessoa possa utilizá-lo e/ou melhorá-lo.
https://github.com/diego-miranda-ng/portugol_interpreter
Last synced: 2 months ago
JSON representation
Este interpretador de PORTUGOL está sendo construído com o intuito de auxiliar alunos iniciantes de programação no estudo de algoritmos, e com o código-fonte do analisador disponibilizado online possibilitar que qualquer pessoa possa utilizá-lo e/ou melhorá-lo.
- Host: GitHub
- URL: https://github.com/diego-miranda-ng/portugol_interpreter
- Owner: diego-miranda-ng
- Created: 2015-04-20T20:07:24.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2015-09-27T03:05:44.000Z (over 9 years ago)
- Last Synced: 2024-05-18T21:42:13.771Z (8 months ago)
- Language: C
- Homepage:
- Size: 379 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- AwesomeInterpreter - portugol_interpreter
README
# PORTUGOL Interpreter
##RESUMO
O objetivo deste projeto é criar um interpretador para uma linguagem de programação derivada do Português Estruturado. O objetivo desta linguagem é auxiliar alunos iniciantes de programação no estudo de algoritmos e com o código-fonte do interpretador disponibilizado online possibilitar que qualquer pessoa tenha acesso a ele para melhorá-lo ou utilizá-lo em outros projetos ou estudos.##Elementos Léxicos
*texto* = **"** { *identificador* | *pontuação* | *inteiro* | ** ** } **"**.
*identificador* = ( *letra* | **_** *letra* ){ *letra* | *digito* | **_** }.
*decimal* = *inteiro* **.** *inteiro*.
*inteiro* = *dígito* { *dígito* }.
*letra* = **a** | **b** | ... | **z** | **A** | **B** | ... | **Z**.
*dígito* = **0** | **1** | **2** | **3** | **4** | **5** | **6** | **7** | **8** | **9**.
*pontuação* = **(** | **)** | **[** | **]** | **{** | **}** | **\**** | “\'” | **,** | **;** | **!** | **@** | **#** | **%** | **$** | **&** | **.** | **\** | **?** | **:** | **=** | **_** | **<** | **>**.##Sintaxe da linguagem
*programa* = **algoritmo** *identificador* **⏎** { ( *declarações* | *declaração_função* ) **⏎** } *bloco* **fim_algoritmo**.
*bloco* = { ( *decisão* | *declarações* | *retorno* | *se* | *enquanto* | *para* | *faça* | *caso* | *repita* | *até* ) **⏎** }.
*declarações* = *declaração_tipo* | *declaração_constante* | **var** *declaração_variável*.
*decisão* = *identificador* ( *argumentos* | *seletor* **=** *expressão* ).
*retorno* = **retorne** *expressão*.
*argumentos* = **(** [ *expressão* { **,** *expressão* } ] **)**.
*declaração_função* = **funcao** *identificador* [ *parâmetros* ] [ **:** *identificador* ] **⏎** *bloco* **fim_funcao** **⏎**.
*parâmetros* = **(** *declaração_variável* { **;** *declaração_variável* } **)**.
*declaração_tipo* = **tipo** *identificador* **=** ( *identificador* | **registro** **⏎** { *declaração_variável* **⏎** } **fim_registro** ).
*declaração_constante* = **const** *identificador* **=** *expressão*.
*variável* = *identificador* { **[** *expressão* **]** }.
*declaração_variável* = *variável* { **,** *variável* } **:** *identificador*.
*expressão* = *expressão_simples* { ( **<** | **>** | **<=** | **>=** | **==** ) *expressão_simples*}.
*expressão_simples* = [ **+** | **-** ] *termo* { ( **+** | **-** | **ou** ) *termo* }.
*termo* = *fator* { ( __*__ | **/** | **e** ) *fator* }.
*seletor* = { **.** *identificador* | **[** *expressão* **]** }.
*fator* = *texto* | *inteiro* | *decimal* | *identificador* ( *seletor* | *argumentos* ) | **(** *expressão* **)** | **nao** *fator*.
*se* = **se** *expressão* **entao** **⏎** *bloco* { **senao_se** *expressão* **entao** **⏎** *bloco* } [ **senao** **⏎** *bloco* ] **fim_se**.
*caso* = **caso** *expressão* **⏎** **seja** *expressão* **:** **⏎** *bloco* { **seja** *expressão* **:** **⏎** *bloco* } [ **senao** **:** **⏎** *bloco* ] **fim_caso**.
*faça* = **faca** **⏎** *bloco* **sempre_que** *expressão*.
*enquanto* = **enquanto** *expressão* **faca** **⏎** *bloco* **fim_enquanto**.
*repita* = **repita** **⏎** *bloco* **ate_que** *expressão*.
*até* = **ate** *expressão* **repita** **⏎** *bloco* **fim_ate**.
*para* = **para** *identificador* *seletor* **de** *expressão* **ate** *expressão* [ **passo** *expressão* ] **faca** **⏎** *bloco* **fim_para**.