Boa noite povo!
Dando continuidade à tradução da obra “A Formal Language for Analyzing Contracts”, da qual hoje vemos a décima terceira parte. No versículo último vimos a parte 12.
Nota Técnica – Uma Sintaxe Legível por Computador
Aqui está uma especificação formal da gramática da linguagem em “Backus-Naur Form” (BNF). A especificação é para uma versão planejada e legível por computador da linguagem e existem algumas pequenas diferenças, como o uso de colchetes {} em vez de guias para indicar o aninhamento. O BNF é usado para definir o que os linguistas chamam de “gramáticas sem contexto”. Também é usado, como aqui, para definir a sintaxe dos idiomas que os computadores também podem interpretar e executar. Também incluo mais algumas discussões sobre os significados das palavras e estruturas, especialmente sobre como o computador pode interpretá-las. Como você pode ver, essa é uma linguagem em evolução, um trabalho em andamento com muitos problemas não resolvidos. Suas sugestões para alterar ou adicionar mais tipos de termos contratuais ao nosso idioma são bem-vindas.
agent = Holder | Counterparty
## faz com que o contrato pareça diferente em cada lado
period = (startTime,finishTime)
# period é a janela dentro da qual o desempenho deve ser
# executado, por exemplo uma opção europeia deve ser exercida
# entre o início e o fim do dia útil em que
# expira.
# direitos executados em ordem temporal.
# sequência de períodos usados como entradas para a sequência de eventos withinPeriod(p).
# isso pode ser, mais geralmente, um iterador de eventos? mas os períodos têm
# uma ordem natural, enquanto outros tipos de eventos podem ocorrer em qualquer ordem.
# cada periodIterator.next gera um evento capturado pelo
# próximo tempral event (withinPeriod() se o iterador gerar
# períodos, aftertime() ou beforeTime() se gerar horas)
# *down [baixo]* do *for [para]*. O “lançamento” implícito ocorre em periodIterator.next
# para que ainda possamos vê-lo, apenas por pouco, como propagando
# o “lançamento”.
# (isso é diferente da semântica normal de eventos em que lançamentos
# propagam *up [para cima]* na árvore de análise) – devo alterá-lo para *up [cima]*
# e reescrever o código do iterador de agendamento acima? mas me confunde
# e talvez o comutador a colocá-lo *outside [fora]* do loop
event = choiceOf(agent) | withinPeriod(period) |
performed(right) | breachedPerformance(right) |
threshold(amount,threshold) | afterTime(time) | beforeTime(time)
right = throw event at [ contract | right] | passEvent([right | contract])
# gera um evento a ser capturado pelo contrato ou direito especificado.
# se contrato ou direito não for especificado, o primeiro when(event) parente
# é acionado.
right = throw event at [ contract | right] | passEvent([right | contract])
# gera um evento a ser capturado pelo contrato ou direito especificado.
# se contrato ou direito não for especificado, o primeiro when(event) parente
# é acionado.
# apenas use when withinPeriod (whenWritten, time)
# right = doBefore time {right}
# semanticamente equivalente:
# Holder right = O Counterparty obligation
right = getTitle(property)
# transferir título da propriedade do devedor para o credor
# consulte http://nakamotoinstitute.org/secure-property-titles/
right = null
Parte 13 terminada, no próximo a décima quarta. Abraços!