Imperativa 1

  • Estende a Linguagem de Expressões 1 com identificadores (variáveis) e comandos de atribuição, entrada/saída e controle de fluxo
  • O contexto inclui três componentes:
    • um mapeamento (dinâmico) de identificadores em valores
    • uma lista de valores de entrada
    • uma lista de valores de saída
  • Um programa é um comando

Fontes

Programa ::= Comando

Comando ::= Atribuicao
       | ComandoDeclaracao
       | While
       | IfThenElse
       | IO
       | SequenciaComando “;” Comando
       | Skip

Skip ::=

Atribuicao ::= Id “:=” Expressao

Expressao ::= Valor
       | ExpUnaria
       | ExpBinaria
       | Id

Valor ::= ValorConcreto

ValorConcreto ::= ValorInteiro
       | ValorBooleano
       | ValorString

ExpUnaria ::= ExpMenos “-“ Expressao
       | ExpNot “not” Expressao
       | ExpLength “length” Expressao

ExpBinaria ::= ExpSoma Expressao “+” Expressao
       | ExpSub Expressao “-“ Expressao
       | ExpAnd Expressao “and” Expressao
       | ExpOr Expressao “or” Expressao
       | ExpEquals Expressao “==” Expressao
       | ExpConcat Expressao “++” Expressao

ComandoDeclaracao ::= “{“ Declaracao “;” Comando “}”

Declaracao ::= DeclaracaoVariavel
       | DeclaracaoComposta

DeclaracaoVariavel ::= “var” Id “=” Expressao

DeclaracaoComposta ::= Declaracao “,” Declaracao

While ::= “while” Expressao “do” Comando

IfThenElse ::= “if” Expressao “then” Comando “else” Comando

IO ::= Write “write” “(“ Expressao “)”
       | Read “read” “(“ Id “)”

Classes Auxiliares

AmbienteCompilacaoImperativa
AmbienteExecucaoImperativa
ContextoCompilacaoImperativa
ContextoExecucaoImperativa
EntradaVaziaException
ListaValor
Lista

Parser

Imperative1