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: about 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.

Lists

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**.