Projeto da Disciplina Paradigmas de Linguagens de Programação do CIn UFPE, que tem como objetivo estender a linguagem orientada a objetos para suportar algumas das principais características do paradigma orientado a contratos.
Programa ::= "{" Declaracao ";" Comando "}"
Declaracao ::= DecClasse
| DecClasse "," Declaracao
DecClasse ::= DecClasseTradicional
| DecClasseContrato
Comando ::= Atribuicao
| ComDeclaracao
| While
| IfTheElse
| IO
| Skip
| New
| ChamadaMetodo
| Comando ";" Comando
IO ::= "write" "(" Expressao ")"
| "read" "(" Id ")"
| "escreverNaBlockchain" "(" Expressao ")"
| "lerDaBlockchain" "(" Expressao ")"
| "transferir" "(" Expressao ")"
DecClasseTradicional ::= "classe" Id ["extends" Id] {" DecVariavel ";" DecConstrutor "," DecProcedimentoTradicional "}"
DecClasseContrato ::= "classe" "contrato" Id {" DecVariavel ";" DecConstrutor "," DecProcedimento "}"
DecProcedimento ::= DecProcedimentoTradicional
| DecProcedimentoPagavel
| DecProcedimento "," DecProcedimento
DecProcedimentoTradicional ::= "proc" Id "(" [ListaDeclaracaoParametro] ")" "{" Comando "}"
DecProcedimentoPagavel ::= "proc" "pagavel" Id "(" ParametrosPagaveis [ListaDeclaracaoParametro] ")" "{" Comando "}"
- Danilo Rafael de Lima Cabral - drlc@cin.ufpe.br
- Henrique Ferraz Arcoverde - hfa@cin.ufpe.br