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
       | Comando “;” Comando
       | Skip

Skip ::=

Atribuicao ::= Id “:=” Expressao

Expressao ::= Valor
       | ExpUnaria
       | ExpBinaria
       | Id

Valor ::= ValorConcreto

ValorConcreto ::= ValorInteiro
       | ValorBooleano
       | ValorString

ExpUnaria ::= “-“ Expressao
       | “not” Expressao
       | “length” Expressao

ExpBinaria ::= Expressao “+” Expressao
       | Expressao “-“ Expressao
       | Expressao “and” Expressao
       | Expressao “or” Expressao
       | Expressao “==” Expressao
       | 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” “(“ Expressao “)”
       | “read” “(“ Id “)”

Classes Auxiliares

AmbienteCompilacaoImperativa
AmbienteExecucaoImperativa
ContextoCompilacaoImperativa
ContextoExecucaoImperativa
EntradaVaziaException
ListaValor
Lista

Parser

Imperative1