Skip to content

amandascm/PLP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PLP

Projeto da disciplina Paradigmas de Linguagens de Programação - CIn/UFPE.

Equipe

Escopo do projeto

Com base nos princípios de flexibilidade e generalização, vamos adicionar tipagem e união de tipos à Linguagem Funcional 1 apresentada na disciplina. Com isso, variáveis, parâmetros ou retorno de funções poderão ser anotados com os tipos específicos já definidos na linguagem, mas também com suporte à união deles. Um novo operador chamado typeof também será implementado para expandir a utilidade da união de tipos na linguagem.

BNF

Programa ::= Expressao

Expressao ::= Valor | ExpUnaria
| ExpBinaria
| ExpDeclaracao
| Id
| Aplicacao
| IfThenElse

Valor ::= ValorConcreto

ValorConcreto ::= ValorInteiro
| ValorBooleano
| ValorString

ExpUnaria ::= "-" Expressao
| "not" Expressao
| "length" Expressao
| "typeof" 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 ::= AnotacaoTipo Id "=" Expressao

DecFuncao ::= "fun" ListId "=" Expressao

DecComposta ::= DeclaracaoFuncional "," DeclaracaoFuncional

ListId ::= AnotacaoTipo Id | AnotacaoTipo Id ListId

Aplicacao ::= Id "(" ListExp ")"

ListExp ::= Expressao | Expressao, ListExp

IfThenElse ::= "if" Expressao "then" Expressao "else" Expressao

AnotacaoTipo ::= TipoPrimitivo | TipoCustom

TipoCustom ::= TipoPrimitivo "|" TipoPrimitivo

TipoPrimitivo ::= "string" | "int" | "boolean"

About

Projeto da disciplina Paradigmas de Linguagens de Programação - CIn/UFPE

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages