Funcional 1
- Estende a Linguagem de Expressões 2 com funções parametrizadas e recursivas
- O corpo de uma função é uma expressão e a aplicação da função a um argumento retorna um valor
- O contexto inclui dois componentes:
- mapeamento de identificadores em valores
- mapeamento de identificadores (nomes de função) em definições de função
- Um programa é uma expressão
Fontes
Expressao ::=
Valor
|
ExpUnaria
|
ExpBinaria
|
ExpDeclaracao
|
Id
|
Aplicacao
|
IfThenElse
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” DeclaracaoFuncional “in” Expressao
DeclaracaoFuncional ::=
DecVariavel
|
DecFuncao
|
DecComposta
DecVariavel ::= “var” Id “=” Expressao
DecFuncao ::= “fun” ListId “=” Expressao
DecComposta ::= DeclaracaoFuncional “,” DeclaracaoFuncional
ListId ::= Id | Id ListId
Aplicacao ::= Id”(“ ListExp “)”
ListExp ::= Expressao | Expressao, ListExp
IfThenElse ::= “if” Expressao “then” Expressao “else” Expressao
Classes Auxiliares
Tipo
TipoFuncao
TipoPolimorfico
AmbienteCompilacao
ContextoCompilacao
AmbienteFuncional
AmbienteExecucaoFuncional
ContextoFuncional
ContextoExecucaoFuncional