Expressões 2

  • Estende a Linguagem de Expressões 1 com identificadores (variáveis) que possuem um valor (constante)
  • Durante a compilação, surge a necessidade de um contexto:mapeamento entre identificadores e tipos
  • Durante a interpretação, surge a necessidade de um contexto: mapeamento entre identificadores e valores
  • Na avaliação de uma expressão, a ocorrência de um identificador é substituída pelo valor associado ao identificador
  • Um programa é uma expressão

Fontes

Programa ::= Expressao

Expressao ::= Valor
      | ExpUnaria
      | ExpBinaria
      | ExpDeclaracao
      | 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

ExpDeclaracao ::= “let” Declaracao “in” Expressao

Declaracao ::= DecVariavel
       | DecComposta

DecVariavel ::= “var” Id “=” Expressao

DecComposta ::= Declaracao “,” Declaracao

Classes Auxiliares

Tipo
TipoPrimitivo

Ambiente
AmbienteCompilacao
AmbienteExecucao

Contexto
ContextoCompilacao
ContextoExecucao

VariavelJaDeclaradaException
VariavelNaoDeclaradaException
IdentificadorJaDeclaradoException
IdentificadorNaoDeclaradoException

Exemplos de Programas

Exemplo

Parser

Expressoes2