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