Gramática — Erros e recursos
5 produções: monitor, trigger, defer, assert. Cada exemplo é aceito pelo parser.
O caminho de erro tem sintaxe própria, e a regra que mais importa é que halt, skip e yield não são erros: eles atravessam o monitor.
| Produção | Nós que ela produz |
|---|---|
monitor | MonitorBlock |
trigger | TriggerStatement |
defer | DeferStatement |
assert | AssertStatement |
resiliencia | RetryBlock, ValidateStatement, PropagateStatement |
monitor#
text
tratamento = "monitor" bloco { "handle" [ tipo ] [ "as" nome ] bloco }
[ "ensure" bloco ] ;dataforge
monitor:
trigger "x"
handle Error as e:
out e.message
ensure:
out "fim"trigger#
text
levantar = "trigger" expressao ;dataforge
action g():
trigger "falhou"defer#
text
adiar = "defer" bloco ;dataforge
action f():
defer:
out 1
yield 2assert#
text
afirmar = "assert" expressao [ "," expressao ] ;dataforge
assert 1 is 1, "um e um"resiliencia#
text
repetir = "retry" expressao bloco [ "recover" [ nome ] bloco ] ;
repassar = "propagate" nome ;
validar = "validate" expressao [ "," expressao ] ;dataforge
n := 0
action instavel():
n += 1
trigger "ainda nao"
retry 3:
instavel()
recover e:
out e.message
validate n bigger 0, "n precisa ser positivo"
action f():
monitor:
trigger "x"
handle e:
propagate eEstas produções saem de dataforge/gramatica.py. No terminal: dataforge gramatica erros. Volte para a gramática.